- In che modo Bluetooth Low Energy (BLE) è diverso?
- Capacità BLE del modulo NRF24L01
- Componenti richiesti
- A partire dal modulo nRF24L01
- Arduino
- Interfacciamento nRF24L01 con Arduino per comunicazione BLE
Bluetooth Low Energy (BLE) è una versione di Bluetooth ed è presente come una versione più piccola e altamente ottimizzata del classico Bluetooth. È anche noto come Smart Bluetooth. Il BLE è stato progettato tenendo presente il consumo energetico più basso possibile specificamente per basso costo, bassa larghezza di banda, bassa potenza e bassa complessità. ESP32 ha funzionalità BLE integrate ma per altri microcontrollori come Arduino, è possibile utilizzare nRF24L01. Questo modulo RF può essere utilizzato anche come modulo BLE per inviare i dati ad altri dispositivi Bluetooth come smartphone, computer ecc.
Qui in questo tutorial mostreremo come inviare qualsiasi dato tramite BLE usando nRF24L01. Noi inviare letture di temperatura da DHT11 allo smartphone utilizzando il modulo Arduino e nRF sopra BLE.
In che modo Bluetooth Low Energy (BLE) è diverso?
Il BLE è stato adottato per le sue caratteristiche di consumo energetico in quanto era in grado di funzionare per un periodo di tempo prolungato utilizzando solo una cella a bottone. Rispetto ad altri standard wireless, la rapida crescita di BLE è andata ancora più veloce grazie alle sue fenomenali applicazioni su smartphone, tablet e mobile computing.
Capacità BLE del modulo NRF24L01
BLE utilizza la stessa banda ISM a 2,4 GHz con velocità di trasmissione da 250 Kbps a 2 Mbps consentita in molti paesi e può essere applicata ad applicazioni mediche e industriali. La banda parte da 2400 MHz a 2483,5 MHz ed è divisa in 40 canali. Tre di questi canali sono noti come "Pubblicità" e vengono utilizzati dai dispositivi per inviare pacchetti pubblicitari con informazioni su di essi in modo che altri dispositivi BLE possano connettersi. Questi canali sono stati inizialmente selezionati nella parte superiore inferiore della banda e al centro della banda per evitare interferenze che possono eventualmente interferire con un numero di canali. Per saperne di più su BLE, segui questo tutorial.
Questo tutorial spiegherà come utilizzare il modulo NRF24L01 come ricetrasmettitore BLE. Il tutorial su NRF24L01 come modulo RF è già stato spiegato nell'interfacciamento di nRF24L01 con il tutorial Arduino. Oggi la funzionalità BLE di questo modulo verrà spiegata inviando i dati del sensore a uno smartphone. Qui questo modulo nRF24L01 sarà interfacciato con il microcontrollore Arduino ei dati di temperatura del sensore DHT11 verranno inviati all'applicazione Android ufficiale Nordic BLE.
Componenti richiesti
Hardware:
- Arduino UNO
- Modulo nRF24L01 BLE
- Sensore di temperatura e umidità DHT11
- Ponticelli
Software:
- IDE Arduino
- Applicazione Android Nordic BLE (nRF Temp 2.0 per BLE o nRF Connect per dispositivi mobili)
A partire dal modulo nRF24L01
I moduli nRF24L01 sono moduli ricetrasmettitori, il che significa che ogni modulo può sia inviare che ricevere dati ma poiché sono half-duplex possono inviare o ricevere dati contemporaneamente. Il modulo ha l'IC generico nRF24L01 dei semiconduttori nordici che è responsabile della trasmissione e della ricezione dei dati. L'IC comunica utilizzando il protocollo SPI e quindi può essere facilmente interfacciato con qualsiasi microcontrollore. Diventa molto più semplice con Arduino poiché le librerie sono prontamente disponibili. Abbiamo già utilizzato il modulo nRF24L01 con Arduino per creare una chat room e per controllare i servomotori in modalità wireless.
Di seguito sono riportate le piedinature di un modulo standard nRF24L01:
Il modulo ha una tensione operativa da 1,9 V a 3,6 V (tipicamente 3,3 V) e consuma molta meno corrente di soli 12 mA durante il normale funzionamento, il che lo rende efficiente dalla batteria e quindi può funzionare anche con celle a bottone. Anche se la tensione operativa è di 3,3 V, la maggior parte dei pin tollerano i 5 V e quindi possono essere interfacciati direttamente con microcontrollori da 5 V come Arduino. Un altro vantaggio dell'utilizzo di questi moduli è che ogni modulo ha 6 pipeline. Ciò significa che ogni modulo può comunicare con altri 6 moduli per trasmettere o ricevere dati. Ciò rende il modulo adatto per la creazione di reti a stella o mesh nelle applicazioni IoT. Inoltre hanno una vasta gamma di indirizzi di 125 ID univoci, quindi in un'area chiusa possiamo utilizzare 125 di questi moduli senza interferire tra loro.
Arduino
Interfacciamento nRF24L01 con Arduino per comunicazione BLE
NRF24L01 funziona su SPI, quindi l'interfaccia utilizzerà il protocollo SPI. Il codice completo e il video verranno allegati alla fine di questo tutorial. La guida alle app Android è spiegata anche nel video. Qui il modulo nRF24L01 viene utilizzato per comunicare con l' app per smartphone di Nordic.Innanzitutto includi le librerie richieste. La libreria include RF24 per accedere ai comandi nRF24L01, libreria DHT11 per accedere ai comandi DHT11 e libreria BTLE per utilizzare le funzioni BLE.
#includere
Definire e inizializzare i pin e le funzioni per il modulo DHT11 e BLE. Il tipo DHT è inizializzato come DHT11 poiché stiamo usando DHT11. Il DHT è collegato al pin 4 GPIO e i pin CE e CSN del modulo nRF sono collegati rispettivamente al pin 9 e 10.
#define DHTPIN #define DHTTYPE DHT11 DHT22 DHT dht (DHTPIN, DHTTYPE); Radio RF24 (9, 10); BTLE btle (& radio);
Avvia la porta seriale su 9600, puoi scegliere qualsiasi porta. Quindi avvia il sensore DHT e inizia anche BTLE con il nome locale Bluetooth con un massimo di 8 caratteri.
Serial.begin (9600); dht.begin (); btle.begin ("CD Temp");
Leggere la temperatura nel ciclo e salvarla in una variabile flottante temp . Aggiungi una riga di debug per mostrare un messaggio di errore se DHT perde potenza o succede qualcosa di imprevisto.
float temp = dht.readTemperature (); // legge i dati di temperatura if (isnan (h) - isnan (t)) { Serial.println (F ("Impossibile leggere dal sensore DHT!")); ritorno; }
Salvare il valore in Buffer e analizzarlo nel modulo BLE. Inviare anche il valore della temperatura al modulo BLE. Il modulo BLE pubblicizzerà i dati di temperatura. L'app per Android può cercare nel modulo BLE e ricevere i dati del sensore.
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..!"); }
Al termine, passa al canale successivo.
btle.hopChannel ();
Poiché la documentazione del sensore DHT consiglia di mantenere un ritardo di almeno 2 secondi dopo una lettura, aggiungere un ritardo di 2 secondi.
ritardo (2000);
Dopo aver caricato e accoppiato lo smartphone con il modulo nRF, inizierai a ottenere i valori su nRF Temp 2.0 per l'applicazione Android BLE come mostrato di seguito. Nel video viene spiegata anche la procedura completa di associazione e acquisizione dei dati sull'app Android:
Questo termina il tutorial completo sulla pubblicità dei dati del sensore sull'app Android Nordic utilizzando BLE nRF24L01. Se trovi qualche difficoltà, commenta qui sotto o scrivi al nostro forum. Per esplorare di più su nRF24L02, puoi anche provare a creare una chat room privata utilizzando Arduino, nRF24L01 e Processing.