Taula de continguts:

IOT amb xarxa cel·lular amb ESP32: 23 passos
IOT amb xarxa cel·lular amb ESP32: 23 passos

Vídeo: IOT amb xarxa cel·lular amb ESP32: 23 passos

Vídeo: IOT amb xarxa cel·lular amb ESP32: 23 passos
Vídeo: ALEXA ECHO DOT 4ta Generación |Configurando Alexa por primera vez 2024, Juliol
Anonim
Image
Image
Demostració
Demostració

Avui parlarem sobre el mòdem GPRS, o millor dit, l’ESP32 i el seu ús amb la xarxa de telefonia cel·lular. Això funciona molt bé. Mitjançant el protocol MQTT, enviarem dades al tauler d’Ubidots. Utilitzeu en aquest muntatge una pantalla per retroalimentar el circuit, a més del SIM800L i un xip de mòbil. Per tant, amb aquest projecte, enviarem dades de temperatura i humitat a través de GPRS i MQTT i les visualitzarem en un gràfic de línies.

Pas 1: demostració

Pas 2: Muntatge

muntatge
muntatge

Pas 3: Muntatge - Taula

Muntatge - Taula
Muntatge - Taula

Pas 4: Ubidots

Ubidots
Ubidots

Pas 5: Biblioteca SimpleDHT

Biblioteca SimpleDHT
Biblioteca SimpleDHT

A l'IDE Arduino, aneu a Sketch-> Inclou biblioteca-> Gestiona biblioteques …

Instal·leu SimpleDHT

Pas 6: Biblioteca PubSubClient

Biblioteca PubSubClient
Biblioteca PubSubClient

A l'IDE Arduino, aneu a Sketch-> Inclou biblioteca-> Gestiona biblioteques …

Instal·leu PubSubClient

Pas 7: biblioteca TinyGSM

Biblioteca TinyGSM
Biblioteca TinyGSM

A l'IDE Arduino, aneu a Sketch-> Inclou biblioteca-> Gestiona biblioteques …

Instal·leu TinyGSM

Pas 8: biblioteca TFT_eSPI

Biblioteca TFT_eSPI
Biblioteca TFT_eSPI

A l'IDE Arduino, aneu a Sketch-> Inclou biblioteca-> Gestiona biblioteques …

Instal·leu TFT_eSPI

Pas 9: biblioteca TFT_eSPI

Biblioteca TFT_eSPI
Biblioteca TFT_eSPI

Canvieu els pins de visualització de la carpeta lib.

La fixació es troba al fitxer User_Setup.h a

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

Canvieu aquests valors predeterminats als valors següents de la imatge.

Pas 10: Ubidots

Ubidots
Ubidots
Ubidots
Ubidots
Ubidots
Ubidots

Inicieu sessió a Ubidots amb el vostre compte i feu clic a Dispositius

Feu clic al botó "+" a l'extrem superior dret

Feu clic a En blanc

Introduïu el nom del dispositiu. Tingueu en compte l '"etiqueta del dispositiu", ja que s'utilitzarà al "tema" que utilitzarem a.ino

A la llista de dispositius, apareixerà el dispositiu que acabeu de crear. Feu-hi clic.

A la pantalla que apareix, feu clic a "Afegeix una variable". Apareixerà una finestra emergent. Feu clic a "Raw".

Feu clic al quadre de text i introduïu el nom de la propietat.

Ha de ser exactament el que enviarem a la JSON del.ino. Repetiu això per a l’altra propietat.

Torneu al tauler fent clic al logotip d’Ubidots.

Al tauler, feu clic a "Afegeix un widget nou"

A la llista de ginys, trieu "Eix doble"

Pas 11: Canviar les dades a.ino

Canvi de les dades a.ino
Canvi de les dades a.ino
Canvi de les dades a.ino
Canvi de les dades a.ino

Pas 12: GPRS_ESP32_DHT.ino: declaracions i variables

GPRS_ESP32_DHT.ino - Declaracions i variables
GPRS_ESP32_DHT.ino - Declaracions i variables

#define TINY_GSM_MODEM_SIM800 // Tipo de modem que estamos using # include #include #include #include #include // Token de usuari que pegamos no Ubidots #define TOKEN "BBFF-abcdefghijklmnopqrstuvwxyz0123" // Tópico onde vamos postum osos (esp32_gprs é o nome do dispositivo no Ubidots) #define TOPIC "/v1.6/devices/esp32_gprs" // id do device que pegamos no painel do Ubidots #define DEVICE_ID "5c01234567890abc12345678" // URL do MQTT Server #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

Pas 13: fixació

Fixació
Fixació

// 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. Utilitzeu sempre 1 HardwareSerial SerialGSM (1); TinyGsm modemGSM (SerialGSM); TinyGsmClient gsmClient (modemGSM); // Cliente MQTT, passamos a url do server, a porta // e o client GSM PubSubClient client (MQTT_SERVER, MQTT_PORT, gsmClient); // Tempo em que o último envio / refresh foi fet uint32_t lastTime = 0; humitat flotant; // Variável onde iremos armazenar o valor da umidade float temperature; // Variável onde iremos armazenar o valor da temperatura SimpleDHT22 dht; // Objeto que realizará a leitura da umidade e temperatura

Pas 14: configuració

configuració nul·la () {Serial.begin (115200); setupDisplay (); // Inicialitzar i configurar o mostrar setupGSM (); // Inicialització i configuració del mòdem GSM connectMQTTServer (); // Conectamos ao mqtt server // Espera 2 segundos e limpamos o display delay (2000); display.fillScreen (TFT_BLUE); display.setCursor (0, 0); }

Pas 15: Configuració de la pantalla

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 text com a fons com a fons blau display.setTextWrap (true, true); // Ativa quebra de linha display.setTextSize (1); display.setCursor (0, 0, 2); // Posicção x, y e fonte do text display.println ("Configuració de la pantalla completa"); }

Pas 16: configureu GSM

void setupGSM () {display.println ("Configura GSM …"); // Inicializamos a serial onde está o modem SerialGSM.begin (9600, SERIAL_8N1, 4, 2, false); retard (3000); // Mostra informació sobre el mòdem Serial.println (modemGSM.getModemInfo ()); // Inicialització del mòdem if (! ModemGSM.restart ()) {display.println ("Ha fallat el reinici del mòdem GSM"); retard (10000); ESP.restart (); tornar; } // Espera pela rede if (! ModemGSM.waitForNetwork ()) {display.println ("No s'ha pogut connectar a la xarxa"); retard (10000); ESP.restart (); tornar; } // Conecta à rede gprs (APN, usuari, senha) if (! ModemGSM.gprsConnect ("", "", "")) {display.println ("Falla la connexió GPRS"); retard (10000); ESP.restart (); tornar; } display.println ("Configuració de l'èxit GSM"); }

Pas 17: ConnectMQTTServer

void connectMQTTServer () {display.println ("Connexió al servidor MQTT …"); // Es connecta al dispositiu que defineix 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 (client.state ()); retard (10000); ESP.restart (); }}

Pas 18: bucle

void loop () {// Faz a leitura da umidade e temperatura readDHT (); // Desconeixeu el servidor MQTT if (! Client.connected ()) {// Mandamos connectar 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 fet o último envio lastTime = now; }}

Pas 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; humitat = h; }}

Pas 20: PublishMQTT

void publishMQTT () {// Cria o json que iremos enviar para el servidor MQTT String msg = createJsonString (); Serial.print ("Publica missatge:"); Serial.println (msg); // Publicamos no tópico int status = client.publish (TOPIC, msg.c_str ()); Serial.println ("Status:" + String (status)); // Status 1 es succeeix o 0 es deu erro}

Pas 21: CreateJsonString

CreateJsonString
CreateJsonString

String createJsonString () {String data = "{"; if (! isnan (humitat) &&! isnan (temperatura)) {data + = "\" humitat / ":"; dades + = Cadena (humitat, 2); dades + = ","; dades + = "\" temperatura / ":"; dades + = Cadena (temperatura, 2); } dades + = "}"; retornar dades; }

Pas 22: ShowDataOnDisplay

void showDataOnDisplay () {// Reset a posição do cursor e mostra umidade e temperatura lidas display.setCursor (0, 0, 2); display.println ("Humitat:" + Cadena (humitat, 2)); display.println ("Temperatura:" + Cadena (temperatura, 2)); }

Pas 23: fitxers

Descarregueu els fitxers

INO

PDF

Recomanat: