- 433MHz RF adó és vevő modul:
- A kódoló és a dekóderek igénye:
- Szükséges alkatrészek:
- Kördiagramm:
- Kód Magyarázat:
Üdvözlet mindenkinek! Ma ebben a projektben az RF vevőt és az adó modult összekapcsoljuk a PIC mikrovezérlővel, és vezeték nélkül kommunikálunk két különböző pic mikrovezérlő között.
Ebben a projektben a következő dolgokat fogjuk megtenni: -
- Az adóhoz a PIC16F877A-t, a vevőnél pedig a PIC18F4520- at fogjuk használni.
- A kezelőt és az LCD-t összekapcsoljuk a PIC mikrovezérlővel.
- Az adó oldalon a kezelőegységet interfésszük a PIC-el, és továbbítjuk az adatokat. A vevő oldalon vezeték nélkül fogadjuk az adatokat, és megmutatjuk, hogy melyik gombot nyomják meg az LCD-n.
- Kódolót és dekóder IC-t fogunk használni 4 bites adatok továbbításához.
- A vételi frekvencia 433 MHz lesz a piacon elérhető olcsó RF TX-RX modul használatával.
Mielőtt belekezdenénk a sematikába és a kódokba, ismerjük meg az RF modul működését az Encoder-Decoder IC-kkel. Két cikk alatt olvassa el az LCD és a kezelő interfészének PIC mikrovezérlővel történő összekapcsolását is
- LCD interfész PIC mikrovezérlővel MPLABX és XC8 segítségével
- 4x4-es mátrix kezelő interfész a PIC mikrovezérlővel
433MHz RF adó és vevő modul:
Ezeket az adó és vevő modulokat használjuk a projektben. Ez a 433 MHz-en elérhető legolcsóbb modul. Ezek a modulok egyetlen csatornán fogadják el a soros adatokat.
Ha látjuk a modulok specifikációit, az adó 3,5-12 V- os működésre van bemeneti feszültségként értékelve, és az adási távolság 20-200 méter. AM (Audio Modulation) protokollban továbbít 433 MHz frekvencián. Adatokat 4KB / S sebességgel , 10mW teljesítmény mellett továbbíthatunk.
A felső képen láthatjuk az adó modul kitűzését. Balról jobbra a csapok a VCC, a DATA és a GND. Hozzáadhatjuk az antennát és ráforraszthatjuk a fenti képen jelölt pontra is.
A vevő specifikációja szerint a vevő bemenete 5V DC és 4MA nyugalmi áram. A vételi frekvencia 433,92 MHz, -105DB érzékenységgel.
A fenti képen láthatjuk a vevő modul kitűzését. A négy csap balról jobbra, VCC, DATA, DATA és GND. Ez a középső két csap belső kapcsolatban van. Használhatunk egyet vagy mindkettőt. De jó gyakorlat mindkettőt használni a zajkapcsoló csökkentésére.
Ezenkívül egy dolog nem szerepel az adatlapon, a modul közepén található változó induktivitást vagy POT- ot használják a frekvencia kalibrálásához. Ha nem tudtuk megkapni a továbbított adatokat, akkor vannak lehetőségek arra, hogy az adó és a vétel frekvenciája nincs összhangban. Ez egy RF áramkör, és az adót a tökéletes átvitt frekvencia pontra kell hangolnunk. Továbbá, ugyanúgy, mint az adó, ez a modul rendelkezik Antenna porttal is; a huzalt tekercselt formában forraszthatjuk a hosszabb vétel érdekében.
Az átviteli tartomány függ az adó tápfeszültségétől és az antennák hosszától mindkét oldalon. Ehhez a konkrét projekthez nem használtunk külső antennát, és 5 V-ot használtunk az adó oldalán. 5 méteres távolsággal ellenőriztük, és tökéletesen működött.
Az RF modulok nagyon hasznosak nagy távolságú vezeték nélküli kommunikációhoz. Itt látható egy alapvető RF adó és vevő áramkör. Számos projektet készítettünk az RF modul használatával:
- RF vezérlésű háztartási gépek
- Bluetooth vezérlésű játékautó Arduino használatával
- RF távirányítós LED-ek a Raspberry Pi használatával
A kódoló és a dekóderek igénye:
Ennek az RF érzékelőnek kevés hátránya van: -
- Egyirányú kommunikáció.
- Csak egy csatorna
- Nagyon zajos interferencia.
Ennek a hátránynak köszönhetően használtunk kódoló és dekóder IC-ket, HT12D és HT12E. A D a dekódert jelenti, amelyet a vevő oldalon, az E az a jeladót jelöli, amelyet a távadó oldalán használnak. Ez az IC 4 csatornát biztosít. A kódolás és a dekódolás miatt is nagyon alacsony a zajszint.
A fenti képen a bal oldali HT12D a dekóder, a jobb oldali pedig a HT12E, a kódoló. Mindkét IC azonos. Az A0 - A7 speciális kódolásra szolgál. Mikrokontroller csapok segítségével vezérelhetjük ezeket a csapokat és beállíthatjuk a konfigurációkat. Ugyanazokat a konfigurációkat kell egyeztetni a másik oldalon. Ha mindkét konfiguráció pontos és egyezik, akkor adatokat fogadhatunk. Ez a 8 érintkező csatlakoztatható a Gnd-hez vagy a VCC-hez, vagy nyitva maradhat. Bármilyen konfigurációt is végezzünk a kódolóban, meg kell egyeznünk a dekóder kapcsolatával. Ebben a projektben nyitva hagyjuk azt a 8 csapot mind az enkóderhez, mind a dekóderhez. A 9 és 18 tű VSS, illetve VDD. Használhatjuk a VT csapotHT12D értesítési célokra. Ehhez a projekthez nem használtuk fel. A TE tű az átvitel engedélyezésére vagy letiltására szolgál.
A fontos rész az OSC tű, ahová az ellenállásokat kell csatlakoztatnunk, az oszcilláció biztosítása a kódolóhoz és a dekóderhez. A dekódernek nagyobb rezgésre van szüksége, mint a dekódernek. A kódoló ellenállásának értéke általában 1Meg, a dekóder értéke 33k. Ezeket az ellenállásokat felhasználjuk a projektünkhöz.
A DOUT pin az RF adó adata a HT12E-n, és a HT12D DIN tűje az RF modul adatcsatlakozójának csatlakoztatására szolgál.
A HT12E, AD8 az AD11 négy csatorna bemeneti, amely megkapja a konvertált és sorosan továbbított RF modul és pontosan a fordítottja dolog történik HT12D, a soros adatok és dekódolni, és megkapjuk 4 bites párhuzamos kimenet az egész 4 pin D8-D11.
Szükséges alkatrészek:
- 2 - Kenyérlap
- 1 - LCD 16x2
- 1 - Kezelő
- HT12D és HT12E pár
- RX-TX RF modul
- 1-10K előre beállított
- 2 - 4,7k ellenállás
- 1- 1M ellenállás
- 1 - 33k ellenállás
- 2- 33pF kerámia kondenzátorok
- 1 - 20Mhz kristály
- Bergsticks
- Kevés egyszálú vezeték.
- PIC16F877A MCU
- PIC18F4520 MCU
- A frekvenciaváltó vezérléséhez csavarhúzót le kell szigetelni az emberi testtől.
Kördiagramm:
Áramköri ábra az adó oldalán (PIC16F877A):
Átviteli célokra a PIC16F877A- t használtuk. A Hex billentyűzet a PORTB-on keresztül csatlakozik, és a 4 csatorna a PORTD utolsó 4 bitjén keresztül csatlakozik. További információ a 4x4 Matrix billentyűzet csatlakoztatásáról itt.
Tegye ki az alábbiak szerint:
1. AD11 = RD7
2. AD10 = RD6
3. AD9 = RD5
4. AD8 = RD4
Áramköri ábra a vevő oldalán (PIC18F4520):
A fenti képen a vevő áramkör látható. Az LCD a PORTB-on keresztül csatlakozik. Ehhez a projekthez a PIC18F4520 belső oszcillátorát használtuk. A 4 csatorna ugyanúgy csatlakozik, mint korábban az adó áramkörben. Itt többet tudhat meg a 16x2 LCD és a PIC mikrovezérlő összekapcsolásáról.
Ez az adó oldala -
És a vevő oldala külön kenyérlapon -
Kód Magyarázat:
A kódnak két része van, az egyik az adó és a vevőé. A teljes kódot innen töltheti le.
PIC16F877A kód az RF adóhoz:
Mint mindig először, be kell állítanunk a konfigurációs biteket a pic mikrovezérlőben, meg kell határoznunk néhány makrót, beleértve a könyvtárakat és a kristályfrekvenciát. Az encoder ic AD8-AD11 portja RF_TX - ként van meghatározva a PORTD - nél. Ellenőrizheti a kódot mindazok számára, akik szerepelnek a végén megadott teljes kódban.
Két függvényt használtunk: void system_init (void) és void encode_rf_sender (char data).
A system_init a tüskék inicializálására és a billentyűzet inicializálására szolgál. A billentyűzet inicializálását a kezelő könyvtárból hívják meg.
A billentyűzet port is meghatározott keypad.h. Kimenetként elkészítettük a PORTD- t a TRISD = 0x00 használatával, és az RF_TX portot alapértelmezett állapotként 0x00 értékre állítottuk be.
void system_init (void) { TRISD = 0x00; RF_TX = 0x00; keyboard_initialization (); }
Az encode_rf_sender alkalmazásban megváltoztattuk a 4 tűs állapotot a megnyomott Gombtól függően. 16 különböző hex értéket vagy PORTD állapotot hoztunk létre (4x4) 16 különféle gomb megnyomásától függően .void encode_rf_sender (char adatok) { if (data == '1') RF_TX = 0x10; if (adatok == '2') RF_TX = 0x20; ha (adatok == '3') …………... …. ….
A fő funkcióban először a switch_press_scan () függvény segítségével kapjuk meg a billentyűzet gombjával megnyomott adatait, és az adatokat a kulcs változóban tároljuk. Ezt követően az encode_rf_sender () függvény segítségével kódoltuk az adatokat, és megváltoztattuk a PORTD állapotát.
RF vevő PIC18F4520 kódja:
Mint mindig, először a PIC18f4520 fájlban állítottuk be a konfigurációs biteket . Kicsit eltér a PIC16F877A-tól, ellenőrizheti a kódot a csatolt zip fájlban.
Bevettük az LCD fejléc fájlt. Meghatározta a Dekóder IC D8-D11 portkapcsolatát a PORTD-on keresztül az #define RF_RX PORTD vonallal, a kapcsolat megegyezik a Kódoló szakaszban használtal. Az LCD port deklarációja az lcd.c fájlban is megtörténik.
#include
Amint azt korábban megállapítottuk, mi használ belső oszcillátor a 18F4520, általunk használt rendszer _ init függvény, ahol konfigurálva a OSCON regiszter a 18F4520, hogy állítsa be a belső oszcillátor számára 8 MHz. A TRIS bitet beállítottuk mind az LCD, mind a Decoder csapokhoz. Mivel a HT - 12D kimenetet nyújt a D8-D11 portokon, a kimenet fogadásához be kell állítanunk a PORTD- t bemenetként.
void system_init (void) { OSCCON = 0b01111110; 8Mhz,, intosc // OSCTUNE = 0b01001111; // PLL engedélyezés, Max prescaler 8x4 = 32Mhz TRISB = 0x00; TRISD = 0xFF; // Utolsó 4 bit bemeneti bitként. }
Mi konfigurálva a OSCON nyilvántartást 8 MHz, szintén a B port a kimeneti és a port a D, mint bemenet.
Az alábbi funkció az előző adó szakaszban használt pontos fordított logika felhasználásával készül. Itt ugyanazt a hexa értéket kapjuk a D portról, és e hexaérték alapján azonosítjuk, hogy melyik kapcsolót nyomtuk meg az adó szakaszban. Azonosíthatjuk az egyes gombnyomásokat, és beküldhetjük a megfelelő karaktert az LCD-re.
void rf_analysis (unsigned char recived_byte) { if (recived_byte == 0x10) lcd_data ('1'); if (recived_byte == 0x20) lcd_data ('2'); ha (recived_byte == 0x30) ……. ….. …… ………..
Az lcd_data az lcd.c fájlból hívódik meg.
A fő funkcióban először inicializáljuk a rendszert és az LCD-t. Vettünk egy változó bájtot, és eltároltuk a D portból kapott hex értéket. Ezután az rf_analysis függvény segítségével kinyomtathatjuk a karaktert az LCD-re.
void main (void) { aláíratlan karakterbájt = 0; system_init (); lcd_init (); míg (1) { lcd_com (0x80); lcd_puts ("CircuitDigest"); lcd_com (0xC0); bájt = RF_RX; rf_analízis (bájt); lcd_com (0xC0); } visszatérés; }
Futtatása előtt hangoltuk az áramkört. Először megnyomtuk a billentyűzeten a ' D ' gombot. Tehát a 0xF0- t folyamatosan továbbítja az RF adó. Ezután addig hangoltuk a vevő áramkört, amíg az LCD-n a „ D ” karakter látható. Néha a modult a gyártó megfelelően hangolja be, néha nem. Ha minden megfelelően van csatlakoztatva, és nem kapja meg a gomb megnyomásának értékét az LCD-képernyőn, akkor lehetősége van arra, hogy az RF vevő nincs hangolva. A szigetelt csavarhúzót arra használtuk, hogy csökkentsük a testinduktivitásunkból adódó hibás hangolási lehetőségeket.
Így csatlakoztathatja az RF modult a PIC mikrovezérlőhöz, és kommunikálhat két PIC mikrovezérlő között vezeték nélkül az RF Sensor segítségével.
Az adó és vevő teljes kódját innen töltheti le, ellenőrizze az alábbi bemutató videót is.