- Iniziare con ESP32 Bluetooth
- Comprensione di Bluetooth Low Energy (BLE) e ESP32 Classic Bluetooth
- Preparazione dell'IDE di Arduino per ESP32
- Programma Bluetooth seriale per ESP32
- Test del Bluetooth seriale con ESP32
I moduli Bluetooth come HC-05 e HC-06 sono facili da configurare e veloci da usare con Arduino IDE, ma hanno le loro limitazioni come l'elevato consumo energetico e funzionano con il vecchio Bluetooth V2.0. Inoltre, di recente mi sono procurato un nuovo kit ESP32 DEV, questi moduli hanno un pugno di funzionalità come Wi-Fi e Bluetooth integrati, ampi pin ADC e DAC, supporto audio, supporto per scheda SD, modalità Deep Sleep ecc. tutto per costruire progetti IoT.
E proprio come qualsiasi hobbista lo amerebbe, ESP32 è ora ufficialmente supportato dall'IDE di Arduino. In precedenza abbiamo dovuto fare un'enorme soluzione alternativa con la Neil Kolbans Library, ma ora grazie al duro lavoro di questo ragazzo programmare ESP32 con Arduino IDE è diventata una passeggiata. Quindi, ho lanciato il mio IDE Arduino e ho esaminato alcuni programmi BLE di esempio, attraverso i quali non ho capito nulla. Dopo tanto tempo di navigazione e di youtubing mi sono reso conto che ci sono molte più cose da capire se devi lavorare con Bluetooth Low Energy (BLE) usando ESP32. Ho deciso di coprire il BLE in articoli separati, quindi qui useremo il Bluetooth seriale classico di ESP32 per attivare un LED utilizzando Smart Phone. Se sei interessato a scoprire come utilizzare le funzionalità BLE, consulta questo articolo su ESP32 BLE Server e ESP32 BLE Client
Iniziare con ESP32 Bluetooth
Il primo programma che volevo provare era un semplice programma con il quale posso accendere o spegnere un LED da un'applicazione Bluetooth Terminal del telefono cellulare, proprio come i bei vecchi tempi dell'HC-05. Ma si scopre che Bluetooth Low Energy (BLE) non è rientrato per questo. Ho anche scoperto che ci sono due tipi di Bluetooth nel modulo ESP32, uno è il Bluetooth classico e l'altro è BLE Bluetooth Low Energy. Va bene, ma perché?…. perché abbiamo due tipi di Bluetooth e cosa dovrei usare per il mio progetto?
Comprensione di Bluetooth Low Energy (BLE) e ESP32 Classic Bluetooth
Il Bluetooth Low Energy, come indica il nome, consuma meno energia rispetto al Bluetooth classico. Si ottiene inviando i dati secondo necessità con aggiornamenti periodici predefiniti. Ma a differenza del Bluetooth classico, non viene utilizzato per trasferire file o musica. Ti sei mai chiesto in che modo il tuo telefono identifica automaticamente che il dispositivo Bluetooth che hai appena accoppiato è un dispositivo audio, un laptop o un telefono, potresti anche aver visto che il livello della batteria nel lettore audio wireless o nella fascia fitness viene automaticamente mostrato nella barra di stato di il tuo cellulare; tutto questo è possibile con le caratteristiche dei dispositivi BLE. Un dispositivo BLE funziona con Bluetooth V4.0 e può funzionare a bassa potenza come server o come clientBLE una scelta ideale per beacon, smartwatch, cinturini per il fitness ecc.
Il Bluetooth classico d' altra parte è solo il semplice vecchio Bluetooth che usiamo per trasferire file e altri dati. Quasi tutti i dispositivi BLE sono associati alla funzionalità Bluetooth classica. Il Bluetooth utilizzato in moduli come HC-05 è una versione del classico Bluetooth chiamato Bluetooth SSP (Serial Port Protocol), il che significa che il Bluetooth segue il protocollo seriale standard che semplifica l'invio e la ricezione di dati senza molto sovraccarico. Alla fine di questo tutorial impareremo come utilizzare la funzionalità Bluetooth seriale in ESP32.
Qui in questo articolo useremo la funzione Bluetooth seriale su ESP32 per accoppiarlo con uno smartphone e utilizzare qualsiasi app Bluetooth Terminal esistente dal Play Store per inviare comandi all'ESP32 e attivare di conseguenza il LED di bordo.
Negli articoli successivi tratteremo ESP32 BLE sia come server che come client. Il server BLE viene generalmente utilizzato per inviare dati BLE ad altri dispositivi Bluetooth e il client BLE viene utilizzato per eseguire la scansione di altri dispositivi BLE, quindi funge da beacon.
Preparazione dell'IDE di Arduino per ESP32
Nota che l'IDE di Arduino per impostazione predefinita non supporta la scheda ESP32; devi scaricarli e installarli utilizzando il board manager. Se questo è il tuo primo programma con ESP32, segui questo tutorial introduttivo per aggiungere la scheda ESP32 al tuo Arduino e caricare uno schizzo di prova.
Inoltre, puoi fare più progetti con ESP32, senza utilizzare alcun microcontrollore con esso.
Programma Bluetooth seriale per ESP32
Il programma completo per attivare o disattivare un LED utilizzando ESP32 Bluetooth è fornito alla fine di questa pagina. Sotto questa intestazione, suddividiamo il codice in piccoli frammenti e proviamo a capirli. Se hai già utilizzato altri moduli Bluetooth come HC-05, troverai questo programma di esempio Bluetooth Classic ESP32 molto simile.
L'idea del programma è di inizializzare una connessione Bluetooth seriale utilizzando ESP32 e ascoltare i dati dai dispositivi accoppiati. Se i dati in entrata sono "1", accendiamo il LED e se è "0" dobbiamo spegnere il LED. Iniziamo il nostro programma aggiungendo il file di intestazione BluetoothSerial che fa funzionare ESP32 Bluetooth come Bluetoth SSP.
#include "BluetoothSerial.h" // File di intestazione per Bluetooth seriale, verrà aggiunto per impostazione predefinita ad Arduino
Ci sono molte cose in corso dietro questa libreria, ma abbiamo scelto di non approfondirla per mantenere le cose semplici. La prossima cosa di cui abbiamo bisogno è un oggetto per le nostre operazioni relative al Bluetooth. Qui ho chiamato il mio come ESP_BT , ma puoi scegliere qualsiasi nome.
BluetoothSerial ESP_BT; // Oggetto per Bluetooth
Successivamente, all'interno della funzione void setup () . Noi iniziamo la comunicazione seriale con baud rate 9600 e inizializzare il segnale Bluetooth con un nome. Qui l'ho chiamato come "ESP32_LED_Control ", questo sarà il nome che verrà trovato dal nostro telefono durante il tentativo di accoppiamento. Infine ho dichiarato il pin LED integrato come pin di uscita poiché lo cambieremo in base al segnale Bluetooth.
void setup () { Serial.begin (9600); // Avvia il monitor seriale in 9600 ESP_BT.begin ("ESP32_LED_Control"); // Nome del segnale Bluetooth Serial.println ("Il dispositivo Bluetooth è pronto per l'accoppiamento"); pinMode (LED_BUILTIN, OUTPUT); // Specifica che il pin del LED è in uscita }
All'interno della funzione infinite void loop , controlliamo se ci sono dati in arrivo dal modulo Bluetooth, in caso affermativo i dati vengono letti e memorizzati nella variabile in arrivo . Stampiamo questo valore anche sul monitor seriale solo per un controllo incrociato di ciò che viene ricevuto da Arduino.
if (ESP_BT.available ()) // Controlla se riceviamo qualcosa da Bluetooth { incoming = ESP_BT.read (); // Leggi cosa riceviamo Serial.print ("Received:"); Serial.println (in arrivo);
Ora, qualsiasi dato ricevuto viene memorizzato nella variabile in entrata , quindi possiamo confrontare direttamente questa variabile con il valore atteso ed eseguire l'azione richiesta. Ma il valore inviato dal Bluetooth sarà in forma di caratteri e Arduino leggerà il valore Decimale del carattere che viene inviato dal telefono. Nel nostro caso per char "0" il valore decimale sarà 48 e per char "1" il valore decimale sarà 49. Puoi fare riferimento al grafico ASCII per capire quale sarà il valore decimale per ogni carattere.
Qui abbiamo confrontato la variabile in entrata con 48 e 49 per verificare rispettivamente 0 e 1. Se è un 1, spegniamo il LED e stampiamo anche un messaggio di conferma su Bluetooth dicendo che il LED è stato spento e viceversa per 0.
if (in arrivo == 49) { digitalWrite (LED_BUILTIN, HIGH); ESP_BT.println ("LED acceso"); } if (in arrivo == 48) { digitalWrite (LED_BUILTIN, LOW); ESP_BT.println ("LED spento"); }
Test del Bluetooth seriale con ESP32
Collega il tuo ESP al tuo IDE Arduino e seleziona la scheda e la porta corrette come discusso nel tutorial introduttivo. Dal momento che si tratta di un 3 ° gestore di bordo partito si potrebbe prendere un po 'di più per il codice per ottenere compilato e caricato. Una volta caricato, avvia i monitor seriali (solo per il debug) e apri le impostazioni Bluetooth sul tuo telefono. Dovresti trovare un dispositivo Bluetooth denominato ESP32_LED_Control accoppiato con.
Ora puoi aprire qualsiasi app terminale Bluetooth sul tuo smartphone, sto usando quella denominata "Terminale Bluetooth" che è stata scaricata da Google App Store. Collega l'applicazione Bluetooth al dispositivo che abbiamo appena accoppiato e digita 1 e premi invia.
Il modulo ESP32 dovrebbe riceverlo e accendere il LED come da nostro programma e anche darti un messaggio di riconoscimento che dice che il LED è acceso come lo screenshot mostrato sopra. Puoi anche controllare il monitor seriale che mostrerà i dati che vengono ricevuti dal Bluetooth ESP32 in formato decimale che è il tuo Arduino leggerà 48 per 0 e 49 per 1 come spiegato in precedenza. L'istantanea della finestra del mio terminale è mostrata di seguito.
Allo stesso modo, dovresti anche essere in grado di spegnere il LED inviando 0 dall'applicazione mobile. La lavorazione completa è mostrata nel video sottostante. Spero che tu abbia capito il tutorial e imparato qualcosa di utile. Se hai dubbi, non esitare a lasciarli nella sezione commenti qui sotto o usa i nostri forum per altro aiuto tecnico.