Innehållsförteckning:
- Steg 1: Demonstration
- Steg 2: Montering
- Steg 3: Montering - Tabell
- Steg 4: Ubidots
- Steg 5: SimpleDHT -bibliotek
- Steg 6: PubSubClient -bibliotek
- Steg 7: TinyGSM -bibliotek
- Steg 8: TFT_eSPI -bibliotek
- Steg 9: TFT_eSPI -bibliotek
- Steg 10: Ubidots
- Steg 11: Ändra data i.ino
- Steg 12: GPRS_ESP32_DHT.ino - Deklarationer och variabler
- Steg 13: Fästning
- Steg 14: Inställning
- Steg 15: SetupDisplay
- Steg 16: SetupGSM
- Steg 17: ConnectMQTTServer
- Steg 18: Loop
- Steg 19: ReadDHT
- Steg 20: PubliceraMQTT
- Steg 21: SkapaJsonString
- Steg 22: ShowDataOnDisplay
- Steg 23: Filer
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-13 06:58
Idag kommer vi att diskutera om GPRS -modemet, eller snarare, ESP32 och dess användning med mobiltelefonnätet. Detta är något som fungerar mycket bra. Med hjälp av MQTT -protokollet skickar vi sedan data till Ubidots instrumentpanel. Använd i denna enhet en display för återkoppling av kretsen, förutom SIM800L och ett mobiltelefonchip. Med detta projekt kommer vi därför att skicka temperatur- och fuktdata via GPRS och MQTT och visualisera data i ett linjediagram.
Steg 1: Demonstration
Steg 2: Montering
Steg 3: Montering - Tabell
Steg 4: Ubidots
Steg 5: SimpleDHT -bibliotek
I Arduino IDE, gå till Sketch-> Inkludera bibliotek-> Hantera bibliotek …
Installera SimpleDHT
Steg 6: PubSubClient -bibliotek
I Arduino IDE, gå till Sketch-> Inkludera bibliotek-> Hantera bibliotek …
Installera PubSubClient
Steg 7: TinyGSM -bibliotek
I Arduino IDE, gå till Sketch-> Inkludera bibliotek-> Hantera bibliotek …
Installera TinyGSM
Steg 8: TFT_eSPI -bibliotek
I Arduino IDE, gå till Sketch-> Inkludera bibliotek-> Hantera bibliotek …
Installera TFT_eSPI
Steg 9: TFT_eSPI -bibliotek
Ändra visningsstiftet i lib -mappen.
Fästningen finns i filen User_Setup.h i
C: / Users / \ Documents / Arduino / libraries / TFT_eSPI
Ändra dessa standardvärden till följande värden i bilden.
Steg 10: Ubidots
Logga in på Ubidots med ditt konto och klicka på Enheter
Klicka på knappen "+" i det övre högra hörnet
Klicka på Tom
Ange enhetsnamnet. Notera "enhetsetiketten", eftersom den kommer att användas i "ämnet" som vi kommer att använda i.ino
I listan över enheter visas den enhet du just skapade. Klicka på det.
Klicka på "Lägg till variabel" på skärmen som visas. En popup visas. Klicka på "Raw".
Klicka på textrutan och ange egenskapens namn.
Det måste vara precis vad vi kommer att skicka i json av.ino. Upprepa detta för den andra fastigheten.
Gå tillbaka till instrumentpanelen genom att klicka på Ubidots -logotypen.
Klicka på "Lägg till ny widget" i instrumentpanelen.
I listan över widgets väljer du "Dubbel axel"
Steg 11: Ändra data i.ino
Steg 12: GPRS_ESP32_DHT.ino - Deklarationer och variabler
#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-abcdefghijklmnopqrstuvwxyz0123" (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 #define DHT_PIN 27
Steg 13: Fästning
// Pinagem em User_Setup.h na 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. Använd semper 1 HardwareSerial SerialGSM (1); TinyGsm -modemGSM (SerialGSM); TinyGsmClient gsmClient (modemGSM); // Cliente MQTT, passamos a url do server, a porta // e o cliente GSM PubSubClient client (MQTT_SERVER, MQTT_PORT, gsmClient); // Tempo em que o último envio/refresh foi feito uint32_t lastTime = 0; flytande luftfuktighet; // Variável onde iremos armazenar o valor da umidade float temperature; // Variável onde iremos armazenar o valor da temperatura SimpleDHT22 dht; // Objekto que realizará a leitura da umidade e temperatura
Steg 14: Inställning
void setup () {Serial.begin (115200); setupDisplay (); // Inicializa e configura o display setupGSM (); // Inicializa e configura o modem GSM connectMQTTServer (); // Conectamos ao mqtt server // Espera 2 segundos e limpamos o display delay (2000); display.fillScreen (TFT_BLUE); display.setCursor (0, 0); }
Steg 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 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"); }
Steg 16: SetupGSM
void setupGSM () {display.println ("Setup GSM …"); // Inicializamos a serial onde está o modem SerialGSM.begin (9600, SERIAL_8N1, 4, 2, false); fördröjning (3000); // Mostra informação sobre o modem Serial.println (modemGSM.getModemInfo ()); // Initiativ av modem om (! ModemGSM.restart ()) {display.println ("Omstart av GSM -modem misslyckades"); fördröjning (10000); ESP.start (); lämna tillbaka; } // Espera pela rede if (! ModemGSM.waitForNetwork ()) {display.println ("Det gick inte att ansluta till nätverket"); fördröjning (10000); ESP.start (); lämna tillbaka; } // Conecta à rede gprs (APN, usuário, senha) if (! ModemGSM.gprsConnect ("", "", "")) {display.println ("GPRS -anslutning misslyckades"); fördröjning (10000); ESP.start (); lämna tillbaka; } display.println ("Konfiguration av GSM -framgång"); }
Steg 17: ConnectMQTTServer
void connectMQTTServer () {display.println ("Ansluter till MQTT -server …"); // Se conecta ao device que definimos if (client.connect (DEVICE_ID, TOKEN, "")) {// Se a conexão foi bem sucedida display.println ("Connected"); } annat {// Se ocorreu algum erro display.print ("error ="); display.println (client.state ()); fördröjning (10000); ESP.start (); }}
Steg 18: Loop
void loop () {// Faz a leitura da umidade e temperatura readDHT (); // Se desconectouou 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 publishMQTT (); // Mostramos os dados no display showDataOnDisplay (); // Atualizamos o tempo em que foi feito o último envio lastTime = now; }}
Steg 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; luftfuktighet = h; }}
Steg 20: PubliceraMQTT
void publishMQTT () {// Cria o json que iremos enviar para o server MQTT String msg = createJsonString (); Serial.print ("Publicera meddelande:"); Serial.println (msg); // Publicamos no tópico int status = client.publish (TOPIC, msg.c_str ()); Serial.println ("Status:" + String (status)); // Status 1 se sucesso ou 0 se deu erro}
Steg 21: SkapaJsonString
String createJsonString () {String data = "{"; om (! isnan (fuktighet) &&! isnan (temperatur)) {data+= "\" fuktighet ":"; data+= Sträng (fuktighet, 2); data+= ","; data+= "\" temperatur / ":"; data+= Sträng (temperatur, 2); } data+= "}"; returnera data; }
Steg 22: ShowDataOnDisplay
void showDataOnDisplay () {// Reseta a posição do cursor e mostra umidade e temperatura lidas display.setCursor (0, 0, 2); display.println ("Luftfuktighet:" + Sträng (fuktighet, 2)); display.println ("Temperatur:" + Sträng (temperatur, 2)); }
Steg 23: Filer
Ladda ner filerna
INO