- Cât de diferit este Bluetooth Low Energy (BLE)?
- Capacitatea BLE a modulului NRF24L01
- Componente necesare
- Începând cu modulul nRF24L01
- Arduino
- Interfațarea nRF24L01 cu Arduino pentru comunicarea BLE
Bluetooth Low Energy (BLE) este o versiune a Bluetooth și este prezentă ca o versiune mai mică, foarte optimizată, a Bluetooth-ului clasic. Este, de asemenea, cunoscut sub numele de Smart Bluetooth. BLE a fost proiectat ținând cont de cel mai mic consum de energie posibil, special pentru costuri reduse, lățime de bandă redusă, putere redusă și complexitate redusă. ESP32 are capabilități BLE încorporate, dar pentru alte microcontrolere precum Arduino, poate fi utilizat nRF24L01. Acest modul RF poate fi folosit și ca modul BLE pentru a trimite datele către alte dispozitive Bluetooth, cum ar fi smartphone-uri, computer etc.
Aici, în acest tutorial, vom arăta cum să trimiteți orice date prin BLE folosind nRF24L01. Vom trimite citiri de temperatură de pe DHT11 către smartphone folosind modulul Arduino și nRF prin BLE.
Cât de diferit este Bluetooth Low Energy (BLE)?
BLE a fost adoptat datorită caracteristicilor sale de consum de energie, deoarece a fost capabil să ruleze pentru o perioadă extinsă de timp folosind doar o celulă monedă. În comparație cu alte standarde wireless, creșterea rapidă a BLE a mers mai repede din cauza aplicațiilor sale fenomenale în smartphone-uri, tablete și computere mobile.
Capacitatea BLE a modulului NRF24L01
BLE utilizează aceeași bandă ISM de 2,4 GHz cu o rată de transmisie de la 250Kbps la 2Mbps care este permisă în multe țări și poate fi aplicată aplicațiilor industriale și medicale. Banda începe de la 2400 MHz la 2483,5 MHz și este împărțită în 40 de canale. Trei dintre aceste canale sunt cunoscute sub numele de „Publicitate” și sunt utilizate de dispozitive pentru a trimite pachete publicitare cu informații despre acestea, astfel încât alte dispozitive BLE să se poată conecta. Aceste canale au fost selectate inițial în partea inferioară superioară a benzii și mijlocul benzii pentru a evita interferențele care pot interfera cu un număr de canale. Pentru a afla mai multe despre BLE, urmați acest tutorial.
Acest tutorial va explica modul de utilizare a modulului NRF24L01 ca transceiver BLE. Tutorialul despre NRF24L01 ca modul RF a fost deja explicat în interfața nRF24L01 cu tutorialul Arduino. Astăzi funcționalitatea BLE a acestui modul va fi explicată prin trimiterea datelor senzorilor către un telefon inteligent. Aici acest modul nRF24L01 va fi interfațat cu microcontrolerul Arduino, iar datele de temperatură ale senzorului DHT11 vor fi trimise aplicației oficiale Nordic BLE pentru Android.
Componente necesare
Hardware:
- Arduino UNO
- Modulul nRF24L01 BLE
- Senzor de temperatură și umiditate DHT11
- Jumpers
Software:
- IDE Arduino
- Aplicație Android Nordic BLE (nRF Temp 2.0 pentru BLE sau nRF Connect pentru mobil)
Începând cu modulul nRF24L01
Modulele nRF24L01 sunt module de emisie-recepție, ceea ce înseamnă că fiecare modul poate trimite și primi date, dar din moment ce sunt semi-duplex, ele pot trimite sau primi date la un moment dat. Modulul are IC generic nRF24L01 de la semiconductori nordici, care este responsabil pentru transmiterea și recepția datelor. IC comunică utilizând protocolul SPI și, prin urmare, poate fi ușor interfațat cu orice microcontrolere. Devine mult mai ușor cu Arduino, deoarece bibliotecile sunt ușor disponibile. Am folosit deja modulul nRF24L01 cu Arduino pentru a crea o cameră de chat și pentru a controla servo-motoarele fără fir.
Pinouturile unui modul standard nRF24L01 sunt prezentate mai jos:
Modulul are o tensiune de funcționare de la 1,9 V la 3,6 V (de obicei 3,3 V) și consumă foarte puțin curent de doar 12 mA în timpul funcționării normale, ceea ce îl face eficient din punct de vedere al bateriei și, prin urmare, poate funcționa chiar și pe celulele monede. Chiar dacă tensiunea de funcționare este de 3,3V, majoritatea pinilor sunt toleranți la 5V și, prin urmare, pot fi interfațați direct cu microcontrolere de 5V, cum ar fi Arduino. Un alt avantaj al utilizării acestor module este că fiecare modul are 6 conducte. Adică, fiecare modul poate comunica cu alte 6 module pentru a transmite sau primi date. Acest lucru face ca modulul să fie potrivit pentru crearea de rețele stele sau mesh în aplicații IoT. De asemenea, au o gamă largă de adrese de 125 de ID-uri unice, prin urmare, într-o zonă închisă putem folosi 125 dintre aceste module fără a interfera unul cu celălalt.
Arduino
Interfațarea nRF24L01 cu Arduino pentru comunicarea BLE
NRF24L01 funcționează pe SPI, astfel încât interfața va utiliza protocolul SPI. Codul complet și video va fi atașat la sfârșitul acestui tutorial. Ghidul aplicației Android este, de asemenea, explicat în videoclip. Aici modulul nRF24L01 este utilizat pentru a comunica cu aplicația Smartphone din Nordic.În primul rând includeți bibliotecile necesare. Biblioteca include RF24 pentru a accesa comenzile nRF24L01, biblioteca DHT11 pentru accesarea comenzilor DHT11 și biblioteca BTLE pentru a utiliza funcțiile BLE.
#include
Definiți și inițializați pinii și funcțiile pentru modulele DHT11 și BLE. Tipul DHT este inițializat ca DHT11, deoarece utilizăm DHT11. DHT este conectat la pinul GPIO 4 și pinii CE și CSN ai modulului nRF sunt conectați la pinul 9 și respectiv 10.
#define DHTPIN #define DHTTYPE DHT11 DHT22 DHT dht (DHTPIN, DHTTYPE); Radio RF24 (9, 10); BTLE btle (& radio);
Porniți portul serial la 9600, puteți alege orice port. Apoi începeți senzorul DHT și începeți și BTLE cu numele local Bluetooth cu maximum 8 caractere.
Serial.begin (9600); dht.begin (); btle.begin („CD Temp”);
Citiți temperatura peste buclă și salvați-o într-o temperatură variabilă plutitoare. Adăugați o linie de depanare pentru afișarea unui mesaj de eroare dacă DHT își pierde puterea sau dacă se întâmplă ceva neașteptat.
float temp = dht.readTemperature (); // citiți datele de temperatură if (isnan (h) - isnan (t)) { Serial.println (F ("Nu s-a citit de la senzorul DHT!")); întoarcere; }
Salvați valoarea în Buffer și analizați-o în modulul BLE. De asemenea, trimiteți valoarea temperaturii la modulul BLE. Modulul BLE va promova datele de temperatură. Aplicația pentru Android poate căuta modulul BLE și poate primi datele senzorului.
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 a eșuat..!"); }
Când ați terminat, treceți la următorul canal.
btle.hopChannel ();
Deoarece documentația senzorului DHT recomandă păstrarea unei întârzieri de minimum 2 secunde după o citire, așa că adăugați o întârziere de 2 secunde.
întârziere (2000);
După încărcarea și asocierea smartphone-ului cu modulul nRF, veți începe să obțineți valorile nRF Temp 2.0 pentru aplicația Android BLE, așa cum se arată mai jos. Procedura completă de asociere și obținere a datelor din aplicația Android este, de asemenea, explicată în videoclip:
Astfel se finalizează tutorialul complet privind publicitatea datelor senzorilor în aplicația Nordic Android utilizând BLE nRF24L01. Dacă întâmpinați dificultăți, comentați mai jos sau scrieți-ne pe forumul nostru. Pentru a explora mai multe despre nRF24L02, puteți încerca, de asemenea, să creați o cameră de chat privată folosind Arduino, nRF24L01 și Processing.