Innholdsfortegnelse:
- Trinn 1: Demonstrasjon
- Trinn 2: Montering
- Trinn 3: Montering - Tabell
- Trinn 4: Ubidots
- Trinn 5: SimpleDHT -bibliotek
- Trinn 6: PubSubClient Library
- Trinn 7: TinyGSM -bibliotek
- Trinn 8: TFT_eSPI -bibliotek
- Trinn 9: TFT_eSPI -bibliotek
- Trinn 10: Ubidots
- Trinn 11: Endre dataene i.ino
- Trinn 12: GPRS_ESP32_DHT.ino - Deklarasjoner og variabler
- Trinn 13: Festing
- Trinn 14: Oppsett
- Trinn 15: SetupDisplay
- Trinn 16: SetupGSM
- Trinn 17: ConnectMQTTServer
- Trinn 18: Sløyfe
- Trinn 19: ReadDHT
- Trinn 20: PubliserMQTT
- Trinn 21: CreateJsonString
- Trinn 22: ShowDataOnDisplay
- Trinn 23: Filer
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
I dag vil vi diskutere om GPRS -modemet, eller rettere sagt, ESP32 og bruken av det med mobiltelefonnettet. Dette er noe som fungerer veldig bra. Ved å bruke MQTT -protokollen sender vi deretter data til Ubidots dashbord. Bruk i denne enheten en skjerm for tilbakemelding på kretsen, i tillegg til SIM800L og en mobiltelefonbrikke. Med dette prosjektet vil vi derfor sende temperatur- og fuktighetsdata gjennom GPRS og MQTT, og visualisere dataene i et linjediagram.
Trinn 1: Demonstrasjon
Trinn 2: Montering
Trinn 3: Montering - Tabell
Trinn 4: Ubidots
Trinn 5: SimpleDHT -bibliotek
I Arduino IDE, gå til Skisse-> Inkluder bibliotek-> Administrer biblioteker …
Installer SimpleDHT
Trinn 6: PubSubClient Library
I Arduino IDE, gå til Skisse-> Inkluder bibliotek-> Administrer biblioteker …
Installer PubSubClient
Trinn 7: TinyGSM -bibliotek
I Arduino IDE, gå til Skisse-> Inkluder bibliotek-> Administrer biblioteker …
Installer TinyGSM
Trinn 8: TFT_eSPI -bibliotek
I Arduino IDE, gå til Skisse-> Inkluder bibliotek-> Administrer biblioteker …
Installer TFT_eSPI
Trinn 9: TFT_eSPI -bibliotek
Endre visningsnålene i lib -mappen.
Festingen ligger i filen User_Setup.h i
C: / Users / Documents / Arduino / libraries / TFT_eSPI
Endre disse standardene til følgende verdier i bildet.
Trinn 10: Ubidots
Logg deg på Ubidots med kontoen din og klikk på Enheter
Klikk på "+" - knappen i øvre høyre hjørne
Klikk på Tom
Skriv inn enhetsnavnet. Legg merke til "enhetsetiketten", da dette vil bli brukt i "emnet" som vi skal bruke i.ino
På listen over enheter vises enheten du nettopp har opprettet. Klikk på den.
Klikk på "Legg til variabel" på skjermen som vises. En popup vil dukke opp. Klikk på "Rå".
Klikk på tekstboksen, og skriv inn navnet på eiendommen.
Det må være akkurat det vi sender i jsonen til.ino. Gjenta dette for den andre eiendommen.
Gå tilbake til dashbordet ved å klikke på Ubidots -logoen.
Klikk på "Legg til ny widget" i oversikten.
Velg "Dobbel akse" i listen over widgets
Trinn 11: Endre dataene i.ino
Trinn 12: GPRS_ESP32_DHT.ino - Deklarasjoner og 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" // 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 #define DHT_PIN 27
Trinn 13: Festing
// 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. Bruk 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; flyte fuktighet; // Variável onde iremos armazenar o valor da umidade flytemperatur; // Variável onde iremos armazenar o valor da temperatura SimpleDHT22 dht; // Objekto que realizará a leitura da umidade e temperatura
Trinn 14: Oppsett
ugyldig oppsett () {Serial.begin (115200); setupDisplay (); // Innledende konfigurasjon av skjermoppsettGSM (); // Innledende konfigurasjon av modem GSM -tilkoblingMQTTServer (); // Conectamos ao mqtt server // Espera 2 segundos e limpamos o display delay (2000); display.fillScreen (TFT_BLUE); display.setCursor (0, 0); }
Trinn 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"); }
Trinn 16: SetupGSM
void setupGSM () {display.println ("Setup GSM …"); // Inicializamos a serial onde está o modem SerialGSM.begin (9600, SERIAL_8N1, 4, 2, false); forsinkelse (3000); // Mostra informação sobre o modem Serial.println (modemGSM.getModemInfo ()); // Inicializa o modem if (! ModemGSM.restart ()) {display.println ("Restarting GSM Modem failed"); forsinkelse (10000); ESP.start (); komme tilbake; } // Espera pela rede if (! ModemGSM.waitForNetwork ()) {display.println ("Kunne ikke koble til nettverk"); forsinkelse (10000); ESP.start (); komme tilbake; } // Conecta à rede gprs (APN, usuário, senha) if (! ModemGSM.gprsConnect ("", "", "")) {display.println ("GPRS -tilkobling mislyktes"); forsinkelse (10000); ESP.start (); komme tilbake; } display.println ("Oppsett av GSM -suksess"); }
Trinn 17: ConnectMQTTServer
void connectMQTTServer () {display.println ("Koble til MQTT -server …"); // Se conecta ao device que definimos if (client.connect (DEVICE_ID, TOKEN, "")) {// Se a conexão foi bem sucedida display.println ("Connected"); } annet {// Se ocorreu algum erro display.print ("feil ="); display.println (client.state ()); forsinkelse (10000); ESP.start (); }}
Trinn 18: Sløyfe
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 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; }}
Trinn 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; fuktighet = h; }}
Trinn 20: PubliserMQTT
void publishMQTT () {// Cria o json que iremos enviar para o server MQTT String msg = createJsonString (); Serial.print ("Publiser melding:"); Serial.println (msg); // Publicamos no tópico int status = client.publish (TOPIC, msg.c_str ()); Serial.println ("Status:" + streng (status)); // Status 1 er vellykket eller kan ikke vises}
Trinn 21: CreateJsonString
String createJsonString () {String data = "{"; if (! isnan (fuktighet) &&! isnan (temperatur)) {data+= "\" fuktighet / ":"; data+= streng (fuktighet, 2); data+= ","; data+= "\" temperatur / ":"; data+= streng (temperatur, 2); } data+= "}"; returnere data; }
Trinn 22: ShowDataOnDisplay
void showDataOnDisplay () {// Reseta a posição do cursor and mostra umidade and temperatura lidas display.setCursor (0, 0, 2); display.println ("Fuktighet:" + streng (fuktighet, 2)); display.println ("Temperatur:" + streng (temperatur, 2)); }
Trinn 23: Filer
Last ned filene
INO