Indholdsfortegnelse:

IOT med mobilnetværk med ESP32: 23 trin
IOT med mobilnetværk med ESP32: 23 trin

Video: IOT med mobilnetværk med ESP32: 23 trin

Video: IOT med mobilnetværk med ESP32: 23 trin
Video: ESP32 #23: Current Consumption 2024, November
Anonim
Image
Image
Demonstration
Demonstration

I dag vil vi diskutere om GPRS -modemet, eller rettere, ESP32 og dets anvendelse med mobiltelefonnettet. Dette er noget, der fungerer meget godt. Ved hjælp af MQTT -protokollen sender vi derefter data til Ubidots dashboard. Brug i denne samling et display til feedback af kredsløbet ud over SIM800L og en mobiltelefonchip. Med dette projekt sender vi derfor temperatur- og fugtighedsdata via GPRS og MQTT og visualiserer dataene i et linjediagram.

Trin 1: Demonstration

Trin 2: Montering

montage
montage

Trin 3: Montering - tabel

Montering - Bord
Montering - Bord

Trin 4: Ubidots

Ubidots
Ubidots

Trin 5: SimpleDHT -bibliotek

SimpleDHT -bibliotek
SimpleDHT -bibliotek

I Arduino IDE skal du gå til Skitse-> Inkluder bibliotek-> Administrer biblioteker …

Installer SimpleDHT

Trin 6: PubSubClient -bibliotek

PubSubClient -bibliotek
PubSubClient -bibliotek

I Arduino IDE skal du gå til Skitse-> Inkluder bibliotek-> Administrer biblioteker …

Installer PubSubClient

Trin 7: TinyGSM -bibliotek

TinyGSM -bibliotek
TinyGSM -bibliotek

I Arduino IDE skal du gå til Skitse-> Inkluder bibliotek-> Administrer biblioteker …

Installer TinyGSM

Trin 8: TFT_eSPI -bibliotek

TFT_eSPI -bibliotek
TFT_eSPI -bibliotek

I Arduino IDE skal du gå til Skitse-> Inkluder bibliotek-> Administrer biblioteker …

Installer TFT_eSPI

Trin 9: TFT_eSPI -bibliotek

TFT_eSPI -bibliotek
TFT_eSPI -bibliotek

Skift visningsstifterne i lib -mappen.

Fastgørelsen er i filen User_Setup.h i

C: / Users / Documents / Arduino / libraries / TFT_eSPI

Skift disse standardværdier til følgende værdier i billedet.

Trin 10: Ubidots

Ubidots
Ubidots
Ubidots
Ubidots
Ubidots
Ubidots

Log ind på Ubidots med din konto, og klik på Enheder

Klik på knappen "+" i øverste højre hjørne

Klik på Blank

Indtast enhedsnavnet. Bemærk "enhedsmærket", da dette vil blive brugt i det "emne", som vi vil bruge i.ino

På listen over enheder vises den enhed, du lige har oprettet. Klik på den.

Klik på "Tilføj variabel" på den skærm, der vises. Der vises en popup. Klik på "Raw".

Klik på tekstfeltet, og indtast navnet på ejendommen.

Det skal være præcis det, vi sender i jsonen til.ino. Gentag dette for den anden ejendom.

Gå tilbage til instrumentbrættet ved at klikke på Ubidots -logoet.

Klik på "Tilføj ny widget" i instrumentbrættet

Vælg "Dobbeltakse" på listen over widgets

Trin 11: Ændring af data i.ino

Ændring af data i.ino
Ændring af data i.ino
Ændring af data i.ino
Ændring af data i.ino

Trin 12: GPRS_ESP32_DHT.ino - Deklarationer og variabler

GPRS_ESP32_DHT.ino - Deklarationer og variabler
GPRS_ESP32_DHT.ino - Deklarationer og variabler

#define TINY_GSM_MODEM_SIM800 // Tip til de modem que estamos usando #include #include #include #include #include // Token de usuário que pegamos no Ubidots #define TOKEN "BBFF-abcdefghijklmnopqrstuvwxyz0123" // Tos (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

Trin 13: Fastgørelse

Fastgørelse
Fastgørelse

// Pinagem em User_Setup.h på 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. Brug 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; flyde fugtighed; // Variável onde iremos armazenar o valor da umidade flyde temperatur; // Variável onde iremos armazenar o valor da temperatura SimpleDHT22 dht; // Objekto que realizará a leitura da umidade e temperatura

Trin 14: Opsætning

ugyldig opsætning () {Serial.begin (115200); setupDisplay (); // Inficial e konfigura o display setupGSM (); // Oprettelse af konfiguration af modem GSM -forbindelseMQTTServer (); // Conectamos ao mqtt server // Espera 2 segundos and limpamos o display delay (2000); display.fillScreen (TFT_BLUE); display.setCursor (0, 0); }

Trin 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"); }

Trin 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 ("Genstart af GSM -modem mislykkedes"); forsinkelse (10000); ESP.restart (); Vend tilbage; } // Espera pela rede if (! ModemGSM.waitForNetwork ()) {display.println ("Kan ikke oprette forbindelse til netværk"); forsinkelse (10000); ESP.restart (); Vend tilbage; } // Conecta à rede gprs (APN, usuário, senha) if (! ModemGSM.gprsConnect ("", "", "")) {display.println ("GPRS -forbindelse mislykkedes"); forsinkelse (10000); ESP.restart (); Vend tilbage; } display.println ("Opsætning af GSM -succes"); }

Trin 17: TilslutMQTTServer

void connectMQTTServer () {display.println ("Opretter forbindelse 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"); } andet {// Se ocorreu algum erro display.print ("fejl ="); display.println (client.state ()); forsinkelse (10000); ESP.restart (); }}

Trin 18: Sløjfe

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; }}

Trin 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; fugtighed = h; }}

Trin 20: PublishMQTT

void publishMQTT () {// Cria o json que iremos enviar para o server MQTT String msg = createJsonString (); Serial.print ("Udgiv besked:"); 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}

Trin 21: OpretJsonString

CreateJsonString
CreateJsonString

String createJsonString () {String data = "{"; hvis (! isnan (luftfugtighed) &&! isnan (temperatur)) {data+= "\" fugtighed / ":"; data+= streng (fugtighed, 2); data+= ","; data+= "\" temperatur / ":"; data+= streng (temperatur, 2); } data+= "}"; returnere data; }

Trin 22: ShowDataOnDisplay

void showDataOnDisplay () {// Reseta a posição do cursor and mostra umidade e temperatura lidas display.setCursor (0, 0, 2); display.println ("Fugtighed:" + streng (fugtighed, 2)); display.println ("Temperatur:" + streng (temperatur, 2)); }

Trin 23: Filer

Download filerne

INO

PDF

Anbefalede: