Kazalo:
- 1. korak: demonstracija
- 2. korak: Montaža
- 3. korak: Montaža - miza
- 4. korak: Ubidots
- 5. korak: Knjižnica SimpleDHT
- 6. korak: Knjižnica PubSubClient
- 7. korak: Knjižnica TinyGSM
- 8. korak: Knjižnica TFT_eSPI
- 9. korak: Knjižnica TFT_eSPI
- 10. korak: Ubidots
- 11. korak: Spreminjanje podatkov v.ino
- 12. korak: GPRS_ESP32_DHT.ino - Izjave in spremenljivke
- 13. korak: Pripenjanje
- 14. korak: Nastavitev
- 15. korak: SetupDisplay
- Korak: Namestite GSM
- 17. korak: Povežite strežnik MQTTServer
- 18. korak: Zanka
- 19. korak: PreberiteDHT
- 20. korak: PublishMQTT
- 21. korak: UstvariteJsonString
- Korak: ShowDataOnDisplay
- 23. korak: Datoteke
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-13 06:58
Danes bomo razpravljali o modemu GPRS ali bolje rečeno o ESP32 in njegovi uporabi z mobilnim telefonskim omrežjem. To je nekaj, kar zelo dobro deluje. S protokolom MQTT bomo podatke poslali na nadzorno ploščo Ubidots. V tem sklopu uporabite zaslon za povratne informacije o vezju, poleg kartice SIM800L in čipa mobilnega telefona. S tem projektom bomo zato pošiljali podatke o temperaturi in vlažnosti prek GPRS in MQTT ter podatke vizualizirali v linijskem grafikonu.
1. korak: demonstracija
2. korak: Montaža
3. korak: Montaža - miza
4. korak: Ubidots
5. korak: Knjižnica SimpleDHT
V Arduino IDE pojdite na Sketch-> Include Library-> Manage Libraries …
Namestite SimpleDHT
6. korak: Knjižnica PubSubClient
V Arduino IDE pojdite na Sketch-> Include Library-> Manage Libraries …
Namestite PubSubClient
7. korak: Knjižnica TinyGSM
V Arduino IDE pojdite na Sketch-> Include Library-> Manage Libraries …
Namestite TinyGSM
8. korak: Knjižnica TFT_eSPI
V Arduino IDE pojdite na Sketch-> Include Library-> Manage Libraries …
Namestite TFT_eSPI
9. korak: Knjižnica TFT_eSPI
Spremenite prikazovalne zatiče v mapi lib.
Pripenjanje je v datoteki User_Setup.h v
C: / Uporabniki / \ Dokumenti / Arduino / knjižnice / TFT_eSPI
Te privzete vrednosti spremenite v naslednje vrednosti na sliki.
10. korak: Ubidots
Prijavite se v Ubidots s svojim računom in kliknite Naprave
V zgornjem desnem kotu kliknite gumb "+"
Kliknite Prazno
Vnesite ime naprave. Upoštevajte "oznako naprave", saj bo ta uporabljena v "temi", ki jo bomo uporabili v.ino
Na seznamu naprav se prikaže naprava, ki ste jo pravkar ustvarili. Kliknite nanjo.
Na zaslonu, ki se prikaže, kliknite »Dodaj spremenljivko«. Pojavil se bo pojavno okno. Kliknite na "Raw".
Kliknite besedilno polje in vnesite ime lastnosti.
To mora biti točno tisto, kar bomo poslali v json datoteke.ino. Ponovite to za drugo lastnino.
Vrnite se na nadzorno ploščo s klikom na logotip Ubidots.
Na nadzorni plošči kliknite »Dodaj nov pripomoček«
Na seznamu pripomočkov izberite "Dvojna os"
11. korak: Spreminjanje podatkov v.ino
12. korak: GPRS_ESP32_DHT.ino - Izjave in spremenljivke
#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-abcdefghijklmnopqrstuvwxyz012 temperatura" (esp32_gprs é o imenu do dispozitiva brez Ubidotov) #define TOPIC "/v1.6/devices/esp32_gprs" // id do dispositivo que pegamos no painel do Ubidots #define DEVICE_ID "5c01234567890abc12345678TT Mreža" URL MD mqtt: //things.ubidots.com "// Porta padrão do MQTT #define MQTT_PORT 1883 // Pino onde está o DHT22 #define DHT_PIN 27
13. korak: Pripenjanje
// Pinagem em User_Setup.h na teste za bibliotecaTFT_eSPI display = TFT_eSPI (); // Intervalo entre os envios e refresh da tela #define INTERVAL 10000 // Canal serial que vamos usar para comunicarmos com o modem. Uporabite semper 1 HardwareSerial SerialGSM (1); Modem TinyGsmGSM (SerialGSM); TinyGsmClient gsmClient (modemGSM); // Odjemalec MQTT, prehod na strežnik url do, porta // e ali klient GSM PubSubClient odjemalec (MQTT_SERVER, MQTT_PORT, gsmClient); // Tempo em que o último envio/refresh foi feito uint32_t lastTime = 0; plavajoča vlažnost; // Variável onde iremos armazenar o valor da umidade plavajoča temperatura; // Variável onde iremos armazenar o valor da temperatura SimpleDHT22 dht; // Objeto que realizará a leitura da umidade e temperature
14. korak: Nastavitev
void setup () {Serial.begin (115200); setupDisplay (); // Inicializa e configura o display setupGSM (); // Inicializa e konfiguracija modema GSM connectMQTTServer (); // Conectamos ao mqtt server // Espera 2 segundos e limpamos o display delay (2000); display.fillScreen (TFT_BLUE); display.setCursor (0, 0); }
15. korak: 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 texto como 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 texto display.println ("Setup Display Complete"); }
Korak: Namestite GSM
void setupGSM () {display.println ("Nastavitev GSM …"); // Inicializamos a serial onde está o modem SerialGSM.begin (9600, SERIAL_8N1, 4, 2, false); zamuda (3000); // Več informacij o modemu Serial.println (modemGSM.getModemInfo ()); // Inicializa o modem if (! ModemGSM.restart ()) {display.println ("Ponovni zagon modema GSM ni uspel"); zamuda (10000); ESP.restart (); vrnitev; } // Espera pela rede if (! ModemGSM.waitForNetwork ()) {display.println ("Povezava z omrežjem ni uspela"); zamuda (10000); ESP.restart (); vrnitev; } // Conecta à rede gprs (APN, usuário, senha) if (! ModemGSM.gprsConnect ("", "", "")) {display.println ("GPRS Connection Failed"); zamuda (10000); ESP.restart (); vrnitev; } display.println ("Nastavitev uspeha GSM"); }
17. korak: Povežite strežnik MQTTServer
void connectMQTTServer () {display.println ("Povezovanje s strežnikom MQTT …"); // Se conecta ao device que definimos if (client.connect (DEVICE_ID, TOKEN, ""))) {// Se conexão foi bem sucedida display.println ("Connected"); } else {// Se ocorreu algum erro display.print ("error ="); display.println (client.state ()); zamuda (10000); ESP.restart (); }}
18. korak: Zanka
void loop () {// Faz a leitura da umidade e temperature 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) {// Publicamos para o server mqtt publishedMQTT (); // Mostramos os dados no display showDataOnDisplay (); // Atualizamos o tempo em que foi feito o último envio lastTime = zdaj; }}
19. korak: PreberiteDHT
void readDHT () {float t, h; // Faz a leitura da umidade e temperature e apenas atualiza as variaáveis se foi bem sucedido if (dht.read2 (DHT_PIN, & t, & h, NULL) == SimpleDHTErrSuccess) {temperature = t; vlažnost = h; }}
20. korak: PublishMQTT
void publishedMQTT () {// Cria o json que iremos se prikaže za strežnik MQTT String msg = createJsonString (); Serial.print ("Objavi sporočilo:"); Serial.println (sporočilo); // Publicamos no tópico int status = client.publish (TOPIC, msg.c_str ()); Serial.println ("Status:" + String (status)); // Stanje 1 je uspešno ali pa 0 napake}
21. korak: UstvariteJsonString
Niz createJsonString () {String data = "{"; if (! isnan (vlažnost) &&! isnan (temperatura)) {data+= "\" vlažnost / ":"; podatki+= niz (vlažnost, 2); podatki+= ","; podatki+= "\" temperatura / ":"; podatki+= niz (temperatura, 2); } podatki+= "}"; vrniti podatke; }
Korak: ShowDataOnDisplay
void showDataOnDisplay () {// Ponovno nastavite kazalec na večino umidade in temperaturo na zaslonu. setCursor (0, 0, 2); display.println ("Vlažnost:" + niz (vlažnost, 2)); display.println ("Temperatura:" + niz (temperatura, 2)); }
23. korak: Datoteke
Prenesite datoteke
JAZ NE