Índice:
- Suprimentos
- Etapa 1: medir temperatura e umidade
- Etapa 2: Criar e configurar o projeto
- Etapa 3: instalar bibliotecas
- Etapa 4: conectar um sensor DHT11
- Etapa 5: Envio de dados para a nuvem
- Etapa 6: Diagnóstico
- Etapa 7: iniciar e depurar o projeto
- Etapa 8: Configuração do painel
- Etapa 9: Conclusão
Vídeo: Conectando um sensor DHT11 / DHT22 à nuvem com uma placa baseada em ESP8266: 9 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:37
No artigo anterior, conectei minha placa NodeMCU baseada em ESP8266 a um serviço Cloud4RPi. Agora, é hora de um projeto real!
Suprimentos
Requisitos de hardware:
- Qualquer placa baseada em um chip ESP8266 (por exemplo, NodeMCU)
- Um sensor DHT11 ou DHT22
Software e serviços:
- Biblioteca de sensores DHT por Adafruit - v1.3.7
- Sensor Unificado Adafruit - v1.0.3
- cloud4rpi-esp-arduino - v0.1.0
- Cloud4RPI - Painel de controle em nuvem para dispositivos IoT
- PlatformIO IDE para VSCode
Etapa 1: medir temperatura e umidade
Eu já tinha um sensor DHT11, então decidi usá-lo para medições de temperatura e umidade. Vamos escolher uma biblioteca Arduino para ler os dados do sensor.
O registro do Arduino contém várias bibliotecas, das quais selecionei a mais popular.
De acordo com o repositório GitHub, também somos obrigados a adicionar um pacote Adafruit Unified Sensor.
Etapa 2: Criar e configurar o projeto
Já descrevi como criar um projeto PlatformIO e instalar bibliotecas na primeira parte. Meu projeto se chama “MyNodeMCU”. A estrutura é mostrada acima.
Este projeto é um exemplo Cloud4RPi ligeiramente modificado. Decidi armazenar o token do dispositivo e as credenciais de Wi-Fi no arquivo de configuração em vez de no código.
O arquivo platform.io tem a seguinte aparência:
[platformio] default_envs = nodemcuv2 [env: nodemcuv2] plataforma = espressif8266 framework = arduino board = nodemcuv2
Etapa 3: instalar bibliotecas
A instalação das bibliotecas é bastante simples. Você pode fazer isso a partir da interface gráfica do IDE ou adicionando os nomes de bibliotecas necessários à seção lib_deps do arquivo platform.io:
; … lib_deps = cloud4rpi-esp-arduino Adafruit Unified Sensor DHT sensor de build_flags biblioteca = -D MQTT_MAX_PACKET_SIZE = 1024 -D MQTT_MAX_TRANSFER_SIZE = 128 -D CLOUD4RPI_DEBUG = 0 -D SSID_NAME = / "_ YOUR_WIFI _ \" -D SSID_PASSWORD = / "_ YOUR_WIFI_PASS _ \" - D CLOUD4RPI_TOKEN = / "_ YOUR_DEVICE_TOKEN _ \"
Bibliotecas adicionadas serão instaladas automaticamente na subpasta de um projeto.
O cabeçalho main.cpp tem a seguinte aparência:
#include #include #include #include "DHT.h"
Etapa 4: conectar um sensor DHT11
Adafruit fornece um exemplo DHTtester.ino de uma conexão de sensor.
Este código inicializa um sensor e define uma estrutura para armazenar o resultado da medição (caso tenha sido bem sucedido):
#define DHTPIN 2 // Pino digital conectado ao sensor DHT # define DHTTYPE DHT11 // DHT 11 //… DHT dht (DHTPIN, DHTTYPE); dht.begin (); //… struct DHT_Result {float h; float t; }; DHT_Result dhtResult;
A próxima função mostra como ler os dados do sensor e armazená-los na estrutura de dados descrita acima
void readSensors () {float h = dht.readHumidity (); // Lê a temperatura como Celsius (o padrão) float t = dht.readTemperature ();
// Verifique se alguma leitura falhou e saia
if (isnan (h) || isnan (t)) {Serial.println (F ("Falha ao ler do sensor DHT!")); Retorna; } dhtResult.h = h; dhtResult.t = t; }
Etapa 5: Envio de dados para a nuvem
Assim que tivermos esses dados, a próxima etapa é enviá-los ao serviço Cloud4RPi.
A página Cloud4RPi para Arduino descreve a API da biblioteca, que é um conjunto de métodos usados para:
- criar, ler e atualizar variáveis,
- envie valores de variáveis para a nuvem usando o protocolo MQTT.
A biblioteca oferece suporte a três tipos de variáveis: Bool, Numeric e String.
O fluxo de trabalho da biblioteca começa com a criação de uma instância de API usando o token de dispositivo do site cloud4rpi.io (consulte a parte 1 do artigo para obter detalhes).
#if definido (CLOUD4RPI_TOKEN) Cloud4RPi c4r (CLOUD4RPI_TOKEN); #else Cloud4RPi c4r ("!!! _ NO_DEVICE_TOKEN _ !!!"); #fim se
Em seguida, declare variáveis para leituras DHT11:
c4r.declareNumericVariable ("DHT11_Temp"); c4r.declareNumericVariable ("DHT11_Hum");
Em seguida, obtenha os dados do sensor, salve-os em variáveis e publique os dados no Cloud4RPi:
c4r.setVariable ("DHT11_Temp", dhtResult.t); c4r.setVariable ("DHT11_Hum", dhtResult.h); c4r.publishData ();
A temperatura e a umidade não mudam rapidamente, portanto, não é necessário enviar mais de um valor a cada 5 minutos.
Etapa 6: Diagnóstico
Cloud4RPi oferece suporte a dados de diagnóstico junto com valores de variáveis. Usei o tempo de atividade, a intensidade do sinal de Wi-Fi e o endereço IP como dados de diagnóstico:
c4r.declareDiagVariable ("IP_Address"); c4r.declareDiagVariable ("RSSI"); // Intensidade do sinal WiFi c4r.declareDiagVariable ("Uptime");
Observação: a função millis que uso para obter o tempo de atividade é redefinida para zero a cada aproximadamente 50 dias. O que é mais do que suficiente para o meu projeto.
O código a seguir define os valores das variáveis de diagnóstico:
c4r.setDiagVariable ("RSSI", (String) WiFi. RSSI () + "dBm"); c4r.setDiagVariable ("IP_Address", WiFi.localIP (). toString ()); c4r.setDiagVariable ("Uptime", uptimeHumanReadable (currentMillis)); c4r.publishDiag ();
A função uptimeHumanReadable converte milissegundos em uma forma conveniente:
String uptimeHumanReadable (milissegundos longos sem sinal) {static char uptimeStr [32]; segundos longos sem sinal = milissegundos / 1000; minutos longos sem sinal = segundos / 60; horas int sem sinal = minutos / 60; dias int sem sinal = horas / 24; segundos - = minutos * 60; min - = horas * 60; horas - = dias * 24; sprintf (uptimeStr, "% d dias% 2.2d:% 2.2d:% 2.2d", (byte) dias, (byte) horas, (byte) minutos, (byte) segundos); return String (uptimeStr); }
A função produz uma string como esta 5 dias 10:23:14 em vez de um grande número estranho.
Etapa 7: iniciar e depurar o projeto
Depois de compilar o código criado e colocá-lo no NodeMCU, o dispositivo se conecta a um serviço de nuvem e começa a enviar dados.
Você pode aumentar o detalhamento do log definindo a variável de pré-processador CLOUD4RPI_DEBUG como 1 (adicione -D CLOUD4RPI_DEBUG = 1 à seção build_flags no arquivo platform.io).
Em seguida, abra o site cloud4rpi.io e observe o novo dispositivo online. Abra-o para ver todos os valores de variáveis recebidos do dispositivo: sensor e diagnósticos.
Etapa 8: Configuração do painel
Nesta etapa, a conexão de dados com a nuvem está operacional. Agora, vamos configurar a representação visual dos dados.
Usei a IU de configuração do painel para criar o painel a seguir.
O painel é compartilhável, então eu o compartilho instantaneamente com meu amigo.
Etapa 9: Conclusão
O código completo do projeto está disponível na essência.
É tudo por agora!
Dúvidas e sugestões são bem-vindas nos comentários.
Recomendado:
Conectando o Arduino WiFi à nuvem usando ESP8266: 7 etapas
Conectando Arduino WiFi à nuvem usando ESP8266: Neste tutorial, vamos explicar como conectar seu Arduino à nuvem IoT através de WiFi. Vamos configurar uma configuração composta de um Arduino e um módulo WiFi ESP8266 como um IoT Thing e torná-lo pronto para se comunicar com a nuvem AskSensors.L
MQmax 0.7 uma plataforma de IoT WiFi de baixo custo baseada em Esp8266 e Arduino Mini Pro: 6 etapas
MQmax 0,7 uma plataforma de IoT WiFi de baixo custo baseada em Esp8266 e Arduino Mini Pro: Olá, este é meu segundo instrutível (de agora em diante eu paro de contar). Fiz isso para criar uma plataforma simples (pelo menos para mim), barata, fácil de fazer e eficiente para aplicações Real IoT que incluem trabalho M2M. Esta plataforma funciona com esp8266 e
Noções básicas de IoT: conectando sua IoT à nuvem usando o Mongoose OS: 5 etapas
Noções básicas de IoT: conectando sua IoT à nuvem usando o Mongoose OS: se você é uma pessoa que adora mexer e eletrônica, na maioria das vezes encontrará o termo Internet das coisas, geralmente abreviado como IoT, e que refere-se a um conjunto de dispositivos que podem se conectar à Internet! Ser tal pessoa
CONECTANDO VÁRIOS SENSORES A UMA PORTA SERIAL ARDUINO UNO: 4 etapas
CONECTANDO VÁRIOS SENSORES A UMA PORTA SERIAL ARDUINO UNO: Neste tutorial, iremos expandir uma única porta serial Arduino UNO UART (Rx / Tx) para que vários sensores Atlas possam ser conectados. A expansão é feita usando placa de expansão de porta serial 8: 1. A porta do Arduino é ligada ao expansor após o
Como programar uma placa AVR usando uma placa Arduino: 6 etapas
Como programar uma placa AVR usando uma placa Arduino: Você tem uma placa de microcontrolador AVR disponível? É complicado programá-lo? Bem, você está no lugar certo. Aqui, vou mostrar como programar uma placa microcontroladora Atmega8a usando uma placa Arduino Uno como programador. Então, sem mais