- Mòdul de transmissor i receptor RF de 433 MHz:
- Necessitat de codificadors i descodificadors:
- Components necessaris:
- Esquema de connexions:
- Explicació del codi:
Hola a tothom, Avui en aquest projecte, farem una interfície del mòdul receptor i transmissor de RF amb microcontrolador PIC i comunicarem sense fils dos microcontroladors pic diferents.
En aquest projecte farem les següents coses: -
- Utilitzarem PIC16F877A per al transmissor i PIC18F4520 per a la secció Receptor.
- Interfocarem el teclat i la pantalla LCD amb microcontrolador PIC.
- Al costat del transmissor, farem la interfície del teclat amb PIC i transmetrem les dades. Al costat del receptor, rebrem les dades sense fils i mostrarem quina tecla es prem a la pantalla LCD.
- Utilitzarem codificador i descodificador IC per transmetre dades de 4 bits.
- La freqüència de recepció serà de 433 MHz mitjançant el mòdul RF TX-RX barat disponible al mercat.
Abans d’entrar en els esquemes i codis, comprenguem el funcionament del mòdul de RF amb els codificadors-codificadors. Consulteu a continuació dos articles a continuació per obtenir informació sobre com connectar la pantalla LCD i el teclat amb el microcontrolador PIC:
- Interfície LCD amb microcontrolador PIC mitjançant MPLABX i XC8
- Interfície de teclat Matrix 4x4 amb microcontrolador PIC
Mòdul de transmissor i receptor RF de 433 MHz:

Aquests són els mòduls transmissor i receptor que estem utilitzant en el projecte. És el mòdul més barat disponible per a 433 MHz. Aquests mòduls accepten dades de sèrie en un canal.
Si veiem les especificacions dels mòduls, el transmissor té un valor nominal de 3,5-12 V com a tensió d’entrada i la distància de transmissió és de 20-200 metres. Transmet en protocol AM (Audio Modulation) a una freqüència de 433 MHz. Podem transferir dades a una velocitat de 4KB / S amb una potència de 10 mW.

A la imatge superior podem veure el pin-out del mòdul Transmissor. D'esquerra a dreta, els pins són VCC, DATA i GND. També podem afegir l’antena i soldar-la al punt indicat a la imatge anterior.
Per a l’ especificació del receptor, el receptor té una qualificació de 5 V CC i un corrent en repòs de 4MA com a entrada. La freqüència de recepció és de 433,92 MHz amb una sensibilitat de -105DB.

A la imatge anterior podem veure el pin-out del mòdul receptor. Els quatre pins són d'esquerra a dreta, VCC, DATA, DATA i GND. Aquests dos pins centrals estan connectats internament. Podem utilitzar qualsevol o tots dos. Però és una bona pràctica utilitzar-les per reduir l'acoblament del soroll.
A més, una cosa no s’esmenta al full de dades: l’ inductor variable o POT al centre del mòdul s’utilitza per al calibratge de freqüències. Si no poguem rebre les dades transmeses, hi ha possibilitats que les freqüències de transmissió i recepció no coincideixin. Es tracta d’un circuit de RF i hem de sintonitzar el transmissor en el punt de freqüència transmès perfecte. A més, igual que el transmissor, aquest mòdul també té un port d'antena; podem soldar filferro en forma enrotllada per a una recepció més llarga.
El rang de transmissió és fiable en funció del voltatge subministrat al transmissor i de la longitud de les antenes a banda i banda. Per a aquest projecte específic no hem utilitzat antena externa ni hem utilitzat 5V al costat del transmissor. Hem comprovat amb una distància de 5 metres i ha funcionat perfectament.
Els mòduls RF són molt útils per a comunicacions sense fils de llarga distància. Aquí es mostra un circuit bàsic de transmissor i receptor de RF. Hem fet molts projectes mitjançant el mòdul RF:
- Electrodomèstics controlats per RF
- Cotxe de joguina controlat per Bluetooth mitjançant Arduino
- LEDs controlats a distància mitjançant RF mitjançant Raspberry Pi
Necessitat de codificadors i descodificadors:
Aquest sensor de RF té pocs inconvenients: -
- Comunicació unidireccional.
- Només un canal
- Interferència molt sorollosa.
A causa d’aquest inconvenient, hem utilitzat ICs de codificador i descodificador, HT12D i HT12E. D significa decodificador que s’utilitzarà al costat del receptor i E significa codificador que s’utilitzarà al costat del transmissor. Aquest IC proporciona 4 canals. També a causa de la codificació i descodificació, el nivell de soroll és molt baix.

A la imatge superior, l’esquerra és HT12D el descodificador i la dreta és HT12E, el codificador. Les dues CI són idèntiques. A0 a A7 s'utilitza per a la codificació especial. Podem utilitzar pins de microcontrolador per controlar aquests pins i configurar configuracions. Cal coincidir les mateixes configuracions a l’altra banda. Si ambdues configuracions són exactes i coincidents, podem rebre dades. Aquests 8 pins es poden connectar a Gnd o VCC o deixar-los oberts. Siguin quines siguin les configuracions que fem al codificador, hem de coincidir amb la connexió del descodificador. En aquest projecte deixarem oberts els 8 pins tant per al codificador com per al descodificador. 9 i 18 pins són VSS i VDD respectivament. Podem utilitzar el pin VTHT12D com a propòsit de notificació. Per a aquest projecte no l’hem utilitzat. El pin TE serveix per activar o desactivar el pin.
La part important és el pin OSC on necessitem connectar resistències per proporcionar oscil·lació al codificador i al descodificador. El descodificador necessita una oscil·lació més alta que el descodificador. Normalment, el valor de la resistència del codificador serà 1Meg i el valor del descodificador és de 33k. Utilitzarem aquestes resistències per al nostre projecte.
El pin DOUT és el pin de dades del transmissor RF a HT12E i el pin DIN de l’ HT12D s’utilitza per connectar el pin de dades del mòdul RF.
A HT12E, l’ AD8 a l’ AD11 és una entrada de quatre canals que es converteix i es transmet en sèrie a través del mòdul RF i passa exactament el contrari a HT12D, les dades de sèrie rebudes i descodificades, i obtenim una sortida paral·lela de 4 bits a través dels 4 pins D8 a D11.
Components necessaris:
- 2 - Tauler de pa
- 1 - LCD 16x2
- 1 - Teclat
- Parell HT12D i HT12E
- Mòdul RF RX-TX
- 1- 10K predefinits
- Resistència de 2 a 4,7 k
- Resistència 1- 1M
- 1- resistència de 33k
- Condensadors ceràmics de 2- 33pF
- Cristall d'1 a 20 MHz
- Bergsticks
- Pocs cables d'una sola cadena.
- PIC16F877A MCU
- PIC18F4520 MCU
- Un tornavís per controlar el pot de freqüència ha d’estar aïllat del cos humà.
Esquema de connexions:
Diagrama de circuits per al costat del transmissor (PIC16F877A):

Hem utilitzat PIC16F877A amb finalitats de transmissió. El teclat hexagonal connectat a través del PORTB i els 4 canals connectats als darrers 4 bits de PORTD. Obteniu més informació sobre com connectar el teclat Matrix 4x4 aquí.
Fixa com segueix:
1. AD11 = RD7
2. AD10 = RD6
3. AD9 = RD5
4. AD8 = RD4
Diagrama de circuits del costat del receptor (PIC18F4520):

A la imatge anterior, es mostra el circuit del receptor. La pantalla LCD està connectada a través de PORTB. Hem utilitzat un oscil·lador intern de PIC18F4520 per a aquest projecte. Els 4 canals es connecten de la mateixa manera que abans al circuit transmissor. Obteniu més informació sobre la connexió de 16x2 LCD amb el microcontrolador PIC aquí.
Aquest és el costat del transmissor -

I el costat del receptor en taulers independents:

Explicació del codi:
Hi ha dues parts del codi, una per al transmissor i una per al receptor. Podeu descarregar el codi complet des d’aquí.
Codi PIC16F877A per al transmissor de RF:
Com sempre primer, hem d’establir els bits de configuració al microcontrolador pic, definir algunes macros, incloses les biblioteques i la freqüència de cristall. El AD8-AD11 port de l'codificador ic es defineix com RF_TX en PORTD. Podeu comprovar el codi de tots els que apareixen al codi complet que es dóna al final.
Hem utilitzat dues funcions, void system_init (void) i void encode_rf_sender (dades de caràcters).
El system_init s'utilitza per a la inicialització pin i teclat inicialitzacions. La inicialització del teclat es diu des de la biblioteca del teclat.
El port del teclat també es defineix al teclat.h. Vam fer el PORTD com a sortida amb TRISD = 0x00 i vam fer que el port RF_TX fos 0x00 com a estat per defecte.
void system_init (void) { TRISD = 0x00; RF_TX = 0x00; keyboard_initialization (); }
A encode_rf_sender hem canviat l'estat de 4 pins segons el botó premut. Hem creat 16 valors hexadecimals diferents o estats PORTD en funció de ( 4x4) 16 botons diferents premuts.void encode_rf_sender (dades de caràcters) { if (data == '1') RF_TX = 0x10; if (dades == '2') RF_TX = 0x20; if (dades == '3') …………... …. ….
A la funció principal , primer rebem les dades premudes amb el botó del teclat mitjançant la funció switch_press_scan () i emmagatzemem les dades en la variable clau. Després d'això, hem codificat les dades mitjançant la funció encode_rf_sender () i canviant l' estat PORTD.
Codi PIC18F4520 per al receptor de RF:
Com sempre, primer establim els bits de configuració a PIC18f4520. És poc diferent del PIC16F877A, podeu comprovar el codi al fitxer zip adjunt.
Hem inclòs el fitxer de capçalera LCD. Definida la connexió de port D8-D11 del IC del descodificador a través de PORTD mitjançant la línia #define RF_RX PORTD, la connexió és la mateixa que s'utilitza a la secció Codificador. La declaració del port LCD també es fa al fitxer lcd.c.
#incloure
Com s'ha dit abans que estem utilitzant l'oscil·lador intern per al 18F4520, hem utilitzat el sistema _ init funció on hem configurat el OSCON registre de la 18F4520 per ajustar el oscil·lador intern de 8 MHz. També establim el bit TRIS tant per als pins LCD com per als pins del descodificador. Com que HT - 12D proporciona sortida als ports D8-D11, hem de configurar el PORTD com a entrada per rebre la sortida.
void system_init (void) { OSCCON = 0b01111110; // 8Mhz,, intosc // OSCTUNE = 0b01001111; // habilitació PLL, prescaler màxim 8x4 = 32Mhz TRISB = 0x00; TRISD = 0xFF; // Últims 4 bits com a bit d’entrada. }
Vam configurar el registre OSCON a 8 MHz, també vam fer el port B com a sortida i el port D com a entrada.
La funció següent es realitza mitjançant la lògica inversa exacta utilitzada a la secció anterior del transmissor. Aquí obtenim el mateix valor hexadecimal del port D i, mitjançant aquest valor hexadecimal , identifiquem quin commutador es va prémer a la secció del transmissor. Podem identificar cada tecla que premem i enviar el caràcter corresponent a la pantalla LCD.
void rf_analysis (sense signar recived_byte) { if (recived_byte == 0x10) lcd_data ('1'); if (recived_byte == 0x20) lcd_data ('2'); if (recived_byte == 0x30) ……. ….. …… ………..
La lcd_data es crida des del fitxer lcd.c.
A la funció principal inicialitzem primer el sistema i la pantalla LCD. Prenem una variable de bytes, i s'emmagatzema el valor hexadecimal rebut de l' port D. A continuació, mitjançant la funció rf_analysis podem imprimir el caràcter en pantalla LCD.
void main (void) { byte de caràcter sense signar = 0; system_init (); lcd_init (); mentre que (1) { lcd_com (0x80); lcd_puts ("CircuitDigest"); lcd_com (0xC0); byte = RF_RX; rf_analysis (byte); lcd_com (0xC0); } tornar; }
Abans d’executar-lo, hem sintonitzat el circuit. Primer hem premut el botó " D " del teclat. Per tant, el transmissor de RF transmet contínuament el 0xF0. A continuació, vam sintonitzar el circuit del receptor fins que la pantalla LCD mostri el caràcter " D ". De vegades, el mòdul s'ajusta correctament del fabricant, de vegades no. Si tot està correctament connectat i no es prem el valor del botó a la pantalla LCD, hi ha possibilitats que el receptor de RF no estigui sintonitzat. Hem utilitzat el tornavís aïllat per disminuir les possibilitats d’ajust erroni a causa de la nostra inductància corporal.
Així és com podeu connectar el mòdul RF al microcontrolador PIC i comunicar-vos sense fils amb dos microcontroladors PIC sense fils mitjançant el sensor RF.
Podeu descarregar el codi complet del transmissor i el receptor des d’aquí. Consulteu també el vídeo de demostració següent.
