- Hvordan er Bluetooth Low Energy (BLE) forskellig?
- BLE-kapacitet til NRF24L01-modul
- Komponenter, der kræves
- Startende med nRF24L01-modulet
- Arduino
- Interfacing nRF24L01 med Arduino til BLE-kommunikation
Bluetooth Low Energy (BLE) er en version af Bluetooth, og den findes som en mindre, meget optimeret version af den klassiske Bluetooth. Det er også kendt som Smart Bluetooth. BLE blev designet under hensyntagen til det lavest mulige strømforbrug specielt til lave omkostninger, lav båndbredde, lav strøm og lav kompleksitet. ESP32 har indbyggede BLE-funktioner, men til andre mikrokontrollere som Arduino kan nRF24L01 bruges. Dette RF-modul kan også bruges som BLE-modul til at sende data til anden Bluetooth-enhed som smartphones, computere osv.
Her i denne vejledning vil vi demonstrere, hvordan du sender data over BLE ved hjælp af nRF24L01. Vi sender temperaturaflæsninger fra DHT11 til smartphone ved hjælp af Arduino og nRF-modul over BLE.
Hvordan er Bluetooth Low Energy (BLE) forskellig?
BLE blev vedtaget på grund af dets strømforbrugsfunktioner, da den var i stand til at køre i længere tid ved hjælp af kun en møntcelle. Sammenlignet med andre trådløse standarder er den hurtige vækst i BLE gået hurtigere på grund af dens fænomenale applikationer i smartphones, tablets og mobil computing.
BLE-kapacitet til NRF24L01-modul
BLE bruger det samme 2,4 GHz ISM-bånd med baudrate fra 250 Kbps til 2 Mbps, hvilket er tilladt i mange lande og kan anvendes til industrielle og medicinske applikationer. Båndet starter ved 2400 MHz til 2483,5 MHz, og det er opdelt i 40 kanaler. Tre af disse kanaler er kendt som 'Annoncering' og bruges af enheder til at sende reklamepakker med information om dem, så andre BLE-enheder kan oprette forbindelse. Disse kanaler blev oprindeligt valgt ved den nederste øvre del af båndet og midten af båndet for at undgå interferens, som muligvis kan interferere med et antal kanaler. For at lære mere om BLE skal du følge denne vejledning.
Denne tutorial forklarer, hvordan man bruger NRF24L01-modulet som BLE-modtager. Selvstudiet om NRF24L01 som RF-modul er allerede blevet forklaret i grænsefladen mellem nRF24L01 og Arduino-tutorial. I dag forklares BLE-funktionaliteten i dette modul ved at sende sensordata til en smartphone. Her vil dette nRF24L01-modul være grænseflade med Arduino Microcontroller, og DHT11-sensortemperaturdataene vil blive sendt til den officielle nordiske BLE android-applikation.
Komponenter, der kræves
Hardware:
- Arduino UNO
- nRF24L01 BLE-modul
- DHT11 temperatur- og fugtighedssensor
- Jumpere
Software:
- Arduino IDE
- Nordic BLE Android-applikation (nRF Temp 2.0 til BLE eller nRF Connect til mobil)
Startende med nRF24L01-modulet
NRF24L01-modulerne er transceivermoduler, hvilket betyder, at hvert modul både kan sende og modtage data, men da de er halvduplex, kan de enten sende eller modtage data ad gangen. Modulet har den generiske nRF24L01 IC fra nordiske halvledere, som er ansvarlig for transmission og modtagelse af data. IC'en kommunikerer ved hjælp af SPI-protokollen og kan derfor let interfaces med alle mikrocontrollere. Det bliver meget lettere med Arduino, da bibliotekerne er let tilgængelige. Vi har allerede brugt nRF24L01-modulet med Arduino til at oprette et chatrum og til at styre servomotorer trådløst.
Pinouts på et standard nRF24L01-modul er vist nedenfor:
Modulet har en driftsspænding fra 1,9V til 3,6V (typisk 3,3V) og bruger meget mindre strøm på kun 12mA under normal drift, hvilket gør det batterieffektivt og kan derfor endda køre på møntceller. Selvom driftsspændingen er 3,3 V, er de fleste stifter 5 V tolerante og kan derfor direkte interfaces med 5 V mikrokontroller som Arduino. En anden fordel ved at bruge disse moduler er, at hvert modul har 6 rørledninger. Det betyder, at hvert modul kan kommunikere med 6 andre moduler for at transmittere eller modtage data. Dette gør modulet velegnet til oprettelse af stjerne- eller mesh-netværk i IoT-applikationer. De har også et bredt adresseområde på 125 unikke ID'er, og derfor kan vi i et lukket område bruge 125 af disse moduler uden at forstyrre hinanden.
Arduino
Interfacing nRF24L01 med Arduino til BLE-kommunikation
NRF24L01 fungerer på SPI, så grænsefladen bruger SPI-protokol. Den komplette kode og video vil blive vedhæftet i slutningen af denne vejledning. Android-appguide forklares også i videoen. Her bruges nRF24L01-modulet til at kommunikere med Smartphone App fra Nordic.Inkluder først de påkrævede biblioteker. Biblioteket inkluderer RF24 for at få adgang til nRF24L01-kommandoer, DHT11-bibliotek for adgang til DHT11-kommandoer og BTLE-bibliotek for at bruge BLE-funktioner.
#omfatte
Definer og initialiser stifter og funktioner til DHT11 og BLE-modulet. DHT-typen initialiseres som DHT11, da vi bruger DHT11. DHT er tilsluttet GPIO Pin 4, og nRF-modulets CE- og CSN-pins er tilsluttet henholdsvis Pin 9 og 10.
#definer DHTPIN #definer DHTTYPE DHT11 DHT22 DHT dht (DHTPIN, DHTTYPE); RF24 radio (9, 10); BTLE btle (& radio);
Start den serielle port ved 9600, du kan vælge en hvilken som helst port. Så begynder DHT sensor og også begynde BTLE med Bluetooth Local navn med max 8 tegn.
Serial.begin (9600); dht.begin (); btle.begin ("CD Temp");
Læs temperaturen over sløjfen, og gem den i en variabel temp . Tilføj en fejlretningslinje for at vise en fejlmeddelelse, hvis DHT mister sin strøm, eller der sker noget uventet.
float temp = dht.readTemperature (); // læs temperaturdata, hvis (isnan (h) - isnan (t)) { Serial.println (F ("Kunne ikke læse fra DHT-sensor!"); Vend tilbage; }
Gem værdien i Buffer, og analyser den i BLE-modulet. Send også temperaturværdien til BLE-modulet. BLE-modulet vil annoncere temperaturdataene. Android-appen kan søge i BLE-modulet og modtage sensordataene.
nrf_service_data buf; buf.service_uuid = NRF_TEMPERATURE_SERVICE_UUID; buf.value = BTLE:: to_nRF_Float (temp); hvis (! btle.advertise (0x16, & buf, sizeof (buf))) { Serial.println ("BTLE failed..!"); }
Når du er færdig, skal du bare hoppe til den næste kanal.
btle.hopChannel ();
Da DHT-sensordokumentationen anbefaler at holde en forsinkelse på mindst 2 sekunder efter en aflæsning, skal du tilføje en forsinkelse på 2 sekunder.
forsinkelse (2000);
Efter at have uploadet og parret smartphonen med nRF-modulet, begynder du at få værdierne på nRF Temp 2.0 til BLE android-applikation som vist nedenfor. Komplet procedure for parring og hentning af data på Android-appen forklares også i videoen:
Dette afslutter den komplette tutorial om annoncering af sensordata til Nordic Android App ved hjælp af BLE nRF24L01. Hvis du finder nogen problemer, så kommenter nedenfor eller skriv til vores forum. For at udforske mere om nRF24L02 kan du også prøve at oprette et privat chatrum ved hjælp af Arduino, nRF24L01 og Processing.