Innehållsförteckning:

IOT med mobilnätverk med ESP32: 23 steg
IOT med mobilnätverk med ESP32: 23 steg

Video: IOT med mobilnätverk med ESP32: 23 steg

Video: IOT med mobilnätverk med ESP32: 23 steg
Video: 15 Brilliant IoT Projects for Beginners in 2023! 2024, Juli
Anonim
Image
Image
Demonstration
Demonstration

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

hopsättning
hopsättning

Steg 3: Montering - Tabell

Montering - Bord
Montering - Bord

Steg 4: Ubidots

Ubidots
Ubidots

Steg 5: SimpleDHT -bibliotek

SimpleDHT -bibliotek
SimpleDHT -bibliotek

I Arduino IDE, gå till Sketch-> Inkludera bibliotek-> Hantera bibliotek …

Installera SimpleDHT

Steg 6: PubSubClient -bibliotek

PubSubClient Library
PubSubClient Library

I Arduino IDE, gå till Sketch-> Inkludera bibliotek-> Hantera bibliotek …

Installera PubSubClient

Steg 7: TinyGSM -bibliotek

TinyGSM -bibliotek
TinyGSM -bibliotek

I Arduino IDE, gå till Sketch-> Inkludera bibliotek-> Hantera bibliotek …

Installera TinyGSM

Steg 8: TFT_eSPI -bibliotek

TFT_eSPI -bibliotek
TFT_eSPI -bibliotek

I Arduino IDE, gå till Sketch-> Inkludera bibliotek-> Hantera bibliotek …

Installera TFT_eSPI

Steg 9: TFT_eSPI -bibliotek

TFT_eSPI -bibliotek
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

Ubidots
Ubidots
Ubidots
Ubidots
Ubidots
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

Ändra data i.ino
Ändra data i.ino
Ändra data i.ino
Ändra data i.ino

Steg 12: GPRS_ESP32_DHT.ino - Deklarationer och variabler

GPRS_ESP32_DHT.ino - Deklarationer och variabler
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

Fästning
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

CreateJsonString
CreateJsonString

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

PDF

Rekommenderad: