Índice:
- Etapa 1: Pinagem ESP32
- Etapa 2: Pinagem NodeMCU
- Etapa 3: MQTT
- Etapa 4: Montagem
- Etapa 5: Diagrama
- Etapa 6: Bibliotecas
- Etapa 7: Biblioteca de leitura de temperatura e umidade
- Etapa 8: Biblioteca MQTT
- Etapa 9: MQTT.ino
- Etapa 10: Gráfico
- Etapa 11: Arquivos
Vídeo: IBM Watson com ESP32 como terminal: 11 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:38
Estou postando aqui hoje o primeiro vídeo de uma série sobre como montar um dispositivo Endpoint com ESP32 e, em seguida, enviá-lo para um serviço de nuvem. Neste episódio específico, mostrarei como enviar informações de um sensor DHT22 usando o protocolo MQTT para IBM Watson.
Vamos primeiro apresentar o MQTT, que é um protocolo máquina a máquina usado em IoT (Internet of Things). Também enviaremos dados do sensor de temperatura e umidade usando este protocolo e, em seguida, verificaremos o gráfico com esses dados em uma página da web.
Etapa 1: Pinagem ESP32
Coloquei aqui o Pinout do ESP32, que usamos em nosso exemplo. Porém, quero deixar claro que o projeto também funciona com ESP8266, e até com o mesmo código-fonte.
Etapa 2: Pinagem NodeMCU
Etapa 3: MQTT
MQTT é um protocolo máquina a máquina usado na IoT. Ele foi projetado para ser leve e rápido. Ele usa um sistema de assinatura / publicação, onde um dispositivo "assina" um tópico com as informações específicas de seu interesse e, em seguida, recebe as informações sempre que um dispositivo publica dados relativos a esse tópico.
Como um programa de servidor, o MQTT precisa de software. Isso é chamado de corretor. Nesse caso específico, usaremos o serviço Bluemix IoT da IBM. Este serviço é gratuito para teste de endpoint.
Em seguida, precisamos ter um telefone celular ou tablet com o lado do Aplicativo, ou seja, como um cliente MQTT. Também temos o lado do dispositivo, que é o lado do ESP com um termômetro. Isso envia os dados de temperatura e umidade para o Bluemix, que então envia essas informações para o lado do aplicativo.
Etapa 4: Montagem
Nosso circuito consiste em um resistor de 4,7 k Ohms entre 3,3 V e o pino de dados, mais um DHT22 conectado ao GPIO4 de um ESP32 ou NodeMCU. Portanto, este é o nosso Endpoint.
Etapa 5: Diagrama
Eu mostro aqui as várias maneiras de trabalhar com o MQTT Local Broker. Coloquei dois modelos de diagramas. No vídeo, falo sobre uma situação usando um Raspberry Pi para abrir um portão, por exemplo.
Na imagem acima, temos a primeira arquitetura que usa um Broker local com persistência, e uma segunda arquitetura abaixo que só se comunica com o broker na nuvem.
Conforme mostrado no diagrama, nosso sensor envia os dados de temperatura e umidade para o IBM Watson. É importante enfatizar que o IBM Watson não está gravando os dados neste caso, pois eles estão apenas sendo exibidos em gráficos. Isso ocorre porque não abordaremos nenhuma operação de banco de dados no exemplo de hoje, mas apenas indicaremos o acesso à página Quickstart (https://quickstart.internetofthings.ibmcloud.com/), que exibirá o status do Terminal. O esquema é simples e usa WiFi para enviar dados.
Etapa 6: Bibliotecas
No IDE Arduino, vá para o menu Sketch -> Incluir Biblioteca -> Gerenciar Bibliotecas …
Na tela que abrir, digite a busca "DHT" e instale a biblioteca “DHT sensor library”
Em seguida, digite "PubSubClient" e instale a biblioteca "PubSubClient".
Etapa 7: Biblioteca de leitura de temperatura e umidade
Etapa 8: Biblioteca MQTT
Etapa 9: MQTT.ino
Iniciamos o código-fonte verificando qual ESP está sendo usado e importando a biblioteca e o WiFi correspondentes. Ainda incluímos as Libs MQTT e o sensor de temperatura e umidade.
// Verifica qual ESP está sendo utilizado // e importa a lib e wifi correspondente # se definido (ESP8266) #incluir #else #include #endif // Lib de MQTT #include // Lib do sensor de temperatura e umidade #include
A seguir, definimos o seguinte: o intervalo entre os envios de dados, o servidor MQTT que será usado, as informações de impressão no gráfico e o ID. Também apontamos como a string QUICK_START deveria ser.
// Intervalo entre os envios # define INTERVAL 1000 // Substitua pelo SSID da sua rede #define SSID "TesteESP" // Substitui pela senha da sua rede # define PASSWORD "87654321" // Servidor MQTT que vai utlizar #define MQTT_SERVER "início rápido.messaging.internetofthings.ibmcloud.com "// Nome do tópico que devemos enviar os dados // para que eles apareçam nos gráficos #define TOPIC_NAME" iot-2 / evt / status / fmt / json "// ID que usaremos para conectar // QUICK_START deve permanecer como está const String QUICK_START = "d: início rápido: arduino:";
Nesta etapa, definimos um ID exclusivo. Neste exemplo, usamos o endereço MAC do dispositivo que estamos usando. Isso servirá como identificação no site QuickStart. Aqui, também conectamos o ID de início rápido com o ID do nosso dispositivo.
// No DEVICE_ID você deve mudar para um id único // Aqui nesse exemplo utiliza o endereço MAC // do dispositivo que estamos utilizando // Servirá como identificação no site //https://quickstart.internetofthings.ibmcloud.com const String DEVICE_ID = "240ac40e3fd0"; // Concatemos o id do início rápido com o id do nosso // dispositivo const String CLIENT_ID = QUICK_START + DEVICE_ID;
Em seguida, configuramos o MQTT e o WiFi, bem como os objetos e variáveis envolvidos com os valores de temperatura e umidade.
// Cliente WiFi que o MQTT irá utilizar para conectarWiFiClient wifiClient; // Cliente MQTT, passa a url do servidor, a porta // e o cliente WiFi PubSubClient client (MQTT_SERVER, 1883, wifiClient); // Tempo em que o último envio foi feito long lastPublishTime = 0; // Objeto que realiza a leitura da temperatura e da umidade DHT dht (4, DHT22); // Variável para guardarmos o valor da temperatura float temperature = 0; // Variável para guardarmos o valor da umidade float umidade = 0;
MQTT.ino - configuração
Na configuração, inicializaremos o DHT e nos conectaremos à rede WiFi e ao servidor MQTT.
void setup () {Serial.begin (115200); // Incializamos o dht dht.begin (); // Conectamos à rede WiFi setupWiFi (); // Conectamos ao servidor MQTT connectMQTTServer (); }
MQTT.ino - loop
No Loop, coletamos os dados do sensor para criar o Json que será publicado no tópico que o IBM Watson espera gerar o gráfico.
void loop () {// Tempos agora em milisegundos long now = millis (); // Se o tempo desde o último envio para maior que o intervalo de envio if (now - lastPublishTime> INTERVAL) {// Atualizamos o tempo em que ocorreu o último envio lastPublishTime = now; // Fazemos a leitura da temperatura e umidade readSensor (); Serial.print ("Publicar mensagem:"); // Criamos o json que enviaremos para o servidor mqtt String msg = createJsonString (); Serial.println (msg); // Publicamos no tópico onde o servidor espera para receber // e gerar o gráfico client.publish (TOPIC_NAME, msg.c_str ()); }}
MQTT.ino - setupWiFi
Aqui, temos a função responsável por conectar a rede wi-fi.
// Função responsável por conectar à rede WiFivoid setupWiFi () {Serial.println (); Serial.print ("Conectando a"); Serial.print (SSID); // Manda o esp se conectar à rede através // do ssid e senha WiFi.begin (SSID, PASSWORD); // Espera até que a conexão com a rede seja escolhida while (WiFi.status ()! = WL_CONNECTED) {delay (500); Serial.print ("."); } // Se chegou aqui é porque conectou Serial.println (""); Serial.println ("WiFi conectado"); }
MQTT.ino - connectMQTTServer
Nesta etapa, usamos a função responsável por se conectar ao servidor MQTT.
// Função responsável para conectar ao servidor MQTTvoid connectMQTTServer () {Serial.println ("Conectando ao servidor MQTT…"); // Se a conexão ao id que definimos if (client.connect (CLIENT_ID.c_str ())) {// Se a conexão foi bem localizada Serial.println ("conectado"); } else {// Se ocorreu algum erro Serial.print ("error ="); Serial.println (client.state ()); }}
MQTT.ino - readSensor
A leitura dos dados de temperatura e umidade é definida nesta função.
// Função responsável por realizar a leitura // da temperatura e umidade void readSensor () {float value; // Faz a leitura da temperatura value = dht.readTemperature (); // Se o valor lido é válido if (! Isnan (valor)) {// Armazém o novo valor da temperatura temperatura = valor; } // Faz a leitura da umidade value = dht.readHumidity (); // Se o valor for válido if (! Isnan (value)) {// Armazena o novo valor da umidade umidade = valor; }}
MQTT.ino - createJsonString
Aqui, temos a função responsável por criar um Json com os dados lidos.
// Função responsável por criar // um Json com os dados lidos String createJsonString () {String data = "{"; dados + = "\" d / ": {"; dados + = "\" temperatura / ":"; dados + = String (temperatura); dados + = ","; dados + = "\" umidade / ":"; dados + = String (umidade); dados + = "}"; dados + = "}"; dados de retorno; }
Etapa 10: Gráfico
Para visualizar o gráfico do sensor, vá
para
No campo ID do dispositivo, insira o DEVICE_ID que você definiu no código.
- É importante alterar este ID do dispositivo para um ID único, usado apenas para evitar conflito com dados enviados por outra pessoa.
Por fim, aceite os termos e clique em Ir.
Neste projeto, testamos nosso Endpoint no servidor IBM Watson. Isso garante que nosso programa Arduino esteja se comunicando corretamente com a plataforma e que os dados que enviamos serão recebidos sem problemas por um serviço de nuvem se criarmos uma conta.
Em um próximo vídeo desta série, mostrarei como fazer login no IBM Watson, bem como escrever no banco de dados deste ou de outro serviço em nuvem, como Google, Amazon, entre outros.
Etapa 11: Arquivos
Baixe os arquivos:
EU NÃO
Recomendado:
Usando o Terminal ESP32 / VGA32 para Z80-MBC2: 7 etapas
Usando o Terminal ESP32 / VGA32 para Z80-MBC2: Como construir e instalar o software do Terminal ANSI em uma placa ESP32 / VGA32. Em seguida, conectá-lo a uma placa Z80-MBC2
Visuino Como usar um botão como entrada para controlar coisas como LED: 6 etapas
Visuino Como usar um botão como entrada para controlar coisas como o LED: Neste tutorial, aprenderemos como ligar e desligar o LED usando um botão simples e o Visuino. Assistir a um vídeo de demonstração
IoT Hydroponics - Usando o Watson da IBM para medições de PH e EC: 7 etapas (com imagens)
IoT Hydroponics - Usando o Watson da IBM para medições de PH e EC: Este instrutível mostrará como monitorar EC, pH e temperatura de uma configuração de hidroponia e fazer upload dos dados para o serviço Watson da IBM. O Watson é gratuito para começar. Existem planos pagos, mas o plano gratuito é mais do que suficiente para este projeto
Como usar o terminal Mac e como usar as funções principais: 4 etapas
Como usar o Terminal Mac e como usar as funções principais: Mostraremos como abrir o Terminal MAC. Também mostraremos alguns recursos do Terminal, como ifconfig, alteração de diretórios, acesso a arquivos e arp. Ifconfig permitirá que você verifique seu endereço IP e seu anúncio MAC
Como usar o Wiimote como um mouse de computador Usando velas como um sensor !!: 3 etapas
Como usar o Wiimote como um mouse de computador Usando velas como um sensor !!: Este guia mostrará como conectar seu Wii Remote (Wiimote) ao seu PC e usá-lo como um mouse