Turinys:
- 1 žingsnis: demonstracija
- 2 žingsnis: Surinkimas
- 3 žingsnis: Surinkimas - stalas
- 4 žingsnis: „Ubidots“
- 5 žingsnis: „SimpleDHT“biblioteka
- 6 veiksmas: „PubSubClient“biblioteka
- 7 žingsnis: „TinyGSM“biblioteka
- 8 veiksmas: TFT_eSPI biblioteka
- 9 veiksmas: TFT_eSPI biblioteka
- 10 veiksmas: „Ubidots“
- 11 veiksmas: duomenų keitimas.ino
- 12 veiksmas: GPRS_ESP32_DHT.ino - Deklaracijos ir kintamieji
- 13 žingsnis: prisegti
- 14 žingsnis: sąranka
- 15 veiksmas: sąrankos rodymas
- 16 veiksmas: nustatykite GSM
- 17 žingsnis: „ConnectMQTTServer“
- 18 žingsnis: ciklas
- 19 žingsnis: skaitykite
- 20 žingsnis: PublishMQTT
- 21 veiksmas: sukurkiteJsonString
- 22 veiksmas: „ShowDataOnDisplay“
- 23 žingsnis: failai
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-13 06:57
Šiandien aptarsime apie GPRS modemą, tiksliau, ESP32 ir jo naudojimą korinio telefono tinkle. Tai labai gerai veikiantis dalykas. Naudodami MQTT protokolą, mes išsiųsime duomenis į „Ubidots“prietaisų skydelį. Šiame rinkinyje, be SIM800L ir mobiliojo telefono mikroschemos, naudokite ekraną, skirtą grandinės atsiliepimams. Todėl įgyvendindami šį projektą, mes siųsime temperatūros ir drėgmės duomenis per GPRS ir MQTT ir vizualizuosime duomenis linijinėje diagramoje.
1 žingsnis: demonstracija
2 žingsnis: Surinkimas
3 žingsnis: Surinkimas - stalas
4 žingsnis: „Ubidots“
5 žingsnis: „SimpleDHT“biblioteka
„Arduino IDE“eikite į Eskizas-> Įtraukti biblioteką-> Tvarkyti bibliotekas …
Įdiekite „SimpleDHT“
6 veiksmas: „PubSubClient“biblioteka
„Arduino IDE“eikite į Eskizas-> Įtraukti biblioteką-> Tvarkyti bibliotekas …
Įdiekite „PubSubClient“
7 žingsnis: „TinyGSM“biblioteka
„Arduino IDE“eikite į Eskizas-> Įtraukti biblioteką-> Tvarkyti bibliotekas …
Įdiekite „TinyGSM“
8 veiksmas: TFT_eSPI biblioteka
„Arduino IDE“eikite į Eskizas-> Įtraukti biblioteką-> Tvarkyti bibliotekas …
Įdiekite TFT_eSPI
9 veiksmas: TFT_eSPI biblioteka
Pakeiskite ekrano kaiščius lib aplanke.
Prisegimas yra faile User_Setup.h
C: / Vartotojai / Dokumentai / Arduino / bibliotekos / TFT_eSPI
Pakeiskite šiuos numatytuosius nustatymus į šias vaizdo reikšmes.
10 veiksmas: „Ubidots“
Prisijunkite prie „Ubidots“naudodami savo paskyrą ir spustelėkite Įrenginiai
Spustelėkite mygtuką „+“viršutiniame dešiniajame kampe
Spustelėkite tuščią
Įveskite įrenginio pavadinimą. Atkreipkite dėmesį į „įrenginio etiketę“, nes tai bus naudojama „temoje“, kurią naudosime.ino
Įrenginių sąraše bus rodomas ką tik sukurtas įrenginys. Spustelėkite jį.
Rodomame ekrane spustelėkite „Pridėti kintamąjį“. Pasirodys iššokantis langas. Spustelėkite „Žalias“.
Spustelėkite teksto laukelį ir įveskite nuosavybės pavadinimą.
Tai turi būti būtent tai, ką mes atsiųsime į.ino. Pakartokite tai kitai nuosavybei.
Grįžkite į prietaisų skydelį spustelėdami „Ubidots“logotipą.
Prietaisų skydelyje spustelėkite „Pridėti naują valdiklį“
Valdiklių sąraše pasirinkite „Dviguba ašis“
11 veiksmas: duomenų keitimas.ino
12 veiksmas: GPRS_ESP32_DHT.ino - Deklaracijos ir kintamieji
#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-abcdefghijklmnopqrstuvwxyz triumfas (esp32_gprs é o nome do dispitivo no Ubidots) #define TOPIC "/v1.6/devices/esp32_gprs" // id do dispitivo que pegamos no painel do Ubidots #define DEVICE_ID "5c01234567890abc12345678" // URL do MQERQ #Server mqtt: //things.ubidots.com "// Porta padrão do MQTT #define MQTT_PORT 1883 // Pino onde está o DHT22 #define DHT_PIN 27
13 žingsnis: prisegti
// Pinagem em User_Setup.h su pasta da 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. Naudokite semper 1 HardwareSerial SerialGSM (1); „TinyGsm“modemasGSM („SerialGSM“); TinyGsmClient gsmClient (modemGSM); // Kliento MQTT, slaptažodis ir url serveris, portalas // ir kliento GSM PubSubClient klientas (MQTT_SERVER, MQTT_PORT, gsmClient); // Tempo em que o último envio/refresh foi feito uint32_t lastTime = 0; plūdės drėgmė; // Variável onde 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 e temperatura
14 žingsnis: sąranka
void setup () {Serial.begin (115200); setupDisplay (); // Inicializa e configura o display setupGSM (); // Inicializacija ir modemo GSM connectMQTTServer (); // „Conectamos ao mqtt server“// „Espera 2 segundos e limpamos o display delay“(2000); display.fillScreen (TFT_BLUE); display.setCursor (0, 0); }
15 veiksmas: sąrankos rodymas
void setupDisplay () {display.init (); display.setRotation (1); display.fillScreen (TFT_BLUE); // Limpa arba ekranas com or cor 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 ("Sąrankos ekranas baigtas"); }
16 veiksmas: nustatykite GSM
void setupGSM () {display.println ("Nustatyti GSM …"); // Inicializamos a serial onde está or modem SerialGSM.begin (9600, SERIAL_8N1, 4, 2, false); vėlavimas (3000); // Mostra informationção sobre o modem Serial.println (modemGSM.getModemInfo ()); // Inicializa o modem if (! ModemGSM.restart ()) {display.println ("Nepavyko iš naujo paleisti GSM modemo"); vėlavimas (10000); ESP.restart (); grįžti; } // Espera pela rede if (! ModemGSM.waitForNetwork ()) {display.println ("Nepavyko prisijungti prie tinklo"); vėlavimas (10000); ESP.restart (); grįžti; } // Conecta à rede gprs (APN, usuário, senha) if (! ModemGSM.gprsConnect ("", "", "")) {display.println ("GPRS ryšys nepavyko"); vėlavimas (10000); ESP.restart (); grįžti; } display.println ("Nustatyti GSM sėkmę"); }
17 žingsnis: „ConnectMQTTServer“
void connectMQTTServer () {display.println ("Prisijungimas prie MQTT serverio …"); // Se conecta ao device que definimos if (client.connect (DEVICE_ID, TOKEN, ""))) {// Se a conexão foi bem sucedida display.println ("Connected"); } else {// Žr. ocorreu algum erro display.print ("error ="); display.println (client.state ()); vėlavimas (10000); ESP.restart (); }}
18 žingsnis: ciklas
void loop () {// Faz a leitura da umidade e temperatura readDHT (); // Išskirkite serverio MQTT, jei (! 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 publisMQTT (); // Mostramos os dados no display showDataOnDisplay (); // Atualizamos o tempo em que foi feito o último envio lastTime = dabar; }}
19 žingsnis: skaitykite
void readDHT () {plūdė 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) {temperatūra = t; drėgmė = h; }}
20 žingsnis: PublishMQTT
void publicMQTT () {// Cria o json que iremos enviar serverio MQTT eilutė msg = createJsonString (); Serial.print ("Skelbti pranešimą:"); Serial.println (msg); // Publicamos no tópico int status = client.publish (TOPIC, msg.c_str ()); Serial.println ("Būsena:" + eilutė (būsena)); // Būsena 1 nuo sėkmės arba 0 sekundžių}
21 veiksmas: sukurkiteJsonString
Styginė createJsonString () {String data = "{"; if (! isnan (drėgmė) &&! isnan (temperatūra)) {data+= "\" drėgmė / ":"; duomenys+= eilutė (drėgmė, 2); duomenys+= ","; duomenys+= "\" temperatūra / ":"; duomenys+= eilutė (temperatūra, 2); } duomenys+= "}"; grąžinti duomenis; }
22 veiksmas: „ShowDataOnDisplay“
void showDataOnDisplay () {// Iš naujo nustatykite žymeklį ir padidinkite drėgmę ir temperatūrą. displayCursor (0, 0, 2); display.println ("Drėgmė:" + eilutė (drėgmė, 2)); display.println ("Temperatūra:" + eilutė (temperatūra, 2)); }
23 žingsnis: failai
Atsisiųskite failus
AŠ NE