- 433 MHz: n RF-lähetin- ja vastaanotinmoduuli:
- Kooderin ja dekooderien tarve:
- Vaaditut komponentit:
- Piirikaavio:
- Koodin selitys:
Hei kaikki, Tänään tässä projektissa liitämme RF-vastaanottimen ja lähetinmoduulin PIC-mikrokontrolleriin ja kommunikoimme kahden eri pic-mikrokontrollerin välillä langattomasti.
Tässä projektissa teemme seuraavia asioita: -
- Lähettimessä käytetään PIC16F877A: ta ja vastaanotinosastossa PIC18F4520: ta.
- Liitämme näppäimistön ja LCD-näytön PIC-mikrokontrolleriin.
- Lähettimen puolella liitämme näppäimistön PIC: n kanssa ja lähetämme tiedot. Vastaanottopuolella vastaanotamme tiedot langattomasti ja näytämme mitä näppäintä painetaan nestekidenäytössä.
- Käytämme kooderia ja dekooderi-IC: tä 4-bittisen datan lähettämiseen.
- Vastaanottotaajuus on 433 MHz, kun käytössä on halpa markkinoilla oleva RF TX-RX -moduuli.
Ennen kuin tarkastellaan kaavioita ja koodeja, ymmärretään RF-moduulin toiminta Encoder-Decoder IC -piireillä. Käy läpi myös kahden artikkelin alta, jotta voit oppia LCD: n ja näppäimistön liittämisestä PIC-mikrokontrolleriin:
- LCD-liitäntä PIC-mikrokontrolleriin MPLABX: ää ja XC8: ta käyttämällä
- 4x4-matriisinäppäimistö ja PIC-mikrokontrolleri
433 MHz: n RF-lähetin- ja vastaanotinmoduuli:
Nämä ovat lähetin- ja vastaanotinmoduuleja, joita käytämme projektissa. Se on halvin käytettävissä oleva moduuli 433 MHz: lle. Nämä moduulit hyväksyvät sarjatiedot yhdellä kanavalla.
Jos näemme moduulien tekniset tiedot, lähetin on luokiteltu 3,5-12 V: n toimintaan tulojännitteeksi ja lähetysetäisyys on 20-200 metriä. Se lähettää AM (Audio Modulation) -protokollaa 433 MHz: n taajuudella. Voimme siirtää dataa 4KB / S nopeudella 10mW teholla.
Ylemmässä kuvassa näkyy lähetinmoduulin kiinnitys. Vasemmalta oikealle nastat ovat VCC, DATA ja GND. Voimme myös lisätä antennin ja juottaa sen yllä olevassa kuvassa merkittyyn pisteeseen.
Jotta vastaanotin selityksessä, vastaanotin on luokitus 5V DC ja 4MA Lepovirta syötteenä. Vastaanottava taajuus on 433,92 MHz kanssa -105DB herkkyys.
Yllä olevasta kuvasta näemme vastaanottimen moduulin kiinnityksen. Neljä nastaa ovat vasemmalta oikealle, VCC, DATA, DATA ja GND. Nämä kaksi keskimmäistä nastaa on kytketty sisäisesti. Voimme käyttää mitä tahansa tai molempia. Mutta on hyvä käytäntö käyttää molempia melukytkimen laskemiseen.
Yhtä asiaa ei myöskään mainita lomakkeessa, moduulin keskellä olevaa muuttuvaa induktoria tai POT: ta käytetään taajuuskalibrointiin. Jos emme pystyneet vastaanottamaan lähetettyä dataa, on mahdollista, että lähetys- ja vastaanottotaajuudet eivät täsmää. Tämä on RF-piiri, ja meidän on viritettävä lähetin täydelliseen lähetettyyn taajuuspisteeseen. Samoin kuin lähettimellä, tässä moduulissa on myös antenniportti; Voimme juottaa langan kelatussa muodossa pidempään vastaanottoon.
Lähetysalue on riippuvainen lähettimeen syötetystä jännitteestä ja molempien puolien antennien pituudesta. Tässä erityisessä projektissa emme käyttäneet ulkoista antennia ja käytimme 5 V lähettimen puolella. Tarkistimme 5 metrin etäisyydellä ja se toimi täydellisesti.
RF-moduulit ovat erittäin hyödyllisiä pitkän matkan langattomassa viestinnässä. Tässä näytetään RF-lähettimen ja -vastaanottimen peruspiiri. Olemme tehneet monia projekteja RF-moduulin avulla:
- RF-ohjatut kodinkoneet
- Bluetooth-ohjattu leluauto Arduinoa käyttämällä
- RF-kauko-ohjattavat LED-valot Raspberry Pi -tekniikalla
Kooderin ja dekooderien tarve:
Tällä RF-anturilla on vähän haittoja: -
- Yksisuuntainen viestintä.
- Vain yksi kanava
- Erittäin meluhäiriöt.
Tämän haittapuolen vuoksi olemme käyttäneet kooderi- ja dekooderi- IC: itä, HT12D ja HT12E. D tarkoittaa dekooderia, jota käytetään vastaanottimen puolella, ja E tarkoittaa kooderia, jota käytetään lähettimen puolella. Tämä IC: t tarjoavat 4 kanavaa. Myös koodauksen ja dekoodauksen vuoksi melutaso on hyvin matala.
Yllä olevassa kuvassa vasen on dekooderi HT12D ja oikea kooderi HT12E. Molemmat IC: t ovat identtisiä. A0 - A7 käytetään erityiskoodaukseen. Voimme käyttää mikro-ohjaimen nastoja näiden nastojen hallintaan ja kokoonpanojen asettamiseen. Samat kokoonpanot on sovitettava toisella puolella. Jos molemmat kokoonpanot ovat tarkkoja ja yhteensopivia, voimme vastaanottaa tietoja. Nämä 8 nastaa voidaan liittää Gnd: ään tai VCC: hen tai jättää auki. Riippumatta kokoonpanoista, joita teemme kooderissa, meidän on sovitettava yhteys dekooderiin. Tässä projektissa jätämme avoimet nuo 8 nastaa sekä kooderille että dekooderille. 9 ja 18 nasta on VSS ja VDD. Voimme käyttää VT- nastaa sisäänHT12D ilmoitustarkoituksiin. Tätä projektia varten emme käyttäneet sitä. TE tappi on lähetystä käyttöön tai poistaa tappi.
Tärkeä osa on OSC- nasta, johon meidän on liitettävä vastukset, on tarjota värähtely kooderille ja dekooderille. Dekooderi tarvitsee suurempaa värähtelyä kuin dekooderi. Yleensä kooderivastuksen arvo on 1 mega ja dekooderin arvo on 33 kt. Käytämme näitä vastuksia projektissamme.
DOUT- nasta on HT12E: n RF-lähettimen tietotappi ja HT12D: n DIN- nastaa käytetään RF-moduulin datanastan liittämiseen.
In HT12E, AD8 ja AD11 on neljä kanavaa syötetään, joka saa muunnetun ja sarjaan välitetään RF-moduulin ja tarkka käänteinen asia tapahtuu HT12D sarjadata vastaanotettu ja dekoodattu, ja uusista 4-bittinen rinnakkainen lähtö yli 4 nastaa D8 D11.
Vaaditut komponentit:
- 2 - Leipälauta
- 1 - LCD 16x2
- 1 - Näppäimistö
- HT12D- ja HT12E-pari
- RX-TX RF-moduuli
- 1-10K esiasetus
- 2 - 4,7 k vastus
- 1-1 M vastus
- 1 - 33k vastus
- 2- 33pF keraamiset kondensaattorit
- 1 - 20 MHz kristalli
- Bergsticks
- Muutama yksisäikeinen johdin.
- PIC16F877A MCU
- PIC18F4520 MCU
- Ruuvimeisseli taajuusastian ohjaamiseksi on eristettävä ihmiskehosta.
Piirikaavio:
Lähettimen puolen kytkentäkaavio (PIC16F877A):
Olemme käyttäneet PIC16F877A lähetystarkoituksiin. Hex näppäimistö kytketty poikki PORTB ja 4 kanavaa kytketty yli 4 viimeistä bittiä PORTD. Lue lisää 4x4 Matrix -näppäimistön liittämisestä täältä.
Kiinnitä seuraavasti:
1. AD11 = RD7
2. AD10 = RD6
3. AD9 = RD5
4. AD8 = RD4
Piirikaavio vastaanottimen puolelta (PIC18F4520):
Yllä olevassa kuvassa näkyy vastaanotinpiiri. LCD on kytketty yli PORTB. Käytimme sisäinen oskillaattori on PIC18F4520 tähän projektiin. 4 kanavaa on kytketty samalla tavalla kuin aikaisemminkin lähettimen piiri. Lisätietoja 16x2 LCD: n yhdistämisestä PIC-mikrokontrolleriin on täällä.
Tämä on lähettimen puoli -
Ja vastaanottimen puoli erillisessä leipälaudassa -
Koodin selitys:
Koodissa on kaksi osaa, yksi on lähetintä ja toinen vastaanotinta. Voit ladata täydellisen koodin täältä.
RF-lähettimen PIC16F877A-koodi:
Kuten aina ensin, meidän on asetettava konfigurointibitit pic-mikrokontrollerissa, määriteltävä joitain makroja, mukaan lukien kirjastot ja kidetaajuus. AD8-AD11 porttiin Encoder IC määritellään RF_TX on PORTD. Voit tarkistaa koodin kaikkien niiden kohdalla, jotka ovat lopussa olevassa koodissa.
Käytimme kahta toimintoa, void system_init (void) ja void encode_rf_sender (char data).
System_init käytetään pin alustus ja näppäimistö alustukset. Näppäimistön alustus kutsutaan näppäimistökirjastosta.
Näppäimistön portti määritetään myös näppäimistössä. H. Teimme PORTD: n lähdöksi käyttäen TRISD = 0x00 ja RF_TX- portin oletusasetukseksi 0x00.
void system_init (void) { TRISD = 0x00; RF_TX = 0x00; näppäimistön_alustus (); }
Vuonna encode_rf_sender Muutimme 4 pin tila riippuen painettuna. Olemme luoneet 16 erilaista hex-arvoa tai PORTD- tilaa riippuen ( 4x4) 16 eri painetusta painikkeesta.void encode_rf_sender (char data) { if (data == '1') RF_TX = 0x10; jos (data == '2') RF_TX = 0x20; jos (data == '3') …………... …. ….
Vuonna tärkein toiminto ensin saada näppäimistön painettuna dataa switch_press_scan () funktio ja tallentaa tietoja avaimen muuttuja. Sen jälkeen olemme koodanneet tiedot käyttämällä encode_rf_sender () -toimintoa ja muuttamalla PORTD- tilaa.
RF-vastaanottimen PIC18F4520- koodi:
Kuten aina, asetimme ensin kokoonpanobitit PIC18f4520: ssa. Sen hieman erilainen kuin PIC16F877A, voit tarkistaa koodin liitteenä olevasta zip-tiedostosta.
Mukana oli LCD-otsikkotiedosto. Määritti dekooderi-IC: n D8-D11- porttiliitännän PORTD: n kautta käyttämällä # määrittele RF_RX PORTD -linjaa, yhteys on sama kuin kooderi-osassa. LCD-portin ilmoitus tehdään myös lcd.c- tiedostossa.
#sisältää
Kuten edellä todettiin käytämme sisäinen oskillaattori varten 18F4520, meillä on käytetty järjestelmä _ init toiminto jossa määritetty OSCON rekisteri 18F4520 asettaa sisäinen oskillaattori ja 8 MHz. Asetimme myös TRIS- bitin sekä LCD-nastoille että dekooderin nastoille. Koska HT - 12D tarjoaa lähdön D8 - D11 - porteissa, meidän on määritettävä PORTD tuloksi vastaanottamaan lähtö.
void system_init (void) { OSCCON = 0b01111110; // 8Mhz ,, intosc // OSCTUNE = 0b01001111; // PLL-käyttöönotto, enimmäiskalkalaattori 8x4 = 32 MHz TRISB = 0x00; TRISD = 0xFF; // Viimeiset 4 bittiä tulobittinä. }
Me määritetty OSCON rekisteriin 8 MHz, myös portille B kuin tuotanto ja portti D kuin tulo.
Alla oleva toiminto tehdään käyttämällä tarkkaa käänteislogiikkaa, jota käytettiin edellisessä lähettimen osassa. Täältä saamme saman hex-arvon portista D ja tällä hex-arvolla tunnistamme, mitä kytkintä painettiin lähetinosassa. Voimme tunnistaa jokaisen näppäimen painalluksen ja lähettää vastaavan merkin nestekidenäyttöön.
void rf_analysis (allekirjoittamaton merkki recived_byte) { if (recived_byte == 0x10) lcd_data ('1'); if (recived_byte == 0x20) lcd_data ('2'); jos (recived_byte == 0x30) ……. ….. …… ………..
Lcd_data kutsutaan pois lcd.c tiedosto.
Vuonna tärkein toiminto ensin alustaa järjestelmän ja LCD. Otimme muuttuvan tavun ja tallensimme portista D vastaanotetun hex-arvon. Sitten funktiolla rf_analysis voidaan tulostaa merkki LCD- näytölle .
void main (void) { allekirjoittamaton tavu = 0; system_init (); lcd_init (); kun (1) { lcd_com (0x80); lcd_puts ("CircuitDigest"); lcd_com (0xC0); tavu = RF_RX; rf_analyysi (tavu); lcd_com (0xC0); } paluu; }
Ennen sen käyttämistä olemme virittäneet piirin. Ensin olemme painaneet näppäimistön D- painiketta. Joten RF-lähetin lähettää jatkuvasti 0xF0: ta. Sitten viritetty vastaanotin piiri, kunnes näyttöön tulee merkki ' D '. Joskus moduuli on viritetty oikein valmistajalta, joskus ei. Jos kaikki on kytketty oikein ja LCD-näytössä ei ole painiketta painettuna, on mahdollista, että RF-vastaanotinta ei ole viritetty. Olemme käyttäneet eristettyä ruuvimeisseliä vähentämään vääriä viritysmahdollisuuksia kehomme induktanssin vuoksi.
Näin voit liittää RF-moduulin PIC-mikrokontrolleriin ja kommunikoida kahden PIC-mikrokontrollerin välillä langattomasti RF-anturin avulla.
Voit ladata lähettimen ja vastaanottimen täydellisen koodin täältä, tarkista myös alla oleva esittelyvideo.