- NRF24L01 RF modulis
- Ķēdes shēma
- Raspberry Pi programmēšana, lai nosūtītu ziņojumu, izmantojot nRF24l01
- Arduino UNO programmēšana ziņu saņemšanai, izmantojot nRF24l01
Dizaineri izmanto daudzas bezvadu sakaru sistēmas, piemēram, Bluetooth Low Energy (BLE 4.0), Zigbee, ESP8266 Wi-Fi moduļus, 433MHz RF moduļus, Lora, nRF utt. Un barotnes izvēle ir atkarīga no lietojuma veida, kurā tā tiek izmantota. viss, viens populārs bezvadu nesējs lokālā tīkla sakariem ir nRF24L01. Šie moduļi darbojas ar 2,4 GHz (ISM joslu) ar datu pārraides ātrumu no 250 Kbps līdz 2 Mbps, kas ir likumīgi daudzās valstīs un ko var izmantot rūpniecības un medicīnas lietojumos. Tiek arī apgalvots, ka ar atbilstošām antenām šie moduļi var pārraidīt un saņemt signālus līdz 100 metru attālumam starp tiem. Iepriekš mēs izmantojām nRF24L01 ar Arduino, lai vadītu servomotoru un izveidotu tērzēšanas istabu.
Šeit mēs izmantosim nRF24L01 - 2,4 GHz RF raiduztvērēja moduli ar Arduino UNO un Raspberry Pi, lai izveidotu bezvadu sakarus starp tiem. Raspberry pi darbosies kā raidītājs, un Arduino Uno klausīsies Raspberry Pi un izdrukās Raspberry Pi nosūtīto ziņojumu, izmantojot nRF24L01 uz 16x2 LCD. nRF24L01 ir arī iebūvētas BLE iespējas, un tā var arī sazināties bezvadu režīmā, izmantojot BLE.
Apmācība ir sadalīta divās sadaļās. Pirmajā sadaļā tiks iekļauta nRF24L01 saskarne ar Arduino, lai darbotos kā uztvērējs, un otrajā sadaļā tiks iekļauta nRF24L01 saskarne ar Raspberry Pi, kas darbosies kā raidītājs. Pilns abas sadaļas kods ar darba video tiks pievienots šīs apmācības beigās.
NRF24L01 RF modulis
Par nRF24L01 moduļi ir uztvērējs moduļi, tātad katrs modulis var gan sūtīt un saņemt datus, bet, tā kā tie ir pusdupleksais viņi var vai nu nosūtīt vai saņemt datus laikā. Modulim ir Ziemeļvalstu pusvadītāju vispārējais nRF24L01 IC, kas atbild par datu pārraidi un saņemšanu. IC sazinās, izmantojot SPI protokolu, un tāpēc to var viegli sasaistīt ar visiem mikrokontrolleriem. Arduino kļūst daudz vieglāk, jo bibliotēkas ir viegli pieejamas. Turpmāk parādīti standarta nRF24L01 moduļa tapas
Moduļa darba spriegums ir no 1,9 V līdz 3,6 V (parasti 3,3 V), un normālas darbības laikā tas patērē ļoti mazāku strāvu (tikai 12 mA), kas padara to par akumulatoru efektīvu un tādējādi var darboties pat ar monētu šūnām. Pat ja darba spriegums ir 3,3 V, lielākā daļa tapu ir 5V tolerantas, un tāpēc tās var tieši saskarni ar 5V mikrokontrolleriem, piemēram, Arduino. Vēl viena šo moduļu izmantošanas priekšrocība ir tā, ka katram modulim ir 6 cauruļvadi. Tas nozīmē, ka katrs modulis var sazināties ar 6 citiem moduļiem, lai pārsūtītu vai saņemtu datus. Tas padara moduli piemērotu zvaigžņu vai acu tīklu izveidei IoT lietojumprogrammās. Viņiem ir arī plašs 125 unikālo ID adrešu diapazons, tāpēc slēgtā zonā mēs varam izmantot 125 no šiem moduļiem, netraucējot viens otram.
Ķēdes shēma
nRF24L01 ar Arduino:
Shēmas shēma nRF24L01 savienošanai ar Arduino ir vienkārša, un tajā nav daudz komponentu. NRF24l01 tiks savienoti ar SPI interfeisu un 16x2 LCD ir saskarnē ar I2C protokolu, ko izmanto tikai divi vadi.
nRF24L01 ar Aveņu Pi:
Arī shēma nRF24L01 savienošanai ar Raspberry Pi ir ļoti vienkārša, un Raspberry Pi un nRF24l01 savienošanai tiek izmantota tikai SPI saskarne.
Raspberry Pi programmēšana, lai nosūtītu ziņojumu, izmantojot nRF24l01
Raspberry Pi programmēšana tiks veikta, izmantojot Python3. Varat arī izmantot C / C ++ kā Arduino. Bet pitonā nRF24l01 jau ir pieejama bibliotēka, kuru var lejupielādēt no github lapas. Ņemiet vērā, ka pitona programmai un bibliotēkai jāatrodas vienā mapē, pretējā gadījumā python programma nevarēs atrast bibliotēku. Pēc bibliotēkas lejupielādes vienkārši izvelciet un izveidojiet mapi, kurā visas programmas un bibliotēkas faili tiks glabāti. Kad bibliotēkas instalēšana ir pabeigta, vienkārši sāciet rakstīt programmu. Programma sākas ar bibliotēku iekļaušanu, kuras tiks izmantotas tādos kodos kā GPIO importēšanas bibliotēka, lai piekļūtu Raspberry Pi GPIO un importēšanas laikam lai piekļūtu ar laiku saistītajām funkcijām. Ja esat jauns Raspberry Pi lietotājs, atgriezieties pie Raspberry pi lietošanas sākšanas.
importēt RPi.GPIO kā GPIO importēšanas laiku importēt spidev no lib_nrf24 importēt NRF24
Iestatiet GPIO režīmu sadaļā " Broadcom SOC kanāls". Tas nozīmē, ka jūs atsaucaties uz tapām ar numuru "Broadcom SOC channel", tie ir skaitļi aiz "GPIO" (piemēram, GPIO01, GPIO02…). Tie nav padomes numuri.
GPIO.setmode (GPIO.BCM)
Tālāk mēs to iestatīsim caurules adresi. Šī adrese ir svarīga, lai sazinātos ar Arduino uztvērēju. Adrese būs sešstūra kodā.
caurules =,]
Sāciet radio, izmantojot GPIO08 kā CE un GPIO25 kā CSN tapas.
radio.begin (0, 25)
Iestatiet lietderīgās slodzes lielumu kā 32 bitu, kanāla adresi - 76, datu pārraides ātrumu 1 Mb / s un jaudas līmeni kā minimumu.
radio.setPayloadSize (32) radio.setChannel (0x76) radio.setDataRate (NRF24.BR_1MBPS) radio.setPALevel (NRF24.PA_MIN)
Atveriet caurules, lai sāktu rakstīt datus, un izdrukājiet nRF24l01 pamatinformāciju.
radio.openWritingPipe (caurules) radio.printDetails ()
Sagatavojiet ziņojumu virknes formā. Šis ziņojums tiks nosūtīts uzņēmumam Arduino UNO.
sendMessage = saraksts ("Hi..Arduino UNO"), kamēr len (sendMessage) <32: sendMessage.append (0)
Sāciet rakstīt radio un turpiniet rakstīt visu virkni, līdz radio ir pieejams. Kopā ar to pierakstiet laiku un izdrukājiet ziņojumu piegādes atkļūdošanas paziņojumu.
kamēr True: start = time.time () radio.write (sendMessage) print ("Nosūtīts ziņojums: {}". format (sendMessage)) nosūtīt radio.startListening ()
Ja virkne ir pabeigta un caurule ir aizvērta, izdrukājiet atkāpšanās ziņojumu noildze.
kamēr nav radio.available (0): time.sleep (1/100) ja time.time () - sākums> 2: print ("noildze.") # drukas kļūdas paziņojumu, ja radio atvienota vai nedarbojas vairs salauzt
Pārtrauciet radio klausīšanos un pārtrauciet sakarus un pēc 3 sekundēm atsāciet sakarus, lai nosūtītu citu ziņojumu.
radio.stopListening () # aizveriet radio laiku.miegs (3) # dodiet 3 sekunžu kavēšanos
Aveņu programmu ir viegli saprast, ja zināt pitona pamatus. Pamācības beigās tiek dota pilnīga Python programma.
Python programmas izpildīšana Raspberry Pi:
Pēc sekojošo darbību izpilde ir ļoti vienkārša:
- Saglabājiet Python programmas un bibliotēkas failus tajā pašā mapē.
- Mans programmas Sender programmas faila nosaukums ir nrfsend.py, un arī visi faili atrodas vienā mapē
- Dodieties uz Raspberry Pi komandterminālu. Un atrodiet python programmas failu, izmantojot komandu “cd”.
- Pēc tam atveriet mapi un ierakstiet komandu “ sudo python3 your_program.py ” un nospiediet taustiņu Enter. Jūs varēsiet redzēt pamatinformāciju par nRf24, un radio sāks sūtīt ziņojumus ik pēc 3 sekundēm. Pēc nosūtīšanas ar visām nosūtītajām rakstzīmēm tiks parādīta ziņojumu atkļūdošana.
Tagad mēs redzēsim to pašu programmu kā uztvērēju Arduino UNO.
Arduino UNO programmēšana ziņu saņemšanai, izmantojot nRF24l01
Arduino UNO programmēšana ir līdzīga Raspberry Pi programmēšanai. Mēs ievērosim līdzīgas metodes, bet ar atšķirīgu programmēšanas valodu un soļiem. Darbībās tiks iekļauta nRF24l01 lasīšanas daļa. Arduino nRF24l01 bibliotēku var lejupielādēt no github lapas. Sāciet ar nepieciešamo bibliotēku iekļaušanu. Mēs izmantojam 16x2 LCD, izmantojot I2C Shield, tāpēc iekļaujiet Wire.h bibliotēku, un arī nRF24l01 ir saskarne ar SPI, tāpēc iekļaujiet arī SPI bibliotēku.
# iekļaut
Iekļaujiet RF24 un LCD bibliotēku, lai piekļūtu RF24 un LCD funkcijām.
# iekļaut
LCD adrese I2C ir 27 un tas ir 16x2 LCD, tāpēc ierakstiet to funkcijā.
LiquidCrystal_I2C lcd (0x27, 16, 2);
RF24 ir savienots ar standarta SPI tapām kopā ar CE 9. kontaktā un CSN 10. kontaktā.
RF24 radio (9, 10);
Sāciet radio, iestatiet jaudas līmeni un iestatiet kanālu uz 76. Arī iestatiet caurules adresi tāpat kā Raspberry Pi un atveriet cauruli lasīšanai.
radio.sākt (); radio.setPALevel (RF24_PA_MAX); radio.setChannel (0x76); const uint64_t caurule = 0xE0E0F1F1E0LL; radio.openReadingPipe (1, caurule);
Sāciet I2C sakarus un inicializējiet LCD displeju.
Wire.begin (); lcd.begin (); lcd.home (); lcd.print ("Gatavs saņemt");
Sāciet klausīties ienākošo ziņojumu radio un iestatiet ziņas garumu kā 32 baitus.
radio.startKlausīšanās (); char charMessage = {0}
Ja radio ir pievienots, sāciet lasīt ziņojumu un saglabājiet to. Izdrukājiet ziņojumu sērijveida monitorā un drukājiet arī displejā, līdz pienāk nākamais ziņojums. Apturiet radio, lai klausītos, un pēc kāda laika mēģiniet vēlreiz. Šeit ir 10 mikro sekundes.
if (radio.available ()) { radio.read (ReceivedMessage, sizeof (ReceiveMessage)) Serial.println (saņemtsMessage); Serial.println ("Radio izslēgšana."); radio.stopKlausīšanās (); String stringMessage (saņemtsMessage); lcd.clear (); kavēšanās (1000); lcd.print (stringMessage); }
Augšupielādējiet pilnu kodu, kas norādīts beigās, Arduino UNO un gaidiet, līdz tiek saņemts ziņojums.
Tādējādi tiek pabeigta visa apmācība par ziņojuma sūtīšanu, izmantojot Raspberry Pi & nRf24l01, un tās saņemšana, izmantojot Arduino UNO & nRF24l01. Ziņojums tiks izdrukāts 16x2 LCD ekrānā. Cauruļu adreses ir ļoti svarīgas gan Arduino UNO, gan Raspberry Pi. Ja, veicot šo projektu, rodas kādas grūtības, lūdzu, komentējiet zemāk vai sazinieties ar forumu, lai iegūtu sīkāku diskusiju.
Pārbaudiet arī zemāk esošo demonstrācijas video.