Sommario:
- Passaggio 1: specifiche hardware e software
- Passaggio 2: creazione di un Captive Portal
- Passaggio 3: fornire credenziali WiFi e UbiDots
- Passaggio 4: pubblicazione delle letture del sensore su UbiDots
- Passaggio 5: visualizzazione dei dati
- Passaggio 6: codice generale
Video: UbiDots: connessione di un ESP32 e pubblicazione di più dati di sensori: 6 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
ESP32 e ESP 8266 sono SoC molto familiari nel campo dell'IoT. Questi sono una sorta di vantaggio per i progetti IoT. ESP 32 è un dispositivo con WiFi e BLE integrati. Basta fornire SSID, password e configurazioni IP e integrare le cose nel cloud. Qui in questo tutorial, valuteremo alcuni dei termini di base dell'IoT come la piattaforma IoT, MQTT, i portali Captive ecc. Quindi esaminiamolo
- L'architettura IoT in parole molto semplici consiste in un dispositivo embedded e una piattaforma IoT per mettere il dispositivo nel cloud. Qui stiamo usando la piattaforma UbiDots IoT per visualizzare i dati del sensore.
- La gestione delle impostazioni IP e delle credenziali utente può essere un grattacapo per l'utente. Cosa succede se l'Utente vuole cambiare le credenziali WiFi? Cosa succede se l'utente desidera cambiare le impostazioni DHCP/IP statico? Il flashing di ESP32 ogni volta non è affidabile e nemmeno la soluzione per questi problemi. Quindi andremo attraverso il captive portal per salvare le credenziali WiFi e altre configurazioni.
- MQTT sta diventando un termine molto comune nel mondo IoT. ha superato le richieste e le risposte (HTTP) di Pubblica e Sottoscrivi a causa dell'architettura veloce, robusta e snella.
Qui in questo istruibile, andremo a dimostrare.
- Fornire credenziali WiFi e MQTT tramite Captive Portal.
- Pubblicazione e sottoscrizione di più dati Sensor su UbiDots.
- Lettura dei dati del sensore dai sensori wireless di temperatura e umidità.
- Hosting di un modulo web da ESP32.
- Lettura e scrittura da SPIFFS ESP32.
Passaggio 1: specifiche hardware e software
- ESP32 WiFi/BLE
- Sensore di temperatura e umidità wireless
Specifiche del software
Arduino IDE
Passaggio 2: creazione di un Captive Portal
Un captive portal è una pagina Web che viene visualizzata agli utenti appena connessi prima che venga loro concesso un accesso più ampio alle risorse di rete. Qui stiamo servendo tre pagine web per selezionare tra DHCP e Impostazioni IP statiche. possiamo definire l'indirizzo IP per ESP in due modi.
- Indirizzo IP DHCP: è un modo per assegnare dinamicamente l'indirizzo IP al dispositivo. L'indirizzo IP predefinito dell'ESP è 192.168.4.1
- L'indirizzo IP statico: assegna un indirizzo IP permanente al nostro dispositivo di rete. per fornire l'IP statico al dispositivo è necessario definire l'indirizzo IP, l'indirizzo del gateway e la subnet mask.
La prima pagina web è ospitata su 192.168.1.77. Qui l'utente ha a disposizione i pulsanti di opzione per selezionare tra le impostazioni DHCP e IP statico. Nella prossima pagina web, dobbiamo fornire le informazioni relative all'IP per procedere ulteriormente.
Codice HTML
Il codice HTML per le pagine Web può essere trovato in questo repository Github. Puoi utilizzare qualsiasi IDE o editor di testo come Sublime o Notepad++ per creare pagine Web HTML.
- Innanzitutto creare una pagina Web HTML contenente due pulsanti di opzione per scegliere tra DHCP e Impostazioni IP statico.
- Ora crea il pulsante per inviare la tua risposta
- Dai un nome ai pulsanti di opzione.
- La classe del server Web ESP prenderà questi nomi come argomenti e otterrà la risposta dei pulsanti di opzione utilizzando questi argomenti
- Ora inserisci un pulsante "INVIA" per inviare la risposta al dispositivo. Nelle altre pagine web, abbiamo caselle di testo.
- Assegna il valore del nome e il tipo di input alla casella di testo e aggiungi un pulsante di invio a "INVIA" invia la risposta.
- Creare un pulsante "RESET" per ripristinare il contenuto del campo di testo.
Passaggio 3: fornire credenziali WiFi e UbiDots
Il problema principale si verifica durante la gestione delle credenziali WiFi. Anche se abbiamo la libreria WiFiMulti per quello in cui possiamo dare più SSID e password al dispositivo e il dispositivo si connetterà alla rete disponibile. Ma cosa succede se la rete disponibile non è nell'elenco WiFiMulti. Il flashing continuo del dispositivo ESP32 non è una soluzione affidabile.
Per risolvere questo problema, stiamo ospitando una pagina Web in cui l'utente può inviare l'SSID e la password della rete disponibile. Funziona come segue.
- La pagina web è ospitata su IP statico o IP DHCP scelto dall'utente dal captive portal
- Questa pagina Web contiene campi di testo per inserire SSID, password e ID token UBIDOTS per connettere il dispositivo a UbiDots.
- Inserisci l'SSID e la password del tuo WiFi locale nei campi di input, inserisci l'ID token di UbiDot e inserisci SUBMIT
- Queste credenziali vengono salvate nella EEPROM di ESP32
- Dopo 60 secondi il dispositivo si disconnetterà automaticamente dall'AP
- La prossima volta che accendi il dispositivo, l'utente non deve seguire questa procedura, il dispositivo recupererà automaticamente le credenziali dell'utente dalla EEPROM e continuerà con la pubblicazione delle letture del sensore su UbiDots.
Passaggio 4: pubblicazione delle letture del sensore su UbiDots
Qui stiamo utilizzando i sensori di temperatura e umidità wireless con il dispositivo ESP 32 per ottenere i dati di temperatura e umidità. Stiamo inviando i dati a UbiDots utilizzando il protocollo MQTT. MQTT segue un meccanismo di pubblicazione e sottoscrizione piuttosto che richiesta e risposta. È più veloce e affidabile di HTTP. Funziona come segue.
- Utilizziamo l'Utilità di pianificazione per pianificare l'attività come il recupero dei dati dai sensori, la pubblicazione delle letture dei sensori, la sottoscrizione all'argomento MQTT.
- Innanzitutto, includi i file di intestazione dell'Utilità di pianificazione, la sua istanza e pianifica le attività.
- Abbiamo programmato due task riferiti a due diverse operazioni di controllo.
#define _TASK_TIMEOUT#include
Programmatore ts;
//---------Tasks------------//Task tSensor(4 * TASK_SECOND, TASK_FOREVER, &taskSensorCallback, &ts, false, NULL, &taskSensorDisable); Task tWiFi(10* TASK_SECOND, TASK_FOREVER, &taskWiFiCallback, &ts, false, NULL, &taskWiFiDisable);
L'attività 1 serve per leggere il valore del sensore, questa attività viene eseguita per 1 secondo fino a raggiungere il timeout di 10 secondi
-
Quando il Task1 raggiunge il suo timeout Ci stiamo connettendo al Wifi locale e al broker MQTT.
- Ora l'attività 2 è abilitata e stiamo disabilitando l'attività 1
- L'attività 2 serve per pubblicare i dati del sensore sul broker UbiDots MQTT questa attività viene eseguita per 20 secondi fino a raggiungere il timeout di 20 secondi
- Quando il Task2 raggiunge il suo timeout, il Task 1 viene abilitato di nuovo e il Task2 è disabilitato. Anche in questo caso, stiamo ottenendo il valore aggiornato e il processo continua.
Lettura dei dati del sensore I2C
Riceviamo un frame da 29 byte dai sensori wireless di temperatura e umidità. Questo riquadro viene manipolato per ottenere i dati effettivi di temperatura e umidità
uint8_t dati[29];
data[0] = Serial1.read(); ritardo(k); //controlla il byte iniziale if(data[0]==0x7E) { while (!Serial1.available()); for (i = 1; i< 29; i++) { data = Serial1.read(); ritardo(1); } if(data[15]==0x7F) /////// per verificare se i dati ricevuti sono corretti { if(data[22]==1) //////// verificare il tipo di sensore è corretta {
umidità = ((((data[24]) * 256) + data[25]) /100.0); umidità /=10.0; cTempint = (((uint16_t)(data[26])<<8)| data[27]); cTemp = (mobile)cTempint /100.0; cTemp /= 10.0; fTemp = cTemp * 1,8 + 32; fTemp /= 10.0; batteria = casuale(100, 327); tensione = batteria/100; ID nodo = dati[16];}
Connessione all'API MQTT di UbiDots
Includere il file di intestazione per il processo MQTT
#includere
definire altre variabili per MQTT come nome client, indirizzo broker, ID token (stiamo recuperando l'ID token da EEPROM)
#define MQTT_CLIENT_NAME "ClientVBShightime123"
char mqttBroker = "things.ubidots.com";
char payload[100];char argomento[150];
//crea una variabile per memorizzare l'ID del token
ID token stringa;
Crea variabili per memorizzare diversi dati del sensore e crea una variabile char per memorizzare l'argomento
#define VARIABLE_LABEL_TEMPF "tempF" // Assegnazione dell'etichetta della variabile#define VARIABLE_LABEL_TEMPC "tempC" // Assegnazione dell'etichetta della variabile #define VARIABLE_LABEL_BAT "bat" #define VARIABLE_LABEL_HUMID "umido" // Assegnazione dell'etichetta della variabile
char argomento1[100]; char argomento2[100]; char topic3[100];
pubblica i dati nell'argomento MQTT menzionato, il payload sarà simile a { "tempc": {value: "tempData"}}
sprintf(topic1, "%s", ""); sprintf(topic1, "%s%s", "/v1.6/devices/", DEVICE_LABEL); sprintf(carico utile, "%s", ""); // Pulisce il payload sprintf(payload, "{"%s\":", VARIABLE_LABEL_TEMPC); // Aggiunge il valore sprintf(payload, "%s{"value\":%s}", payload, str_cTemp); // Aggiunge il valore sprintf(payload, "%s}", payload); // Chiude le parentesi del dizionario Serial.println(payload); Serial.println(client.publish(topic1, payload) ? "pubblicato": "non pubblicato");
//Fai lo stesso anche per altri argomenti
client.publish() pubblica i dati su UbiDots
Passaggio 5: visualizzazione dei dati
- Vai su Ubidots e accedi al tuo account.
- Passa alla Dashboard dalla scheda Dati elencata in alto.
- Ora fai clic sull'icona "+" per aggiungere i nuovi widget.
- Seleziona un widget dall'elenco e aggiungi una variabile e dispositivi.
- I dati del sensore possono essere visualizzati sulla dashboard utilizzando diversi widget.
Passaggio 6: codice generale
Il codice Over per HTML ed ESP32 può essere trovato in questo repository GitHub.
Titoli di coda
- scheda di breakout ESP32 ncd.
- ncd Sensori di temperatura e umidità wireless.
- pubsubcliente
- UbiDots
- Agenda
Consigliato:
Guida alla connessione PLSD: connessione a Apple TV tramite AirPlay [non ufficiale]: 10 passaggi
Guida alla connessione PLSD: connessione a Apple TV tramite AirPlay [non ufficiale]: la seguente guida viene fornita per illustrare il processo di connessione a Apple TV della sala conferenze tramite AirPlay. Questa risorsa non ufficiale viene fornita a titolo di cortesia per l'amministrazione, il personale e gli ospiti autorizzati del Perkins Local School Distric
CONNESSIONE DI PI SENSORI A UNA PORTA SERIALE ARDUINO UNO: 4 passaggi
CONNESSIONE DI PI SENSORI A UNA PORTA SERIALE ARDUINO UNO: In questo tutorial, espanderemo una singola porta seriale Arduino UNO UART (Rx/Tx) in modo da poter collegare più sensori Atlas. L'espansione viene eseguita utilizzando la scheda di espansione della porta seriale 8:1. La porta di Arduino è collegata all'espansore dopo che
Connessione TCP/IP su GPRS: come inviare dati al server utilizzando il modulo SIM900A: 4 passaggi
Connessione TCP/IP su GPRS: Come inviare dati al server utilizzando il modulo SIM900A: In questo tutorial ti parlerò di come inviare dati al server TCP utilizzando il modulo sim900. Inoltre vedremo come possiamo ricevere dati da server a client (modulo GSM)
Pubblicazione dei dati del sensore di pressione wireless utilizzando MQTT: 7 passaggi
Pubblicazione dei dati del sensore di pressione wireless utilizzando MQTT: ESP32 e ESP 8266 sono SoC molto familiari nel campo dell'IoT. Questi sono una sorta di vantaggio per i progetti IoT. ESP 32 è un dispositivo con WiFi e BLE integrati. Basta fornire SSID, password e configurazioni IP e integrare le cose nel
Usa la connessione dati del tuo iPhone sul tuo computer: 6 passaggi
Usa la connessione dati del tuo iPhone sul tuo computer: NOTA: a partire da iOS 3 e 4, ci sono altri modi per legare, anche uno legittimo tramite AT&T (anche se costa di più). Questo metodo funziona comunque, e lo farà sempre (indipendentemente dagli aggiornamenti iOS) finché puoi SSH nel tuo iPhone. Ho