ESP32 ha supporto sia per Bluetooth Classic e Bluetooth a bassa energia. Qui ci concentreremo sulla bassa energia del Bluetooth. Vediamolo in dettaglio.
Cos'è Bluetooth a bassa energia
Ble o Bluetooth a bassa energia è una modalità di risparmio energetico di Bluetooth. La sua applicazione principale include il trasferimento di dati su brevi distanze come ingresso della porta, orologi intelligenti, dispositivi indossabili, monitoraggio della pressione sanguigna, sicurezza e automazione domestica. Ble può trasferire dati limitati.
A differenza del classico Bluetooth che rimane acceso per tutto il tempo, BLE rimane in modalità di sospensione tranne quando viene chiamato o viene avviata la connessione. Questo rende il BLE molto efficiente dal punto di vista energetico e consuma 100 volte meno potenza di quella classica.
Ecco un breve confronto di Bluetooth Classic con Bluetooth a bassa energia:
Specifiche | Bluetooth Classic | Bluetooth a bassa energia/ble |
Velocità di trasferimento dati | 2-3 Mbps | 1 Mbps |
Allineare | ~ 10-100m | ~ 50m |
Frequenza operativa | 79 rf | 40 rf |
Consumo di massima corrente | ~ 30Ma | <15mA |
Consumo di energia | 1W | 0.01-0.5W |
Tempo totale per inviare dati | 100 ms | 3ms |
Applicazioni | Audio, streaming musicale | Sensore, dispositivi indossabili |
Per un confronto più dettagliato fai clic qui per visitare il sito ufficiale di Bluetooth.
Server ble e client
Bluetooth Low Energy supporta il dispositivo in due modi diversi: server e client. ESP32 può fungere da server e client per Bluetooth a bassa energia.
Supporto ble seguendo le modalità di comunicazione:
Quando agisce come server, ESP32 pubblicizza la propria esistenza ai dispositivi client vicini. Una volta che i dispositivi client scansionano per i dispositivi Bluetooth disponibili, il server stabilisce una connessione tra loro e trasferisce i dati dal server a dispositivo client. Questa comunicazione è chiamata punto a punto.
In questo tutorial, faremo un esempio di comunicazione punto a punto tra due schede ESP32.
Termini importanti in ble
Ecco alcuni termini importanti che si dovrebbero sapere mentre si lavora con le applicazioni ESP32 BLE:
GATT: GATT o attributi generici che definiscono una struttura gerarchica per i trasferimenti di dati tra dispositivi BLE utilizzando il servizio e le caratteristiche. Definisce il modo in cui due dispositivi comunicano i dati tra di loro.
Servizio ble: Il livello superiore all'interno della gerarchia GATT è un profilo che contiene uno o più servizi. Ble contiene più di un singolo servizio. Ognuno di questi servizi ha le proprie caratteristiche che possono anche fungere da riferimento per altri servizi.
Caratteristica ble: La caratteristica è un gruppo di informazioni sempre di proprietà del servizio; È dove i dati effettivi sono archiviati in gerarchia (valore). Contiene sempre due attributi:
Uuid: Uuid (identificatore universalmente univoco) è un ID univoco dato a un servizio e caratteristica. È un ID univoco a 128 bit che può essere generato utilizzando qualsiasi generatore UUID online. Controlla questo generatore UUID gratuito. Un campione Uuid sembra questo:
583F8B30-74B4-4757-8143-56048FD88B25Un gruppo di interesse speciale Bluetooth universale (SIG) ha predefinito alcuni degli Uuidi abbreviati per diversi tipi di servizi e profilo per leggerli clicca qui.
Imposta BLE in ESP32 con Arduino IDE
Per comprendere il funzionamento di BLE utilizzeremo due diverse schede ESP32 una di esse agirà come server e pubblicizzare un segnale Bluetooth mentre l'altro ESP32 che agisce come a cliente Proverà a collegare il server Bluetooth.
Arduino IDE ha esempi separati sia per lo scanner che per il server.
Per vedere come installare un ESP32 con Arduino IDE in Windows Clicca qui.
ESP32 BLE Server
Innanzitutto, caricheremo il codice di esempio del server all'interno della nostra prima scheda ESP32 che funge da server.
Per aprire l'esempio del server ble vai a: File> Esempi> ESP32 BLE Arduino> ble_server:
Il codice indicato di seguito verrà aperto in Arduino IDE.
Codice del server
Carica il codice seguente nella scheda ESP32 utilizzando Arduino IDE. Ma assicurati di scollegare la seconda scheda per un po 'per evitare di caricare lo stesso codice in una singola scheda.
#includereIl codice inizia con l'inclusione dei file di libreria Bluetooth necessari. Quindi uuid è definito sia per il servizio che per le caratteristiche. Puoi andare con l'UUID predefinito o generare utilizzando il generatore UUID gratuito. La prossima comunicazione seriale viene inizializzata definendo il tasso di baud.
Successivamente, abbiamo creato un dispositivo BLE chiamato ESP32. Successivamente abbiamo definito il dispositivo BLE come un server utilizzando il createserver () funzione e successivamente impostiamo il valore caratteristico. Nel passaggio finale abbiamo avviato il servizio pubblicizzandolo in modo che altri dispositivi possano cercarlo.
ESP32 Ble Scanner
Ora caricheremo un esempio di scansione ESP32 nella seconda scheda ESP32. Per farlo vai a: File> Esempi> ESP32 ble Arduino> ble_scan
Il codice seguente sarà aperto in Arduino IDE Editor.
Codice scanner
#includereIl codice sopra cercherà il numero di dispositivi disponibili totali per BLE e visualizzerà il loro conteggio totale con gli indirizzi. Dopo aver caricato il codice nella scheda scanner ESP32 Premere il Abilitare pulsante, la scheda ESP32 cercherà automaticamente dispositivi disponibili.
Produzione
Una volta scansionati ESP32, verrà visualizzato i dispositivi disponibili, il seguente risultato verrà visualizzato. Qui ESP32 ha scansionato 9 dispositivi tra cui uno è una scheda ESP32 con codice ble_server e un altro dispositivo è MI BAND 6. Il resto di tutti i dispositivi sono disponibili vicino al mio ESP32.
Come correggere la libreria di scansione ESP32 ble non contando i dispositivi
L'esempio della libreria di scansione ESP32 ha un bug di non contare il numero totale di dispositivi. Per correggere questo problema, vai nella posizione menzionata e sostituisci il codice indicato di seguito.
C: \ Users \ Username \ AppData \ Local \ Arduino15 \ Packages \ ESP32 \ Hardware \ ESP32 \ 1.0.6 \ librerie \ ble \ src \ blescan.CPPRicordati di Unhide Tutte le cartelle perché la cartella AppData all'interno della directory C rimane nascosta per impostazione predefinita. Dopo aver aperto il file di origine ble_scan .CPP Sostituire la condizione indicata sotto all'interno del codice.
if (m_padverteddevicecallbacks)Test del server ESP32 BLE con smartphone
La maggior parte dei moderni smartphone lavora con la tecnologia BLE per comunicare con diversi dispositivi come smartwatch, dispositivi indossabili, sensori e altri dispositivi di automazione domestica. Qui la scheda ESP32 fungerà da punto di accesso. Quindi, collegheremo un telefono Android con una scheda ESP32.
Codice server BLE per l'accesso allo smartphone ESP32
Carica il codice indicato di seguito nella scheda ESP32.
#include /*libreria bluetooth inclusa* /Installazione dell'applicazione BLE in smartphone Android
I seguenti passaggi ti guideranno all'installazione di applicazioni BLE negli smartphone e ti aiuteranno a interfacciarsi i dispositivi mobili con le schede ESP32.
Passo 1: Apri l'installazione di Google Play Store Scanner ble applicazione.
Passo 2: Dopo l'installazione, aprire l'applicazione e consentire tutta l'autorizzazione richiesta e ricordare di attivare il Bluetooth mobile.
Passaggio 3: Ora scansiona i dispositivi Bluetooth disponibili. Connetti la scheda ESP32.
Passaggio 4: Una volta che la scheda ESP32 è collegata allo smartphone a seguito della specifica della scheda ESP32. Qui possiamo vedere gli indirizzi UUID e possiamo leggere e scrivere nuovi valori caratteristici.
Passaggio 5: Per leggere il valore caratteristico salvato clic R. Verrà visualizzato il risultato.
Passaggio 6: Per scrivere qualsiasi nuovo valore caratteristico fai clic W.
Passaggio 7: Un nuovo popup apparirà qui possiamo scrivere qualsiasi valore caratteristico e fare clic OK.
Passaggio 8: Apparirà un nuovo valore che è scritto.
Passaggio 9: Inoltre, possiamo vedere lo stesso nuovo valore caratteristico stampato sul monitor seriale di Arduino IDE.
Abbiamo collegato correttamente un dispositivo con ESP32 BLE.
Conclusione
ESP32 viene fornito con doppio bluetooth che è classico e bassa energia. Qui in questo articolo, abbiamo discusso di BLE e delle sue varie applicazioni e di lavoro. Successivamente abbiamo configurato BLE con due diverse schede ESP32 con una funzione come server e altre come scanner. Finalmente, abbiamo collegato il nostro smartphone con il server ESP32 e abbiamo scritto un nuovo valore caratteristico.