- 433MHz RF-sender og mottakermodul:
- Behov for koder og dekodere:
- Nødvendige komponenter:
- Kretsdiagram:
- Kode Forklaring:
Hei alle sammen. I dag vil vi i dette prosjektet grensesnitt RF-mottaker og sendermodul med PIC Microcontroller og kommunisere mellom to forskjellige pic-mikrokontrollere trådløst.
I dette prosjektet vil vi gjøre følgende: -
- Vi vil bruke PIC16F877A for senderen og PIC18F4520 for mottakerseksjonen.
- Vi vil grensesnitt tastatur og LCD med PIC mikrokontroller.
- På sendersiden vil vi grensesnitttastaturet med PIC og overføre dataene. På mottakersiden vil vi motta dataene trådløst og vise hvilken tast som trykkes på LCD-skjermen.
- Vi vil bruke koderen og dekoderen IC til å overføre 4-biters data.
- Mottaksfrekvensen vil være 433 MHz ved bruk av billig RF TX-RX-modul tilgjengelig i markedet.
Før vi går inn i skjemaene og kodene, la oss forstå hvordan RF-modulen fungerer med Encoder-Decoder ICs. Gå også gjennom to artikler for å lære hvordan du grensesnitt LCD og tastatur med PIC Microcontroller:
- LCD-grensesnitt med PIC Microcontroller ved bruk av MPLABX og XC8
- 4x4 matrisetastaturgrensesnitt med PIC-mikrokontroller
433MHz RF-sender og mottakermodul:
Dette er sender- og mottakermodulene vi bruker i prosjektet. Det er den billigste modulen tilgjengelig for 433 MHz. Disse modulene godtar serielle data i en kanal.
Hvis vi ser spesifikasjonene til modulene, er senderen vurdert til 3,5-12V drift som inngangsspenning, og sendeavstanden er 20-200 meter. Den overføres i AM (Audio Modulation) -protokoll med 433 MHz- frekvens. Vi kan overføre data med en hastighet på 4KB / S med 10mW effekt.
I det øvre bildet kan vi se pin-out på sendermodulen. Fra venstre til høyre er pinnene VCC, DATA og GND. Vi kan også legge til antennen og lodde den på punktet angitt i bildet ovenfor.
For mottaker spesifikasjonen, har mottageren en vurdering av 5V DC 4 mA og Hvilestrøm som inndata. Mottaksfrekvensen er 433,92 MHz med en følsomhet på -105DB.
På bildet ovenfor kan vi se pin-out på mottakermodulen. De fire pinnene er fra venstre til høyre, VCC, DATA, DATA og GND. De to midterste pinnene er koblet internt. Vi kan bruke hvilken som helst eller begge deler. Men det er en god praksis å bruke begge deler for å senke støykoblingen.
En ting er heller ikke nevnt i databladet, variabel induktor eller POT midt på modulen brukes til frekvenskalibrering. Hvis vi ikke kunne motta de overførte dataene, er det muligheter for at sende- og mottaksfrekvensene ikke samsvarer. Dette er en RF-krets, og vi må stille inn senderen på det perfekte sendte frekvenspunktet. Også, samme som senderen, har denne modulen også en antenneport; vi kan loddetråd i kveilform for lengre mottak.
Overføringsområdet er avhengig av spenningen som leveres til senderen og lengden på antennene på begge sider. For dette spesifikke prosjektet brukte vi ikke ekstern antenne og brukte 5V på sendersiden. Vi sjekket med 5 meters avstand, og det fungerte perfekt.
RF-moduler er veldig nyttige for trådløs kommunikasjon over lang avstand. En grunnleggende RF-sender og mottakerkrets vises her. Vi har laget mange prosjekter ved hjelp av RF-modul:
- RF-kontrollerte hvitevarer
- Bluetooth-kontrollert lekebil ved hjelp av Arduino
- Fjernkontrollerte RF-lysdioder ved bruk av Raspberry Pi
Behov for koder og dekodere:
Denne RF-sensoren har få ulemper: -
- Enveiskommunikasjon.
- Bare én kanal
- Veldig støyforstyrrelser.
På grunn av denne ulempen har vi brukt kodere og dekoder ICer, HT12D og HT12E. D står for dekoder som skal brukes på mottakersiden og E står for koder som skal brukes på sendersiden. Disse IC-ene har 4 kanaler. Også på grunn av koding og dekoding er støynivået veldig lavt.
I bildet ovenfor er venstre HT12D dekoderen og høyre HT12E, koderen. Begge IC-ene er identiske. A0 til A7 brukes til spesiell koding. Vi kan bruke mikrocontrollerpinner for å kontrollere disse pinnene og angi konfigurasjoner. De samme konfigurasjonene må matches på den andre siden. Hvis begge konfigurasjonene er nøyaktige og samsvarer, kan vi motta data. Disse 8 pinnene kan kobles til GND eller VCC eller stå åpne. Uansett konfigurasjoner vi gjør i koderen, må vi matche tilkoblingen på dekoderen. I dette prosjektet vil vi la de 8 pinnene være åpne for både koder og dekoder. 9 og 18 pin er henholdsvis VSS og VDD. Vi kan bruke VT- pinnen iHT12D som varslingsformål. For dette prosjektet brukte vi det ikke. Den TE tapp er for overføring aktivere eller deaktivere tapp.
Den viktige delen er OSC- pinnen der vi trenger å koble motstander, er å gi svingning til koderen og dekoderen. Dekoderen trenger høyere svingning enn dekoderen. Encodermotstandsverdien vil vanligvis være 1 Meg og dekoderverdien er 33 k. Vi vil bruke disse motstandene til prosjektet vårt.
DOUT- pinnen er RF- senderdatapinnen på HT12E og DIN- pinnen i HT12D brukes til å koble til RF-modulens datapinne.
I HT12E er AD8 til AD11 firekanalsinngang som blir konvertert og overført serielt gjennom RF-modul, og den nøyaktige omvendte tingen skjer i HT12D, seriell data mottatt og dekodet, og vi får 4 bit parallell utgang over de 4 pinnene D8 til D11.
Nødvendige komponenter:
- 2 - Brettbrett
- 1 - LCD 16x2
- 1 - Tastatur
- HT12D og HT12E par
- RX-TX RF-modul
- 1- 10K forhåndsinnstilt
- 2 - 4,7 k motstand
- 1- 1M motstand
- 1- 33k motstand
- 2- 33pF keramiske kondensatorer
- 1 - 20Mhz krystall
- Bergstikker
- Få enkeltstrengede ledninger.
- PIC16F877A MCU
- PIC18F4520 MCU
- En skrutrekker for å kontrollere frekvensgryten må isoleres fra menneskekroppen.
Kretsdiagram:
Kretsdiagram for sendersiden (PIC16F877A):
Vi har brukt PIC16F877A til overføringsformål. Den Hex tastatur koblet over PORTB og de 4 kanaler som er koblet tvers over siste 4 biter av PORTD. Lær mer om tilkobling av 4x4 Matrix-tastatur her.
Pin ut slik:
1. AD11 = RD7
2. AD10 = RD6
3. AD9 = RD5
4. AD8 = RD4
Kretsdiagram for mottakersiden (PIC18F4520):
På bildet ovenfor vises mottakerkretsen. Det LCD er koblet over PORTB. Vi brukte intern oscillator av PIC18F4520 til dette prosjektet. De 4 kanalene er koblet på samme måte som vi gjorde tidligere i senderkretsen. Lær mer om å koble 16x2 LCD med PIC Microcontroller her.
Dette er sendersiden -
Og mottakersiden i separat brødbrett -
Kode Forklaring:
Det er to deler av koden, den ene er for senderen og den ene for mottakeren. Du kan laste ned fullstendig kode herfra.
PIC16F877A-kode for RF-sender:
Som alltid først, må vi sette konfigurasjonsbiter i pic-mikrokontrolleren, definere noen makroer, inkludert biblioteker og krystallfrekvens. Den AD8-AD11 port av koderen ic er definert som RF_TX ved PORTD. Du kan sjekke koden for alle de i den fullstendige koden som er gitt på slutten.
Vi brukte to funksjoner, void system_init (void) og void encode_rf_sender (char data).
Den system_init brukes for tappen initialisering av og tangent initializations. Initialiseringen av tastaturet kalles fra tastaturbiblioteket.
Tastaturporten er også definert i tastaturet. H. Vi lagde PORTD som utdata ved hjelp av TRISD = 0x00, og gjorde RF_TX- porten som 0x00 som standardtilstand.
ugyldig system_init (ugyldig) { TRISD = 0x00; RF_TX = 0x00; keyboard_initialization (); }
I encode_rf_sender har vi endret 4-pinners tilstand avhengig av knappen som trykkes. Vi har opprettet 16 forskjellige sekskantverdier eller PORTD- stater, avhengig av ( 4x4) 16 forskjellige knapper.ugyldig encode_rf_sender (char data) { if (data == '1') RF_TX = 0x10; hvis (data == '2') RF_TX = 0x20; hvis (data == '3') …………... …. ….
I den viktigste funksjon vi først mottar tastaturknapp trykkes inn data ved hjelp av switch_press_scan () funksjon og lagrer dataene i nøkkel variabel. Etter det har vi kodet dataene ved hjelp av encode_rf_sender () -funksjonen og endret PORTD- status.
PIC18F4520- kode for RF-mottaker:
Som alltid setter vi først konfigurasjonsbitene i PIC18f4520. Det er litt forskjellig fra PIC16F877A, du kan sjekke koden i den vedlagte zip-filen.
Vi inkluderte LCD-headerfilen. Definerte D8-D11- portforbindelsen til dekoder IC over PORTD ved å bruke #define RF_RX PORTD- linje, tilkoblingen er den samme som brukes i Encoder-seksjonen. LCD- portdeklarasjonen gjøres også i lcd.c- filen.
#inkludere
Som nevnt før vi bruker intern oscillator for 18F4520, har vi brukt system _ init- funksjonen der vi konfigurerte OSCON- registeret til 18F4520 for å stille den interne oscillatoren til 8 MHz. Vi setter også TRIS- biten for både LCD-pinner og dekoderpinner. Da HT - 12D leverer utdata på D8-D11- porter, må vi konfigurere PORTD som inngang for å motta utdata.
ugyldig system_init (ugyldig) { OSCCON = 0b01111110; // 8Mhz,, intosc // OSCTUNE = 0b01001111; // PLL-aktivering, Max prescaler 8x4 = 32Mhz TRISB = 0x00; TRISD = 0xFF; // Siste 4-bit som inngangsbit. }
Vi konfigurerte OSCON- registeret ved 8 MHz, laget også port B som utgang og port D som inngang.
Nedenfor er funksjonen laget med den nøyaktige omvendte logikken som ble brukt i forrige senderseksjon. Her får vi den samme hexverdien fra porten D, og ved den hexverdien identifiserer vi hvilken bryter som ble trykket på senderseksjonen. Vi kan identifisere hvert tastetrykk og sende korrespondentkarakteren til LCD-skjermen.
ugyldig rf_analyse (usignert char recived_byte) { if (recived_byte == 0x10) lcd_data ('1'); hvis (recived_byte == 0x20) lcd_data ('2'); hvis (recived_byte == 0x30) ……. ….. …… ………..
Den lcd_data kalles fra lcd.c filen.
I hovedfunksjonen vi først initialisere systemet og LCD. Vi tok en variabel byte, og lagres hexkoden mottatt fra port D. Så ved funksjonen rf_analysis kan vi skrive ut tegnet på LCD.
void main (void) { usignert 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); } returnere; }
Før du kjører den, har vi innstilt kretsen. Først har vi trykket på ' D ' -knappen på tastaturet. Så, 0xF0 overføres kontinuerlig av RF-senderen. Vi avstemte deretter mottakerkretsen til LCD-skjermen viser tegnet ' D '. Noen ganger er modulen innstilt riktig fra produsenten, noen ganger er den ikke. Hvis alt er riktig tilkoblet og ikke får knappen til å trykke på verdien i LCD-skjermen, er det muligheter for at RF-mottakeren ikke er innstilt. Vi har brukt den isolerte skrutrekkeren for å redusere feil innstillingsmuligheter på grunn av kroppsinduktansen.
Slik kan du koble RF-modulen til PIC-mikrokontrolleren og kommunisere mellom to PIC-mikrokontrollere trådløst ved hjelp av RF-sensor.
Du kan laste ned den fullstendige koden for sender og mottaker herfra, sjekk også demonstrasjonsvideoen nedenfor.