Sommario:

IOT con rete cellulare con ESP32: 23 passaggi
IOT con rete cellulare con ESP32: 23 passaggi

Video: IOT con rete cellulare con ESP32: 23 passaggi

Video: IOT con rete cellulare con ESP32: 23 passaggi
Video: Webinar Gratuito: Arduino IoT Cloud e la demoboard per ESP32 2024, Dicembre
Anonim
Image
Image
Dimostrazione
Dimostrazione

Oggi parleremo del modem GPRS, o meglio, dell'ESP32 e del suo utilizzo con la rete telefonica cellulare. Questo è qualcosa che funziona molto bene. Utilizzando il protocollo MQTT, invieremo quindi i dati alla dashboard di Ubidots. Utilizzare in questo assemblaggio un display per il feedback del circuito, oltre al SIM800L e un chip per cellulare. Con questo progetto, quindi, invieremo i dati di temperatura e umidità tramite GPRS e MQTT e visualizzeremo i dati in un grafico a linee.

Passaggio 1: dimostrazione

Passaggio 2: assemblaggio

Assemblea
Assemblea

Fase 3: Assemblaggio - Tavolo

Assemblaggio - Tavolo
Assemblaggio - Tavolo

Passaggio 4: Ubidot

Ubidot
Ubidot

Passaggio 5: libreria SimpleDHT

Libreria SimpleDHT
Libreria SimpleDHT

Nell'IDE di Arduino, vai su Schizzo-> Includi libreria-> Gestisci librerie …

Installa SimpleDHT

Passaggio 6: libreria PubSubClient

Libreria PubSubClient
Libreria PubSubClient

Nell'IDE di Arduino, vai su Schizzo-> Includi libreria-> Gestisci librerie …

Installa PubSubClient

Passaggio 7: libreria TinyGSM

Libreria TinyGSM
Libreria TinyGSM

Nell'IDE di Arduino, vai su Schizzo-> Includi libreria-> Gestisci librerie …

Installa TinyGSM

Passaggio 8: libreria TFT_eSPI

Libreria TFT_eSPI
Libreria TFT_eSPI

Nell'IDE di Arduino, vai su Schizzo-> Includi libreria-> Gestisci librerie …

Installa TFT_eSPI

Passaggio 9: libreria TFT_eSPI

Libreria TFT_eSPI
Libreria TFT_eSPI

Cambia i pin di visualizzazione nella cartella lib.

Il pinning è nel file User_Setup.h in

C:\Utenti\Documenti\Arduino\librerie\TFT_eSPI

Modificare questi valori predefiniti con i seguenti valori nell'immagine.

Passaggio 10: Ubidot

Ubidot
Ubidot
Ubidot
Ubidot
Ubidot
Ubidot

Accedi a Ubidots con il tuo account e clicca su Dispositivi

Fare clic sul pulsante "+" nell'angolo in alto a destra

Fare clic su Vuoto

Inserisci il nome del dispositivo. Nota l'"etichetta del dispositivo", poiché verrà utilizzata nell'"argomento" che utilizzeremo in.ino

Nell'elenco dei dispositivi, apparirà il dispositivo appena creato. Cliccaci sopra.

Nella schermata che appare, fai clic su "Aggiungi variabile". Apparirà un popup. Fare clic su "Crudo".

Fare clic sulla casella di testo e immettere il nome della proprietà.

Deve essere esattamente quello che invieremo nel json del.ino. Ripetere questa operazione per l'altra proprietà.

Torna alla dashboard facendo clic sul logo Ubidots.

Nella dashboard, fai clic su "Aggiungi nuovo widget"

Nell'elenco dei widget, scegli "Doppio asse"

Passaggio 11: modifica dei dati in.ino

Modifica dei dati in.ino
Modifica dei dati in.ino
Modifica dei dati in.ino
Modifica dei dati in.ino

Passaggio 12: GPRS_ESP32_DHT.ino - Dichiarazioni e variabili

GPRS_ESP32_DHT.ino - Dichiarazioni e Variabili
GPRS_ESP32_DHT.ino - Dichiarazioni e Variabili

#define TINY_GSM_MODEM_SIM800 //Tipo de modem que estamos usando#include #include #include #include #include //Token de usuário que pegamos no Ubidots #define TOKEN "BBFF-abcdefghijklmnopqrstuvwxyz0123" //Tópicos umidos dadevamos (esp32_gprs é o nome do dispositivo no Ubidots) #define TOPIC "/v1.6/devices/esp32_gprs" //id do dispositivo que pegamos no painel do Ubidots #define DEVICE_ID "5c01234567890abc12345678" //URL do MQTT Server #define " MQTT_SERVER mqtt://things.ubidots.com" //Porta padrão do MQTT #define MQTT_PORT 1883 //Pino onde está o DHT22 #define DHT_PIN 27

Passaggio 13: appuntare

Appuntare
Appuntare

//Pinagem em User_Setup.h na pasta da bibliotecaTFT_eSPI display = TFT_eSPI(); //Intervallo entre os envios e refresh da tela #define INTERVAL 10000 //Canal serial que vamos usar para comunicarmos com o modem. Utilizza sempre 1 HardwareSerial SerialGSM(1); TinyGsm modemGSM (SerialGSM); TinyGsmClient gsmClient(modemGSM); //Cliente MQTT, passa un url do server, a porta //e o cliente GSM PubSubClient client(MQTT_SERVER, MQTT_PORT, gsmClient); //Tempo em que o último envio/refresh foi feito uint32_t lastTime = 0; umidità galleggiante; //Variável onde iremos armazenar o valor da umidode float temperature; //Variável onde iremos armazenar o valor da temperatura SimpleDHT22 dht; //Objeto que realizará a leitura da umidade e temperatura

Passaggio 14: configurazione

void setup() { Serial.begin(115200); setupDisplay(); //Inizializzazione e configurazione del display setupGSM(); //Inizializzazione e configurazione del modem GSM connectMQTTServer(); //Connettersi al server mqtt //Espera 2 secondi e limpamos o display delay(2000); display.fillScreen(TFT_BLUE); display.setCursor(0, 0); }

Passaggio 15: impostazioneDisplay

void setupDisplay(){ display.init(); display.setRotation(1); display.fillScreen(TFT_BLUE); //Limpa o display com a cor azul display.setTextColor(TFT_WHITE, TFT_BLUE); //Coloca o texto como branco com fundo azul display.setTextWrap(true, true);//Ativa quebra de linha display.setTextSize(1); display.setCursor(0, 0, 2); //Posizione x, y e fonte del testo display.println("Setup Display Complete"); }

Passaggio 16: configurazioneGSM

void setupGSM(){ display.println("Configura GSM…"); //Inizializzazione di una seriale onde está o modem SerialGSM.begin(9600, SERIAL_8N1, 4, 2, false); ritardo (3000); //Mostra informazioni dettagliate sul modem Serial.println(modemGSM.getModemInfo()); //Inizializzazione del modem if (!modemGSM.restart()) { display.println("Riavvio del modem GSM fallito"); ritardo (10000); ESP.restart(); Restituzione; } //Espera pela rede if (!modemGSM.waitForNetwork()) { display.println("Impossibile connettersi alla rete"); ritardo (10000); ESP.restart(); Restituzione; } //Connetti a gprs (APN, usuário, senha) if (!modemGSM.gprsConnect("", "", "")) { display.println("Connessione GPRS fallita"); ritardo (10000); ESP.restart(); Restituzione; } display.println("Impostazione GSM riuscita"); }

Passaggio 17: ConnettiMQTTServer

void connectMQTTServer() { display.println("Connessione al server MQTT…"); //Selezionare un dispositivo che definisce if (client.connect(DEVICE_ID, TOKEN, "")) { //Selezionare una connessione per la successiva visualizzazione.println("Connesso"); } else { //Sei ocorreu algum erro display.print("error = "); display.println(client.state()); ritardo (10000); ESP.restart(); } }

Passaggio 18: ciclo

void loop() { //Faz a leitura da umiditàde e temperatura readDHT(); //Se desconectou do server MQTT if(!client.connected()) { //Mandamos conectar connectMQTTServer(); } //Tempo decorrido desde o boot em milissegundos unsigned long now = millis(); //Se passou o intervalo de envio if(now - lastTime > INTERVAL) { //Pubblicamos para o server mqtt publishMQTT(); //Mostramos os dados no display showDataOnDisplay(); //Atualizamos o tempo em que foi feito o último envio lastTime = now; } }

Passaggio 19: Leggi DHT

void readDHT(){ float t, h; //Faz a leitura da umidode e temperatura e apenas atualiza as variáveis se foi bem sucedido if (dht.read2(DHT_PIN, &t, &h, NULL) == SimpleDHTERrSuccess) { temperature = t; umidità = h; } }

Passaggio 20: pubblicareMQTT

void publishMQTT(){ //Cria o json che vuoi per il server MQTT String msg = createJsonString(); Serial.print("Pubblica messaggio: "); Serial.println(msg); //Pubblicamos no tópico int status = client.publish(TOPIC, msg.c_str()); Serial.println("Status: " + String(status));//Status 1 se sucesso ou 0 se deu erro }

Passaggio 21: CreaJsonString

CreaJsonString
CreaJsonString

String createJsonString() { String data = "{"; if(!isnan(umidità) && !isnan(temperatura)) { data+="\"umidità\":"; data+=Stringa(umidità, 2); dati+=", "; dati+="\"temperatura\":"; data+=Stringa(temperatura, 2); } dati+="}"; restituire i dati; }

Passaggio 22: Mostra dati su display

void showDataOnDisplay(){ //Ripristina la posizione del cursore e mostra la temperatura e la temperatura del display.setCursor(0, 0, 2); display.println("Umidità: " + String(umidità, 2)); display.println("Temperatura: " + String(temperatura, 2)); }

Passaggio 23: file

Scarica i file

IO NO

PDF

Consigliato: