- RF modul nRF24L01
- Kružni dijagram
- Programiranje Raspberry Pi za slanje poruke pomoću nRF24l01
- Programiranje Arduino UNO za primanje poruke pomoću nRF24l01
Dizajneri koriste mnoge bežične komunikacijske sustave poput Bluetooth Low Energy (BLE 4.0), Zigbee, Wi-Fi modula ESP8266, RF modula 433 MHz, Lora, nRF itd. A odabir medija ovisi o vrsti aplikacije u kojoj se koristi. sve, jedan popularni bežični medij za lokalnu mrežnu komunikaciju je nRF24L01. Ovi moduli rade na 2,4 GHz (ISM opseg) brzinom prijenosa od 250Kbps do 2Mbps, što je legalno u mnogim zemljama i može se koristiti u industrijskim i medicinskim primjenama. Također se tvrdi da s odgovarajućim antenama ovi moduli mogu slati i primati signale na udaljenost od 100 metara između njih. Prije smo koristili nRF24L01 s Arduinom za upravljanje servo motorom i stvaranje sobe za razgovor.
Ovdje ćemo upotrijebiti nRF24L01 - 2.4GHz RF primopredajni modul s Arduino UNO i Raspberry Pi za uspostavljanje bežične komunikacije između njih. Raspberry pi će djelovati kao odašiljač, a Arduino Uno će slušati Raspberry Pi i ispisati poruku koju je Raspberry Pi poslao pomoću nRF24L01 na LCD 16x2. nRF24L01 također imaju ugrađene BLE mogućnosti, a također može bežično komunicirati pomoću BLE.
Vodič je podijeljen u dva odjeljka. Prvi odjeljak uključivat će povezivanje nRF24L01 s Arduinom da bi radio kao prijamnik, a drugi odjeljak uključivat će povezivanje nRF24L01 s Raspberry Pi da bi radio kao odašiljač. Kompletni kôd za oba dijela s radnim video zapisom priložit će se na kraju ovog vodiča.
RF modul nRF24L01
U nRF24L01 moduli su Transceiver module, što znači da svaki modul može i slati i primati podatke, ali budući da su poludupleksni su ili mogu slati i primati podatke u isto vrijeme. Modul ima generički nRF24L01 IC iz nordijskih poluvodiča koji je odgovoran za prijenos i prijem podataka. IC komunicira pomoću SPI protokola i stoga se lako može povezati s bilo kojim mikrokontrolerom. S Arduinom postaje puno lakše jer su knjižnice dostupne. U pinouts standardnog nRF24L01 modula prikazan je ispod

Modul ima radni napon od 1,9 V do 3,6 V (obično 3,3 V) i troši vrlo malo struje od samo 12 mA tijekom normalnog rada, što ga čini učinkovitim u radu s baterijama, pa čak može raditi i na ćelijskim pločicama. Iako je radni napon 3,3 V, većina pinova tolerira 5 V i stoga se mogu izravno povezati s 5 V mikrokontrolerima poput Arduina. Još jedna prednost korištenja ovih modula je ta što svaki modul ima 6 cjevovoda. Znači, svaki modul može komunicirati s 6 drugih modula za prijenos ili primanje podataka. To modul čini prikladnim za stvaranje zvjezdastih ili mrežastih mreža u IoT aplikacijama. Također imaju širok raspon adresa od 125 jedinstvenih ID-ova, stoga u zatvorenom prostoru možemo koristiti 125 ovih modula bez međusobnog ometanja.
Kružni dijagram
nRF24L01 s Arduinom:
Shema spojeva za povezivanje nRF24L01 s Arduinom je jednostavna i nema puno komponenata. NRF24l01 će biti povezan SPI sučelja, a 16x2 LCD povezati s I2C protokol koji koristi samo dvije žice.


nRF24L01 s Raspberry Pi:
Shema spojeva za povezivanje nRF24L01 s Raspberry Pi također je vrlo jednostavna i samo se SPI sučelje koristi za povezivanje Raspberry Pi i nRF24l01.


Programiranje Raspberry Pi za slanje poruke pomoću nRF24l01
Programiranje Raspberry Pi vršit će se pomoću Python3. C / C ++ možete koristiti i kao Arduino. Ali već postoji biblioteka dostupna za nRF24l01 u pythonu, koju možete preuzeti s github stranice. Imajte na umu da bi program python i knjižnica trebali biti u istoj mapi, jer program python neće moći pronaći knjižnicu. Nakon preuzimanja knjižnice samo izvucite i napravite mapu u kojoj će se nalaziti svi programi i datoteke knjižnice. Kada je instalacija knjižnice gotova, samo počnite pisati program. Program započinje uključivanjem knjižnica koje će se koristiti u kodu kao što je import GPIO knjižnica za pristup Raspberry Pi GPIO-ima i vremenu uvoza za pristup vremenski povezanim funkcijama. Ako ste novi u Raspberry Pi, vratite se na početak rada s Raspberry pi.
import RPi.GPIO kao GPIO vrijeme uvoza import spidev from lib_nrf24 import NRF24
Postavite način GPIO u " Broadcom SOC kanal". To znači da se na pinove pozivate brojem "Broadcom SOC channel", to su brojevi iza "GPIO" (npr. GPIO01, GPIO02…). To nisu brojevi ploče.
GPIO.setmode (GPIO.BCM)
Dalje ćemo postaviti adresu cijevi. Ova je adresa važna za komunikaciju s Arduino prijamnikom. Adresa će biti u hex kodu.
cijevi =,]
Započnite radio koristeći GPIO08 kao CE i GPIO25 kao CSN pinove.
radio.begin (0, 25)
Postavite veličinu korisnog tereta na 32 bita, adresu kanala na 76, brzinu prijenosa podataka od 1 mbps i razinu snage kao minimalnu.
radio.setPayloadSize (32) radio.setChannel (0x76) radio.setDataRate (NRF24.BR_1MBPS) radio.setPALevel (NRF24.PA_MIN)
Otvorite cijevi da biste započeli s upisivanjem podataka i ispisali osnovne detalje nRF24l01.
radio.openWritingPipe (cijevi) radio.printDetails ()
Pripremite poruku u obliku niza. Ova će poruka biti poslana Arduinu UNO.
sendMessage = popis ("Hi..Arduino UNO") dok je len (sendMessage) <32: sendMessage.append (0)
Počnite pisati na radio i nastavite s pisanjem cijelog niza dok radio ne postane dostupan. Uz to zabilježite vrijeme i ispišite izjavu o otklanjanju pogrešaka isporuke poruke.
dok je True: start = time.time () radio.write (sendMessage) print ("Poslana poruka: {}". format (sendMessage)) pošalji radio.startListening ()
Ako je niz dovršen i cijev je zatvorena, ispišite poruku o otklanjanju pogrešaka s istekom vremena.
dok ne radio.available (0): time.sleep (1/100) ako time.time () - početak> 2: print ("Vrijeme je isteklo".) poruka o pogrešci # ispisa ako radio odspojen ili ne radi više razbiti
Prestanite slušati radio i zatvorite komunikaciju i ponovno pokrenite komunikaciju nakon 3 sekunde da biste poslali novu poruku.
radio.stopListening () # zatvori radio time.sleep (3) # daj odgodu od 3 sekunde
Program Raspberry jednostavno je razumjeti ako znate osnove pythona. Kompletni program Python dan je na kraju tutorijala.
Izvršenje Python programa u Raspberry Pi:
Izvršenje programa vrlo je jednostavno nakon što slijedite korake u nastavku:
- Spremite datoteke programa Python i knjižnice u istu mapu.

- Ime moje programske datoteke za Pošiljatelja je nrfsend.py, a također su sve datoteke u istoj mapi

- Idite na naredbeni terminal Raspberry Pi. I pronađite programsku datoteku python pomoću naredbe "cd".

- Zatim otvorite mapu i napišite naredbu " sudo python3 your_program.py " i pritisnite Enter. Moći ćete vidjeti osnovne detalje nRf24 i radio će početi slati poruke nakon svake 3 sekunde. Otklanjanje pogrešaka poruke prikazat će se nakon što se slanje završi sa svim poslanim znakovima.

Sad ćemo vidjeti isti program kao i prijemnik u Arduino UNO.
Programiranje Arduino UNO za primanje poruke pomoću nRF24l01
Programiranje Arduina UNO slično je programiranju Raspberry Pi. Slijedit ćemo slične metode, ali s različitim programskim jezikom i koracima. Koraci će uključivati dio za čitanje nRF24l01. Knjižnicu za nRF24l01 za Arduino možete preuzeti s github stranice. Započnite s uključivanjem potrebnih knjižnica. Koristimo LCD 16x2 koristeći I2C Shield, tako da uključite knjižnicu Wire.h, a također je nRF24l01 povezan sa SPI, tako da uključite SPI knjižnicu.
#include
Uključite RF24 i LCD biblioteku za pristup RF24 i LCD funkcijama.
#include
LCD adresa za I2C je 27, a to je LCD 16x2, pa to upišite u funkciju.
LCD LiquidCrystal_I2C (0x27, 16, 2);
RF24 je povezan sa standardnim SPI pinovima zajedno s CE na pinu 9 i CSN na pinu 10.
RF24 radio (9, 10);
Pokrenite radio, postavite razinu snage i postavite kanal na 76. Također postavite adresu cijevi istu kao Raspberry Pi i otvorite cijev za čitanje.
radio.begin (); radio.setPALevel (RF24_PA_MAX); radio.setChannel (0x76); const uint64_t cijev = 0xE0E0F1F1E0LL; radio.openReadingPipe (1, cijev);
Započnite I2C komunikaciju i inicirajte LCD zaslon.
Wire.begin (); lcd.begin (); lcd.home (); lcd.print ("Spremno za primanje");
Počnite slušati radio za dolazne poruke i postavite duljinu poruke na 32 bajta.
radio.startListening (); char primioMessage = {0}
Ako je priključen radio, počnite čitati poruku i spremite je. Ispišite poruku na serijski monitor, a također ispisujte na zaslon dok ne stigne sljedeća poruka. Zaustavite radio da biste slušali i pokušali ponovno nakon nekog vremena. Ovdje je 10 mikro sekundi.
if (radio.available ()) { radio.read (primljena poruka, veličina (primljena poruka)); Serial.println (primljena poruka); Serial.println ("Isključivanje radija."); radio.stopListening (); String stringMessage (receivedMessage); lcd.clear (); kašnjenje (1000); lcd.print (stringMessage); }
Prenesite kompletni kod dat na kraju u Arduino UNO i pričekajte da poruka bude primljena.

Ovim je završen kompletan vodič o slanju poruke pomoću Raspberry Pi & nRf24l01 i primanju pomoću Arduino UNO & nRF24l01. Poruka će se ispisati na LCD zaslon 16x2. Adrese cijevi su vrlo važne i za Arduino UNO i za Raspberry Pi. Ako imate bilo kakvih poteškoća tijekom izvođenja ovog projekta, molimo vas da prokomentirate u nastavku ili potražite forum za detaljniju raspravu.
Također pogledajte demonstracijski video u nastavku.
