INHOUDSOPGAWE:
- Stap 1: Demonstrasie
- Stap 2: Montering
- Stap 3: Samestelling - Tabel
- Stap 4: Ubidots
- Stap 5: SimpleDHT -biblioteek
- Stap 6: PubSubClient -biblioteek
- Stap 7: TinyGSM -biblioteek
- Stap 8: TFT_eSPI -biblioteek
- Stap 9: TFT_eSPI -biblioteek
- Stap 10: Ubidots
- Stap 11: Verander die data in.ino
- Stap 12: GPRS_ESP32_DHT.ino - Verklarings en veranderlikes
- Stap 13: vasmaak
- Stap 14: Opstel
- Stap 15: SetupDisplay
- Stap 16: SetupGSM
- Stap 17: VerbindMQTTServer
- Stap 18: Lus
- Stap 19: ReadDHT
- Stap 20: PubliseerMQTT
- Stap 21: CreateJsonString
- Stap 22: ShowDataOnDisplay
- Stap 23: lêers
2025 Outeur: John Day | [email protected]. Laas verander: 2025-01-13 06:56
Vandag bespreek ons die GPRS -modem, of liewer, die ESP32 en die gebruik daarvan met die selfoonnetwerk. Dit is iets wat baie goed werk. Deur die MQTT -protokol te gebruik, stuur ons dan data na die Ubidots -dashboard. Gebruik in hierdie samestelling 'n skerm vir terugvoer van die stroombaan, benewens die SIM800L en 'n selfoonskyfie. Met hierdie projek sal ons dus temperatuur- en humiditeitsdata deur GPRS en MQTT stuur, en die data in 'n lyngrafiek visualiseer.
Stap 1: Demonstrasie
Stap 2: Montering
Stap 3: Samestelling - Tabel
Stap 4: Ubidots
Stap 5: SimpleDHT -biblioteek
Gaan in die Arduino IDE na Sketch-> Include Library-> Manage Libraries …
Installeer SimpleDHT
Stap 6: PubSubClient -biblioteek
Gaan in die Arduino IDE na Sketch-> Include Library-> Manage Libraries …
Installeer PubSubClient
Stap 7: TinyGSM -biblioteek
Gaan in die Arduino IDE na Skets-> Sluit biblioteek in-> Beheer biblioteke …
Installeer TinyGSM
Stap 8: TFT_eSPI -biblioteek
Gaan in die Arduino IDE na Skets-> Sluit biblioteek in-> Beheer biblioteke …
Installeer TFT_eSPI
Stap 9: TFT_eSPI -biblioteek
Verander die skermpenne in die lib -lêergids.
Die vasmaak is in die User_Setup.h -lêer in
C: / Users / Documents / Arduino / libraries / TFT_eSPI
Verander hierdie standaard na die volgende waardes in die prent.
Stap 10: Ubidots
Meld aan by Ubidots met u rekening en klik op toestelle
Klik op die "+" knoppie in die regter boonste hoek
Klik op Leeg
Voer die toestelnaam in. Let op die 'toesteletiket', aangesien dit gebruik sal word in die 'onderwerp' wat ons in.ino sal gebruik
In die lys toestelle verskyn die toestel wat u pas geskep het. Klik daarop.
Klik op die venster wat verskyn, op 'Voeg veranderlike by'. 'N Opspring verskyn. Klik op "Rou".
Klik op die tekskassie en voer die naam van die eiendom in.
Dit moet presies wees wat ons in die json van die.ino sal stuur. Herhaal dit vir die ander eiendom.
Gaan terug na die paneelbord deur op die Ubidots -logo te klik.
Klik in die paneelbord op "Voeg nuwe widget by"
Kies 'Dubbele as' in die lys met widgets
Stap 11: Verander die data in.ino
Stap 12: GPRS_ESP32_DHT.ino - Verklarings en veranderlikes
#define TINY_GSM_MODEM_SIM800 // Tipo de modem que estamos usando #include #include #include #include // include the usuário que pegamos no Ubidots #define TOKEN "BBFF-abcdefghijklmnopqrstuvwxyz0123" // Tosco (esp32_gprs é o nome do dispositivo no Ubidots) #define TOPIC "/v1.6/devices/esp32_gprs" // id do dispositivo que pegamos no painel do Ubidots #define DEVICE_ID "5c01234567890abc12345678" // URL do MQTT Server # mqtt: //things.ubidots.com "// Porta padrão do MQTT #define MQTT_PORT 1883 // Pino onde está o DHT22 #definieer DHT_PIN 27
Stap 13: vasmaak
// Pinagem em user_Setup.h na pasta da bibliotecaTFT_eSPI display = TFT_eSPI (); // Intervalo entre os envios and refresh da tela #define INTERVAL 10000 // Canal serial que vamos usar para comunicarmos com or modem. Gebruik semper 1 HardwareSerial SerialGSM (1); TinyGsm -modem GSM (SerialGSM); TinyGsmClient gsmClient (modemGSM); // Kliënt MQTT, slaag na 'n URL -bediener, 'n portaal // e o kliënt van GSM PubSubClient -kliënt (MQTT_SERVER, MQTT_PORT, gsmClient); // Tempo em que o último envio/refresh foi feito uint32_t lastTime = 0; vlot humiditeit; // Variável onde iremos armazenar o valor da umidade float temperature; // Variëvel onde iremos armazenar o valor da temperatura SimpleDHT22 dht; // Ons kan realisties wees om die temperatuur en temperatuur te bereik
Stap 14: Opstel
ongeldige opstelling () {Serial.begin (115200); setupDisplay (); // Inisieer en konfigurasie van die opstel van GSM (); // Inisieer e konfigurasie van 'n modem GSM connectMQTTServer (); // Konnekteer oa mqtt -bediener // Espera 2 segundos e limpamos o display delay (2000); display.fillScreen (TFT_BLUE); display.setCursor (0, 0); }
Stap 15: SetupDisplay
leegte setupDisplay () {display.init (); display.setRotation (1); display.fillScreen (TFT_BLUE); // Daar is 'n weergawe met 'n azul -display.setTextColor (TFT_WHITE, TFT_BLUE); // Tekst soos 'n branco com fundo azul display.setTextWrap (waar, waar); // Ativa quebra de linha display.setTextSize (1); display.setCursor (0, 0, 2); // Posxção x, y e fonte do texto display.println ("Setup Display Complete"); }
Stap 16: SetupGSM
ongeldig setupGSM () {display.println ("GSM opstel …"); // Inisialisasie van 'n reekse wat 'n modem kan opstel SerialGSM.begin (9600, SERIAL_8N1, 4, 2, false); vertraging (3000); // Mostra informação sobre of modem Serial.println (modemGSM.getModemInfo ()); // Oorsig van modem as (! ModemGSM.restart ()) {display.println ("Herbegin van GSM -modem misluk"); vertraging (10000); ESP.start (); terugkeer; } // Espera pela rede if (! ModemGSM.waitForNetwork ()) {display.println ("Kon nie aan netwerk koppel nie"); vertraging (10000); ESP.start (); terugkeer; } // Conecta à rede gprs (APN, usuário, senha) if (! ModemGSM.gprsConnect ("", "", "")) {display.println ("GPRS -verbinding misluk"); vertraging (10000); ESP.start (); terugkeer; } display.println ("Opstel van GSM -sukses"); }
Stap 17: VerbindMQTTServer
void connectMQTTServer () {display.println ("Koppel aan MQTT -bediener …"); // Ons kan ook die toestel definieer as (client.connect (DEVICE_ID, TOKEN, "")) {// Sien 'n koneksão foi bem sucedida display.println ("Connected"); } anders {// Sien ocorreu algum erro display.print ("error ="); display.println (client.state ()); vertraging (10000); ESP.start (); }}
Stap 18: Lus
void loop () {// Faz a leitura da umidade e temperatuura readDHT (); // Skakel die bediener MQTT af as (! Client.connected ()) {// Mandamos conectar connectMQTTServer (); } // Tempo decorrido desde o boot em milissegundos unsigned long now = millis (); // Sien die intervall van die envio as (nou - laaste tyd> INTERVAL) {// Publieke verslae vir die bediener mqtt publishMQTT (); // Mostramos os dados no display showDataOnDisplay (); // Atualizamos o tempo em que foi feito o último envio lastTime = now; }}
Stap 19: ReadDHT
leegte leesDHT () {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; humiditeit = h; }}
Stap 20: PubliseerMQTT
void publishMQTT () {// Cria o json que iremos enviar para o server MQTT String msg = createJsonString (); Serial.print ("Publiseer boodskap:"); Serial.println (boodskap); // Publicamos no tópico int status = client.publish (TOPIC, msg.c_str ()); Serial.println ("Status:" + string (status)); // Status 1 is suksesvol
Stap 21: CreateJsonString
String createJsonString () {String data = "{"; as (! isnan (humiditeit) &&! isnan (temperatuur)) {data+= "\" humiditeit / ":"; data+= String (humiditeit, 2); data+= ","; data+= "\" temperatuur / ":"; data+= String (temperatuur, 2); } data+= "}"; data terugstuur; }
Stap 22: ShowDataOnDisplay
void showDataOnDisplay () {// Reseta a posição do cursor e mostra umidade and temperatura lidas display.setCursor (0, 0, 2); display.println ("Humidity:" + String (humiditeit, 2)); display.println ("Temperatuur:" + String (temperatuur, 2)); }
Stap 23: lêers
Laai die lêers af
EK NEE