Cuprins:
- Pasul 1: demonstrație
- Pasul 2: Asamblare
- Pasul 3: Asamblare - Tabel
- Pasul 4: Ubidots
- Pasul 5: Biblioteca SimpleDHT
- Pasul 6: Biblioteca PubSubClient
- Pasul 7: Biblioteca TinyGSM
- Pasul 8: Biblioteca TFT_eSPI
- Pasul 9: Biblioteca TFT_eSPI
- Pasul 10: Ubidots
- Pasul 11: Schimbarea datelor în.ino
- Pasul 12: GPRS_ESP32_DHT.ino - Declarații și variabile
- Pasul 13: Fixare
- Pasul 14: Configurare
- Pasul 15: SetupDisplay
- Pasul 16: SetupGSM
- Pasul 17: ConnectMQTTServer
- Pasul 18: Buclă
- Pasul 19: ReadDHT
- Pasul 20: PublishMQTT
- Pasul 21: CreateJsonString
- Pasul 22: ShowDataOnDisplay
- Pasul 23: Fișiere
2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-13 06:58
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
Pasul 3: Asamblare - Tabel
Pasul 4: Ubidots
Pasul 5: Biblioteca SimpleDHT
În IDE-ul Arduino, accesați Schiță-> Includeți bibliotecă-> Gestionați bibliotecile …
Instalați SimpleDHT
Pasul 6: Biblioteca PubSubClient
În IDE-ul Arduino, accesați Schiță-> Includeți bibliotecă-> Gestionați bibliotecile …
Instalați PubSubClient
Pasul 7: Biblioteca TinyGSM
În IDE-ul Arduino, accesați Schiță-> Includeți bibliotecă-> Gestionați bibliotecile …
Instalați TinyGSM
Pasul 8: 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
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
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
Pasul 12: 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
// 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
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