- 433MHz RF-sender og modtagermodul:
- Behov for koder og dekodere:
- Nødvendige komponenter:
- Kredsløbsdiagram:
- Kode Forklaring:
Hej alle sammen, i dag vil vi i dette projekt interface RF-modtager og sendermodul med PIC Microcontroller og kommunikere mellem to forskellige pic-mikrocontrollere trådløst.
I dette projekt vil vi gøre følgende ting: -
- Vi bruger PIC16F877A til senderen og PIC18F4520 til afsnittet Receiver.
- Vi vil interface tastatur og LCD med PIC-mikrocontroller.
- På sendersiden vil vi interface tastaturet med PIC og transmittere dataene. På modtagersiden modtager vi dataene trådløst og viser, hvilken tast der trykkes på LCD'et.
- Vi bruger encoder og dekoder IC til at transmittere 4 bit data.
- Modtagelsesfrekvensen vil være 433Mhz ved hjælp af et billig RF TX-RX-modul, der er tilgængeligt på markedet.
Før vi går i skemaer og koder, lad os forstå, hvordan RF-modulet fungerer med Encoder-Decoder IC'er. Gå også igennem to artikler for at lære, hvordan man bruger interface LCD og tastatur med PIC Microcontroller:
- LCD-grænseflade med PIC Microcontroller ved hjælp af MPLABX og XC8
- 4x4 Matrix Keypad Interfacing med PIC Microcontroller
433MHz RF-sender og modtagermodul:
Det er de sender- og modtagermoduler, vi bruger i projektet. Det er det billigste modul til rådighed til 433 MHz. Disse moduler accepterer serielle data i en kanal.
Hvis vi ser specifikationerne for modulerne, er senderen bedømt til 3,5-12V drift som indgangsspænding, og sendeafstanden er 20-200 meter. Det transmitteres i AM (Audio Modulation) -protokol ved 433 MHz- frekvens. Vi kan overføre data med en hastighed på 4KB / S med 10mW effekt.
På det øverste billede kan vi se pin-out på sendermodulet. Fra venstre mod højre er benene VCC, DATA og GND. Vi kan også tilføje antennen og lodde den på det punkt, der er angivet i ovenstående billede.
For Receiver specifikationen, modtageren har en rating på 5V DC og 4MA Hvilestrøm som input. Modtagefrekvensen er 433,92 MHz med en -105DB følsomhed.
På ovenstående billede kan vi se pin-out på modtagermodulet. De fire ben er fra venstre mod højre, VCC, DATA, DATA og GND. Disse midterste to ben er internt forbundet. Vi kan bruge en eller begge dele. Men det er en god praksis at bruge begge dele til at sænke støjkoblingen.
En ting er heller ikke nævnt i databladet, den variable induktor eller POT i midten af modulet bruges til frekvenskalibrering. Hvis vi ikke kunne modtage de transmitterede data, er der muligheder for, at den transmitterende og modtagende frekvens ikke matches. Dette er et RF-kredsløb, og vi skal indstille senderen til det perfekte transmitterede frekvenspunkt. På samme måde som senderen har dette modul også en antenneport; vi kan lodde ledning i oprullet form for længere modtagelse.
Transmissionsområdet er afhængigt af spændingen, der leveres til senderen, og længden af antennerne i begge sider. Til dette specifikke projekt brugte vi ikke ekstern antenne og brugte 5V på sendersiden. Vi tjekkede med 5 meters afstand, og det fungerede perfekt.
RF-moduler er meget nyttige til trådløs kommunikation over lang afstand. Her vises et grundlæggende RF-sender- og modtagerkredsløb. Vi har lavet mange projekter ved hjælp af RF-modul:
- RF-kontrollerede husholdningsapparater
- Bluetooth-styret legetøjsbil ved hjælp af Arduino
- RF-fjernstyrede LED'er ved hjælp af Raspberry Pi
Behov for koder og dekodere:
Denne RF-sensor har få ulemper: -
- Envejs kommunikation.
- Kun en kanal
- Meget støj interferens.
På grund af denne ulempe har vi brugt encoder og dekoder IC'er, HT12D og HT12E. D står for dekoder, der vil blive brugt på modtagersiden, og E står for koder, som vil blive brugt på sendersiden. Disse IC'er har 4 kanaler. Også på grund af kodning og afkodning er støjniveauet meget lavt.
I ovenstående billede er den venstre HT12D dekoderen, og den højre er HT12E, koderen en. Begge IC'er er identiske. A0 til A7 bruges til speciel kodning. Vi kan bruge mikrocontroller-ben til at kontrollere disse ben og indstille konfigurationer. De samme konfigurationer skal matches på den anden side. Hvis begge konfigurationer er nøjagtige og matchede, kan vi modtage data. Disse 8 ben kan tilsluttes GND eller VCC eller lades åbne. Uanset hvilke konfigurationer vi foretager i koderen, skal vi matche forbindelsen på dekoderen. I dette projekt vil vi lade disse 8 ben være åbne for både encoder og dekoder. 9 og 18 ben er henholdsvis VSS og VDD. Vi kan bruge VT- stiften iHT12D som notifikationsformål. Til dette projekt brugte vi det ikke. Den TE pin er til transmission aktivere eller deaktivere stift.
Den vigtige del er OSC- stiften, hvor vi har brug for at forbinde modstande, er at give svingning til koderen og dekoderen. Dekoderen har brug for højere svingning end dekoderen. Encoder modstandsværdi vil typisk være 1Meg og Decoder værdi 33k. Vi bruger disse modstande til vores projekt.
DOUT- pin er RF-senderens datapind på HT12E, og DIN- pin i HT12D bruges til at forbinde RF-modulets datapind.
I HT12E er AD8 til AD11 fire-kanal input, der bliver konverteret og transmitteret serielt gennem RF-modul, og den nøjagtige omvendte ting sker i HT12D, de serielle data modtages og dekodes, og vi får 4 bit parallel output på tværs af de 4 ben D8 til D11.
Nødvendige komponenter:
- 2 - Brødbræt
- 1 - LCD 16x2
- 1 - Tastatur
- HT12D og HT12E par
- RX-TX RF-modul
- 1- 10K forudindstillet
- 2 - 4,7 k modstand
- 1- 1M modstand
- 1- 33k modstand
- 2- 33pF keramiske kondensatorer
- 1 - 20MHz krystal
- Bergsticks
- Få enkeltstrengede ledninger.
- PIC16F877A MCU
- PIC18F4520 MCU
- En skruetrækker til styring af frekvenspotten skal isoleres fra menneskekroppen.
Kredsløbsdiagram:
Kredsløbsdiagram for sendersiden (PIC16F877A):
Vi har brugt PIC16F877A til transmission formål. The Hex tastatur forbundet over PORTB og 4 kanaler forbundet tværs sidste 4 bits PORTD. Lær mere om tilslutning af 4x4 Matrix tastatur her.
Pin ud som følger-
1. AD11 = RD7
2. AD10 = RD6
3. AD9 = RD5
4. AD8 = RD4
Kredsløbsdiagram for modtagersiden (PIC18F4520):
På ovenstående billede vises modtager kredsløbet. Det LCD er tilsluttet tværs PORTB. Vi brugte intern oscillator af PIC18F4520 til dette projekt. De 4 kanaler er forbundet på samme måde som vi gjorde før i senderkredsløbet. Lær mere om tilslutning af 16x2 LCD med PIC Microcontroller her.
Dette er sendersiden -
Og modtagersiden i separat brødbræt -
Kode Forklaring:
Der er to dele af koden, en er til senderen og en er til modtageren. Du kan downloade den komplette kode herfra.
PIC16F877A kode til RF-sender:
Som altid først skal vi indstille konfigurationsbitene i pic-mikrocontrolleren, definere nogle makroer, inklusive biblioteker og krystalfrekvens. Den AD8-AD11 porten på Encoder ic defineres som RF_TX på PORTD. Du kan kontrollere koden for alle dem i den komplette kode, der er angivet i slutningen.
Vi brugte to funktioner, ugyldigt system_init (ugyldigt) og ugyldigt encode_rf_sender (char data).
Den system_init anvendes til pin initialisering og tastatur startværdier. Initialisering af tastaturet kaldes fra tastaturbiblioteket.
Tastaturporten er også defineret i tastaturet. H. Vi lavede PORTD som output ved hjælp af TRISD = 0x00 og gjorde RF_TX- porten som 0x00 som standardtilstand.
ugyldigt system_init (ugyldigt) { TRISD = 0x00; RF_TX = 0x00; keyboard_initialization (); }
I encode_rf_sender har vi ændret tilstanden med 4 ben afhængigt af den trykte knap. Vi har oprettet 16 forskellige hex-værdier eller PORTD- tilstande afhængigt af ( 4x4) 16 forskellige knapper, der trykkes ned.ugyldig encode_rf_sender (char data) { if (data == '1') RF_TX = 0x10; hvis (data == '2') RF_TX = 0x20; hvis (data == '3') …………... …. ….
I hovedfunktionen modtager vi først tastaturknappens tryk på data ved hjælp af switch_press_scan () -funktionen og gemmer dataene i nøglevariabler. Derefter har vi kodet dataene ved hjælp af encode_rf_sender () -funktionen og ændret PORTD- status.
PIC18F4520 kode til RF-modtager:
Som altid indstiller vi først konfigurationsbitene i PIC18f4520. Det er lidt anderledes end PIC16F877A, du kan kontrollere koden i den vedhæftede zip-fil.
Vi inkluderede LCD-headerfilen. Defineret D8-D11- portforbindelsen til dekoder IC på tværs af PORTD ved hjælp af #define RF_RX PORTD- linje, forbindelsen er den samme som brugt i afsnittet Encoder. LCD- portdeklarationen udføres også i filen lcd.c.
#omfatte
Som tidligere nævnt bruger vi intern oscillator til 18F4520, har vi brugt system _ init- funktionen, hvor vi konfigurerede OSFON- registeret for 18F4520 til at indstille den interne oscillator til 8 MHz. Vi indstiller også TRIS- bit til både LCD-ben og dekoder-ben. Da HT - 12D leverer output i D8-D11- porte, er vi nødt til at konfigurere PORTD som input til at modtage output.
ugyldigt system_init (ugyldigt) { OSCCON = 0b01111110; // 8Mhz,, intosc // OSCTUNE = 0b01001111; // PLL-aktivering, Max prescaler 8x4 = 32Mhz TRISB = 0x00; TRISD = 0xFF; // Sidste 4 bit som inputbit. }
Vi konfigurerede OSCON- registret ved 8 MHz, lavede også port B som output og port D som input.
Nedenstående funktion er lavet ved hjælp af den nøjagtige omvendte logik, der blev brugt i det foregående afsenderafsnit. Her får vi den samme hex-værdi fra port D, og ved den hex-værdi identificerer vi, hvilken kontakt der blev trykket på i afsendersektionen. Vi kan identificere hvert tastetryk og sende korrespondenttegnet til LCD'et.
ugyldig rf_analyse (usigneret char recived_byte) { if (recived_byte == 0x10) lcd_data ('1'); hvis (recived_byte == 0x20) lcd_data ('2'); hvis (recived_byte == 0x30) ……. ….. …… ………..
Den lcd_data kaldes fra lcd.c fil.
I hovedfunktionen initialiserer vi først systemet og LCD'et. Vi tog en variabel byte, og lagres hexkoden modtaget fra havn D. Derefter ved funktionen rf_analyse kan vi udskrive tegnet på LCD.
ugyldigt hoved (ugyldigt) { usigneret char byte = 0; system_init (); lcd_init (); mens (1) { lcd_com (0x80); lcd_puts ("CircuitDigest"); lcd_com (0xC0); byte = RF_RX; rf_analyse (byte); lcd_com (0xC0); } vende tilbage; }
Før vi kører det, har vi indstillet kredsløbet. Først har vi trykket på ' D ' knappen på tastaturet. Så transmitteres 0xF0 kontinuerligt af RF-senderen. Vi afstemte derefter modtagerens kredsløb, indtil LCD'et viser tegnet ' D '. Nogle gange er modulet indstillet korrekt fra producenten, nogle gange er det ikke. Hvis alt er korrekt tilsluttet og ikke får knappen til at trykke på værdien i LCD'et, er der muligheder for, at RF-modtageren ikke er indstillet. Vi har brugt den isolerede skruetrækker til at mindske forkerte indstillingsmuligheder på grund af vores kropsinduktans.
Sådan kan du interface RF-modulet til PIC-mikrocontrolleren og kommunikere mellem to PIC-mikrocontrollere trådløst ved hjælp af RF-sensor.
Du kan downloade den komplette kode til sender og modtager herfra, se også demonstrationsvideoen nedenfor.