Sommario:

Come utilizzare il Bluetooth (BLE) con ESP32: 3 passaggi
Come utilizzare il Bluetooth (BLE) con ESP32: 3 passaggi

Video: Come utilizzare il Bluetooth (BLE) con ESP32: 3 passaggi

Video: Come utilizzare il Bluetooth (BLE) con ESP32: 3 passaggi
Video: Home Automation using ESP32 Blynk Bluetooth IR Remote | IoT Projects 2023 2024, Novembre
Anonim

#####NOTA#####

Il metodo mostrato in questo Instructables è vecchio e obsoleto. Guarda questo video per scoprire il metodo più recente.

###############

Mentre ESP32 vanta un ampio elenco di funzionalità (Wikipedia), la più grande caratteristica che attira l'attenzione è il bluetooth v4.2 integrato con supporto BLE. Ma questa affermazione può essere fuorviante, mentre l'hardware è presente, manca il supporto software per l'utilizzo del Bluetooth. (è in fase di sviluppo)

Per coloro che non sanno cosa sia BLE, sta per Bluetooth Low Energy. È un protocollo bluetooth che aumenta notevolmente il consumo energetico rispetto al Bluetooth "classico".

In questo Instructables ti mostrerò come puoi utilizzare le limitate risorse (software) a tua disposizione per inviare dati da una scheda ESP32 al tuo telefono tramite BLE.

Alcuni disclaimer…

Alcune cose importanti che dovrei menzionare prima di procedere ulteriormente con questa guida..

Nota 1: quando dico che il supporto Bluetooth non è ancora disponibile, intendo nell'ambiente di sviluppo arduino.

Il supporto potrebbe essere disponibile molto bene nell'SDK ufficiale e nell'IDF, ma non ho trovato alcuna istruzione competente per quelli.

Nota 2: il metodo che sto usando è molto una soluzione alternativa e non il modo in cui BLE dovrebbe funzionare idealmente. La libreria supporta la creazione di servizi in BLE non è qui per l'ambiente arduino.

L'unica cosa che puoi fare in modo affidabile è creare un Beacon che pubblicizzi il suo nome. Un commento di YouTube lo ha messo molto elegantemente: "LOL, un hack brutale. Ma cosa puoi fare?"

Nota 3: l'unico tipo di dati che puoi inviare è la stringa.

Potresti benissimo decidere di codificare e decodificare altri tipi di dati da e verso la stringa, ma questo va oltre lo scopo di questa guida.

Passaggio 1: la build di esempio

Image
Image
L'esempio di build
L'esempio di build
L'esempio di build
L'esempio di build
L'esempio di build
L'esempio di build

Se sei qui solo per la spiegazione, puoi saltare questo passaggio, ma esaminarlo potrebbe darti un po' più di chiarezza.

Prima realizzerò un progetto di esempio e poi cercherò di spiegare come funziona e come è possibile replicare la comunicazione Bluetooth. Costruiremo un sensore di temperatura portatile che invia un feed in tempo reale al tuo smartphone. La build può essere eseguita per giorni su una singola li-po e dimostra facilmente i vantaggi di BLE.

Puoi utilizzare il modulo come sottobicchiere per isolare le tue bevande e ricevere una notifica non appena la tua bevanda raggiunge la temperatura ottimale. Perché sarebbe una farsa se dovessi sorseggiare un tè di grado superiore ai 40.

L'unico hardware di cui hai bisogno è una scheda ESP32 e un sensore di temperatura digitale. La mia scheda supporta la batteria esterna, quindi sto usando un li-po da 3,7 V che ho recuperato da un vecchio dispositivo per rendere portatile questo progetto.

Hardware

I collegamenti per il sensore di temperatura sono semplici. Il filo rosso si collega a 3.3v, il nero si collega a terra (gnd), il giallo si collega a GPIO 2 che sulla mia scheda è contrassegnato come D9. Collegare un resistore da 4,7k ohm tra il filo rosso e giallo. Non sto usando il resistore, invece sto usando un terminale plug-in a 3 pin fornito con il mio sensore. Ha una resistenza di pull up incorporata.

Il li-po dovrebbe davvero essere collegato usando un connettore JST, ma non potevo essere disturbato a comprarne uno, quindi ho semplicemente inserito alcuni cavi jumper (da femmina a femmina) nel connettore e ho saldato un'altra coppia ai terminali della batteria. Ciò consente una connessione affidabile e un interruttore di alimentazione improvvisato.

Ora come allegato del progetto, sto usando un disco di polistirolo che è stato ritagliato da un foglio più grande. Questo lo rende un ottimo isolante. Un altro disco molto più piccolo è bloccato sopra ma un po' di lato. Questo serve per avvolgere la lunghezza extra dei fili in modo che non penzolino dappertutto. Dopo un generoso impiego della tua colla e un piccolo foro per la sonda del sensore, sei pronto per procedere al software.

Software

Se non hai già installato l'IDE di Arduino, vai a questo link per scaricarlo. Il software arduino per impostazione predefinita non viene fornito con le definizioni della scheda per le varie schede ESP32. Per farli andare a questo link e scaricare i file in uno zip. Devi decomprimerli in questa posizione:

C:/Utenti//Documenti/Arduino/hardware/espserrif/ESP32

Dov'è il tuo nome utente sul tuo PC. Assicurati che i vari file siano disponibili nella cartella ESP32 e non in un'altra cartella.

Ora se avvii il software arduino e vai su strumenti-> schede dovresti vedere varie schede ESP32 quando scorri verso il basso.

La maggior parte dei sensori di temperatura digitali utilizza il protocollo OneWire per comunicare con i microcontrollori, quindi è necessario procurarsi la libreria. Vai su sketch->includi libreria->gestisci librerie e cerca onewire e installa la libreria che ha troppi autori. Non hai bisogno dell'hub onewire. Ignoralo.

Ora puoi scaricare e aprire il codice allegato a questo passaggio (temperature-example.ino).

Se stai utilizzando un sensore diverso dal mio, dovrai modificare il codice di conseguenza. Sostituisci il codice in getTemp(). Basta restituire la temperatura finale sotto forma di

Ritorno;

Dov'è il galleggiante contenente la temperatura.

Collega la scheda, seleziona la scheda e la porta corrette da sotto gli strumenti e premi il caricamento.

Se il codice si rifiuta di caricare, scollegare il sensore e collegare il GPIO 0 a massa. Ripristina le connessioni dopo il caricamento.

Il tuo ESP dovrebbe ora urlare al mondo la temperatura del tuo caffè, ma hai bisogno di qualcuno che possa capirlo.

L'app per Android

Scusate gli utenti iPhone (…non proprio).

Scarica l'apk da qui e installalo. Quando avvii l'app verrai accolto con un'interfaccia molto semplice.

Se ricevi un messaggio di errore che dice "pubblicità non supportata", fai clic su OK e ignoralo, ma se ricevi un messaggio che "BLE non è supportato", il tuo telefono non ha Bluetooth 4.0 o versioni successive e non sarebbe in grado di funzionare l'applicazione.

Assicurati che il Bluetooth sul tuo telefono sia attivo e fai clic su "Avvia scansione", finché l'ESP è nel raggio d'azione e acceso dovresti ricevere un valore di temperatura.

Possibili errori:

  • -1000:: Ciò significa che il tuo dispositivo non è riuscito a trovare l'ESP. assicurati che il Bluetooth sia attivo e prova a riavviare l'ESP.
  • SNA:: Questo significa che il tuo telefono sta ricevendo dati dall'ESP ma l'ESP stesso non è riuscito a trovare un sensore di temperatura sul GPIO 2. Assicurati che le connessioni siano sicure, vedi se stai usando un resistore del valore corretto. Ricontrolla con gli schemi della tua scheda che sei collegato al GPIO 2 e non a un pin contrassegnato come D2.

Passaggio 2: la spiegazione

Il modo in cui BLE funziona normalmente è che un dispositivo pubblicizza il suo nome come un beacon, questo nome può essere visto da chiunque e viene utilizzato per identificare il dispositivo. Quindi il dispositivo può creare vari servizi che vengono visti da altri quando si connettono ad esso. Questi servizi possono avere diversi flussi di dati.

Per es. Un dispositivo chiamato "Stazione meteorologica" può essere servito sotto di esso come "Temperatura", "Umidità" e "Vento". Quando un altro dispositivo BLE come il tuo smartphone esegue la scansione dei dispositivi, vedrebbe la stazione meteorologica e quando si connette ad essa, sarebbe in grado di ricevere i flussi di dati corrispondenti ai diversi servizi.

Le librerie (per ESP32) attualmente a nostra disposizione ci consentono di creare un beacon che altri possono scoprire, ma questo è tutto. Non possiamo creare servizi né alcun dispositivo può connettersi ad esso.

Quindi, il modo in cui sto inviando dati senza creare servizi è utilizzando una tecnica simile al protocollo WiFi chiamato Beacon Stuffing. Ciò significa che sto includendo i dati da inviare all'interno del nome del beacon stesso. Ciò mi consente di pubblicizzare i dati senza richiedere ad altri dispositivi di connettersi al beacon.

ble.begin(beaconMsg); //beaconMsg è il nome pubblicizzato

Stiamo usando la libreria SimpleBLE per creare un beacon con il suo nome nel formato ESP. Dove "ESP" rimane sempre invariato all'inizio del nome e viene sostituito con gli ultimi dati restituiti dalla funzione getValue() ogni 100 millisecondi.

float getValue(){return sensorValue;}

L'app Android cerca i nomi dei dispositivi BLE che iniziano con "ESP", una volta trovati, divide il nome e visualizza solo i dati dalla fine.

La comunicazione è unidirezionale, l'app non restituisce nulla.

Passaggio 3: conclusione

Alla fine della giornata, questo metodo non sostituisce una libreria BLE correttamente implementata, ma potrebbe essere sufficiente per portare a termine alcuni progetti fino a quando il supporto BLE completo non arriva ad Arduino. Spero che questo Instructables ti sia stato di aiuto.

UN GRANDE Grazie a DFRobot.com per avermi inviato questi prodotti:

  • Scheda ESP32 FireBeetle
  • Scudo di espansione FireBeetle
  • Sensore di temperatura DS18B20

Ho scoperto di recente questa libreria. Il ReadME afferma che puoi connetterti ad altri dispositivi BLE per ricevere dati (non puoi farti pubblicità). Non l'ho provato ma puoi dare un'occhiata se sei interessato.

Puoi controllare il video del progetto su: YouTube

Consigliato: