- 433MHz radijo siųstuvo ir imtuvo modulis:
- Kodavimo ir dekoderių poreikis:
- Būtini komponentai:
- Grandinės schema:
- Kodo paaiškinimas:
Sveiki visi, Šiandien šiame projekte mes sujungsime radijo imtuvą ir siųstuvo modulį su PIC mikrovaldikliu ir belaidžiu ryšiu bendrausime tarp dviejų skirtingų pic mikrovaldiklių.
Šiame projekte atliksime šiuos dalykus: -
- Siųstuvui naudosime PIC16F877A, o imtuvui - PIC18F4520.
- Klaviatūrą ir skystųjų kristalų ekraną sujungsime su PIC mikrovaldikliu.
- Siųstuvo pusėje mes sąsajos klaviatūrą su PIC ir perduosime duomenis. Imtuvo pusėje duomenis gausime belaidžiu būdu ir parodysime, kuris klavišas yra paspaustas LCD.
- 4 bitų duomenims perduoti naudosime kodavimo įrenginį ir dekoderio IC.
- Priėmimo dažnis bus 433 MHz, naudojant rinkoje esantį pigų RF TX-RX modulį.
Prieš eidami į schemas ir kodus, supraskime RF modulio su „Encoder-Decoder IC“ veikimą. Taip pat peržiūrėkite žemiau pateiktus du straipsnius, kad sužinotumėte, kaip susieti LCD ir klaviatūras su PIC mikrovaldikliu:
- LCD sąsaja su PIC mikrovaldikliu naudojant MPLABX ir XC8
- 4x4 „Matrix“ klaviatūros sąsaja su PIC mikrovaldikliu
433MHz radijo siųstuvo ir imtuvo modulis:
Tai yra siųstuvo ir imtuvo moduliai, kuriuos naudojame projekte. Tai pigiausias modulis, prieinamas 433 MHz dažniu. Šie moduliai priima nuoseklius duomenis vienu kanalu.
Jei matome modulių specifikacijas, siųstuvas yra įvertintas 3,5–12 V veikimui kaip įėjimo įtampa, o perdavimo atstumas yra 20–200 metrų. Jis perduoda AM (garso moduliacija) protokolu 433 MHz dažniu. Mes galime perduoti duomenis 4KB / S greičiu su 10mW galia.
Viršutiniame paveikslėlyje matome siųstuvo modulio prisegimą. Iš kairės į dešinę kaiščiai yra VCC, DATA ir GND. Mes taip pat galime pridėti anteną ir lituoti ant taško, pažymėto aukščiau esančiame paveikslėlyje.
Pagal imtuvo specifikaciją imtuvo įvestis turi 5 V nuolatinės srovės ir 4MA ramybės srovę. Gaunamasis dažnis yra 433,92 MHz su –105DB jautrumu.
Aukščiau pateiktame paveikslėlyje galime pamatyti imtuvo modulio kištuką. Keturi kaiščiai yra iš kairės į dešinę, VCC, DATA, DATA ir GND. Tie viduriniai du kaiščiai yra tarpusavyje sujungti. Mes galime naudoti bet kurį arba abu. Bet gera praktika yra naudoti abu mažinant triukšmo sukabinimo įtaisą.
Be to, vienas dalykas nepaminėtas duomenų lape, dažnio kalibravimui naudojamas kintamasis induktorius arba POT modulio viduryje. Jei negalėjome priimti perduotų duomenų, yra galimybių, kad perdavimo ir priėmimo dažniai nėra suderinti. Tai yra RF grandinė, todėl mes turime sureguliuoti siųstuvą tobulame perdavimo taške. Šis modulis, kaip ir siųstuvas, taip pat turi antenos prievadą; mes galime lituoti vielą susukta forma ilgesniam priėmimui.
Perdavimo diapazonas priklauso nuo siųstuvui tiekiamos įtampos ir antenų ilgio abiejose pusėse. Šiam konkrečiam projektui nenaudojome išorinės antenos, o siųstuvo pusėje naudojome 5 V įtampą. Mes patikrinome 5 metrų atstumu ir jis puikiai veikė.
RF moduliai yra labai naudingi tolimojo nuotolio belaidžiui ryšiui. Čia parodyta pagrindinė radijo siųstuvo ir imtuvo grandinė. Mes sukūrėme daugybę projektų naudodami RF modulį:
- RF valdoma buitinė technika
- „Bluetooth“ valdomas žaislinis automobilis, naudojant „Arduino“
- RF nuotolinio valdymo LED, naudojant „Raspberry Pi“
Kodavimo ir dekoderių poreikis:
Šis RF jutiklis turi keletą trūkumų: -
- Vienpusis bendravimas.
- Tik vienas kanalas
- Labai triukšmo trukdžiai.
Dėl šio trūkumo mes naudojome kodavimo ir dekodavimo IC, HT12D ir HT12E. D reiškia dekoderį, kuris bus naudojamas imtuvo pusėje, o E reiškia koduotoją, kuris bus naudojamas siųstuvo pusėje. Šie IC teikia 4 kanalus. Taip pat dėl kodavimo ir dekodavimo triukšmo lygis yra labai žemas.
Į paveikslėlio, liko vienas HT12D dekoderis ir teisingas yra HT12E, daviklis vienas. Abu IC yra identiški. A0 - A7 naudojami specialiam kodavimui. Mes galime naudoti mikrovaldiklio kaiščius, kad galėtume valdyti tuos kaiščius ir nustatyti konfigūracijas. Tos pačios konfigūracijos turi būti suderintos kitoje pusėje. Jei abi konfigūracijos yra tikslios ir suderintos, galime gauti duomenis. Šiuos 8 kaiščius galima prijungti prie „ Gnd“ arba „ VCC“ arba palikti atvirus. Nepriklausomai nuo konfigūracijų, kurias darome kodavimo įrenginyje, turime suderinti ryšį dekoderyje. Šiame projekte paliksime atidarytus tuos 8 smeigtukus tiek koduotojui, tiek dekoderiui. 9 ir 18 kontaktų yra atitinkamai VSS ir VDD. Mes galime naudoti VT kaištįHT12D kaip pranešimo tikslais. Šiam projektui mes jo nenaudojome. TE kaištis perdavimo įjungti arba išjungti PIN.
Svarbi dalis yra OSC kaištis, kur turime prijungti rezistorius, - tai užtikrinti svyravimus koduotojui ir dekoderiui. Dekoderiui reikia didesnio svyravimo nei dekoderiui. Paprastai kodavimo įrenginio rezistoriaus vertė bus 1Meg, o dekoderio vertė - 33k. Mes naudosime tuos rezistorius savo projektui.
DOUT kaištis yra RF siųstuvas duomenų kaištis HT12E ir DIN kaištelio HT12D yra naudojamas prijungti RF modulis duomenų kaištį.
Be HT12E, AD8 į AD11 yra keturių kanalų įvesties, kuri bus perskaičiuoti ir serijiniu perduodama per RF modulis ir tiksli atvirkštinis dalykas atsitinka HT12D, gautų ir iššifruoti serijos duomenimis, ir mes gauname 4 tiek lygiagrečiai produkcija visoje 4 smeigtukai D8 į D11.
Būtini komponentai:
- 2 - duonos lenta
- 1 - LCD 16x2
- 1 - klaviatūra
- HT12D ir HT12E pora
- RX-TX RF modulis
- 1 - 10K iš anksto nustatytas
- 2 - 4,7k rezistorius
- 1- 1M rezistorius
- 1- 33k rezistorius
- 2- 33pF keraminiai kondensatoriai
- 1 - 20Mhz kristalas
- Bergsticks
- Nedaug viengyslių laidų.
- PIC16F877A MCU
- PIC18F4520 MCU
- Atsuktuvą dažnio indui valdyti reikia izoliuoti nuo žmogaus kūno.
Grandinės schema:
Siųstuvo pusės grandinės schema (PIC16F877A):
Perdavimui naudojome PIC16F877A. „ Hex“ klaviatūra, sujungta per PORTB, ir 4 kanalai, prijungti per paskutinius 4 PORTD bitus. Sužinokite daugiau apie 4x4 „Matrix“ klaviatūros prijungimą čia.
Prisekite taip:
1. AD11 = RD7
2. AD10 = RD6
3. AD9 = RD5
4. AD8 = RD4
Imtuvo pusės grandinės schema (PIC18F4520):
Aukščiau pateiktame paveikslėlyje parodyta imtuvo grandinė. LCD prijungtas per PORTB. Mes naudojome vidaus osciliatorius su PIC18F4520 šiam projektui. Kad 4 kanalų yra prijungtas taip pat, kaip ir anksčiau, mes siųstuvo grandinės. Sužinokite daugiau apie 16x2 LCD prijungimą prie PIC mikrovaldiklio čia.
Tai yra siųstuvo pusė -
Ir imtuvo pusė atskiroje skydinėje -
Kodo paaiškinimas:
Yra dvi kodo dalys, viena skirta siųstuvui, kita - imtuvui. Išsamų kodą galite atsisiųsti iš čia.
RF siųstuvo PIC16F877A kodas:
Kaip visada pirmiausia, mes turime nustatyti „pic“ mikrovaldiklio konfigūracijos bitus, apibrėžti kai kurias makrokomandas, įskaitant bibliotekas ir kristalų dažnį. AD8-AD11 uostas Encoder IC yra apibrėžiamas kaip RF_TX ne PORTD. Galite patikrinti kodą, nurodantį visą kodą, pateiktą pabaigoje.
Mes panaudojome dvi funkcijas: void system_init (negaliojanti) ir void encode_rf_sender (char duomenys).
„ System_init “ naudojamas kaiščių inicijavimui ir klaviatūros inicijavimui. Klaviatūros inicijavimas iškviečiamas iš klaviatūros bibliotekos.
Klaviatūros prievadas taip pat apibrėžtas klaviatūroje.h. Mes padarėme PORTD kaip išvestį naudodami TRISD = 0x00, o RF_TX prievadą nustatėme kaip 0x00 kaip numatytąją būseną.
void system_init (negaliojantis) { TRISD = 0x00; RF_TX = 0x00; keyboard_initialization (); }
Į encode_rf_sender mes pakeitėme 4 pin būseną, priklausomai nuo mygtuko paspaudimo. Mes sukūrėme 16 skirtingų šešioliktainių reikšmių arba PORTD būsenų, priklausomai nuo ( 4x4) 16 skirtingų mygtukų paspaudimo.void encode_rf_sender (char duomenys) { if (data == '1') RF_TX = 0x10; jei (duomenys == '2') RF_TX = 0x20; jei (duomenys == '3') …………... …. ….
Į pagrindinį funkcija pirmiausia gauna klaviatūra mygtuko duomenis per switch_press_scan () funkciją ir saugoti duomenis raktų kintamasis. Po to mes užkodavome duomenis naudodami encode_rf_sender () funkciją ir pakeisdami PORTD būseną.
RF imtuvo PIC18F4520 kodas:
Kaip visada, pirmiausia nustatėme konfigūracijos bitus PIC18f4520. Šiek tiek skiriasi nuo PIC16F877A, kodą galite patikrinti pridedamame ZIP faile.
Mes įtraukėme LCD antraštės failą. Apibrėžė dekoderio IC prievadą D8-D11 visoje PORTD naudojant #define RF_RX PORTD liniją, ryšys yra toks pats, kaip naudojamas skyriuje Encoder. LCD prievado deklaravimas taip pat atliekamas faile lcd.c.
# įtraukti
Kaip minėta anksčiau, mes naudojame vidaus osciliatorius už 18F4520, mes naudojome sistemą _ init funkcija, kur mes sukonfigūruotas OSCON registrus 18F4520 nustatyti vidaus osciliatorius už 8 MHz. Mes taip pat nustatėme TRIS bitą tiek LCD, tiek dekoderio kaiščiams. Kadangi HT - 12D teikia išvestį D8-D11 prievaduose, turime konfigūruoti PORTD kaip įvestį, kad gautumėte išvestį.
void system_init (negaliojantis) { OSCCON = 0b01111110; // 8Mhz,, intosc // OSCTUNE = 0b01001111; // PLL įgalinimas, maksimalus išankstinio skalavimo skalė 8x4 = 32Mhz TRISB = 0x00; TRISD = 0xFF; // Paskutiniai 4 bitai kaip įvesties bitai. }
Mes sukonfigūruotas OSCON registru 8 MHz, taip pat pagamintas uosto B kaip išėjimo ir uosto D kaip įvesties.
Žemiau funkcija atliekama naudojant tikslią atvirkštinę logiką, naudojamą ankstesniame siųstuvo skyriuje. Čia gauname tą pačią šešiakampę vertę iš prievado D ir pagal tą šešioliktainę vertę nustatome, kuris jungiklis buvo nuspaustas siųstuvo skyriuje. Mes galime identifikuoti kiekvieną klavišo paspaudimą ir pateikti atitinkamą simbolį į LCD.
void rf_analysis (nepasirašyta char recived_byte) { if (recived_byte == 0x10) lcd_data ('1'); if (recived_byte == 0x20) lcd_data ('2'); jei (recived_byte == 0x30) ……. ….. …… ………..
„ Lcd_data “ iškviečiama iš failo „ lcd.c“.
Į pagrindinį funkcija pirmiausia inicijuoti sistemą ir LCD. Mes paėmėme kintamą baitą ir išsaugojome hex reikšmę, gautą iš D prievado. Tada atlikdami funkciją rf_analysis galime atspausdinti simbolį LCD.
void main (void) { nepasirašytas char baitas = 0; system_init (); lcd_init (); o (1) { lcd_com (0x80); lcd_puts ("CircuitDigest"); lcd_com (0xC0); baitas = RF_RX; rf_analizė (baitas); lcd_com (0xC0); } grįžti; }
Prieš paleidžiant, mes sureguliavome grandinę. Pirmiausia paspaudėme klaviatūros mygtuką „ D “. Taigi, 0xF0 nuolat perduodamas RF siųstuvu. Tada sureguliavome imtuvo grandinę, kol LCD ekrane pasirodys simbolis „ D “. Kartais modulis tinkamai sureguliuotas iš gamintojo, kartais - ne. Jei viskas tinkamai prijungta ir LCD ekrane nepaspaudžiama mygtuko reikšmė, yra galimybių, kad radijo imtuvas nėra sureguliuotas. Mes naudojome izoliuotą atsuktuvą, kad sumažintume neteisingas derinimo galimybes dėl mūsų kūno induktyvumo.
Taip galite susieti RF modulį su PIC mikrovaldikliu ir bendrauti tarp dviejų PIC mikrovaldiklių belaidžiu būdu, naudodami RF jutiklį.
Iš čia galite atsisiųsti visą siųstuvo ir imtuvo kodą, taip pat patikrinkite toliau pateiktą demonstracinį vaizdo įrašą.