- RF modul nRF24L01
- Schéma zapojenia
- Programovanie Raspberry Pi na odosielanie správ pomocou nRF24l01
- Programovanie Arduino UNO na príjem správ pomocou nRF24l01
Dizajnéri používajú veľa bezdrôtových komunikačných systémov, ako sú Bluetooth Low Energy (BLE 4.0), Zigbee, ESP8266 Wi-Fi moduly, 433MHz RF moduly, Lora, nRF atď. A výber média závisí od typu aplikácie, v ktorej sa používa. Medzi jedným z populárnych bezdrôtových médií na komunikáciu v miestnej sieti je nRF24L01. Tieto moduly pracujú na pásme 2,4 GHz (pásmo ISM) s prenosovou rýchlosťou od 250 kb / s do 2 Mb / s, čo je v mnohých krajinách legálne a môžu sa používať v priemyselných a lekárskych aplikáciách. Tiež sa tvrdí, že s vhodnými anténami môžu tieto moduly vysielať a prijímať signály až do vzdialenosti 100 metrov medzi nimi. Predtým sme s Arduino používali nRF24L01 na ovládanie servomotora a vytvorenie chatovacej miestnosti.
Tu použijeme modul nRF24L01 - 2,4 GHz RF Transceiver s Arduino UNO a Raspberry Pi na nadviazanie bezdrôtovej komunikácie medzi nimi. Raspberry pi bude fungovať ako vysielač a Arduino Uno bude počúvať Raspberry Pi a tlačiť správy zaslané Raspberry Pi pomocou nRF24L01 na 16x2 LCD. nRF24L01 majú tiež zabudované možnosti BLE a môžu tiež komunikovať bezdrôtovo pomocou BLE.
Výukový program je rozdelený do dvoch častí. Prvá časť bude obsahovať prepojenie nRF24L01 s Arduinom, ktoré bude pôsobiť ako prijímač, a druhá časť bude obsahovať prepojenie nRF24L01 s Raspberry Pi, ktoré bude pôsobiť ako vysielač. Celý kód pre obe časti s pracovným videom bude pripojený na konci tohto tutoriálu.
RF modul nRF24L01
Tieto moduly nRF24L01 sú vysielacej a prijímacej moduly, čo znamená, každý modul môže ako odosielať a prijímať dáta, ale pretože sú poloduplexné môžu buď odosielať a prijímať dáta naraz. Modul má generický IC nRF24L01 od severských polovodičov, ktorý je zodpovedný za prenos a príjem dát. IC komunikuje pomocou protokolu SPI, a preto ho možno ľahko prepojiť s ľubovoľnými mikrokontrolérmi. S Arduinom je to oveľa jednoduchšie, pretože knižnice sú ľahko dostupné. K vývodov štandardného modulu nRF24L01 je uvedené nižšie
Modul má prevádzkové napätie od 1,9 V do 3,6 V (typicky 3,3 V) a pri bežnej prevádzke spotrebúva iba veľmi málo prúdu, iba 12 mA, vďaka čomu je batéria efektívna, a teda môže fungovať aj na gombíkové články. Aj keď je prevádzkové napätie 3,3 V, väčšina pinov je tolerantná voči 5V, a preto je možné ich priamo prepojiť s 5V mikrokontrolérmi, ako je Arduino. Ďalšou výhodou použitia týchto modulov je, že každý modul má 6 potrubí. To znamená, že každý modul môže komunikovať s ďalšími 6 modulmi na účely prenosu alebo prijímania údajov. Vďaka tomu je modul vhodný na vytváranie hviezdnych alebo sieťových sietí v aplikáciách IoT. Tiež majú široký rozsah adries 125 jedinečných ID, preto v uzavretej oblasti môžeme použiť 125 týchto modulov bez toho, aby sme sa navzájom rušili.
Schéma zapojenia
nRF24L01 s Arduino:
Schéma zapojenia pre pripojenie nRF24L01 k Arduinu je jednoduchá a nemá veľa komponentov. NRF24l01 budú prepojené rozhraním SPI a 16x2 LCD je prepojený s I2C protokolom, ktorý využíva iba dva vodiče.
nRF24L01 s Raspberry Pi:
Schéma zapojenia pre pripojenie nRF24L01 k Raspberry Pi je tiež veľmi jednoduchá a na pripojenie Raspberry Pi a nRF24l01 sa používa iba rozhranie SPI.
Programovanie Raspberry Pi na odosielanie správ pomocou nRF24l01
Programovanie Raspberry Pi sa uskutoční pomocou Python3. Ako Arduino môžete použiť aj C / C ++. Ale už existuje knižnica pre nRF24l01 v pythone, ktorú je možné stiahnuť zo stránky github. Upozorňujeme, že program python a knižnica by mali byť v rovnakom priečinku, inak program python nebude môcť nájsť knižnicu. Po stiahnutí knižnice stačí rozbaliť a vytvoriť priečinok, kde budú uložené všetky programy a súbory knižnice. Po dokončení inštalácie knižnice začnite písať program. Program začína začlenením knižníc, ktoré sa použijú v kóde, ako je napríklad import GPIO knižnice pre prístup k GPIO Raspberry Pi a čas importu pre prístup k časom súvisiacim funkciám. Ak ste v Raspberry Pi noví, potom sa vráťte k začiatku s Raspberry Pi.
import RPi.GPIO ako GPIO čas importu import spidev z lib_nrf24 import NRF24
Nastavte režim GPIO na „ Broadcom SOC channel“. To znamená, že na piny odkazujete číslom „Broadcom SOC channel“, to sú čísla za „GPIO“ (napr. GPIO01, GPIO02…). Toto nie sú čísla rady.
GPIO.setmode (GPIO.BCM)
Ďalej nastavíme adresu potrubia. Táto adresa je dôležitá pre komunikáciu s prijímačom Arduino. Adresa bude v hexadecimálnom kóde.
potrubia =,]
Začnite rádioprijímač používajúci GPIO08 ako CE a GPIO25 ako kolíky CSN.
radio.begin (0, 25)
Nastavte veľkosť užitočného zaťaženia na 32 bitov, adresu kanála na 76, dátový tok 1 Mb / s a úrovne výkonu ako minimálne.
radio.setPayloadSize (32) radio.setChannel (0x76) radio.setDataRate (NRF24.BR_1MBPS) radio.setPALevel (NRF24.PA_MIN)
Otvorte rúrky, aby ste mohli začať písať údaje, a vytlačte základné podrobnosti o nRF24l01.
radio.openWritingPipe (potrubia) radio.printDetails ()
Pripravte správu vo forme reťazca. Táto správa sa odošle spoločnosti Arduino UNO.
sendMessage = list ("Ahoj..Arduino UNO") while len (sendMessage) <32: sendMessage.append (0)
Začnite písať do rádia a pokračujte v písaní celého reťazca, kým nebude rádio k dispozícii. Spolu s ním si poznačte čas a vytlačte ladiace vyhlásenie o doručení správy.
while True: start = time.time () radio.write (sendMessage) print ("Odoslaná správa: {}". format (sendMessage)) send radio.startListening ()
Ak je reťazec dokončený a kanál je zatvorený, vytlačte ladiacu správu s časovým limitom.
aj keď nie je radio.available (0): time.sleep (1/100) v prípade time.time () - Štart> 2: print ("Vypršal časový limit.") Chyba # tlačová správa, ak rádio odpojený alebo nefunguje už rozbiť
Prestaňte poslúchať rádio a ukončite komunikáciu a po 3 sekundách začnite komunikáciu, aby ste mohli odoslať ďalšiu správu.
radio.stopListening () # zavrieť čas rádia. spať (3) # dať oneskorenie 3 sekundy
Program Raspberry je ľahko pochopiteľný, ak poznáte základy jazyka python. Kompletný program Python je uvedený na konci tutoriálu.
Vykonanie programu Python v Raspberry Pi:
Spustenie programu je veľmi jednoduché po vykonaní nasledujúcich krokov:
- Uložte súbory programu Python a knižnice do rovnakého priečinka.
- Názov môjho programového súboru pre Sender je nrfsend.py a tiež všetky súbory sú v rovnakom priečinku
- Prejdite do príkazového terminálu Raspberry Pi. A vyhľadajte programový súbor python pomocou príkazu „cd“.
- Potom otvorte priečinok a napíšte príkaz „ sudo python3 your_program.py “ a stlačte kláves Enter. Uvidíte základné informácie o nRf24 a rádio začne odosielať správy každé 3 sekundy. Po dokončení odoslania sa ladenie správy zobrazí so všetkými odoslanými znakmi.
Teraz uvidíme rovnaký program ako prijímač v Arduino UNO.
Programovanie Arduino UNO na príjem správ pomocou nRF24l01
Programovanie Arduino UNO je podobné programovaniu Raspberry Pi. Budeme postupovať podobnými metódami, ale s iným programovacím jazykom a krokmi. Kroky budú obsahovať čítaciu časť nRF24l01. Knižnicu pre nRF24l01 pre Arduino je možné stiahnuť zo stránky github. Začnite zahrnutím potrebných knižníc. Používame 16x2 LCD pomocou I2C Shield, takže zahrňte knižnicu Wire.h a tiež nRF24l01 je prepojený s SPI, takže zahrňte SPI knižnicu.
#include
Zahrňte knižnicu RF24 a LCD pre prístup k funkciám RF24 a LCD.
#include
Adresa LCD pre I2C je 27 a je to 16x2 LCD, takže si to zapíšte do funkcie.
LiquidCrystal_I2C lcd (0x27, 16, 2);
RF24 je pripojený k štandardným SPI pinom spolu s CE na pin 9 a CSN na pin 10.
Rádio RF24 (9, 10);
Zapnite rádio, nastavte úroveň výkonu a nastavte kanál na 76. Tiež nastavte adresu rúry ako Raspberry Pi a otvorte rúru na čítanie.
radio.begin (); radio.setPALevel (RF24_PA_MAX); radio.setChannel (0x76); const uint64_t pipe = 0xE0E0F1F1E0LL; radio.openReadingPipe (1, potrubie);
Začnite komunikáciu I2C a inicializujte LCD displej.
Wire.begin (); lcd.begin (); lcd.home (); lcd.print („Pripravené na príjem“);
Začnite počúvať rádio, aby ste dostali správy, a nastavte dĺžku správy na 32 bajtov.
radio.startListening (); char receiveMessage = {0}
Ak je pripojené rádio, začnite čítať správu a uložte ju. Vytlačte správu na sériový monitor a tiež tlačte na displej, kým nepríde ďalšia správa. Ak chcete počúvať, zastavte rádio a po nejakom čase to skúste znova. Tu je to 10 mikrosekúnd.
if (radio.available ()) { radio.read (receiveMessage, sizeof (receiveMessage)); Serial.println (receiveMessage); Serial.println ("Vypnutie rádia."); radio.stopListening (); Reťazec stringMessage (receiveMessage); lcd.clear (); oneskorenie (1 000); lcd.print (stringMessage); }
Nahrajte kompletný kód uvedený na konci do Arduino UNO a počkajte na prijatie správy.
Týmto sa dokončuje kompletný návod na odosielanie správ pomocou Raspberry Pi & nRf24l01 a ich prijímanie pomocou Arduino UNO & nRF24l01. Správa sa vytlačí na 16 x 2 LCD. Adresy rúrok sú veľmi dôležité v Arduino UNO aj Raspberry Pi. Ak sa pri realizácii tohto projektu stretnete s akýmikoľvek problémami, potom prosím komentujte nižšie alebo navštívte diskusné fórum, kde nájdete podrobnejšiu diskusiu.
Skontrolujte tiež ukážkové video uvedené nižšie.