- Kuinka Bluetooth Low Energy (BLE) on erilainen?
- NRF24L01-moduulin BLE-kyky
- Tarvittavat komponentit
- Aloitetaan nRF24L01-moduulilla
- Arduino
- NRF24L01: n ja Arduinon yhdistäminen BLE-viestintää varten
Bluetooth Low Energy (BLE) on Bluetooth-versio, ja se on läsnä pienempänä, erittäin optimoituna versiona klassisesta Bluetoothista. Se tunnetaan myös nimellä Smart Bluetooth. BLE on suunniteltu pitäen mielessä pienin mahdollinen virrankulutus erityisesti pienille kustannuksille, pienelle kaistanleveydelle, pienelle teholle ja pienelle monimutkaisuudelle. ESP32: ssa on sisäänrakennetut BLE-ominaisuudet, mutta muille mikro-ohjaimille, kuten Arduino, voidaan käyttää nRF24L01. Tätä RF-moduulia voidaan käyttää myös BLE-moduulina lähettämään tietoja muille Bluetooth-laitteille, kuten älypuhelimille, tietokoneelle jne.
Tässä tässä opetusohjelmassa näytetään, kuinka tietoja lähetetään BLE: n kautta käyttämällä nRF24L01. Lähetämme lämpötilalukemat DHT11: stä älypuhelimeen käyttämällä Arduino- ja nRF-moduuleja BLE: n kautta.
Kuinka Bluetooth Low Energy (BLE) on erilainen?
BLE otettiin käyttöön sen virrankulutusominaisuuksien vuoksi, koska se pystyi toimimaan pitkään vain kolikkokennoa käyttämällä. Verrattuna muihin langattomiin standardeihin, BLE: n nopea kasvu on edennyt nopeammin sen ilmiömäisten sovellusten ansiosta älypuhelimissa, tableteissa ja mobiililaskennassa.
NRF24L01-moduulin BLE-kyky
BLE käyttää samaa 2,4 GHz: n ISM-kaistaa, jonka tiedonsiirtonopeus on 250 Kbps - 2 Mbps, mikä on sallittua monissa maissa ja jota voidaan soveltaa teollisiin ja lääketieteellisiin sovelluksiin. Kaista alkaa taajuudelta 2400 MHz - 2483,5 MHz ja se on jaettu 40 kanavaan. Kolme näistä kanavista tunnetaan nimellä "mainonta", ja laitteet käyttävät niitä lähettämään mainospaketteja, joissa on tietoja niistä, jotta muut BLE-laitteet voivat muodostaa yhteyden. Nämä kanavat valittiin alun perin kaistan alaosasta ja kaistan keskeltä häiriöiden välttämiseksi, jotka voivat mahdollisesti häiritä useita kanavia. Jos haluat lisätietoja BLE: stä, seuraa tätä opetusohjelmaa.
Tässä opetusohjelmassa kerrotaan, kuinka NRF24L01-moduulia käytetään BLE-lähetin-vastaanottimena. NRF24L01: n RF-moduulina -opetusohjelma on jo selitetty liitettäessä nRF24L01 Arduino-opetusohjelmaan. Tänään tämän moduulin BLE-toiminnot selitetään lähettämällä anturitiedot älypuhelimeen. Täällä tämä nRF24L01-moduuli liitetään Arduino-mikrokontrolleriin ja DHT11-anturin lämpötilatiedot lähetetään viralliseen pohjoismaiseen BLE-android-sovellukseen.
Tarvittavat komponentit
Laitteisto:
- Arduino UNO
- nRF24L01 BLE -moduuli
- DHT11 lämpötila- ja kosteusanturi
- Neulepuserot
Ohjelmisto:
- Arduino IDE
- Pohjoismainen BLE-Android-sovellus (nRF Temp 2.0 for BLE tai nRF Connect for Mobile)
Aloitetaan nRF24L01-moduulilla
NRF24L01-moduulit ovat lähetin-vastaanotinmoduuleja, mikä tarkoittaa, että kukin moduuli voi sekä lähettää että vastaanottaa tietoja, mutta koska ne ovat puolisuuntaisia, ne voivat joko lähettää tai vastaanottaa tietoja kerrallaan. Moduulissa on pohjoismaisten puolijohteiden yleinen nRF24L01 IC, joka vastaa tiedonsiirrosta ja vastaanottamisesta. IC kommunikoi SPI-protokollan avulla, ja siten se voidaan helposti liittää minkä tahansa mikro-ohjaimen kanssa. Arduinon kanssa se on paljon helpompaa, koska kirjastot ovat helposti saatavilla. Olemme jo käyttäneet nRF24L01-moduulia Arduinon kanssa chat-huoneen luomiseen ja servomoottoreiden ohjaamiseen langattomasti.
Normaalin nRF24L01-moduulin pinouts on esitetty alla:
Moduulin käyttöjännite on 1,9 V - 3,6 V (tyypillisesti 3,3 V), ja se kuluttaa normaalin käytön aikana hyvin vähän vain 12 mA: n virtaa, mikä tekee siitä paristotehokkaan ja voi siten toimia jopa kolikennoilla. Vaikka käyttöjännite on 3,3 V, suurin osa nastoista on 5 V: n suvaitsevaisia, joten ne voidaan liittää suoraan 5 V: n mikro-ohjaimiin, kuten Arduino. Toinen etu näiden moduulien käytöstä on, että jokaisessa moduulissa on 6 putkilinjaa. Jokainen moduuli voi kommunikoida 6 muun moduulin kanssa datan lähettämiseksi tai vastaanottamiseksi. Tämä tekee moduulista sopivan tähti- tai mesh-verkkojen luomiseen IoT-sovelluksissa. Lisäksi niillä on laaja osoitealue, 125 yksilöllistä tunnusta, joten suljetussa tilassa voimme käyttää 125 näistä moduuleista häiritsemättä toisiaan.
Arduino
NRF24L01: n ja Arduinon yhdistäminen BLE-viestintää varten
NRF24L01 toimii SPI: llä, joten liitännät käyttävät SPI-protokollaa. Koko koodi ja videon liitetään lopussa tämä opetusohjelma. Android-sovellusopas selitetään myös videossa. Tässä nRF24L01-moduulia käytetään kommunikoimaan Nordic Smartphone App -sovelluksen kanssa.Sisällytä ensin vaaditut kirjastot. Kirjasto sisältää RF24: n nRF24L01-komentojen käyttämiseen, DHT11-kirjaston DHT11-komentojen käyttämiseen ja BTLE-kirjaston BLE-toimintojen käyttämiseen.
#sisältää
Määritä ja alusta nastat ja toiminnot DHT11- ja BLE-moduuleille. DHT-tyyppi alustetaan nimellä DHT11, koska käytämme DHT11: tä. DHT on kytketty GPIO-nastaan 4 ja nRF-moduulin CE- ja CSN-nastat on kytketty nastaan 9 ja 10 vastaavasti.
#define DHTPIN #define DHTTYPE DHT11 DHT22 DHT dht (DHTPIN, DHTTYPE); RF24-radio (9, 10); BTLE btle (& radio);
Käynnistä sarjaportti 9600: lla, voit valita minkä tahansa portin. Sitten alkaa DHT anturi ja myös alkaa BTLE Bluetooth paikallinen nimi maks 8 merkkiä pitkä.
Sarjan alku (9600); dht. alku (); btle.begin ("CD Temp");
Lue lämpötila silmukan yli ja tallenna se kelluvaan muuttuvaan lämpötilaan . Lisää virheenkorjausrivi virheilmoituksen näyttämiseksi, jos DHT menettää virransa tai tapahtuu jotain odottamatonta.
uimurilämpötila = dht. lukulämpötila (); // lue lämpötilatiedot if (isnan (h) - isnan (t)) { Serial.println (F ("Lukeminen epäonnistui DHT-anturilta!")); palata; }
Tallenna arvo puskuriin ja jäsennä se BLE-moduuliin. Lähetä myös lämpötila-arvo BLE-moduuliin. BLE-moduuli mainostaa lämpötilatietoja. Android-sovellus voi etsiä BLE-moduulia ja vastaanottaa anturitietoja.
nrf_service_data buf; buf.service_uuid = NRF_TEMPERATURE_SERVICE_UUID; buf.value = BTLE:: to_nRF_Float (lämpötila); if (! btle.advertise (0x16, & buf, sizeof (buf))) { Serial.println ("BTLE epäonnistui..!"); }
Kun olet valmis, siirry vain seuraavalle kanavalle.
btle.hopChannel ();
Koska DHT-anturiasiakirjoissa suositellaan vähintään 2 sekunnin viiveen pitämistä yhden lukemisen jälkeen, lisää viive 2 sekuntia.
viive (2000);
Kun olet ladannut älypuhelimen ja muodostanut pariliitoksen nRF-moduuliin, alat saada arvoja nRF Temp 2.0 for BLE-Android-sovellukselle, kuten alla on esitetty. Täydellinen pariliitoksen muodostamismenettely ja tietojen hankkiminen Android-sovellukseen selitetään myös videossa:
Tämä on täydellinen opetusohjelma anturitietojen mainostamiseksi pohjoismaiseen Android-sovellukseen BLE nRF24L01: n avulla. Jos löydät ongelmia, kommentoi alla tai kirjoita foorumillemme. Jos haluat tutkia lisää nRF24L02: sta, voit myös yrittää luoda yksityisen keskusteluhuoneen Arduinon, nRF24L01: n ja prosessoinnin avulla.