- Hvordan er Bluetooth Low Energy (BLE) annerledes?
- BLE Evne til NRF24L01-modulen
- Komponenter kreves
- Starter med nRF24L01-modulen
- Arduino
- Grensesnitt nRF24L01 med Arduino for BLE-kommunikasjon
Bluetooth Low Energy (BLE) er en versjon av Bluetooth, og den er tilstede som en mindre, svært optimalisert versjon av den klassiske Bluetooth. Det er også kjent som Smart Bluetooth. BLE ble designet med tanke på lavest mulig strømforbruk spesielt for lav pris, lav båndbredde, lav effekt og lav kompleksitet. ESP32 har innebygd BLE-funksjoner, men for andre mikrokontrollere som Arduino kan nRF24L01 brukes. Denne RF-modulen kan også brukes som BLE-modul for å sende dataene til andre Bluetooth-enheter som smarttelefoner, datamaskiner etc.
Her i denne veiledningen vil vi demonstrere hvordan du sender data over BLE ved hjelp av nRF24L01. Vi sender temperaturavlesninger fra DHT11 til smarttelefon ved hjelp av Arduino og nRF-modul over BLE.
Hvordan er Bluetooth Low Energy (BLE) annerledes?
BLE ble tatt i bruk på grunn av funksjonene til strømforbruk, da den var i stand til å kjøre i lengre tid med bare en myntcelle. Sammenlignet med andre trådløse standarder har den raske veksten av BLE gått lenger raskere på grunn av dets fenomenale applikasjoner i smarttelefoner, nettbrett og mobil databehandling.
BLE Evne til NRF24L01-modulen
BLE bruker det samme 2,4 GHz ISM-båndet med baudrate fra 250 Kbps til 2 Mbps som er tillatt i mange land og kan brukes på industrielle og medisinske applikasjoner. Bandet starter ved 2400 MHz til 2483,5 MHz, og det er delt inn i 40 kanaler. Tre av disse kanalene er kjent som 'Advertising' og brukes av enheter til å sende reklamepakker med informasjon om dem slik at andre BLE-enheter kan koble til. Disse kanalene ble opprinnelig valgt nederst på båndet og i midten av båndet for å unngå forstyrrelser som muligens kan forstyrre et antall kanaler. For å lære mer om BLE, følg denne opplæringen.
Denne opplæringen vil forklare hvordan du bruker NRF24L01-modulen som BLE-mottaker. Opplæringen om NRF24L01 som RF-modul har allerede blitt forklart i grensesnittet mellom nRF24L01 og Arduino tutorial. I dag vil BLE-funksjonaliteten til denne modulen bli forklart ved å sende sensordata til en smarttelefon. Her vil denne nRF24L01-modulen være grensesnittet med Arduino Microcontroller, og temperaturdataene fra DHT11-sensoren vil bli sendt til den offisielle Nordic BLE android-applikasjonen.
Komponenter kreves
Maskinvare:
- Arduino UNO
- nRF24L01 BLE-modul
- DHT11 temperatur- og fuktighetssensor
- Gensere
Programvare:
- Arduino IDE
- Nordic BLE Android-applikasjon (nRF Temp 2.0 for BLE eller nRF Connect for Mobile)
Starter med nRF24L01-modulen
NRF24L01-modulene er mottakermoduler, noe som betyr at hver modul både kan sende og motta data, men siden de er halvt dupleks, kan de enten sende eller motta data om gangen. Modulen har den generiske nRF24L01 IC fra nordiske halvledere som er ansvarlig for overføring og mottak av data. IC-en kommuniserer ved hjelp av SPI-protokollen og kan derfor enkelt grensesnittes med alle mikrokontrollere. Det blir mye lettere med Arduino siden bibliotekene er lett tilgjengelige. Vi brukte allerede nRF24L01-modulen med Arduino for å lage et chatterom og for å kontrollere servomotorer trådløst.
Pinoutene til en standard nRF24L01-modul er vist nedenfor:
Modulen har driftsspenning fra 1,9V til 3,6V (vanligvis 3,3V) og bruker veldig mindre strøm på bare 12mA under normal drift, noe som gjør det batteribesparende og kan til og med kjøre på myntceller. Selv om driftsspenningen er 3,3 V, er de fleste pinnene 5 V tolerante og kan derfor grensesnittes direkte med 5 V mikrokontrollere som Arduino. En annen fordel med å bruke disse modulene er at hver modul har 6 rørledninger. Betydning, hver modul kan kommunisere med 6 andre moduler for å overføre eller motta data. Dette gjør modulen egnet for å lage stjerne- eller mesh-nettverk i IoT-applikasjoner. De har også et bredt adresseområde på 125 unike ID-er, og i et lukket område kan vi bruke 125 av disse modulene uten å forstyrre hverandre.
Arduino
Grensesnitt nRF24L01 med Arduino for BLE-kommunikasjon
NRF24L01 fungerer på SPI, så grensesnittet bruker SPI-protokoll. Den komplette koden og videoen blir lagt ved på slutten av denne veiledningen. Android-appguide er også forklart i videoen. Her brukes nRF24L01-modulen til å kommunisere med Smartphone App of Nordic.Først må du inkludere de nødvendige bibliotekene. Biblioteket inkluderer RF24 for å få tilgang til nRF24L01-kommandoer, DHT11-bibliotek for tilgang til DHT11-kommandoer og BTLE-bibliotek for å bruke BLE-funksjoner.
#inkludere
Definer og initialiser pinnene og funksjonene for DHT11 og BLE-modulen. DHT-typen initialiseres som DHT11 siden vi bruker DHT11. DHT er koblet til GPIO Pin 4 og nRF-modulens CE- og CSN-pinner er koblet til henholdsvis Pin 9 og 10.
#define DHTPIN #define DHTTYPE DHT11 DHT22 DHT dht (DHTPIN, DHTTYPE); RF24 radio (9, 10); BTLE btle (& radio);
Start serieporten på 9600, du kan velge hvilken som helst port. Deretter begynner DHT sensor og også begynne BTLE med Bluetooth, lokalt navn med maks 8 tegn.
Serial.begin (9600); dht.begin (); btle.begin ("CD Temp");
Les temperaturen over sløyfen og lagre den i en flytende variabel temp . Legg til en feilsøkingslinje for å vise en feilmelding hvis DHT mister kraften eller noe uventet skjer.
float temp = dht.readTemperature (); // les temperaturdata hvis (isnan (h) - isnan (t)) { Serial.println (F ("Kunne ikke lese fra DHT-sensor!"); komme tilbake; }
Lagre verdien til buffer og analyser den til BLE-modulen. Send også temperaturverdien til BLE-modulen. BLE-modulen vil annonsere temperaturdataene. Android-appen kan søke i BLE-modulen og motta 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 ferdig, er det bare å hoppe til neste kanal.
btle.hopChannel ();
Siden DHT-sensordokumentasjonen anbefaler å holde en forsinkelse på minst 2 sekunder etter en avlesning, så legg til en forsinkelse på 2 sekunder.
forsinkelse (2000);
Etter å ha lastet opp og paret smarttelefonen med nRF-modulen, vil du begynne å få verdiene på nRF Temp 2.0 for BLE android-applikasjon som vist nedenfor. Komplett prosedyre for paring og henting av data på Android-appen er også forklart i videoen:
Dette fullfører den komplette opplæringen om reklame for sensordataene til Nordic Android App ved bruk av BLE nRF24L01. Hvis du finner problemer, kan du kommentere nedenfor eller skrive til forumet vårt. For å utforske mer om nRF24L02, kan du også prøve å opprette et privat chatterom ved hjelp av Arduino, nRF24L01 og Processing.