- Hoe verschilt Bluetooth Low Energy (BLE)?
- BLE-mogelijkheid van NRF24L01-module
- Componenten vereist
- Te beginnen met de nRF24L01-module
- Arduino
- Koppeling nRF24L01 met Arduino voor BLE-communicatie
Bluetooth Low Energy (BLE) is een versie van Bluetooth en is aanwezig als een kleinere, sterk geoptimaliseerde versie van de klassieke Bluetooth. Het is ook bekend als Smart Bluetooth. De BLE is ontworpen met het laagst mogelijke stroomverbruik in gedachten, specifiek voor lage kosten, lage bandbreedte, laag stroomverbruik en lage complexiteit. ESP32 heeft ingebouwde BLE-mogelijkheden, maar voor andere microcontrollers zoals Arduino kan nRF24L01 worden gebruikt. Deze RF-module kan ook worden gebruikt als BLE-module om de gegevens naar andere Bluetooth-apparaten zoals smartphones, computers enz.
Hier in deze tutorial laten we zien hoe u gegevens via BLE kunt verzenden met nRF24L01. We sturen temperatuurmetingen van DHT11 naar smartphone met behulp van Arduino en nRF-module via BLE.
Hoe verschilt Bluetooth Low Energy (BLE)?
De BLE werd geadopteerd vanwege de functies voor stroomverbruik, omdat deze gedurende een langere periode kon werken met slechts een knoopcel. In vergelijking met andere draadloze standaarden is de snelle groei van BLE nog sneller gegaan vanwege de fenomenale toepassingen in smartphones, tablets en mobiel computergebruik.
BLE-mogelijkheid van NRF24L01-module
BLE gebruikt dezelfde 2,4 GHz ISM-band met een baudrate van 250 Kbps tot 2 Mbps, wat in veel landen is toegestaan en kan worden toegepast op industriële en medische toepassingen. De band begint bij 2400 MHz tot 2483,5 MHz en is verdeeld in 40 kanalen. Drie van deze kanalen staan bekend als 'Advertising' en worden door apparaten gebruikt om advertentiepakketten met informatie over hen te verzenden, zodat andere BLE-apparaten verbinding kunnen maken. Deze kanalen werden aanvankelijk geselecteerd aan de onderkant van de band en in het midden van de band om interferentie te vermijden die mogelijk een aantal kanalen kan storen. Volg deze tutorial voor meer informatie over BLE.
In deze tutorial wordt uitgelegd hoe u de NRF24L01-module als BLE-transceiver gebruikt. De tutorial over NRF24L01 als RF-module is al uitgelegd in de interface van nRF24L01 met Arduino-tutorial. Vandaag wordt de BLE-functionaliteit van deze module uitgelegd door sensordata naar een smartphone te sturen. Hier wordt deze nRF24L01-module gekoppeld aan de Arduino Microcontroller en worden de DHT11-sensortemperatuurgegevens naar de officiële Nordic BLE Android-applicatie gestuurd.
Componenten vereist
Hardware:
- Arduino UNO
- nRF24L01 BLE-module
- DHT11 Temperatuur- en vochtigheidssensor
- Truien
Software:
- Arduino IDE
- Nordic BLE Android-applicatie (nRF Temp 2.0 voor BLE of nRF Connect voor mobiel)
Te beginnen met de nRF24L01-module
De nRF24L01-modules zijn transceivermodules, wat betekent dat elke module zowel gegevens kan verzenden als ontvangen, maar omdat ze half-duplex zijn, kunnen ze gegevens tegelijk verzenden of ontvangen. De module heeft de generieke nRF24L01 IC van Noordse halfgeleiders die verantwoordelijk is voor de verzending en ontvangst van gegevens. De IC communiceert met behulp van het SPI-protocol en kan daarom gemakkelijk worden gekoppeld aan microcontrollers. Het wordt een stuk eenvoudiger met Arduino, omdat de bibliotheken direct beschikbaar zijn. We gebruikten al de nRF24L01-module met Arduino om een chatroom te creëren en om servomotoren draadloos aan te sturen.
De pinouts van een standaard nRF24L01-module worden hieronder weergegeven:
De module heeft een bedrijfsspanning van 1,9 V tot 3,6 V (typisch 3,3 V) en verbruikt heel weinig stroom van slechts 12 mA tijdens normaal gebruik, waardoor hij batterij-efficiënt is en dus zelfs op knoopcellen kan werken. Hoewel de bedrijfsspanning 3,3V is, zijn de meeste pinnen 5V-tolerant en kunnen ze daarom rechtstreeks worden gekoppeld aan 5V-microcontrollers zoals Arduino. Een ander voordeel van het gebruik van deze modules is dat elke module 6 Pipelines heeft. Dit betekent dat elke module kan communiceren met 6 andere modules om gegevens te verzenden of te ontvangen. Dit maakt de module geschikt voor het creëren van ster- of mesh-netwerken in IoT-toepassingen. Ze hebben ook een breed adresbereik van 125 unieke ID's, dus in een afgesloten gebied kunnen we 125 van deze modules gebruiken zonder elkaar te storen.
Arduino
Koppeling nRF24L01 met Arduino voor BLE-communicatie
De nRF24L01 werkt op SPI, dus de interfacing zal het SPI-protocol gebruiken. De volledige code en video worden aan het einde van deze tutorial bijgevoegd. De Android-app-gids wordt ook uitgelegd in de video. Hier wordt de nRF24L01-module gebruikt om te communiceren met de smartphone-app van Nordic.Neem eerst de benodigde bibliotheken op. De bibliotheek bevat RF24 voor toegang tot nRF24L01-opdrachten, DHT11-bibliotheek voor toegang tot DHT11-opdrachten en BTLE-bibliotheek om BLE-functies te gebruiken.
# omvatten
Definieer en initialiseer de pinnen en functies voor de DHT11- en BLE-module. Het DHT-type wordt geïnitialiseerd als DHT11 omdat we DHT11 gebruiken. De DHT is verbonden met GPIO Pin 4 en de CE- en CSN-pinnen van de nRF-module zijn respectievelijk verbonden met Pin 9 en 10.
#define DHTPIN #define DHTTYPE DHT11 DHT22 DHT dht (DHTPIN, DHTTYPE); RF24-radio (9, 10); BTLE btle (& radio);
Start de seriële poort op 9600, u kunt elke poort kiezen. Begin dan met de DHT-sensor en begin ook BTLE met de Bluetooth Local Name van maximaal 8 tekens lang.
Serial.begin (9600); dht.begin (); btle.begin ("CD Temp");
Lees de temperatuur over de lus en sla deze op een vlottervariabele temp . Voeg een foutopsporingsregel toe om een foutmelding weer te geven als DHT zijn kracht verliest of als er iets onverwachts gebeurt.
float temp = dht.readTemperature (); // lees temperatuurgegevens if (isnan (h) - isnan (t)) { Serial.println (F ("Lezen van DHT-sensor mislukt!")); terugkeren; }
Sla de waarde op in Buffer en parseer deze naar de BLE-module. Stuur ook de temperatuurwaarde naar de BLE-module. De BLE-module maakt de temperatuurgegevens bekend. De Android-app kan de BLE-module doorzoeken en de sensorgegevens ontvangen.
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 mislukt..!"); }
Als je klaar bent, spring je gewoon naar het volgende kanaal.
btle.hopChannel ();
Aangezien de documentatie van de DHT-sensor aanbeveelt om een vertraging van minimaal 2 seconden aan te houden na één meting, voegt u dus een vertraging van 2 seconden toe.
vertraging (2000);
Na het uploaden en koppelen van de smartphone met de nRF-module, begint u de waarden op nRF Temp 2.0 voor BLE Android-applicatie te krijgen, zoals hieronder weergegeven. De volledige procedure voor het koppelen en het ophalen van de gegevens op de Android-app wordt ook uitgelegd in de video:
Hiermee is de volledige tutorial voltooid over het adverteren van de sensorgegevens naar de Nordic Android-app met behulp van BLE nRF24L01. Als je problemen ondervindt, reageer dan hieronder of schrijf naar ons forum. Om meer over nRF24L02 te ontdekken, kunt u ook proberen om een privéchatroom te maken met Arduino, nRF24L01 en Processing.