Cuprins:

IOT cu rețea celulară cu ESP32: 23 de pași
IOT cu rețea celulară cu ESP32: 23 de pași

Video: IOT cu rețea celulară cu ESP32: 23 de pași

Video: IOT cu rețea celulară cu ESP32: 23 de pași
Video: ESP32 Tutorial 15 - DC Motor Speed Control with ESP32 L293D | SunFounder's ESP32 IoT Learnig kit 2024, Iulie
Anonim
Image
Image
Demonstrație
Demonstrație

Astăzi vom discuta despre modemul GPRS sau, mai degrabă, despre ESP32 și despre utilizarea acestuia cu rețeaua de telefonie mobilă. Acest lucru funcționează foarte bine. Folosind protocolul MQTT, vom trimite apoi date către tabloul de bord Ubidots. Utilizați în acest ansamblu un afișaj pentru feedback-ul circuitului, pe lângă SIM800L și un cip de telefon mobil. Prin urmare, cu acest proiect, vom trimite date de temperatură și umiditate prin GPRS și MQTT și vom vizualiza datele într-o diagramă liniară.

Pasul 1: demonstrație

Pasul 2: Asamblare

Asamblare
Asamblare

Pasul 3: Asamblare - Tabel

Asamblare - Masă
Asamblare - Masă

Pasul 4: Ubidots

Ubidots
Ubidots

Pasul 5: Biblioteca SimpleDHT

Biblioteca SimpleDHT
Biblioteca SimpleDHT

În IDE-ul Arduino, accesați Schiță-> Includeți bibliotecă-> Gestionați bibliotecile …

Instalați SimpleDHT

Pasul 6: Biblioteca PubSubClient

Biblioteca PubSubClient
Biblioteca PubSubClient

În IDE-ul Arduino, accesați Schiță-> Includeți bibliotecă-> Gestionați bibliotecile …

Instalați PubSubClient

Pasul 7: Biblioteca TinyGSM

Biblioteca TinyGSM
Biblioteca TinyGSM

În IDE-ul Arduino, accesați Schiță-> Includeți bibliotecă-> Gestionați bibliotecile …

Instalați TinyGSM

Pasul 8: Biblioteca TFT_eSPI

Biblioteca TFT_eSPI
Biblioteca TFT_eSPI

În IDE-ul Arduino, accesați Schiță-> Includeți bibliotecă-> Gestionați bibliotecile …

Instalați TFT_eSPI

Pasul 9: Biblioteca TFT_eSPI

Biblioteca TFT_eSPI
Biblioteca TFT_eSPI

Schimbați pinii afișajului din folderul lib.

Fixarea se află în fișierul User_Setup.h din

C: / Users / \ Documents / Arduino / libraries / TFT_eSPI

Modificați aceste valori implicite la următoarele valori din imagine.

Pasul 10: Ubidots

Ubidots
Ubidots
Ubidots
Ubidots
Ubidots
Ubidots

Conectați-vă la Ubidots cu contul dvs. și faceți clic pe Dispozitive

Faceți clic pe butonul „+” din colțul din dreapta sus

Faceți clic pe Gol

Introduceți numele dispozitivului. Rețineți „eticheta dispozitivului”, deoarece aceasta va fi utilizată în „subiectul” pe care îl vom folosi în.ino

În lista dispozitivelor, va apărea dispozitivul pe care tocmai l-ați creat. Apasa pe el.

Pe ecranul care apare, faceți clic pe „Adăugați variabilă”. Va apărea un popup. Faceți clic pe „Raw”.

Faceți clic pe caseta de text și introduceți numele proprietății.

Trebuie să fie exact ceea ce vom trimite în fișierul.ino. Repetați acest lucru pentru cealaltă proprietate.

Reveniți la tabloul de bord făcând clic pe sigla Ubidots.

În tabloul de bord, faceți clic pe „Adăugați un widget nou”

În lista Widgeturilor, alegeți „Axa dublă”

Pasul 11: Schimbarea datelor în.ino

Schimbarea datelor în.ino
Schimbarea datelor în.ino
Schimbarea datelor în.ino
Schimbarea datelor în.ino

Pasul 12: GPRS_ESP32_DHT.ino - Declarații și variabile

GPRS_ESP32_DHT.ino - Declarații și variabile
GPRS_ESP32_DHT.ino - Declarații și variabile

. (esp32_gprs é o nome do device no Ubidots) #define TOPIC "/v1.6/devices/esp32_gprs" // id do device that 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 unde está o DHT22 #define DHT_PIN 27

Pasul 13: Fixare

Fixare
Fixare

// Pinagem em User_Setup.h na pasta da bibliotecaTFT_eSPI display = TFT_eSPI (); // Intervalo între os envios e refresh da tela #define INTERVAL 10000 // Canal serial care vamos use for comunicarmos com o modem. Utilizați semper 1 HardwareSerial SerialGSM (1); TinyGsm modemGSM (SerialGSM); TinyGsmClient gsmClient (modemGSM); // Cliente MQTT, treceți o adresă URL a serverului, o poartă // e o client GSM PubSubClient client (MQTT_SERVER, MQTT_PORT, gsmClient); // Tempo em que o último envio / refresh foi feito uint32_t lastTime = 0; umiditatea plutitoare; // Variável unde iremos armazenar o valor da umidade float temperature; // Variável onde iremos armazenar o valor da temperatura SimpleDHT22 dht; // Objeto que realizará a leitura da umidade și temperatura

Pasul 14: Configurare

void setup () {Serial.begin (115200); setupDisplay (); // Inicializa și configura o afișare setupGSM (); // Inicializarea și configurarea modemului GSM connectMQTTServer (); // Conectamos ao mqtt server // Espera 2 segundos e limpamos o display delay (2000); display.fillScreen (TFT_BLUE); display.setCursor (0, 0); }

Pasul 15: SetupDisplay

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 text ca branco com fundo azul display.setTextWrap (true, true); // Ativa quebra de linha display.setTextSize (1); display.setCursor (0, 0, 2); // Posicção x, y e fonte do text display.println ("Setup Display Complete"); }

Pasul 16: SetupGSM

void setupGSM () {display.println ("Configurare GSM …"); // Inicializamos a serial onde está o modem SerialGSM.begin (9600, SERIAL_8N1, 4, 2, false); întârziere (3000); // Afișați informații despre modem Serial.println (modemGSM.getModemInfo ()); // Inicializa o modem if (! ModemGSM.restart ()) {display.println ("Restarting GSM Modem failed"); întârziere (10000); ESP.restart (); întoarcere; } // Espera pela rede if (! ModemGSM.waitForNetwork ()) {display.println ("Nu s-a conectat la rețea"); întârziere (10000); ESP.restart (); întoarcere; } // Conecta à rede gprs (APN, usuário, senha) if (! ModemGSM.gprsConnect ("", "", "")) {display.println ("GPRS Connection Failed"); întârziere (10000); ESP.restart (); întoarcere; } display.println ("Configurare succes GSM"); }

Pasul 17: ConnectMQTTServer

void connectMQTTServer () {display.println ("Conectarea la serverul MQTT …"); // Se conecta ao device that definimos if (client.connect (DEVICE_ID, TOKEN, "")) {// Se a conexão foi bem sucedida display.println ("Connected"); } else {// Se ocorreu algum erro display.print ("error ="); display.println (client.state ()); întârziere (10000); ESP.restart (); }}

Pasul 18: Buclă

void loop () {// Faz a leitura da umiditate și temperatura readDHT (); // Se desconectează serverul MQTT if (! Client.connected ()) {// Mandamos conectar connectMQTTServer (); } // Tempo decorrido desde o boot em milissegundos unsigned long now = millis (); // Se passou o intervalo de invio if (now - lastTime> INTERVAL) {// Publicamos para o server mqtt publishMQTT (); // Mostramos os dados no display showDataOnDisplay (); // Atualizamos o tempo em que foi feito o último envio lastTime = now; }}

Pasul 19: ReadDHT

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

Pasul 20: PublishMQTT

void publishMQTT () {// Cria o json care iremos send for o server MQTT String msg = createJsonString (); Serial.print („Publicare mesaj:”); Serial.println (msg); // Publicamos no tópico int status = client.publish (TOPIC, msg.c_str ()); Serial.println ("Status:" + String (status)); // Status 1 se reușește sau 0 se deu erro}

Pasul 21: CreateJsonString

CreateJsonString
CreateJsonString

String createJsonString () {String data = "{"; if (! isnan (umiditate) &&! isnan (temperatura)) {data + = "\" umiditate / ":"; date + = String (umiditate, 2); date + = ","; date + = "\" temperature / ":"; date + = String (temperatura, 2); } date + = "}"; returnează date; }

Pasul 22: ShowDataOnDisplay

void showDataOnDisplay () {// Resetați o poziție a cursorului și arată umiditatea și temperatura lidas display.setCursor (0, 0, 2); display.println ("Umiditate:" + Șir (umiditate, 2)); display.println ("Temperatura:" + Șir (temperatură, 2)); }

Pasul 23: Fișiere

Descărcați fișierele

EU NU

PDF

Recomandat: