INHOUDSOPGAWE:

IOT met mobiele netwerk met ESP32: 23 stappe
IOT met mobiele netwerk met ESP32: 23 stappe

Video: IOT met mobiele netwerk met ESP32: 23 stappe

Video: IOT met mobiele netwerk met ESP32: 23 stappe
Video: Exploring the Arduino Nano ESP32 | MicroPython & IoT Cloud 2024, Julie
Anonim
Image
Image
Demonstrasie
Demonstrasie

Vandag bespreek ons die GPRS -modem, of liewer, die ESP32 en die gebruik daarvan met die selfoonnetwerk. Dit is iets wat baie goed werk. Deur die MQTT -protokol te gebruik, stuur ons dan data na die Ubidots -dashboard. Gebruik in hierdie samestelling 'n skerm vir terugvoer van die stroombaan, benewens die SIM800L en 'n selfoonskyfie. Met hierdie projek sal ons dus temperatuur- en humiditeitsdata deur GPRS en MQTT stuur, en die data in 'n lyngrafiek visualiseer.

Stap 1: Demonstrasie

Stap 2: Montering

Vergadering
Vergadering

Stap 3: Samestelling - Tabel

Vergadering - Tabel
Vergadering - Tabel

Stap 4: Ubidots

Ubidots
Ubidots

Stap 5: SimpleDHT -biblioteek

SimpleDHT -biblioteek
SimpleDHT -biblioteek

Gaan in die Arduino IDE na Sketch-> Include Library-> Manage Libraries …

Installeer SimpleDHT

Stap 6: PubSubClient -biblioteek

PubSubClient -biblioteek
PubSubClient -biblioteek

Gaan in die Arduino IDE na Sketch-> Include Library-> Manage Libraries …

Installeer PubSubClient

Stap 7: TinyGSM -biblioteek

TinyGSM -biblioteek
TinyGSM -biblioteek

Gaan in die Arduino IDE na Skets-> Sluit biblioteek in-> Beheer biblioteke …

Installeer TinyGSM

Stap 8: TFT_eSPI -biblioteek

TFT_eSPI -biblioteek
TFT_eSPI -biblioteek

Gaan in die Arduino IDE na Skets-> Sluit biblioteek in-> Beheer biblioteke …

Installeer TFT_eSPI

Stap 9: TFT_eSPI -biblioteek

TFT_eSPI -biblioteek
TFT_eSPI -biblioteek

Verander die skermpenne in die lib -lêergids.

Die vasmaak is in die User_Setup.h -lêer in

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

Verander hierdie standaard na die volgende waardes in die prent.

Stap 10: Ubidots

Ubidots
Ubidots
Ubidots
Ubidots
Ubidots
Ubidots

Meld aan by Ubidots met u rekening en klik op toestelle

Klik op die "+" knoppie in die regter boonste hoek

Klik op Leeg

Voer die toestelnaam in. Let op die 'toesteletiket', aangesien dit gebruik sal word in die 'onderwerp' wat ons in.ino sal gebruik

In die lys toestelle verskyn die toestel wat u pas geskep het. Klik daarop.

Klik op die venster wat verskyn, op 'Voeg veranderlike by'. 'N Opspring verskyn. Klik op "Rou".

Klik op die tekskassie en voer die naam van die eiendom in.

Dit moet presies wees wat ons in die json van die.ino sal stuur. Herhaal dit vir die ander eiendom.

Gaan terug na die paneelbord deur op die Ubidots -logo te klik.

Klik in die paneelbord op "Voeg nuwe widget by"

Kies 'Dubbele as' in die lys met widgets

Stap 11: Verander die data in.ino

Verander die data in.ino
Verander die data in.ino
Verander die data in.ino
Verander die data in.ino

Stap 12: GPRS_ESP32_DHT.ino - Verklarings en veranderlikes

GPRS_ESP32_DHT.ino - Verklarings en veranderlikes
GPRS_ESP32_DHT.ino - Verklarings en veranderlikes

#define TINY_GSM_MODEM_SIM800 // Tipo de modem que estamos usando #include #include #include #include // include the 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 #definieer DHT_PIN 27

Stap 13: vasmaak

Speld vas
Speld vas

// Pinagem em user_Setup.h na pasta da bibliotecaTFT_eSPI display = TFT_eSPI (); // Intervalo entre os envios and refresh da tela #define INTERVAL 10000 // Canal serial que vamos usar para comunicarmos com or modem. Gebruik semper 1 HardwareSerial SerialGSM (1); TinyGsm -modem GSM (SerialGSM); TinyGsmClient gsmClient (modemGSM); // Kliënt MQTT, slaag na 'n URL -bediener, 'n portaal // e o kliënt van GSM PubSubClient -kliënt (MQTT_SERVER, MQTT_PORT, gsmClient); // Tempo em que o último envio/refresh foi feito uint32_t lastTime = 0; vlot humiditeit; // Variável onde iremos armazenar o valor da umidade float temperature; // Variëvel onde iremos armazenar o valor da temperatura SimpleDHT22 dht; // Ons kan realisties wees om die temperatuur en temperatuur te bereik

Stap 14: Opstel

ongeldige opstelling () {Serial.begin (115200); setupDisplay (); // Inisieer en konfigurasie van die opstel van GSM (); // Inisieer e konfigurasie van 'n modem GSM connectMQTTServer (); // Konnekteer oa mqtt -bediener // Espera 2 segundos e limpamos o display delay (2000); display.fillScreen (TFT_BLUE); display.setCursor (0, 0); }

Stap 15: SetupDisplay

leegte setupDisplay () {display.init (); display.setRotation (1); display.fillScreen (TFT_BLUE); // Daar is 'n weergawe met 'n azul -display.setTextColor (TFT_WHITE, TFT_BLUE); // Tekst soos 'n branco com fundo azul display.setTextWrap (waar, waar); // Ativa quebra de linha display.setTextSize (1); display.setCursor (0, 0, 2); // Posxção x, y e fonte do texto display.println ("Setup Display Complete"); }

Stap 16: SetupGSM

ongeldig setupGSM () {display.println ("GSM opstel …"); // Inisialisasie van 'n reekse wat 'n modem kan opstel SerialGSM.begin (9600, SERIAL_8N1, 4, 2, false); vertraging (3000); // Mostra informação sobre of modem Serial.println (modemGSM.getModemInfo ()); // Oorsig van modem as (! ModemGSM.restart ()) {display.println ("Herbegin van GSM -modem misluk"); vertraging (10000); ESP.start (); terugkeer; } // Espera pela rede if (! ModemGSM.waitForNetwork ()) {display.println ("Kon nie aan netwerk koppel nie"); vertraging (10000); ESP.start (); terugkeer; } // Conecta à rede gprs (APN, usuário, senha) if (! ModemGSM.gprsConnect ("", "", "")) {display.println ("GPRS -verbinding misluk"); vertraging (10000); ESP.start (); terugkeer; } display.println ("Opstel van GSM -sukses"); }

Stap 17: VerbindMQTTServer

void connectMQTTServer () {display.println ("Koppel aan MQTT -bediener …"); // Ons kan ook die toestel definieer as (client.connect (DEVICE_ID, TOKEN, "")) {// Sien 'n koneksão foi bem sucedida display.println ("Connected"); } anders {// Sien ocorreu algum erro display.print ("error ="); display.println (client.state ()); vertraging (10000); ESP.start (); }}

Stap 18: Lus

void loop () {// Faz a leitura da umidade e temperatuura readDHT (); // Skakel die bediener MQTT af as (! Client.connected ()) {// Mandamos conectar connectMQTTServer (); } // Tempo decorrido desde o boot em milissegundos unsigned long now = millis (); // Sien die intervall van die envio as (nou - laaste tyd> INTERVAL) {// Publieke verslae vir die bediener mqtt publishMQTT (); // Mostramos os dados no display showDataOnDisplay (); // Atualizamos o tempo em que foi feito o último envio lastTime = now; }}

Stap 19: ReadDHT

leegte leesDHT () {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; humiditeit = h; }}

Stap 20: PubliseerMQTT

void publishMQTT () {// Cria o json que iremos enviar para o server MQTT String msg = createJsonString (); Serial.print ("Publiseer boodskap:"); Serial.println (boodskap); // Publicamos no tópico int status = client.publish (TOPIC, msg.c_str ()); Serial.println ("Status:" + string (status)); // Status 1 is suksesvol

Stap 21: CreateJsonString

CreateJsonString
CreateJsonString

String createJsonString () {String data = "{"; as (! isnan (humiditeit) &&! isnan (temperatuur)) {data+= "\" humiditeit / ":"; data+= String (humiditeit, 2); data+= ","; data+= "\" temperatuur / ":"; data+= String (temperatuur, 2); } data+= "}"; data terugstuur; }

Stap 22: ShowDataOnDisplay

void showDataOnDisplay () {// Reseta a posição do cursor e mostra umidade and temperatura lidas display.setCursor (0, 0, 2); display.println ("Humidity:" + String (humiditeit, 2)); display.println ("Temperatuur:" + String (temperatuur, 2)); }

Stap 23: lêers

Laai die lêers af

EK NEE

PDF

Aanbeveel: