- 433MHz RF raidītājs un uztvērēja modulis:
- Kodētāja un dekoderu nepieciešamība:
- Nepieciešamās sastāvdaļas:
- Ķēdes shēma:
- Koda skaidrojums:
Sveiki visi! Šodien šajā projektā mēs saskarsmēsim RF uztvērēju un raidītāja moduli ar PIC mikrokontrolleru un bezvadu režīmā sazināsimies starp diviem dažādiem pic mikrokontrolleriem.
Šajā projektā mēs darīsim šādas lietas: -
- Raidītājam mēs izmantosim PIC16F877A un sadaļai Resiver PIC18F4520.
- Mēs saskarnes tastatūru un LCD savienosim ar PIC mikrokontrolleru.
- Raidītāja pusē mēs saskarnes tastatūru ar PIC un pārsūtīsim datus. Uztvērēja pusē mēs saņemsim datus bezvadu režīmā un parādīsim, kurš taustiņš ir nospiests uz LCD.
- Mēs izmantosim kodētāju un dekodētāja IC, lai pārsūtītu 4 bitu datus.
- Pieņemšanas frekvence būs 433 MHz, izmantojot tirgū pieejamo lēto RF TX-RX moduli.
Pirms iedziļināties shēmās un kodos, sapratīsim RF moduļa darbību ar Encoder-Decoder IC. Apskatiet arī divus rakstus, lai uzzinātu, kā saskarni ar LCD un tastatūru savienot ar PIC mikrokontrolleru:
- LCD mijiedarbība ar PIC mikrokontrolleru, izmantojot MPLABX un XC8
- 4x4 matricas tastatūras mijiedarbība ar PIC mikrokontrolleru
433MHz RF raidītājs un uztvērēja modulis:
Tie ir raidītāja un uztvērēja moduļi, kurus mēs izmantojam projektā. Tas ir lētākais pieejamais modulis 433 MHz frekvencē. Šie moduļi pieņem sērijas datus vienā kanālā.
Ja mēs redzam moduļu specifikācijas, raidītājs ir paredzēts 3,5-12 V darbībai kā ieejas spriegums un pārraides attālums ir 20-200 metri. Tas pārraida AM (Audio Modulation) protokolā ar 433 MHz frekvenci. Mēs varam pārsūtīt datus ar ātrumu 4KB / S ar 10mW jaudu.
Augšējā attēlā mēs varam redzēt raidītāja moduļa piespraudi. No kreisās uz labo tapas ir VCC, DATA un GND. Mēs varam pievienot arī antenu un pielodēt to punktā, kas norādīts iepriekšējā attēlā.
Attiecībā uz uztvērēju specifikācijā, uztvērējs ir reitingu 5V DC un 4mA kluss pašreizējais kā priekšnodokli. Saņemšanas frekvence ir 433,92 MHz ar jutību -105DB.
Iepriekš redzamajā attēlā mēs varam redzēt uztvērēja moduļa tapu. Četri tapas ir no kreisās uz labo, VCC, DATA, DATA un GND. Šie vidējie divi tapas ir iekšēji savienoti. Mēs varam izmantot jebkuru vai abus. Bet laba prakse ir izmantot abus trokšņa sakabes pazemināšanai.
Turklāt viena lieta datu lapā nav pieminēta, mainīgais induktors vai POT moduļa vidū tiek izmantots frekvences kalibrēšanai. Ja mēs nevarējām saņemt pārsūtītos datus, pastāv iespējas, ka raidīšanas un saņemšanas frekvences nav saskaņotas. Šī ir RF ķēde, un mums jānoskaņo raidītājs ideālā pārraidītā frekvences punktā. Tāpat kā raidītājam, šim modulim ir arī Antenas ports; mēs varam lodēt stiepli ruļļos ilgākai uztveršanai.
Pārraides diapazons ir atkarīgs no raidītājam piegādātā sprieguma un antenu garuma abās pusēs. Šajā konkrētajā projektā mēs neizmantojām ārējo antenu un raidītāja pusē izmantojām 5V. Mēs pārbaudījām ar 5 metru attālumu, un tas darbojās perfekti.
RF moduļi ir ļoti noderīgi tālsatiksmes bezvadu sakariem. Šeit parādīta pamata RF raidītāja un uztvērēja ķēde. Mēs esam veikuši daudzus projektus, izmantojot RF moduli:
- RF kontrolēta sadzīves tehnika
- Bluetooth kontrolēta rotaļlietu automašīna, izmantojot Arduino
- RF tālvadības LED, izmantojot Raspberry Pi
Kodētāja un dekoderu nepieciešamība:
Šim RF sensoram ir maz trūkumu: -
- Vienvirziena komunikācija.
- Tikai viens kanāls
- Ļoti trokšņa traucējumi.
Šī trūkuma dēļ mēs esam izmantojuši kodētāja un dekodētāja IC, HT12D un HT12E. D apzīmē dekodētāju, kas tiks izmantots uztvērēja pusē, un E apzīmē kodētāju, kas tiks izmantots raidītāja pusē. Šis IC nodrošina 4 kanālus. Arī kodēšanas un dekodēšanas dēļ trokšņa līmenis ir ļoti zems.
Iepriekš redzamajā attēlā kreisais ir dekoderis HT12D, bet labais - kodētāja HT12E. Abas IC ir identiskas. Īpašai kodēšanai izmanto A0 līdz A7. Mēs varam izmantot mikrokontrolleru tapas, lai kontrolētu šīs tapas un iestatītu konfigurācijas. Tās pašas konfigurācijas ir jāsaskaņo otrā pusē. Ja abas konfigurācijas ir precīzas un saskaņotas, mēs varam saņemt datus. Šīs 8 tapas var savienot ar Gnd vai VCC vai atstāt atvērtas. Neatkarīgi no konfigurācijas, ko mēs darām kodētājā, mums jāatbilst savienojumam dekoderī. Šajā projektā mēs atstāsim atvērtas šīs 8 tapas gan kodētājam, gan dekodētājam. 9 un 18 kontakti ir attiecīgi VSS un VDD. Mēs varam izmantot VT tapuHT12D kā paziņošanas mērķi. Šim projektam mēs to neizmantojām. TE pin ir pārraidīšanai iespējot vai atspējot pin.
Svarīga daļa ir OSC tapa, kur mums jāpievieno rezistori, ir nodrošināt kodētāja un dekodētāja svārstības. Dekoderam nepieciešama lielāka svārstība nekā dekoderim. Parasti kodētāja rezistora vērtība būs 1Meg un dekodera vērtība ir 33k. Mēs izmantosim šos rezistorus savam projektam.
DOUT tapa ir RF raidītāja datu tapa uz HT12E, un DIN tapa HT12D tiek izmantota, lai savienotu RF moduļa datu tapu.
In HT12E, AD8 uz AD11 ir četru kanālu ieejas, kas tiek pārvērsti un sērijveida nosūtīta caur RF moduli un precīzs reverse lieta notiek HT12D, sērijas saņemto datu un dekodēt, un mēs iegūt 4 bit paralēlo izejas pāri 4 pins D8 uz D11.
Nepieciešamās sastāvdaļas:
- 2 - Maizes dēlis
- 1 - LCD 16x2
- 1 - tastatūra
- HT12D un HT12E pāris
- RX-TX RF modulis
- 1 - 10K iepriekš iestatīts
- 2 - 4,7k rezistors
- 1- 1M rezistors
- 1- 33k rezistors
- 2- 33pF keramikas kondensatori
- 1 - 20Mhz kristāls
- Bergsticks
- Maz viena pavediena vadu.
- PIC16F877A MCU
- PIC18F4520 MCU
- Skrūvgriezis frekvences pogas kontrolei ir jāizolē no cilvēka ķermeņa.
Ķēdes shēma:
Raidītāja puses shēmas diagramma (PIC16F877A):
Pārraidīšanai mēs izmantojām PIC16F877A. Hex tastatūra savienots pāri PORTB un 4 kanālu savienots pāri pēdējo 4 biti PORTD. Uzziniet vairāk par 4x4 Matrix tastatūras pievienošanu šeit.
Piespraudiet šādi:
1. AD11 = RD7
2. AD10 = RD6
3. AD9 = RD5
4. AD8 = RD4
Uztvērēja puses shēmas diagramma (PIC18F4520):
Iepriekš redzamajā attēlā ir parādīta uztvērēja ķēde. LCD ir savienota pāri PORTB. Mēs izmantojām iekšējo oscilatoru ir PIC18F4520 šim projektam. Ar 4 kanāli ir savienoti tāpat kā mēs to darījām agrāk raidītāja ķēdē. Uzziniet vairāk par 16x2 LCD savienošanu ar PIC mikrokontrolleru šeit.
Šī ir raidītāja puse -
Un uztvērēja puse atsevišķā maizes dēļā -
Koda skaidrojums:
Kodam ir divas daļas, viena ir raidītājam un otra - uztvērējam. Pilnu kodu varat lejupielādēt šeit.
RF raidītāja PIC16F877A kods:
Kā vienmēr vispirms, mums ir jāiestata konfigurācijas biti pic mikrokontrollerī, jādefinē daži makro, tostarp bibliotēkas un kristālu frekvence. AD8-AD11 osta Encoder IC definē kā RF_TX pie PORTD. Jūs varat pārbaudīt kodu visiem tiem kodiem, kas norādīti beigās.
Mēs izmantojām divas funkcijas: void system_init (void) un void encode_rf_sender (char data).
System_init izmanto pin inicializēšanas un tastatūras initializations. Tastatūras inicializāciju izsauc no tastatūras bibliotēkas.
Tastatūras ports ir definēts arī tastatūrā. H. Mēs izveidojām PORTD kā izvadi, izmantojot TRISD = 0x00, un kā noklusējuma stāvokli RF_TX portu iestatījām kā 0x00.
void system_init (void) { TRISD = 0x00; RF_TX = 0x00; keyboard_initialization (); }
Jo encode_rf_sender esam mainījuši 4 pin stāvokli atkarībā no pogas nospiešanas. Mēs esam izveidojuši 16 dažādas sešstūra vērtības vai PORTD stāvokļus atkarībā no ( 4x4) 16 dažādu pogu nospiešanas.void encode_rf_sender (char dati) { if (data == '1') RF_TX = 0x10; ja (dati == '2') RF_TX = 0x20; ja (dati == '3') …………... …. ….
Ar galveno funkciju, mēs vispirms saņemt tastatūra poga nospiesta datus, izmantojot switch_press_scan () funkciju, un uzglabāt datus galveno mainīgo. Pēc tam mēs esam kodējuši datus, izmantojot funkciju encode_rf_sender () un mainot PORTD statusu.
RF uztvērēja PIC18F4520 kods:
Kā vienmēr, mēs vispirms iestatījām konfigurācijas bitus PIC18f4520. Tas nedaudz atšķiras no PIC16F877A, kodu varat pārbaudīt pievienotajā ZIP failā.
Mēs iekļāvām LCD galvenes failu. Definēja Dododer IC D8-D11 porta savienojumu visā PORTD, izmantojot līniju #define RF_RX PORTD, savienojums ir tāds pats kā sadaļā Encoder. LCD porta deklarācija tiek veikta arī failā lcd.c.
# iekļaut
Kā minēts iepriekš, mēs izmantojam iekšējo oscilatoru par 18F4520, mēs izmantojām sistēma _ Init funkcija, kur mēs konfigurēts OSCON reģistru par 18F4520, lai uzstādītu iekšējo oscilatoru par 8 MHz. Mēs arī iestatījām TRIS bitu gan LCD, gan dekodera tapām. Tā kā HT - 12D nodrošina izvadi D8-D11 pieslēgvietās, mums ir jākonfigurē PORTD kā ievade, lai saņemtu izvadi.
void system_init (void) { OSCCON = 0b01111110; // 8Mhz,, intosc // OSCTUNE = 0b01001111; // PLL iespējošana, Max prescaler 8x4 = 32Mhz TRISB = 0x00; TRISD = 0xFF; // Pēdējie 4 biti kā ievades bits. }
Mēs konfigurēts OSCON reģistru pie 8 MHz, arī izgatavoti ostas B kā izejas un ostas D kā ievadi.
Zemāk funkcija tiek veikta, izmantojot precīzu apgriezto loģiku, kas izmantota iepriekšējā raidītāja sadaļā. Šeit mēs iegūstam to pašu hex vērtību no porta D, un ar šo hex vērtību mēs identificējam, kurš slēdzis tika nospiests raidītāja sadaļā. Mēs varam identificēt katru taustiņa nospiešanu un LCD nosūtīt atbilstošo rakstzīmi.
void rf_analysis (neparakstīta char recived_byte) { if (recived_byte == 0x10) lcd_data ('1'); ja (recived_byte == 0x20) lcd_data ('2'); ja (recived_byte == 0x30) ……. ….. …… ………..
Lcd_data sauc no lcd.c failu.
Ar galveno funkciju, mēs vispirms inicializēt sistēmu un LCD. Mēs paņēmām mainīgu baitu un saglabājām no porta D saņemto sešstūra vērtību. Pēc tam ar funkciju rf_analysis mēs varam izdrukāt rakstzīmi uz LCD.
void main (void) { neparakstīts rakstzīmju baits = 0; system_init (); lcd_init (); kamēr (1) { lcd_com (0x80); lcd_puts ("CircuitDigest"); lcd_com (0xC0); baits = RF_RX; rf_analīze (baits); lcd_com (0xC0); } atgriešanās; }
Pirms tā palaišanas mēs esam noregulējuši ķēdi. Vispirms mēs esam nospieduši tastatūras pogu ' D '. Tātad RF raidītājs nepārtraukti pārraida 0xF0. Pēc tam mēs noregulējām uztvērēja ķēdi, līdz LCD displejā parādās raksturs “ D ”. Dažreiz modulis tiek pareizi noregulēts no ražotāja, dažreiz tā nav. Ja viss ir pareizi pievienots un LCD displejā netiek nospiesta pogas vērtība, pastāv iespējas, ka RF uztvērējs netiek noregulēts. Mēs izmantojām izolēto skrūvgriezi, lai samazinātu nepareizas regulēšanas iespējas ķermeņa induktivitātes dēļ.
Tādā veidā jūs varat pieslēgt RF moduli PIC mikrokontrollerim un sazināties starp diviem PIC mikrokontrolleriem bezvadu režīmā, izmantojot RF sensoru.
Šeit varat lejupielādēt pilnu raidītāja un uztvērēja kodu, skatiet arī zemāk esošo demonstrācijas video.