Inhaltsverzeichnis:

IOT mit Mobilfunknetz mit ESP32 - Gunook
IOT mit Mobilfunknetz mit ESP32 - Gunook

Video: IOT mit Mobilfunknetz mit ESP32 - Gunook

Video: IOT mit Mobilfunknetz mit ESP32 - Gunook
Video: SIM800 Basics | Inbetriebnahme mit Arduino (Stand-Alone) und ESP32+SIM800 Board 2024, November
Anonim
Image
Image
Demonstration
Demonstration

Heute werden wir über das GPRS-Modem oder besser gesagt den ESP32 und seine Verwendung mit dem Mobilfunknetz diskutieren. Dies ist etwas, das sehr gut funktioniert. Über das MQTT-Protokoll senden wir dann Daten an das Ubidots-Dashboard. Verwenden Sie in dieser Baugruppe neben dem SIM800L und einem Handychip ein Display zur Rückmeldung der Schaltung. Bei diesem Projekt werden wir daher Temperatur- und Feuchtigkeitsdaten über GPRS und MQTT senden und die Daten in einem Liniendiagramm visualisieren.

Schritt 1: Demonstration

Schritt 2: Montage

Montage
Montage

Schritt 3: Montage - Tisch

Montagetisch
Montagetisch

Schritt 4: Ubidots

Ubidots
Ubidots

Schritt 5: SimpleDHT-Bibliothek

SimpleDHT-Bibliothek
SimpleDHT-Bibliothek

Gehen Sie in der Arduino-IDE zu Sketch-> Include Library-> Manage Libraries …

Installieren Sie SimpleDHT

Schritt 6: PubSubClient-Bibliothek

PubSubClient-Bibliothek
PubSubClient-Bibliothek

Gehen Sie in der Arduino IDE zu Sketch-> Include Library-> Manage Libraries …

PubSubClient installieren

Schritt 7: TinyGSM-Bibliothek

TinyGSM-Bibliothek
TinyGSM-Bibliothek

Gehen Sie in der Arduino-IDE zu Sketch-> Include Library-> Manage Libraries …

TinyGSM installieren

Schritt 8: TFT_eSPI-Bibliothek

TFT_eSPI-Bibliothek
TFT_eSPI-Bibliothek

Gehen Sie in der Arduino-IDE zu Sketch-> Include Library-> Manage Libraries …

TFT_eSPI installieren

Schritt 9: TFT_eSPI-Bibliothek

TFT_eSPI-Bibliothek
TFT_eSPI-Bibliothek

Ändern Sie die Anzeigestifte im lib-Ordner.

Das Anheften befindet sich in der Datei User_Setup.h in

C: / Benutzer / \ Dokumente / Arduino / Bibliotheken / TFT_eSPI

Ändern Sie diese Standardwerte in die folgenden Werte im Bild.

Schritt 10: Ubidots

Ubidots
Ubidots
Ubidots
Ubidots
Ubidots
Ubidots

Melden Sie sich mit Ihrem Konto bei Ubidots an und klicken Sie auf Geräte

Klicken Sie oben rechts auf die Schaltfläche "+"

Klicken Sie auf Leer

Geben Sie den Gerätenamen ein. Beachten Sie die "Gerätebezeichnung", da diese in dem "Thema" verwendet wird, das wir in.ino. verwenden werden

In der Geräteliste erscheint das soeben erstellte Gerät. Klick es an.

Klicken Sie auf dem angezeigten Bildschirm auf "Variable hinzufügen". Ein Popup wird angezeigt. Klicken Sie auf "Roh".

Klicken Sie auf das Textfeld und geben Sie den Namen der Eigenschaft ein.

Es muss genau das sein, was wir im JSON der.ino senden werden. Wiederholen Sie dies für die andere Eigenschaft.

Kehren Sie zum Dashboard zurück, indem Sie auf das Ubidots-Logo klicken.

Klicken Sie im Dashboard auf "Neues Widget hinzufügen"

Wählen Sie in der Liste der Widgets "Doppelachse"

Schritt 11: Ändern der Daten in.ino

Ändern der Daten in.ino
Ändern der Daten in.ino
Ändern der Daten in.ino
Ändern der Daten in.ino

Schritt 12: GPRS_ESP32_DHT.ino - Deklarationen und Variablen

GPRS_ESP32_DHT.ino - Deklarationen und Variablen
GPRS_ESP32_DHT.ino - Deklarationen und Variablen

#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 oder nome do dispositivo no Ubidots) #define TOPIC "/v1.6/devices/esp32_gprs" //id dispositiv que pegamos no painel do Ubidots #define DEVICE_ID "5c01234567890abc12345678" #define "MQTT-Server" mqtt://things.ubidots.com" //Porta padrão do MQTT #define MQTT_PORT 1883 //Pino onde está o DHT22 #define DHT_PIN 27

Schritt 13: Anheften

Anheften
Anheften

//Pinagem em User_Setup.h na Pasta da bibliotecaTFT_eSPI display = TFT_eSPI(); //Intervalo entre os envios e refresh da tela #define INTERVAL 10000 //Kanalserienque vamos usar para comunicarmos com o modem. Verwenden Sie semper 1 HardwareSerial SerialGSM(1); TinyGsm-ModemGSM(SerialGSM); TinyGsmClient gsmClient (modemGSM); //Client MQTT, passamos a URL-Do-Server, ein Porta //e o Client GSM PubSubClient client(MQTT_SERVER, MQTT_PORT, gsmClient); //Tempo em que o ultimo envio/refresh foi feito uint32_t lastTime = 0; Schwebefeuchtigkeit; //Variável onde iremos armazenar o valor da umidade Schwimmertemperatur; //Variável onde iremos armazenar oder valor da temperatura SimpleDHT22 dht; //Objeto que realizará a leitura da umidade e temperatura

Schritt 14: Einrichtung

Void setup () { Serial.begin (115200); setupDisplay(); //Inicialize e configura o display setupGSM(); //Inicialize 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); }

Schritt 15: SetupDisplay

Void setupDisplay () {display.init (); display.setRotation(1); display.fillScreen (TFT_BLUE); //Limpa oder Display mit Cor Azul display.setTextColor (TFT_WHITE, TFT_BLUE); //Coloca oder 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"); }

Schritt 16: SetupGSM

Void setupGSM () {display.println ("GSM einrichten …"); // Initialisierung einer seriellen Verbindung zum Modem SerialGSM.begin (9600, SERIAL_8N1, 4, 2, false); Verzögerung (3000); // Meiste Informationen über Modem Serial.println (modemGSM.getModemInfo ()); // Initialisierung des Modems if (!modemGSM.restart()) {display.println("Neustart des GSM-Modems fehlgeschlagen"); Verzögerung (10000); ESP.restart(); Rückkehr; } //Espera pela rede if (!modemGSM.waitForNetwork()) {display.println("Verbindung zum Netzwerk fehlgeschlagen"); Verzögerung (10000); ESP.restart(); Rückkehr; } //Conecta à rede gprs (APN, usuário, senha) if (!modemGSM.gprsConnect("", "", "")) { display.println("GPRS-Verbindung fehlgeschlagen"); Verzögerung (10000); ESP.restart(); Rückkehr; } display.println("GSM-Erfolg einrichten"); }

Schritt 17: ConnectMQTTServer

void connectMQTTServer() { display.println("Verbindung mit MQTT-Server…"); //Se conecta ao device que definimos if (client.connect(DEVICE_ID, TOKEN, "")) { //Sehen Sie eine Verbindung von der Suche nach display.println ("Connected"); aufrechtzuerhalten. Else {//Se ocorreu Algum erro display.print ("Fehler = "); display.println(client.state()); Verzögerung (10000); ESP.restart(); } }

Schritt 18: Schleife

Void Schleife () {//Faz eine Leitura von Umidade und Temperatur 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 oder intervallo de envio if(now - lastTime > INTERVAL) { //Publicamos para o server mqtt publishMQTT(); //Mostramos os dados keine Anzeige showDataOnDisplay(); //Atualizamos oder tempo em que foi feito oder último envio lastTime = now; } }

Schritt 19: ReadDHT

Void readDHT () { Float t, h; //Faz a leitura da umidade e temperature e apenas atualiza as variáveis se foi bem sucedido if (dht.read2(DHT_PIN, &t, &h, NULL) == SimpleDHTErrSuccess) { temperature = t; Feuchtigkeit = h; } }

Schritt 20: MQTT veröffentlichen

void publishMQTT () {//Cria oder json que iremos enviar para o server MQTT String msg = createJsonString (); Serial.print ("Nachricht veröffentlichen: "); Serial.println (msg); //Publicamos kein Thema int status = client.publish(TOPIC, msg.c_str()); Serial.println ("Status: " + String (status)); // Status 1 se sucesso oder 0 se deu erro }

Schritt 21: CreateJsonString

CreateJsonString
CreateJsonString

String createJsonString() { String data = "{"; if(!isnan(Luftfeuchtigkeit) && !isnan(Temperatur)) { data+="\"Luftfeuchtigkeit\":"; data+=String(Luftfeuchtigkeit, 2); Daten+=", "; data+="\"temperatur\":"; data+=String(Temperatur, 2); } Daten+="}"; Daten zurückgeben; }

Schritt 22: ShowDataOnDisplay

Void showDataOnDisplay () {// Zurücksetzen einer Position des Cursors und der Temperaturanzeige display.setCursor (0, 0, 2); display.println("Luftfeuchtigkeit: " + String(Luftfeuchtigkeit, 2)); display.println("Temperatur: " + String(temperatur, 2)); }

Schritt 23: Dateien

Laden Sie die Dateien herunter

INO

PDF

Empfohlen: