- Kuo skiriasi „Bluetooth Low Energy“ (BLE)?
- NRF24L01 modulio BLE galimybė
- Būtini komponentai
- Pradedant nuo nRF24L01 modulio
- Arduino
- „NRF24L01“ sąsaja su „Arduino“, skirta BLE ryšiui
„Bluetooth Low Energy“ (BLE) yra „Bluetooth“ versija ir pateikiama kaip mažesnė, labai optimizuota klasikinio „Bluetooth“ versija. Jis taip pat žinomas kaip „Smart Bluetooth“. BLE buvo sukurtas atsižvelgiant į mažiausią įmanomą energijos suvartojimą, ypač esant mažoms sąnaudoms, mažam pralaidumui, mažai energijos ir mažai sudėtingam. ESP32 turi integruotas BLE galimybes, tačiau kitiems mikrovaldikliams, pvz., „Arduino“, galima naudoti „nRF24L01“. Šis RF modulis taip pat gali būti naudojamas kaip BLE modulis duomenims siųsti į kitus „Bluetooth“ įrenginius, pavyzdžiui, išmaniuosius telefonus, kompiuterį ir kt.
Čia šioje pamokoje parodysime, kaip siųsti bet kokius duomenis per BLE naudojant „nRF24L01“. Mes išsiųsime temperatūros rodmenis iš DHT11 į išmanųjį telefoną naudodami „Arduino“ ir „nRF“ modulį per BLE.
Kuo skiriasi „Bluetooth Low Energy“ (BLE)?
BLE buvo priimtas dėl energijos suvartojimo ypatybių, nes jis galėjo veikti ilgesnį laiką naudodamas tik monetų elementą. Palyginti su kitais belaidžio ryšio standartais, spartus BLE augimas vyko sparčiau dėl fenomenalių programų išmaniuosiuose telefonuose, planšetiniuose kompiuteriuose ir mobiliajame skaičiavime.
NRF24L01 modulio BLE galimybė
BLE naudoja tą pačią 2,4 GHz ISM juostą, kurios perdavimo sparta yra nuo 250 kbps iki 2 Mbps, kuri yra leidžiama daugelyje šalių ir gali būti pritaikyta pramonės ir medicinos reikmėms. Juosta prasideda nuo 2400 MHz iki 2483,5 MHz ir yra padalinta į 40 kanalų. Trys iš šių kanalų yra žinomi kaip „Reklama“ ir prietaisai juos naudoja reklaminiams paketams su informacija apie juos siųsti, kad kiti BLE įrenginiai galėtų prisijungti. Šie kanalai iš pradžių buvo pasirinkti apatiniame juostos viršutiniame kampe ir juostos viduryje, kad būtų išvengta trukdžių, kurie gali trukdyti daugeliui kanalų. Norėdami sužinoti daugiau apie BLE, vadovaukitės šia pamoka.
Šioje pamokoje bus paaiškinta, kaip naudoti NRF24L01 modulį kaip BLE siųstuvą-imtuvą. NRF24L01 kaip RF modulio pamoka jau buvo paaiškinta sąveikaujant nRF24L01 su „Arduino“ pamoka. Šiandien šio modulio BLE funkcionalumas bus paaiškintas siunčiant jutiklių duomenis į išmanųjį telefoną. Čia šis „nRF24L01“ modulis bus susietas su „Arduino“ mikrovaldikliu, o DHT11 jutiklio temperatūros duomenys bus siunčiami į oficialią „Nordic BLE“ „Android“ programą.
Būtini komponentai
Techninė įranga:
- „Arduino UNO“
- nRF24L01 BLE modulis
- DHT11 temperatūros ir drėgmės jutiklis
- Džemperiai
Programinė įranga:
- „Arduino IDE“
- „Nordic BLE Android“ programa („nRF Temp 2.0 for BLE“ arba „nRF Connect for Mobile“)
Pradedant nuo nRF24L01 modulio
„NRF24L01“ moduliai yra siųstuvo-imtuvo moduliai, o tai reiškia, kad kiekvienas modulis gali ir siųsti, ir priimti duomenis, tačiau kadangi jie yra pusiau dupleksai, jie gali siųsti arba gauti duomenis vienu metu. Modulis turi bendrą Šiaurės šalių puslaidininkių „nRF24L01 IC“, atsakingą už duomenų perdavimą ir priėmimą. IC palaiko ryšį naudodamas SPI protokolą, todėl gali būti lengvai suderinamas su bet kokiais mikrovaldikliais. Su „Arduino“ daug lengviau, nes bibliotekos yra lengvai prieinamos. Mes jau naudojome „nRF24L01“ modulį su „Arduino“, kad sukurtume pokalbių kambarį ir valdytume servo variklius belaidžiu būdu.
Standartinio nRF24L01 modulio kištukai parodyti žemiau:
Modulio darbinė įtampa yra nuo 1,9 V iki 3,6 V (paprastai 3,3 V), o įprasto veikimo metu sunaudojama labai mažai srovės, tik 12 mA, todėl baterija efektyvi ir todėl gali veikti net monetų elementuose. Nors darbinė įtampa yra 3,3 V, dauguma kaiščių yra atsparūs 5 V įtampai, todėl juos galima tiesiogiai susieti su 5 V mikrovaldikliais, tokiais kaip „Arduino“. Kitas šių modulių naudojimo pranašumas yra tas, kad kiekviename modulyje yra 6 vamzdynai. Tai reiškia, kad kiekvienas modulis gali bendrauti su 6 kitais moduliais perduoti ar priimti duomenis. Todėl modulis yra tinkamas kurti žvaigždžių ar tinklų tinklus IoT programose. Be to, jie turi platų 125 unikalių ID adresų diapazoną, todėl uždaroje zonoje mes galime naudoti 125 iš šių modulių netrukdydami vienas kitam.
Arduino
„NRF24L01“ sąsaja su „Arduino“, skirta BLE ryšiui
„NRF24L01“ veikia SPI, todėl sąsajoje bus naudojamas SPI protokolas. Visas kodas ir vaizdo įrašas bus pridėti šios pamokos pabaigoje. „Android“ programų vadovas taip pat paaiškintas vaizdo įraše. Čia „nRF24L01“ modulis naudojamas bendrauti su „ Smartphone App of Nordic“.Pirmiausia įtraukite reikalingas bibliotekas. Bibliotekoje yra RF24 prieigai prie nRF24L01 komandų, DHT11 bibliotekai prieigai prie DHT11 komandų ir BTLE bibliotekai, kad būtų naudojamos BLE funkcijos.
# įtraukti
Apibrėžkite ir inicializuokite DHT11 ir BLE modulio kaiščius ir funkcijas. DHT tipas inicijuojamas kaip DHT11, nes mes naudojame DHT11. DHT yra prijungtas prie GPIO 4 kontaktų, o „nRF“ modulio CE ir CSN kaiščiai - atitinkamai prie 9 ir 10 kontaktų.
#apibrėžti DHTPIN #apibrėžti DHTTYPE DHT11 DHT22 DHT dht (DHTPIN, DHTTYPE); RF24 radijas (9, 10); BTLE btle (& radijas);
Pradėkite nuoseklųjį prievadą nuo 9600, galite pasirinkti bet kurį prievadą. Tada pradėkite DHT jutiklį ir pradėkite BTLE su „Bluetooth“ vietiniu pavadinimu, kurio ilgis ne didesnis kaip 8 simboliai.
Serijos pradžia (9600); dht.prasideda (); btle.begin („CD Temp“);
Perskaitykite temperatūrą per kilpą ir įrašykite ją į kintamą kintamą temp . Pridėkite derinimo eilutę, kad būtų rodomas klaidos pranešimas, jei DHT praranda galią arba nutinka kas nors netikėto.
plūdės temp = dht.readTemperature (); // skaityti temperatūros duomenis if (isnan (h) - isnan (t)) { Serial.println (F ("Nepavyko perskaityti iš DHT jutiklio!")); grįžti; }
Įrašykite vertę į buferį ir analizuokite ją BLE modulyje. Taip pat nusiųskite temperatūros vertę į BLE modulį. BLE modulis reklamuos temperatūros duomenis. „Android“ programa gali ieškoti BLE modulyje ir gauti jutiklio duomenis.
nrf_service_data buf; buf.service_uuid = NRF_TEMPERATURE_SERVICE_UUID; buf.value = BTLE:: to_nRF_Float (temp); if (! btle.advertise (0x16, & buf, sizeof (buf)))) { Serial.println ("BTLE nepavyko..!"); }
Baigę tiesiog pereikite prie kito kanalo.
btle.hopChannel ();
Kadangi DHT jutiklio dokumentuose rekomenduojama, kad po vieno skaitymo vėlavimas būtų mažiausiai 2 sekundės, pridėkite 2 sekundžių vėlavimą.
vėlavimas (2000);
Įkėlę ir suporavę išmanųjį telefoną su „nRF“ moduliu, pradėsite gauti „BLE android“ programos „nRF Temp 2.0“ reikšmes, kaip parodyta žemiau. Visa poravimo ir duomenų gavimo „Android“ programoje procedūra taip pat paaiškinta vaizdo įraše:
Pabaigta visa pamoka apie jutiklių duomenų reklamavimą „Nordic Android App“ naudojant „BLE nRF24L01“. Jei pastebite kokių nors sunkumų, pakomentuokite toliau arba parašykite mūsų forumui. Norėdami daugiau sužinoti apie „nRF24L02“, taip pat galite pabandyti sukurti privatų pokalbių kambarį naudodami „Arduino“, „nRF24L01“ ir „Processing“.