- RF modul nRF24L01
- Shema vezja
- Programiranje Raspberry Pi za pošiljanje sporočila z uporabo nRF24l01
- Programiranje Arduino UNO za sprejemanje sporočil z uporabo nRF24l01
Oblikovalci uporabljajo številne brezžične komunikacijske sisteme, kot so Bluetooth Low Energy (BLE 4.0), Zigbee, Wi-Fi moduli ESP8266, RF moduli 433 MHz, Lora, nRF itd. In izbira medija je odvisna od vrste aplikacije, v kateri se uporablja. vse, en priljubljen brezžični medij za lokalno omrežno komunikacijo je nRF24L01. Ti moduli delujejo na 2,4 GHz (pas ISM) s hitrostjo prenosa podatkov od 250Kbps do 2Mbps, kar je v mnogih državah dovoljeno in se lahko uporablja v industrijskih in medicinskih aplikacijah. Trdi se tudi, da lahko ti moduli z ustreznimi antenami oddajajo in sprejemajo signale na razdalji 100 metrov med njimi. Prej smo z Arduino uporabljali nRF24L01 za nadzor servo motorja in ustvarjanje klepetalnice.
Tu bomo uporabili nRF24L01 - 2,4 GHz RF oddajniški modul z Arduino UNO in Raspberry Pi za vzpostavitev brezžične komunikacije med njima. Raspberry pi bo deloval kot oddajnik, Arduino Uno pa bo poslušal Raspberry Pi in natisnil sporočilo, ki ga je poslal Raspberry Pi z nRF24L01 na LCD 16x2. nRF24L01 ima tudi vgrajene funkcije BLE in lahko tudi brezžično komunicira z BLE.
Vadnica je razdeljena na dva dela. Prvi odsek bo vključeval povezovanje nRF24L01 z Arduinom, ki deluje kot sprejemnik, drugi odsek pa povezovanje nRF24L01 z Raspberry Pi, ki deluje kot oddajnik. Popolna koda za oba razdelka z delujočim videoposnetkom bo priložena na koncu te vadnice.
RF modul nRF24L01
V nRF24L01 moduli so oddajniški moduli, kar pomeni vsak modul lahko tako pošiljanje in prejemanje podatkov, vendar, ker so pol-duplex, da lahko bodisi pošiljanje ali prejemanje podatkov naenkrat. Modul ima generično nRF24L01 IC iz nordijskih polprevodnikov, ki je odgovoren za prenos in sprejem podatkov. IC komunicira s protokolom SPI, zato ga je mogoče zlahka povezati z vsemi mikrokrmilniki. Z Arduinom je veliko lažje, saj so knjižnice na voljo. V pinouts standardnega nRF24L01 modula je prikazana spodaj
Modul deluje na napetost od 1,9 V do 3,6 V (običajno 3,3 V) in med običajnim delovanjem porabi zelo manj toka le 12 mA, zaradi česar je baterija učinkovita in zato lahko deluje celo na kovanske celice. Čeprav je delovna napetost 3,3 V, je večina zatičev tolerantna na 5 V, zato jih je mogoče neposredno povezati s 5 V mikrokrmilniki, kot je Arduino. Druga prednost uporabe teh modulov je, da ima vsak modul 6 cevovodov. To pomeni, da lahko vsak modul komunicira s 6 drugimi moduli za prenos ali sprejem podatkov. Zaradi tega je modul primeren za ustvarjanje zvezdastih ali mrežastih omrežij v aplikacijah interneta stvari. Imajo tudi široko območje naslovov 125 enoličnih ID-jev, zato lahko na zaprtem območju uporabimo 125 teh modulov, ne da bi pri tem posegali med seboj.
Shema vezja
nRF24L01 z Arduino:
Shema vezij za povezavo nRF24L01 z Arduino je enostavna in nima veliko komponent. NRF24l01 bodo povezani z SPI vmesnikom in 16x2 LCD je povezan z I2C protokol, ki uporablja samo dve žice.
nRF24L01 z Raspberry Pi:
Shema vezij za povezavo nRF24L01 z Raspberry Pi je prav tako zelo preprosta in za povezavo Raspberry Pi in nRF24l01 se uporablja samo vmesnik SPI.
Programiranje Raspberry Pi za pošiljanje sporočila z uporabo nRF24l01
Programiranje Raspberry Pi bo izvedeno s pomočjo Python3. C / C ++ lahko uporabite tudi kot Arduino. Toda za nRF24l01 v pythonu že obstaja knjižnica, ki jo lahko prenesete s strani github. Upoštevajte, da morata biti program python in knjižnica v isti mapi, sicer program python ne bo mogel najti knjižnice. Po prenosu knjižnice samo izvlecite in naredite mapo, v kateri bodo shranjeni vsi programi in datoteke knjižnice. Ko je namestitev knjižnice končana, začnite pisati program. Program se začne z vključitvijo knjižnic, ki se bodo uporabljale v kodi, kot je knjižnica GPIO za uvoz, za dostop do Raspberry Pi GPIO in časa uvoza. za dostop do funkcij, povezanih s časom. Če ste novi v Raspberry Pi, se vrnite na začetek uporabe Raspberry pi.
uvoz RPi.GPIO kot GPIO čas uvoza uvoz spidev iz lib_nrf24 uvoz NRF24
Nastavite način GPIO v " Broadcom SOC channel". To pomeni, da se na zatiče sklicujete s številko "Broadcom SOC channel", to so številke za "GPIO" (npr. GPIO01, GPIO02…). To niso številke plošče.
GPIO.setmode (GPIO.BCM)
Nato bomo nastavili naslov cevi. Ta naslov je pomemben za komunikacijo s sprejemnikom Arduino. Naslov bo v šestnajstiški kodi.
cevi =,]
Začnite radio z uporabo GPIO08 kot CE in GPIO25 kot zatiča CSN.
radio.begin (0, 25)
Velikost koristnega tovora nastavite na 32 bitov, naslov kanala kot 76, hitrost prenosa podatkov 1 mbps in raven moči kot najmanjšo.
radio.setPayloadSize (32) radio.setChannel (0x76) radio.setDataRate (NRF24.BR_1MBPS) radio.setPALevel (NRF24.PA_MIN)
Odprite cevi, da začnete zapisovati podatke in natisnite osnovne podrobnosti nRF24l01.
radio.openWritingPipe (pipe) radio.printDetails ()
Pripravite sporočilo v obliki niza. To sporočilo bo poslano Arduino UNO.
sendMessage = seznam ("Hi..Arduino UNO"), medtem ko je len (sendMessage) <32: sendMessage.append (0)
Začnite pisati na radio in nadaljujte s pisanjem celotnega niza, dokler radio ne bo na voljo. Skupaj si zapišite čas in natisnite izjavo o odpravljanju napak dostave sporočil.
while True: start = time.time () radio.write (sendMessage) print ("Poslano sporočilo: {}". format (sendMessage)) send radio.startListening ()
Če je niz končan in cev zaprta, natisnite sporočilo o odpravljanju napak s potekom časa.
pa ne radio.available (0): time.sleep (1/100) , če time.time () - start> 2: print ("potekla.") sporočilo o napaki # print če radio prekinjena ali ne deluje več zlomi
Nehajte poslušati radio in zaprite komunikacijo ter znova zaženite komunikacijo po treh sekundah, da pošljete novo sporočilo.
radio.stopListening () # zaprite radio time.sleep (3) # podajte zakasnitev 3 sekunde
Program Raspberry je enostavno razumeti, če poznate osnove pythona. Celoten program Python je podan na koncu vadnice.
Izvajanje programa Python v Raspberry Pi:
Izvajanje programa je po naslednjih korakih zelo enostavno:
- Datoteke programa Python in knjižnice shranite v isto mapo.
- Ime moje programske datoteke za pošiljatelja je nrfsend.py in tudi vse datoteke so v isti mapi
- Pojdite na ukazni terminal Raspberry Pi. In poiščite programsko datoteko python z ukazom “cd”.
- Nato odprite mapo in napišite ukaz » sudo python3 your_program.py « in pritisnite Enter. Videli boste lahko osnovne podrobnosti nRf24 in radio bo počel pošiljati sporočila po vsakih 3 sekundah. Napaka za sporočila se bo prikazala po končanem pošiljanju z vsemi poslanimi znaki.
Zdaj bomo v Arduino UNO videli enak program kot sprejemnik.
Programiranje Arduino UNO za sprejemanje sporočil z uporabo nRF24l01
Programiranje Arduino UNO je podobno programiranju Raspberry Pi. Upoštevali bomo podobne metode, vendar z drugačnim programskim jezikom in koraki. Koraki bodo vključevali del branja nRF24l01. Knjižnico za nRF24l01 za Arduino lahko prenesete s strani github. Začnite z vključitvijo potrebnih knjižnic. Mi smo z 16x2 LCD pomočjo I2C Shield tako vključujejo Wire.h knjižnico in prav je nRF24l01 vmesniki z SPI tako vključujejo SPI knjižnico.
#include
Vključite knjižnico RF24 in LCD za dostop do funkcij RF24 in LCD.
#include
Naslov LCD za I2C je 27 in LCD 16x2, zato to vpišite v funkcijo.
LCD LiquidCrystal_I2C (0x27, 16, 2);
RF24 je povezan s standardnimi zatiči SPI skupaj s CE v zatiču 9 in CSN v zatiču 10.
Radio RF24 (9, 10);
Zaženite radio, nastavite raven moči in nastavite kanal na 76. Nastavite tudi naslov cevi, enak kot Raspberry Pi, in odprite cev za branje.
radio.begin (); radio.setPALevel (RF24_PA_MAX); radio.setChannel (0x76); const uint64_t cev = 0xE0E0F1F1E0LL; radio.openReadingPipe (1, cev);
Začnite komunikacijo I2C in inicializirajte LCD zaslon.
Wire.begin (); lcd.begin (); lcd.home (); lcd.print ("Pripravljen za prejem");
Začnite poslušati radio za dohodna sporočila in nastavite dolžino sporočila na 32 bajtov.
radio.startListening (); char полученMessage = {0}
Če je radio priključen, začnite brati sporočilo in ga shranite. Natisnite sporočilo na serijski monitor in tiskajte na zaslon, dokler ne prispe naslednje sporočilo. Ustavite radio, da poslušate in znova poskusite čez nekaj časa. Tukaj je 10 mikro sekund.
if (radio.available ()) { radio.read (receivedMessage, sizeof (полученMessage)); Serial.println (prejeto sporočilo); Serial.println ("Izklop radia."); radio.stopListening (); Niz stringMessage (prejeto sporočilo); lcd.clear (); zamuda (1000); lcd.print (stringMessage); }
Naložite celotno kodo, dano na koncu, v Arduino UNO in počakajte, da prejmete sporočilo.
S tem je zaključena celotna vadnica o pošiljanju sporočila z Raspberry Pi & nRf24l01 in prejemanju z uporabo Arduino UNO & nRF24l01. Sporočilo bo natisnjeno na LCD 16x2. Naslovi cevi so zelo pomembni tako v Arduino UNO kot v Raspberry Pi. Če imate pri projektu kakršne koli težave, prosimo, komentirajte spodaj ali se obrnite na forum za podrobnejšo razpravo.
Oglejte si tudi predstavitveni video spodaj.