Inhoudsopgave:
- Stap 1: Demonstratie
- Stap 2: Montage
- Stap 3: Montage - Tafel
- Stap 4: Ubidots
- Stap 5: SimpleDHT-bibliotheek
- Stap 6: PubSubClient-bibliotheek
- Stap 7: TinyGSM-bibliotheek
- Stap 8: TFT_eSPI-bibliotheek
- Stap 9: TFT_eSPI-bibliotheek
- Stap 10: Ubidots
- Stap 11: De gegevens wijzigen in.ino
- Stap 12: GPRS_ESP32_DHT.ino - Declaraties en variabelen
- Stap 13: Vastzetten
- Stap 14: Instellen
- Stap 15: Display instellen
- Stap 16: GSM instellen
- Stap 17: ConnectMQTTServer
- Stap 18: Loop
- Stap 19: LeesDHT
- Stap 20: PublishMQTT
- Stap 21: CreateJsonString
- Stap 22: ShowDataOnDisplay
- Stap 23: Bestanden
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
Vandaag zullen we het hebben over de GPRS-modem, of beter gezegd, de ESP32 en het gebruik ervan met het mobiele telefoonnetwerk. Dit is iets dat heel goed werkt. Met behulp van het MQTT-protocol sturen we vervolgens gegevens naar het Ubidots-dashboard. Gebruik in deze assembly een display voor feedback van het circuit, naast de SIM800L en een mobiele telefoonchip. Met dit project zullen we daarom temperatuur- en vochtigheidsgegevens via GPRS en MQTT verzenden en de gegevens visualiseren in een lijndiagram.
Stap 1: Demonstratie
Stap 2: Montage
Stap 3: Montage - Tafel
Stap 4: Ubidots
Stap 5: SimpleDHT-bibliotheek
Ga in de Arduino IDE naar Sketch-> Include Library-> Manage Libraries …
Installeer SimpleDHT
Stap 6: PubSubClient-bibliotheek
Ga in de Arduino IDE naar Sketch-> Include Library-> Manage Libraries …
Installeer PubSubClient
Stap 7: TinyGSM-bibliotheek
Ga in de Arduino IDE naar Sketch-> Include Library-> Manage Libraries …
Installeer TinyGSM
Stap 8: TFT_eSPI-bibliotheek
Ga in de Arduino IDE naar Sketch-> Include Library-> Manage Libraries …
Installeer TFT_eSPI
Stap 9: TFT_eSPI-bibliotheek
Wijzig de weergavepinnen in de lib-map.
Het vastzetten bevindt zich in het User_Setup.h-bestand in
C: / Users / \ Documents / Arduino / libraries / TFT_eSPI
Wijzig deze standaardwaarden in de volgende waarden in de afbeelding.
Stap 10: Ubidots
Log in op Ubidots met uw account en klik op Apparaten
Klik op de "+" knop in de rechterbovenhoek
Klik op Leeg
Voer de apparaatnaam in. Let op het "apparaatlabel", aangezien dit zal worden gebruikt in het "onderwerp" dat we zullen gebruiken in.ino
In de lijst met apparaten verschijnt het apparaat dat u zojuist hebt gemaakt. Klik erop.
Klik op het scherm dat verschijnt op 'Variabele toevoegen'. Er verschijnt een pop-up. Klik op "Rauw".
Klik op het tekstvak en voer de naam van de eigenschap in.
Het moet precies zijn wat we in de json van de.ino zullen sturen. Herhaal dit voor de andere eigenschap.
Ga terug naar het dashboard door op het Ubidots-logo te klikken.
Klik in het dashboard op "Nieuwe widget toevoegen"
Kies in de lijst met widgets "Dubbele as"
Stap 11: De gegevens wijzigen in.ino
Stap 12: GPRS_ESP32_DHT.ino - Declaraties en variabelen
#define TINY_GSM_MODEM_SIM800 //Gebruiksmodem #include #include #include #include #include //Token de usuário que pegamos no Ubidots #define TOKEN "BBFF-abcdefghijklmnopqrstuvwxyz0123" //define TINY_GSM_MODEM_SIM800 (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" //URLdefine MTTVER_SERL define MTTQ_SERL define MTTQ_SERL mqtt://things.ubidots.com" //Porta padrão do MQTT #define MQTT_PORT 1883 //Pino onde está o DHT22 #define DHT_PIN 27
Stap 13: Vastzetten
//Pinagem em User_Setup.h na pasta da bibliotecaTFT_eSPI display = TFT_eSPI(); //Interval entre os envios e refresh da tela #define INTERVAL 10000 //Canal serial que vamos usar para comunicarmos com o modem. Gebruik semper 1 HardwareSerial SerialGSM(1); TinyGsm-modemGSM (SerialGSM); TinyGsmClient gsmClient(modemGSM); // Client MQTT, passamos een url do-server, een 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; vlotter vochtigheid; //Variável onde iremos armazenar o valor da umidade float-temperatuur; //Variável onde iremos armazenar of valor da temperatura SimpleDHT22 dht; //Objeto que realizará a leitura da umidade e temperatura
Stap 14: Instellen
void setup() { Serial.begin(115200); setupDisplay(); //Inicializa e configura o display setupGSM(); //Initialiseren en configureren van modem GSM connectMQTTServer(); //Conectamos oa mqtt-server // Espera 2 segundos en limpamos o weergavevertraging (2000); display.fillScreen(TFT_BLUE); display.setCursor(0, 0); }
Stap 15: Display instellen
void setupDisplay(){ display.init(); display.setRotatie(1); display.fillScreen(TFT_BLUE); //Limpa of display com a cor azul display.setTextColor (TFT_WHITE, TFT_BLUE); //Coloca of 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"); }
Stap 16: GSM instellen
void setupGSM(){ display.println("Setup GSM…"); //Inicializamos a serial onde está o modem SerialGSM.begin (9600, SERIAL_8N1, 4, 2, false); vertraging (3000); //Mostra informação sobre o modem Serial.println(modemGSM.getModemInfo()); //Inicializa o modem if (!modemGSM.restart()) { display.println ("Herstarten van GSM-modem mislukt"); vertraging (10000); ESP.herstart(); opbrengst; } //Espera pela rede if (!modemGSM.waitForNetwork()) { display.println("Kan geen verbinding maken met netwerk"); vertraging (10000); ESP.herstart(); opbrengst; } //Conecta à rede gprs (APN, usuário, senha) if (!modemGSM.gprsConnect("", "", "")) { display.println("GPRS-verbinding mislukt"); vertraging (10000); ESP.herstart(); opbrengst; } display.println("Setup GSM succesvol"); }
Stap 17: ConnectMQTTServer
void connectMQTTServer() { display.println("Verbinding maken met MQTT Server…"); //Se conecta oa device que definimos if (client.connect(DEVICE_ID, TOKEN, "")) { //Se a conexão foi bem sucedida display.println("Connected"); } else { //Se ocorreu algum erro display.print("error = "); display.println(klant.staat()); vertraging (10000); ESP.herstart(); } }
Stap 18: Loop
void loop() {//Faz a leitura da umidade e temperatura readDHT(); //Se desconectou doen server MQTT if (!client.connected()) { //Mandamos sluit aan op connectMQTTServer(); } //Tempo decorrido desde o boot em milissegundos unsigned long now = millis(); //Se passou o intervalo de envio if (nu - lastTime > INTERVAL) {//Publicamos para o server mqtt publishMQTT(); //Mostramos zonder weergave showDataOnDisplay(); //Atualizamos o tempo em que foi feito o último envio lastTime = nu; } }
Stap 19: LeesDHT
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) { temperatuur = t; vochtigheid = uur; } }
Stap 20: PublishMQTT
void publishMQTT() {//Cria o json que iremos enviar para o server MQTT String msg = createJsonString(); Serial.print("Publiceer bericht: "); Serial.println(msg); //Publicamos no tópico int status = client.publish (TOPIC, msg.c_str()); Serial.println ("Status: " + String (status));//Status 1 volgt op 0 volgende fout }
Stap 21: CreateJsonString
String createJsonString() { String data = "{"; if(!isnan(vochtigheid) && !isnan(temperatuur)) { data+="\"vochtigheid\":"; data+=String(vochtigheid, 2); gegevens+=", "; data+="\"temperatuur\":"; data+=String(temperatuur, 2); } gegevens+="}"; gegevens retourneren; }
Stap 22: ShowDataOnDisplay
void showDataOnDisplay () {// Reset een positie van de cursor en de meeste temperatuur en lidas display.setCursor (0, 0, 2); display.println ("Vochtigheid: " + String (vochtigheid, 2)); display.println ("Temperatuur: " + String (temperatuur, 2)); }
Stap 23: Bestanden
Download de bestanden
INO