Umidade e temperatura são parâmetros muito comuns para medição em muitos lugares como fazendas, casas de vegetação, médicos, indústrias, residências e escritórios. Já cobrimos a medição de umidade e temperatura usando Arduino e exibimos os dados no LCD.
Neste projeto de IoT, vamos monitorar a umidade e a temperatura na Internet usando o ThingSpeak, onde mostraremos os dados atuais de umidade e temperatura na Internet usando o servidor ThingSpeak. É realizado pela comunicação de dados entre o Arduino, o Módulo Sensor DHT11, o módulo WIFI ESP8266 e o LCD. O termômetro em escala Celsius e o medidor de umidade em escala percentual exibem a temperatura ambiente e a umidade por meio de um display LCD e também os envia ao servidor ThingSpeak para monitoramento ao vivo de qualquer lugar do mundo.
Configuração do Working e do ThingSpeak:
Este projeto baseado em IoT tem quatro seções, primeiro o sensor de umidade e temperatura DHT11 detecta os dados de umidade e temperatura . Em segundo lugar, o Arduino Uno extrai os dados do sensor DHT11 como um número adequado em porcentagem e escala Celsius e os envia para o Módulo Wi-Fi. Em terceiro lugar , o módulo Wi-Fi ESP8266 envia os dados para o servidor do ThingSpeak. E, finalmente, o ThingSpeak analisa os dados e os mostra em forma de gráfico. O LCD opcional também é usado para exibir a temperatura e a umidade.
ThingSpeak fornece uma ferramenta muito boa para projetos baseados em IoT para Arduino. Ao usar o site ThingSpeak, podemos monitorar nossos dados pela Internet de qualquer lugar, e também podemos controlar nosso sistema pela Internet, usando os canais e páginas da web fornecidos pela ThingSpeak. ThingSpeak 'coleta' os dados dos sensores, 'analisa e visualiza' os dados e 'age' ao disparar uma reação. Aqui estamos explicando sobre como enviar dados para o servidor ThingSpeak usando o módulo WIFI ESP8266:
1. Em primeiro lugar, o usuário precisa criar uma conta em ThingSpeak.com, em seguida, entrar e clicar em Get Started.
2. Agora vá ao menu 'Canais' e clique na opção Novo Canal na mesma página para continuar o processo.
3. Agora você verá um formulário para a criação do canal, preencha o Nome e a Descrição de acordo com sua escolha. Em seguida, preencha 'Umidade' e 'Temperatura' nos rótulos do Campo 1 e Campo 2, marque as caixas de seleção para ambos os Campos. Marque também a caixa de seleção para a opção 'Tornar público' abaixo no formulário e, finalmente, Salvar o canal. Agora seu novo canal foi criado.
4. Agora clique na guia 'Chaves de API' e salve as chaves de API Write e Read, aqui estamos apenas usando a chave Write. Você precisa copiar esta chave em char * api_key no código.
5. Em seguida, clique em 'Importar / Exportar Dados' e copie o URL de Solicitação GET do Feed do Canal de Atualização, que é:
api.thingspeak.com/update?api_key=SIWOYBX26OXQ1WMS&field1=0
6. Agora o usuário precisa abrir “api.thingspeak.com” usando a função httpGet com o postUrl como “update? Api_key = SIWOYBX26OXQ1WMS & field1 = 0” e, em seguida, enviar dados usando feed de dados ou endereço de solicitação de atualização.
Antes de enviar os dados, o usuário precisa editar esta string de consulta ou postUrl com os campos de dados de temperatura e umidade, conforme mostrado abaixo. Aqui, adicionamos os dois parâmetros na string que precisamos enviar por meio de uma solicitação GET para o servidor, depois disso, usamos httpGet para enviar os dados para o servidor. Verifique o código completo abaixo.
Sprintf (postUrl, "atualizar? Api_key =% s & field1 =% s & field2 =% s", api_key, humidStr, tempStr); httpGet ("api.thingspeak.com", postUrl, 80);
Todo o processo é demonstrado na seção de Vídeos, ao final deste Artigo.
O trabalho neste projeto é baseado na comunicação serial de fio único para buscar dados do DHT11. Primeiro, o Arduino envia um sinal de início para o módulo DHT e, em seguida, o DHT dá um sinal de resposta contendo os dados. O Arduino coleta e extrai os dados em duas partes, primeiro a umidade e a segunda, a temperatura, e depois os envia para o LCD 16x2 e o servidor ThingSpeak. ThingSpeak exibe os dados na forma de gráfico como abaixo:
Você pode aprender mais sobre o sensor DHT11 e sua interface com o Arduino aqui.
Descrição do circuito:
As conexões para este projeto de monitoramento de umidade e temperatura ThingSpeak são muito simples. Aqui, uma tela de cristal líquido é usada para exibir a temperatura e a umidade, que está diretamente conectada ao Arduino no modo de 4 bits. Os pinos do LCD, a saber, RS, EN, D4, D5, D6 e D7, são conectados ao pino digital número 14, 15, 16, 17, 18 e 19. do Arduino. Este LCD é opcional.
O Módulo Sensor DHT11 está conectado ao pino digital 12 do Arduino. Os pinos Vcc e GND do módulo Wi-Fi ESP8266 são conectados diretamente a 3,3V e GND do Arduino e o CH_PD também está conectado a 3,3V. Os pinos Tx e Rx do ESP8266 são conectados diretamente aos pinos 2 e 3 do Arduino. A Biblioteca serial do software também é usada aqui para permitir a comunicação serial nos pinos 2 e 3 do Arduino. Já cobrimos a interface do módulo ESP8266 Wi-Fi com o Arduino em detalhes.
Parte de programação:
A parte de programação deste projeto desempenha um papel muito importante para realizar todas as operações. Em primeiro lugar, incluímos as bibliotecas necessárias e inicializamos as variáveis.
#include "dht.h" // Incluindo biblioteca para dht #include
Depois de inserir sua chave Write API e pegar algumas strings.
char * api_key = "SIWOYBX26OXQ1WMS"; // Insira sua chave de API de gravação de ThingSpeak static char postUrl; int humi, tem; void httpGet (String ip, String caminho, int port = 80);
Na função void loop () lemos a temperatura e a umidade e depois mostramos essas leituras no LCD.
A função void send2server () é usada para enviar os dados para o servidor. A função Send2server é uma rotina de serviço de interrupção do cronômetro, chamando a cada 20 segundos. Quando chamamos a função de atualização, a rotina de serviço de interrupção do cronômetro é chamada.
void send2server () {char tempStr; char humidStr; dtostrf (tem, 5, 3, tempStr); dtostrf (humi, 5, 3, humidStr); sprintf (postUrl, "atualizar? api_key =% s & field1 =% s & field2 =% s", api_key, humidStr, tempStr); httpGet ("api.thingspeak.com", postUrl, 80); }