Índice:

IOT com rede celular com ESP32: 23 etapas
IOT com rede celular com ESP32: 23 etapas

Vídeo: IOT com rede celular com ESP32: 23 etapas

Vídeo: IOT com rede celular com ESP32: 23 etapas
Vídeo: IOT com rede de telefonia celular com ESP32 2024, Novembro
Anonim
Image
Image
Demonstração
Demonstração

Hoje falaremos sobre o modem GPRS, ou melhor, o ESP32 e sua utilização com a rede de telefonia celular. Isso é algo que funciona muito bem. Usando o protocolo MQTT, enviaremos dados para o painel do Ubidots. Use nesta montagem um display para feedback do circuito, além do SIM800L e um chip de celular. Com este projeto, portanto, enviaremos dados de temperatura e umidade através de GPRS e MQTT, e visualizaremos os dados em um gráfico de linhas.

Etapa 1: Demonstração

Etapa 2: Montagem

conjunto
conjunto

Etapa 3: Montagem - Mesa

Montagem - Mesa
Montagem - Mesa

Etapa 4: Ubidots

Ubidots
Ubidots

Etapa 5: Biblioteca SimpleDHT

Biblioteca SimpleDHT
Biblioteca SimpleDHT

No IDE Arduino, vá para Sketch-> Incluir Biblioteca-> Gerenciar Bibliotecas …

Instale SimpleDHT

Etapa 6: Biblioteca PubSubClient

Biblioteca PubSubClient
Biblioteca PubSubClient

No IDE Arduino, vá para Sketch-> Incluir Biblioteca-> Gerenciar Bibliotecas …

Instale PubSubClient

Etapa 7: Biblioteca TinyGSM

Biblioteca TinyGSM
Biblioteca TinyGSM

No IDE Arduino, vá para Sketch-> Incluir Biblioteca-> Gerenciar Bibliotecas …

Instale TinyGSM

Etapa 8: Biblioteca TFT_eSPI

Biblioteca TFT_eSPI
Biblioteca TFT_eSPI

No IDE Arduino, vá para Sketch-> Incluir Biblioteca-> Gerenciar Bibliotecas …

Instale TFT_eSPI

Etapa 9: Biblioteca TFT_eSPI

Biblioteca TFT_eSPI
Biblioteca TFT_eSPI

Altere os pinos de exibição na pasta lib.

A fixação está no arquivo User_Setup.h em

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

Altere esses padrões para os seguintes valores na imagem.

Etapa 10: Ubidots

Ubidots
Ubidots
Ubidots
Ubidots
Ubidots
Ubidots

Faça login no Ubidots com sua conta e clique em Dispositivos

Clique no botão "+" no canto superior direito

Clique em Branco

Digite o nome do dispositivo. Observe o "rótulo do dispositivo", pois será usado no "tópico" que usaremos no.ino

Na lista de dispositivos, o dispositivo que você acabou de criar aparecerá. Clique nisso.

Na tela que aparece, clique em “Adicionar Variável”. Um pop-up aparecerá. Clique em “Raw”.

Clique na caixa de texto e insira o nome da propriedade.

Tem que ser exatamente o que enviaremos no json do.ino. Repita isso para a outra propriedade.

Volte para o painel clicando no logotipo da Ubidots.

No painel, clique em "Adicionar novo widget"

Na lista de Widgets, escolha "Eixo duplo"

Etapa 11: Alterar os dados em.ino

Alterando os dados em.ino
Alterando os dados em.ino
Alterando os dados em.ino
Alterando os dados em.ino

Etapa 12: GPRS_ESP32_DHT.ino - Declarações e variáveis

GPRS_ESP32_DHT.ino - Declarações e variáveis
GPRS_ESP32_DHT.ino - Declarações e variáveis

#define TINY_GSM_MODEM_SIM800 // Tipo de modem que estamos usando # include #include #include #include #include // Token de que pegamos no Ubidots #define TOKEN "BBFF-abcdefghijklmnopqrstuvwxyz0123" // usuário dados onde postar e postar (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 servidor MQTT #define MQT_SERVER " mqtt: //things.ubidots.com "// Porta padrão do MQTT #define MQTT_PORT 1883 // Pino onde está o DHT22 #define DHT_PIN 27

Etapa 13: Fixação

Fixando
Fixando

// 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. Utilizar sempre 1 HardwareSerial SerialGSM (1); TinyGsm modemGSM (SerialGSM); TinyGsmClient gsmClient (modemGSM); // Cliente MQTT, passa a url do servidor, a porta // e o cliente GSM PubSubClient client (MQTT_SERVER, MQTT_PORT, gsmClient); // Tempo em que o último envio / atualização foi feito uint32_t lastTime = 0; umidade do flutuador; // Variável onde hospedará o valor da umidade float; // Variável onde hospedar o valor da temperatura SimpleDHT22 dht; // Objeto que realizará a leitura da umidade e temperatura

Etapa 14: configuração

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

Etapa 15: SetupDisplay

void setupDisplay () {display.init (); display.setRotation (1); display.fillScreen (TFT_BLUE); // Limpa o display com um 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"); }

Etapa 16: SetupGSM

void setupGSM () {display.println ("Setup GSM…"); // Inicializamos um serial onde está o modem SerialGSM.begin (9600, SERIAL_8N1, 4, 2, false); atraso (3000); // Mostra informação sobre o modem Serial.println (modemGSM.getModemInfo ()); // Inicializa o modem if (! ModemGSM.restart ()) {display.println ("Reinicialização do modem GSM falhou"); atraso (10000); ESP.restart (); Retorna; } // Espera pela rede if (! ModemGSM.waitForNetwork ()) {display.println ("Falha ao conectar à rede"); atraso (10000); ESP.restart (); Retorna; } // Conecta à rede gprs (APN, usuário, senha) if (! ModemGSM.gprsConnect ("", "", "")) {display.println ("Falha na conexão GPRS"); atraso (10000); ESP.restart (); Retorna; } display.println ("Configuração GSM com sucesso"); }

Etapa 17: ConnectMQTTServer

void connectMQTTServer () {display.println ("Conectando ao servidor MQTT…"); // Se a conexão ao dispositivo que definimos if (client.connect (DEVICE_ID, TOKEN, "")) {// Se a conexão foi bem localizada display.println ("Conectado"); } else {// Se ocorreu algum erro display.print ("error ="); display.println (client.state ()); atraso (10000); ESP.restart (); }}

Etapa 18: Loop

void loop () {// Faz a leitura da umidade e temperatura readDHT (); // Se desconectou do servidor MQTT if (! Client.connected ()) {// Mandamos conectar connectMQTTServer (); } // Tempo decorrido desde o boot em milissegundos unsigned long now = millis (); // Se passado 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; }}

Etapa 19: ReadDHT

void readDHT () {float t, h; // Faz a leitura da umidade e temperatura e apenas atualiza como variáveis se foi bem sucedido se (dht.read2 (DHT_PIN, & t, & h, NULL) == SimpleDHTErrSuccess) {temperature = t; umidade = h; }}

Etapa 20: PublishMQTT

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

Etapa 21: CreateJsonString

CreateJsonString
CreateJsonString

String createJsonString () {String data = "{"; if (! isnan (umidade) &&! isnan (temperatura)) {data + = "\" umidade / ":"; dados + = String (umidade, 2); dados + = ","; dados + = "\" temperatura / ":"; dados + = String (temperatura, 2); } dados + = "}"; dados de retorno; }

Etapa 22: ShowDataOnDisplay

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

Etapa 23: Arquivos

Baixe os arquivos

EU NÃO

PDF

Recomendado: