- Hur är Bluetooth Low Energy (BLE) annorlunda?
- BLE-kapacitet för NRF24L01-modulen
- Komponenter krävs
- Börjar med nRF24L01-modulen
- Arduino
- Gränssnitt nRF24L01 med Arduino för BLE-kommunikation
Bluetooth Low Energy (BLE) är en version av Bluetooth och finns som en mindre, mycket optimerad version av den klassiska Bluetooth. Det är också känt som Smart Bluetooth. BLE designades med tanke på lägsta möjliga strömförbrukning speciellt för låg kostnad, låg bandbredd, låg effekt och låg komplexitet. ESP32 har inbyggda BLE-funktioner men för andra mikrokontroller som Arduino kan nRF24L01 användas. Denna RF-modul kan också användas som BLE-modul för att skicka data till andra Bluetooth-enheter som smartphones, datorer etc.
Här i den här handledningen kommer vi att visa hur du skickar data över BLE med nRF24L01. Vi skickar temperaturavläsningar från DHT11 till smartphone med Arduino och nRF-modulen över BLE.
Hur är Bluetooth Low Energy (BLE) annorlunda?
BLE antogs på grund av dess energiförbrukningsfunktioner eftersom det kunde springa under en längre tid med bara en myntcell. Jämfört med andra trådlösa standarder har den snabba tillväxten av BLE gått längre snabbare på grund av dess fenomenala applikationer inom smartphones, surfplattor och mobil dator.
BLE-kapacitet för NRF24L01-modulen
BLE använder samma 2,4 GHz ISM-band med överföringshastighet från 250 Kbit / s till 2 Mbps som är tillåten i många länder och kan tillämpas på industriella och medicinska applikationer. Bandet börjar vid 2400 MHz till 2483,5 MHz och det är uppdelat i 40 kanaler. Tre av dessa kanaler är kända som "Advertising" och används av enheter för att skicka reklampaket med information om dem så att andra BLE-enheter kan ansluta. Dessa kanaler valdes ursprungligen vid den nedre övre delen av bandet och mitten av bandet för att undvika störningar som eventuellt kan störa ett antal kanaler. För att lära dig mer om BLE, följ den här handledningen.
Denna handledning kommer att förklara hur man använder NRF24L01-modulen som BLE-sändtagare. Självstudien om NRF24L01 som RF-modul har redan förklarats i gränssnittet mellan nRF24L01 och Arduino-handledning. Idag kommer BLE-funktionen i denna modul att förklaras genom att skicka sensordata till en smartphone. Här kommer denna nRF24L01-modul att anslutas till Arduino Microcontroller och DHT11-sensortemperaturdata kommer att skickas till den officiella Nordic BLE android-applikationen.
Komponenter krävs
Hårdvara:
- Arduino UNO
- nRF24L01 BLE-modul
- DHT11 temperatur- och luftfuktighetssensor
- Tröjor
Programvara:
- Arduino IDE
- Nordic BLE Android-applikation (nRF Temp 2.0 för BLE eller nRF Connect för mobil)
Börjar med nRF24L01-modulen
NRF24L01-modulerna är sändarmoduler, vilket innebär att varje modul både kan skicka och ta emot data men eftersom de är halv-duplex kan de antingen skicka eller ta emot data åt gången. Modulen har den generiska nRF24L01 IC från nordiska halvledare som ansvarar för överföring och mottagning av data. IC kommunicerar med hjälp av SPI-protokollet och kan därför enkelt gränssnitt med alla mikrokontroller. Det blir mycket lättare med Arduino eftersom biblioteken är tillgängliga. Vi använde redan nRF24L01-modulen med Arduino för att skapa ett chattrum och för att styra servomotorer trådlöst.
Pinouts för en standard nRF24L01-modul visas nedan:
Modulen har driftspänning från 1,9V till 3,6V (vanligtvis 3,3V) och förbrukar mycket mindre ström på endast 12mA under normal drift vilket gör det batterieffektivt och kan till och med köras på myntceller. Även om driftspänningen är 3,3 V är de flesta stiften 5 V-toleranta och kan därmed direkt anslutas till 5 V-mikrokontroller som Arduino. En annan fördel med att använda dessa moduler är att varje modul har 6 rörledningar. Det betyder att varje modul kan kommunicera med 6 andra moduler för att sända eller ta emot data. Detta gör modulen lämplig för att skapa stjärn- eller nätverksnätverk i IoT-applikationer. De har också ett brett adressområde på 125 unika ID: er, och därför kan vi i ett stängt område använda 125 av dessa moduler utan att störa varandra.
Arduino
Gränssnitt nRF24L01 med Arduino för BLE-kommunikation
NRF24L01 fungerar på SPI, så gränssnittet använder SPI-protokollet. Den kompletta koden och videon bifogas i slutet av denna handledning. Android-appguide förklaras också i videon. Här används nRF24L01-modulen för att kommunicera med Nordens Smartphone-app.Inkludera först de obligatoriska biblioteken. Biblioteket inkluderar RF24 för åtkomst till nRF24L01-kommandon, DHT11-bibliotek för åtkomst till DHT11-kommandon och BTLE-bibliotek för att använda BLE-funktioner.
#omfatta
Definiera och initialisera stiften och funktionerna för DHT11- och BLE-modulen. DHT-typen initialiseras som DHT11 eftersom vi använder DHT11. DHT är ansluten till GPIO-stift 4 och nRF-modulens CE- och CSN-stift är anslutna till stift 9 respektive 10.
#define DHTPIN #define DHTTYPE DHT11 DHT22 DHT dht (DHTPIN, DHTTYPE); RF24-radio (9, 10); BTLE btle (& radio);
Starta serieporten vid 9600, du kan välja vilken port som helst. Sedan börjar DHT sensorn och också börja BTLE med Bluetooth Local namn med max 8 tecken långt.
Serial.begin (9600); dht.begin (); btle.begin ("CD Temp");
Läs temperaturen över slingan och spara den till en variabel temp . Lägg till en felsökningsrad för att visa ett felmeddelande om DHT förlorar sin kraft eller om något oväntat händer.
float temp = dht.readTemperature (); // läs temperaturdata om (isnan (h) - isnan (t)) { Serial.println (F ("Det gick inte att läsa från DHT-sensorn!"); lämna tillbaka; }
Spara värdet till buffert och analysera det till BLE-modulen. Skicka också temperaturvärdet till BLE-modulen. BLE-modulen kommer att marknadsföra temperaturdata. Android-appen kan söka i BLE-modulen och ta emot sensordata.
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 failed..!"); }
När du är klar, hoppa bara till nästa kanal.
btle.hopChannel ();
Eftersom DHT-sensordokumentationen rekommenderar att du håller en fördröjning på minst 2 sekunder efter en avläsning, så lägg till en fördröjning på 2 sekunder.
fördröjning (2000);
Efter att ha laddat upp och parat ihop smarttelefonen med nRF-modulen kommer du att börja få värdena på nRF Temp 2.0 för BLE android-applikation som visas nedan. Komplett procedur för att para ihop och få data på Android-appen förklaras också i videon:
Detta avslutar den fullständiga handledningen om att annonsera sensordata till Nordic Android App med BLE nRF24L01. Om du hittar några problem kan du kommentera nedan eller skriva till vårt forum. För att utforska mer om nRF24L02 kan du också försöka skapa ett privat chattrum med Arduino, nRF24L01 och Processing.