- Componentes necessários
- Diagrama de circuito
- Sensor de Temperatura e Umidade DHT11
- Programação NodeMCU ESP8266 Monitoramento de Temperatura e Umidade ao Vivo
Os microcontroladores possuem pequena memória interna que não é suficiente para salvar os dados gerados pelos sensores por muito tempo, ou você tem que usar algum dispositivo de memória externa ou pode salvar os dados em alguma nuvem usando a internet. Além disso, às vezes torna-se difícil de gerenciar quando o sensor é implantado em algum local de condições extremas onde os humanos não podem alcançar ou é difícil visitá-lo com frequência. Para corrigir esse tipo de problema, sempre olhamos para as maneiras como desejamos monitorar os dados do sensor em tempo real de qualquer lugar, sem qualquer presença física naquele local.
Os bancos de dados em tempo real podem ser usados neste cenário, onde apenas temos que fazer a interface com algum controlador que pode ser conectado à internet e pode ser capaz de trocar dados com o servidor em nuvem. Os dados do servidor podem ser úteis no monitoramento do comportamento do sistema em tempo real, análise de banco de dados, análise e processamento estatísticos e interpretação para casos de uso futuros. Existem muitas plataformas de hardware IoT e plataformas em nuvem disponíveis para atender a esse propósito. Se você encontrar dificuldades em encontrar a plataforma certa para sua aplicação IoT, siga o link.
Anteriormente, já cobrimos ThingSpeak, Adafruit IO e muitos outros softwares de IoT. Hoje estaremos construindo um projeto semelhante onde usaremos um sensor de temperatura e umidade DHT11 e um módulo NodeMCU ESP8266 para registrar a temperatura e umidade em tempo real no servidor de banco de dados Firebase do Google.
Vamos dividir o projeto em duas seções. Em primeiro lugar, começaremos com a montagem dos componentes de hardware e o upload do firmware para ele. Em segundo lugar, usaremos o Firebase para configurar o NodeMCU para trocar dados em tempo real. Se você é novo no ESP8266 ou Firebase, siga nosso tutorial anterior sobre como controlar LED usando Firebase.
Componentes necessários
- Módulo NodeMCU ESP8266
- Sensor de temperatura e umidade DHT11
Diagrama de circuito
Sensor de Temperatura e Umidade DHT11
O módulo DHT11 apresenta um complexo de umidade e temperatura com uma saída de sinal digital calibrada, o que significa que o módulo do sensor DHT11 é um módulo combinado para detectar umidade e temperatura que fornece um sinal de saída digital calibrado. O DHT11 nos dá valores muito precisos de umidade e temperatura e garante alta confiabilidade e estabilidade a longo prazo. Este sensor possui um componente de medição de umidade do tipo resistivo e componente de medição de temperatura do tipo NTC com um microcontrolador de 8 bits embutido que tem uma resposta rápida e econômica e está disponível em um pacote de 4 pinos de uma fileira.
Anteriormente, usamos ESP12E para atualizar as leituras DHT11 no servidor web, exceto que você pode verificar todos os projetos baseados em DHT11 onde usamos DHT11 para fazer interface com muitos outros microcontroladores como Arduino, PIC, Raspberry e estação meteorológica construída usando-os.
Programação NodeMCU ESP8266 Monitoramento de Temperatura e Umidade ao Vivo
O programa completo com vídeo de trabalho é fornecido no final. Aqui estamos explicando algumas partes importantes do código.
Em primeiro lugar, inclua as bibliotecas para usar ESP8266 e Firebase.
#incluir
Baixe e instale as bibliotecas seguindo os links abaixo:
github.com/FirebaseExtended/firebase-arduino/blob/master/src/Firebase.h
github.com/bblanchon/ArduinoJson
Durante a compilação , se você receber um erro informando que a biblioteca ArduinoJson.h não está instalada, instale-a usando o link fornecido acima.
Vamos programar o NodeMCU para fazer leituras do sensor DHT11 e enviá-lo ao Firebase a cada 5 segundos de intervalo. Vamos definir um caminho para enviar dados. Agora dois parâmetros viz. a umidade e a temperatura são enviadas no mesmo caminho pai e no caminho filho diferente.
Esses dois parâmetros são muito importantes para a comunicação com o firebase. Definir esses parâmetros permitirá a troca de dados entre o ESP8266 e o Firebase. Para encontrar esses parâmetros para seu projeto, siga nosso tutorial anterior sobre a configuração do Firebase.
#define FIREBASE_HOST "your-project.firebaseio.com" // o endereço do nome do projeto da firebase id #define FIREBASE_AUTH "Uejx9ROxxxxxxxxxxxxxxxxxxxxxxxxxxfQDDkhN" // a chave secreta gerada a partir do firebase
Depois de encontrar as credenciais com sucesso, apenas substitua no código acima.
Digite o SSID e a senha do Wi-Fi para se conectar à rede.
#define WIFI_SSID "network_name" // insira seu nome wi-fi doméstico ou público #define WIFI_PASSWORD "senha" // senha wi-fi ssid
Defina o pino de dados DHT em NodeMCU. Você pode usar qualquer pino GPIO digital no NodeMCU.
# define DHTPIN D4
A biblioteca DHT é feita para todas as variantes DHT e vem com a opção de qual sensor DHT você deseja usar, por exemplo, DHT11 ou DHT22. Basta escolher o sensor DHT correto e prosseguir.
#define DHTTYPE DHT11 // selecione o tipo dht como DHT 11 ou DHT22 DHT dht (DHTPIN, DHTTYPE);
Conecte-se à rede Wi-Fi selecionada e também ao servidor de banco de dados Firebase.
WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH);
Comece a fazer a leitura no pino D4 do NodeMCU.
dht.begin ();
Faça leituras de umidade e temperatura do sensor DHT e salve como valor flutuante.
float h = dht.readHumidity (); // A leitura da temperatura ou umidade leva cerca de 250 milissegundos! float t = dht.readTemperature (); // Lê a temperatura como Celsius (o padrão)
Basta verificar se o sensor DHT está conectado corretamente ou se não está danificado e o controlador pode fazer as leituras dele. Se as leituras não estiverem aparecendo, provavelmente o sensor está danificado, apenas mostre uma mensagem de erro e volte para verificar novamente sem prosseguir.
if (isnan (h) - isnan (t)) {// Verifique se alguma leitura falhou e saia mais cedo (para tentar novamente). Serial.println (F ("Falha ao ler do sensor DHT!")); Retorna; }
Imprima os dados do sensor no monitor serial para depuração e salve os valores de temperatura e umidade na forma de string para enviar ao firebase. Observe também que o atraso mínimo necessário entre duas leituras do sensor DHT11 é de 2 segundos, portanto, sempre use o atraso maior que 2 segundos. Para saber mais sobre o DHT11, você pode consultar a ficha oficial.
Serial.print ("Umidade:"); Serial.print (h); String fireHumid = String (h) + String ("%"); // converte a umidade inteira em umidade da string Serial.print ("% Temperature:"); Serial.print (t); Serial.println ("° C"); String fireTemp = String (t) + String ("° C"); atraso (4000);
Por fim, envie os dados de temperatura e umidade para o firebase no caminho “your-project.firebaseio.com/DHT11/Humidity/”.
Firebase.pushString ("/ DHT11 / Humidity", fireHumid); // configurar caminho e enviar leituras Firebase.pushString ("/ DHT11 / Temperature", fireTemp); // configurar caminho e enviar leituras
Você pode ver todos os dados em sua conta do Firebase. Vá para a seção “ Banco de dados ” em “ Seu projeto ” em “ Meu console ” no Firebase.
Para configurar o Firebase para enviar e monitorar os dados, você pode consultar nosso tutorial anterior.
O código completo e o vídeo para este monitoramento de temperatura e umidade baseado em IoT são fornecidos abaixo.