- 433 MHz modul RF vysielača a prijímača:
- Potreba kódovača a dekodéra:
- Požadované komponenty:
- Schéma zapojenia:
- Vysvetlenie kódu:
Ahoj všetci, Dnes v tomto projekte prepojíme modul RF prijímača a vysielača s mikrokontrolérom PIC a bezdrôtovo komunikujeme medzi dvoma rôznymi mikrokontrolérmi pic.
V tomto projekte urobíme nasledujúce veci: -
- Použijeme PIC16F877A pre vysielač a PIC18F4520 pre sekciu Prijímač.
- Prepojíme klávesnicu a LCD s mikrokontrolérom PIC.
- Na strane vysielača prepojíme klávesnicu s PIC a budeme prenášať dáta. Na strane prijímača prijmeme údaje bezdrôtovo a ukážeme, ktorá klávesa je stlačená na LCD.
- Na prenos 4 bitových údajov použijeme kódovací a dekódovací IC.
- Frekvencia príjmu bude 433 MHz pomocou lacného modulu RF TX-RX dostupného na trhu.
Predtým, ako sa pustíme do schém a kódov, pochopme fungovanie RF modulu s integrovanými obvodmi Encoder-Decoder. Ďalej si prečítajte dva články, kde sa dozviete, ako prepojiť LCD a klávesnicu s mikrokontrolérom PIC:
- Rozhranie LCD s mikrokontrolérom PIC pomocou MPLABX a XC8
- Prepojenie maticových klávesníc 4x4 s mikrokontrolérom PIC
433 MHz modul RF vysielača a prijímača:
Jedná sa o vysielacie a prijímacie moduly, ktoré používame v projekte. Je to najlacnejší dostupný modul pre frekvenciu 433 MHz. Tieto moduly prijímajú sériové dáta v jednom kanáli.
Ak vidíme špecifikácie modulov, vysielač je dimenzovaný na prevádzku 3,5-12V ako vstupné napätie a vysielacia vzdialenosť je 20-200 metrov. Vysiela sa v protokole AM (Audio Modulation) na frekvencii 433 MHz. Dáta môžeme prenášať rýchlosťou 4KB / S s výkonom 10mW.
Na hornom obrázku vidíme vývod modulu vysielača. Zľava doprava sú kolíky VCC, DATA a GND. Môžeme tiež pridať anténu a spájkovať ju v bode označenom na obrázku vyššie.
Pre špecifikáciu prijímača má prijímač ako vstup vstupné napätie 5V ss a 4MA kľudový prúd. Prijímacia frekvencia je 433,92 MHz s citlivosťou -105 dB.
Na obrázku vyššie vidíme výbežok prijímacieho modulu. Štyri kolíky sú zľava doprava, VCC, DATA, DATA a GND. Tieto prostredné dva piny sú vnútorne spojené. Môžeme použiť jeden alebo obidva. Osvedčeným postupom je použitie oboch na zníženie hlukovej spojky.
V údajovom liste tiež nie je uvedená jedna vec, na kalibráciu frekvencie sa používa variabilný induktor alebo POT v strede modulu. Ak by sme nedokázali prijímať vysielané údaje, existujú možnosti, že vysielacie a prijímacie frekvencie sa nezhodujú. Toto je RF obvod a musíme vyladiť vysielač na perfektne vysielaný frekvenčný bod. Rovnako ako vysielač, aj tento modul má anténny port; môžeme spájkovať drôt v stočenej forme pre dlhší príjem.
Rozsah prenosu závisí od napätia dodávaného do vysielača a dĺžky antén na oboch stranách. Pre tento konkrétny projekt sme nepoužili externú anténu a použili sme 5V na strane vysielača. Skontrolovali sme s 5 metrovou vzdialenosťou a fungovalo to perfektne.
RF moduly sú veľmi užitočné pre bezdrôtovú komunikáciu na veľké vzdialenosti. Tu je zobrazený základný obvod vysielača a prijímača RF. Pomocou modulu RF sme vytvorili veľa projektov:
- RF riadené domáce spotrebiče
- Bluetooth ovládané autíčko pomocou Arduina
- RF diaľkovo ovládané LED diódy pomocou Raspberry Pi
Potreba kódovača a dekodéra:
Tento RF snímač má niekoľko nevýhod: -
- Jednosmerná komunikácia.
- Iba jeden kanál
- Veľmi hlučné rušenie.
Z dôvodu tejto nevýhody sme použili integrované obvody kódovača a dekodéra, HT12D a HT12E. D znamená dekodér, ktorý sa použije na strane prijímača, a E znamená kodér, ktorý sa použije na strane vysielača. Tieto integrované obvody poskytujú 4 kanály. Aj kvôli kódovaniu a dekódovaniu je úroveň hluku veľmi nízka.
Na obrázku vyššie je ľavá strana dekodérom HT12D a pravá časť kodéra je HT12E. Oba integrované obvody sú identické. A0 až A7 sa používajú pre špeciálne kódovanie. Na kontrolu týchto pinov a nastavovanie konfigurácií môžeme použiť piny mikrokontroléra. Rovnaké konfigurácie je potrebné zosúladiť na druhej strane. Ak sú obe konfigurácie presné a zhodné, môžeme prijímať údaje. Týchto 8 pinov môže byť pripojených k Gnd alebo VCC alebo ponechaných otvorených. Bez ohľadu na konfiguráciu, ktorú v kodéri urobíme, musíme zosúladiť pripojenie na dekodéri. V tomto projekte týchto 8 pinov ponecháme otvorených pre kódovač aj dekodér. 9 a 18 pinov je VSS, respektíve VDD. Môžeme použiť VT pin vHT12D ako oznamovacie účely. Pre tento projekt sme ho nepoužili. TE kolíka pre vysielanie povoliť alebo zakázať kolík.
Dôležitou súčasťou je kolík OSC, kde musíme pripojiť rezistory, aby sme zabezpečili osciláciu kódovača a dekodéra. Dekodér potrebuje vyššiu osciláciu ako dekodér. Hodnota odporu dekodéra bude zvyčajne 1Meg a hodnota dekodéra je 33k. Tieto odpory použijeme pre náš projekt.
Kolík DOUT je dátový kolík RF vysielača na HT12E a DIN kolík v HT12D sa používa na pripojenie dátového kolíka RF modulu.
V HT12E je AD8 až AD11 štvorkanálový vstup, ktorý sa prevádza a sériovo prenáša cez RF modul a presný reverz sa deje v HT12D, sériových dátach prijatých a dekódovaných, a dostaneme 4 bitový paralelný výstup cez 4 piny D8 až D11.
Požadované komponenty:
- 2 - Chlebová doska
- 1 - LCD 16x2
- 1 - Klávesnica
- Pár HT12D a HT12E
- RF modul RX-TX
- 1- 10K predvoľba
- 2 - 4,7k rezistor
- Rezistor 1- 1M
- 1-33k rezistor
- 2- keramické kondenzátory 33pF
- 1 - 20 MHz kryštál
- Horské paličky
- Niekoľko vlákien s jedným vláknom.
- PIC16F877A MCU
- PIC18F4520 MCU
- Skrutkovač na ovládanie frekvenčnej banky musí byť izolovaný od ľudského tela.
Schéma zapojenia:
Schéma zapojenia na strane vysielača (PIC16F877A):
Na účely vysielania sme použili PIC16F877A. Hex klávesnica pripojená cez Portbou a 4 kanály pripojených cez posledné 4 bity PORTD. Viac informácií o pripojení klávesnice 4x4 Matrix sa dozviete tu.
Pripnúť nasledovne -
1. AD11 = RD7
2. AD10 = RD6
3. AD9 = RD5
4. AD8 = RD4
Schéma zapojenia na strane prijímača (PIC18F4520):
Na vyššie uvedenom obrázku je zobrazený obvod prijímača. LCD je pripojený cez Portbou. Použili sme interné oscilátor o PIC18F4520 pre tento projekt. Tieto 4 kanály sú pripojené rovnakým spôsobom, ako sme to urobili predtým v obvode vysielača. Viac informácií o pripojení displeja 16 x 2 LCD k mikrokontroléru PIC sa dozviete tu.
Toto je strana vysielača -
A strana prijímača v samostatnej doske -
Vysvetlenie kódu:
Existujú dve časti kódu, jedna je určená pre vysielač a druhá pre prijímač. Kompletný kód si môžete stiahnuť odtiaľto.
Kód PIC16F877A pre RF vysielač:
Ako vždy najskôr je potrebné nastaviť konfiguračné bity v mikrokontroléri pic, definovať niektoré makrá vrátane knižníc a frekvencie kryštálov. AD8-AD11 port Encoder ic je definovaná ako RF_TX na PORTD. Môžete skontrolovať kód všetkých osôb v úplnom kóde uvedenom na konci.
Použili sme dve funkcie, void system_init (void) a void encode_rf_sender (char data).
System_init sa používa pre inicializáciu pin a klávesnica inicializácia. Inicializácia klávesnice sa volá z knižnice klávesníc.
Port klávesnice je definovaný aj v keypad.h. Vytvorili sme PORTD ako výstup pomocou TRISD = 0x00 a port RF_TX sme nastavili ako 0x00 ako predvolený stav.
void system_init (void) { TRISD = 0x00; RF_TX = 0x00; keyboard_initialization (); }
V encode_rf_sender sme zmenili stav 4 pinov v závislosti od stlačeného tlačidla. Vytvorili sme 16 rôznych hexadecimálnych hodnôt alebo stavov PORTD v závislosti na ( 4x4) 16 rôznych stlačených tlačidlách.void encode_rf_sender (char data) { if (data == '1') RF_TX = 0x10; if (data == '2') RF_TX = 0x20; if (data == '3') …………... …. ….
V hlavnej funkcii najskôr pomocou funkcie switch_press_scan () prijmeme stlačené údaje na klávesnici a údaje uložíme do premennej kľúča. Potom sme dáta zakódovali pomocou funkcie encode_rf_sender () a zmenou stavu PORTD.
Kód PIC18F4520 pre RF prijímač:
Ako vždy, najskôr sme nastavili konfiguračné bity v PIC18f4520. Je to trochu odlišné od PIC16F877A, môžete skontrolovať kód v priloženom zip súbore.
Zahrnuli sme hlavičkový súbor LCD. Definované pripojenie portu D8-D11 dekodéra IC cez PORTD pomocou linky #define RF_RX PORTD, pripojenie je rovnaké, aké sa používa v časti Kodér. Deklarácia portu LCD sa vykonáva aj v súbore lcd.c.
#include
Ako už bolo uvedené skôr, ako pre 18F4520 používame interný oscilátor, použili sme funkciu system _ init, kde sme nakonfigurovali register OSCON 18F4520 na nastavenie interného oscilátora na 8 MHz. Nastavili sme tiež bit TRIS pre piny LCD aj piny dekodéra. Pretože HT - 12D poskytuje výstup na portoch D8-D11, musíme na príjem výstupu nakonfigurovať PORTD ako vstup.
void system_init (void) { OSCCON = 0b01111110; // 8Mhz,, intosc // OSCTUNE = 0b01001111; // PLL enable, Max prescaler 8x4 = 32Mhz TRISB = 0x00; TRISD = 0xFF; // Posledné 4 bity ako vstupný bit. }
Nakonfigurovali sme register OSCON na 8 MHz, tiež sme vytvorili port B ako výstup a port D ako vstup.
Nižšie uvedená funkcia sa vykonáva pomocou presnej reverznej logiky použitej v predchádzajúcej časti vysielača. Tu získame rovnakú hexadecimálnu hodnotu z portu D a podľa tejto hexadecimálnej hodnoty identifikujeme, ktorý prepínač bol stlačený v sekcii vysielača. Môžeme identifikovať každé stlačenie klávesu a odoslať zodpovedajúci znak na LCD.
void rf_analysis (unsigned char recived_byte) { if (recived_byte == 0x10) lcd_data ('1'); if (recived_byte == 0x20) lcd_data ('2'); if (recived_byte == 0x30) ……. ….. …… ………..
Lcd_data je volaná z lcd.c súboru.
V hlavnej funkcii najskôr inicializujeme systém a LCD. Vzali sme variabilné byte, a uložil hexadecimálne hodnoty prijímané z portu D. Potom pomocou funkcie rf_analysis môžeme vytlačiť znak na LCD.
void main (void) { unsigned char byte = 0; system_init (); lcd_init (); while (1) { lcd_com (0x80); lcd_puts ("CircuitDigest"); lcd_com (0xC0); byte = RF_RX; rf_analysis (bajt); lcd_com (0xC0); } návrat; }
Pred spustením sme vyladili okruh. Najskôr sme stlačili tlačidlo „ D “ na klávesnici. Takže 0xF0 je neustále vysielaný RF vysielačom. Potom sme ladili obvod prijímača, kým sa na displeji LCD nezobrazí znak „ D “. Niekedy je modul od výrobcu vyladený správne, niekedy nie. Ak je všetko správne pripojené a na LCD sa nezobrazuje hodnota stlačeného tlačidla, existujú možnosti, že RF prijímač nie je vyladený. Použili sme izolovaný skrutkovač na zníženie nesprávnych možností ladenia kvôli indukčnosti nášho tela.
Takto môžete prepojiť RF modul s mikrokontrolérom PIC a bezdrôtovo komunikovať medzi dvoma mikrokontrolérmi PIC pomocou RF senzora.
Tu si môžete stiahnuť kompletný kód pre vysielač a prijímač. Skontrolujte tiež ukážkové video uvedené nižšie.