Përmbajtje:
- Hapi 1: Demonstrim
- Hapi 2: Montimi
- Hapi 3: Kuvendi - Tabela
- Hapi 4: Ubidots
- Hapi 5: Biblioteka SimpleDHT
- Hapi 6: Biblioteka PubSubClient
- Hapi 7: Biblioteka TinyGSM
- Hapi 8: Biblioteka TFT_eSPI
- Hapi 9: Biblioteka TFT_eSPI
- Hapi 10: Ubidots
- Hapi 11: Ndryshimi i të dhënave në.ino
- Hapi 12: GPRS_ESP32_DHT.ino - Deklarata dhe Ndryshore
- Hapi 13: Mbërthimi
- Hapi 14: Konfigurimi
- Hapi 15: SetupDisplay
- Hapi 16: SetupGSM
- Hapi 17: ConnectMQTTServer
- Hapi 18: Lak
- Hapi 19: LexoDHT
- Hapi 20: Publikoni MQTT
- Hapi 21: Krijoni stringJsonString
- Hapi 22: ShowDataOnDisplay
- Hapi 23: Skedarët
2025 Autor: John Day | [email protected]. E modifikuara e fundit: 2025-01-13 06:58
Sot do të diskutojmë për modemin GPRS, ose më mirë, ESP32 dhe përdorimin e tij me rrjetin e telefonisë celulare. Kjo është diçka që funksionon shumë mirë. Duke përdorur protokollin MQTT, ne do t'i dërgojmë të dhënat në pultin e Ubidots. Përdorni në këtë asamble një ekran për reagime të qarkut, përveç SIM800L dhe një çip celular. Prandaj, me këtë projekt, ne do të dërgojmë të dhëna për temperaturën dhe lagështinë përmes GPRS dhe MQTT dhe do t'i vizualizojmë të dhënat në një tabelë të linjës.
Hapi 1: Demonstrim
Hapi 2: Montimi
Hapi 3: Kuvendi - Tabela
Hapi 4: Ubidots
Hapi 5: Biblioteka SimpleDHT
Në Arduino IDE, shkoni te Sketch-> Include Library-> Manage Bibliotekat …
Instaloni SimpleDHT
Hapi 6: Biblioteka PubSubClient
Në Arduino IDE, shkoni te Sketch-> Include Library-> Manage Bibliotekat …
Instaloni PubSubClient
Hapi 7: Biblioteka TinyGSM
Në Arduino IDE, shkoni te Sketch-> Include Library-> Manage Bibliotekat …
Instaloni TinyGSM
Hapi 8: Biblioteka TFT_eSPI
Në Arduino IDE, shkoni te Sketch-> Include Library-> Manage Bibliotekat …
Instaloni TFT_eSPI
Hapi 9: Biblioteka TFT_eSPI
Ndryshoni kunjat e ekranit në dosjen lib.
Mbërthimi është në skedarin User_Setup.h në
C: / Përdoruesit / \ Dokumentet / Arduino / bibliotekat / TFT_eSPI
Ndryshoni këto parazgjedhje në vlerat e mëposhtme në figurë.
Hapi 10: Ubidots
Hyni në Ubidots me llogarinë tuaj dhe klikoni në Pajisjet
Klikoni butonin "+" në këndin e sipërm të djathtë
Kliko Blank
Futni emrin e pajisjes. Vini re "etiketën e pajisjes", pasi kjo do të përdoret në "temën" që ne do të përdorim në.ino
Në listën e pajisjeve, pajisja që sapo keni krijuar do të shfaqet. Klikoni mbi të.
Në ekranin që shfaqet, klikoni në "Shto variabël". Do të shfaqet një dritare kërcyese. Klikoni në "I papërpunuar".
Klikoni në kutinë e tekstit dhe futni emrin e pronës.
Duhet të jetë pikërisht ajo që ne do të dërgojmë në json të.ino. Përsëriteni këtë për pronën tjetër.
Kthehuni përsëri në pult duke klikuar në logon e Ubidots.
Në pult, klikoni në "Shto widget të ri"
Në listën e Widgets, zgjidhni "Boshti i dyfishtë"
Hapi 11: Ndryshimi i të dhënave në.ino
Hapi 12: GPRS_ESP32_DHT.ino - Deklarata dhe Ndryshore
#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-abcdefghijklmmopoprd12 (esp32_gprs é oome do dispositivo no Ubidots) #define TOMIC "/v1.6/devices/esp32_gprs" // id do dispositivo que pegamos no painel në Ubidots #define DEVICE_ID "5c01234567890abc12345678" // URL mqtt: //things.ubidots.com "// Porta për të bërë MQTT #define MQTT_PORT 1883 // Pino onde está o DHT22 #define DHT_PIN 27
Hapi 13: Mbërthimi
// Pinagem em User_Setup.h dhe makarona për bibliotecaTFT_eSPI display = TFT_eSPI (); // Intervalo entre os envios e refresh da tela #define INTERVAL 10000 // Seriali i kanalit që përdoret për komunikim me modemin. Përdorni semper 1 HardwareSerial SerialGSM (1); ModemGSM TinyGsm (SerialGSM); TinyGsmClient gsmClient (modemGSM); // Cliente MQTT, kalon një url do server, një porta // e o klientë GSM PubSubClient klient (MQTT_SERVER, MQTT_PORT, gsmClient); // Tempo em que o último envio/refresh foi feito uint32_t lastTime = 0; lagështia e notit; // Variável onde iremos armazenar o valor da umidade temperatura e notimit; // Variável onde iremos armazenar o valor da temperatura SimpleDHT22 dht; // Objeto que realizará a leitura da umidade e temperatura
Hapi 14: Konfigurimi
void setup () {Serial.begin (115200); setupDisplay (); // Inicializa dhe konfigurimi i shfaqjes setupGSM (); // Inicializa dhe konfigurimi i modemit GSM connectMQTTServer (); // Conectamos ao mqtt server // Espera 2 segundos dhe limpamos ose vonesa e shfaqjes (2000); display.fillScreen (TFT_BLUE); display.setCursor (0, 0); }
Hapi 15: SetupDisplay
void setupDisplay () {display.init (); display.setRotation (1); display.fillScreen (TFT_BLUE); // Limpa ose shfaqje com a cor azul display.setTextColor (TFT_WHITE, TFT_BLUE); // Coloca o texto como branco com fundo azul display.setTextWrap (e vërtetë, e vërtetë); // Ativa quebra de linha display.setTextSize (1); display.setCursor (0, 0, 2); // Posicção x, y e fonte do texto display.println ("Setup Display Complete"); }
Hapi 16: SetupGSM
void setupGSM () {display.println ("Konfiguro GSM …"); // Inicializamos a serial onde está o modem SerialGSM.fill (9600, SERIAL_8N1, 4, 2, false); vonesë (3000); // Mostra informação sobre o modem Serial.println (modemGSM.getModemInfo ()); // Inicializa ose modemi nëse (! ModemGSM.restart ()) {display.println ("Rinisja e modemit GSM dështoi"); vonesë (10000); ESP.restart (); kthim; } // Espera pela rede if (! ModemGSM.waitForNetwork ()) {display.println ("Nuk u lidh në rrjet"); vonesë (10000); ESP.restart (); kthim; } // Conecta de rede gprs (APN, përdorues, senha) nëse (! ModemGSM.gprsConnect ("", "", "")) {display.println ("Lidhja GPRS dështoi"); vonesë (10000); ESP.restart (); kthim; } display.println ("Konfiguro suksesin GSM"); }
Hapi 17: ConnectMQTTServer
void connectMQTTServer () {display.println ("Lidhja me serverin MQTT …"); // Shihni një pajisje që përcakton nëse (client.connect (DEVICE_ID, TOKEN, "")) {// Shihni një lidhje të afërt me ekran.println ("I lidhur"); } else {// Se ocorreu algum erro display.print ("error ="); display.println (client.state ()); vonesë (10000); ESP.restart (); }}
Hapi 18: Lak
void loop () {// Faz a leitura da umidade e temperatura readDHT (); // Se desconectou do server MQTT if (! Client.connected ()) {// Mandamos conectar connectMQTTServer (); } // Tempo decorrido desde o boot em milissegundos të panënshkruar prej kohësh = millis (); // Shihni intervalo de envio nëse (tani - lastTime> INTERVAL) {// Publicamos para serverit të publikojëMQTT (); // Mostramos os dados pa shfaqje showDataOnDisplay (); // Atualizamos o tempo em que foi feito o último envio lastTime = tani; }}
Hapi 19: LexoDHT
void readDHT () {noton 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; lagështia = h; }}
Hapi 20: Publikoni MQTT
void publikoMQTT () {// Cria ose json që duhet të përdoret për serverin MQTT String msg = createJsonString (); Serial.print ("Publiko mesazhin:"); Serial.println (msg); // Publicamos no tópico int status = client.publish (TEMA, msg.c_str ()); Serial.println ("Statusi:" + Vargu (statusi)); // Statusi 1 se sucesso ou 0 se deu erro}
Hapi 21: Krijoni stringJsonString
String createJsonString () {Të dhënat e vargut = "{"; nëse (! isnan (lagështia) &&! isnan (temperatura)) {të dhëna+= "\" lagështia / ":"; të dhëna+= Vargu (lagështia, 2); të dhëna+= ","; të dhëna+= "\" temperatura / ":"; të dhëna+= Vargu (temperatura, 2); } të dhëna+= "}"; ktheni të dhënat; }
Hapi 22: ShowDataOnDisplay
void showDataOnDisplay () {// Reseta a posição do cursor e mostra umidade e temperatura lidas display.setCursor (0, 0, 2); display.println ("Lagështia:" + Vargu (lagështia, 2)); display.println ("Temperatura:" + Vargu (temperatura, 2)); }
Hapi 23: Skedarët
Shkarkoni skedarët
INO