Neste tutorial vamos explicar como conectar sensores que monitoram uma planta à Internet utilizando um conjunto eletrônico simples e a IDE Arduino. Com um módulo NodeMCU, encontrado no mercado, conectamos 3 sensores (de umidade de solo, de temperatura e de umidade) e conectamos esse módulo a uma plataforma de nuvem. Para esse experimento foi escolhido o Thingspeak, um serviço de nuvem grátis para uso comum. A seguir está listado o que é necessário para a experiência.
O material utilizado para a oficina foi:
- 1 Node MCU;
- 1 Cabo USB;
- 1 Sensor Umidade de Solo;
- 20 Unidades Cabos Jumper Macho – Macho;
- 1 Sensor DHT11;
- 1 Protoboard;
- 1 planta (utilizamos um vaso pequeno com Margarida).
Foi utilizado o sistema operacional Windows 10 para a oficina. Nele foram instalados.
- Instalação da IDE Arduino
Entre neste link e faça o download da IDE Arduino. Utilize a opção Windows ZIP file for non admin install. Baixe o zip e descompacte na pasta c:.
- Instalação do plugin para uso do NodeMCU
Abra a IDE do Arduino e instale o Plugin para NodeMCU. Para isso selecione File > Preferences e na opção Additional Boards Manager URLs coloque o seguinte endereço:
Confirme clicando em OK.
Selecione Board > Board Manager.
Procure por NodeMCU e clique em Install.
E então selecione a placa utilizada nesta experiência. Procure por NodeMCU.
Antes de conectar o NodeMCU ao PC, é necessário instalar o driver USB para que o Windows 10 reconheça a placa como dispositivo válido. Existem dois NodeMCUs diferentes, cada um deles necessita de um driver diferente. A seguir estão apresentados dois drivers que podem ser utilizados, instale o que for utilizar no seu caso.
Para utilizar a biblioteca do sensor DHT, é necessário fazer o download da pasta lib neste link e colocá-la na mesma pasta onde a IDE Arduino busca as bibliotecas. No meu caso, a pasta é a seguinte:
C:\Users\Thiago\Documents\Arduino\libraries
É necessário instalar a lib PubSubClient na IDE do Arduino. Para isso clique em Sketch > Include Library > Manage Libraries.
Procure por PubSubClient e instale o plugin.
Utilizando o Thingspeak para conectar um dispositivo IoT
Para utilizar o Thingspeak, é necessário fazer um cadastro neste site:
Informe os dados e verifique que recebeu um e-mail. Clique no link recebido e depois faça o login:
Crie um novo canal no ThingSpeak clicando em New Channel. Na aba Settings configure o Canal como a imagem a seguir:
Clique em Save Channel.
Clique em Sharing e marque a opção Share channel view with everyone para que o canal fique público e acessível a todos.
Clique em API Keys e copie a Key para que possamos utilizá-la no firmware do módulo eletrônico.
Firmware do NodeMCU
A partir do firmware preparado para essa oficina, modifique os campos que estão marcados como XXXXX. É necessário modificar o firmware para incluir as informações de Key do Thingspeak. A cada 20 segundos o NodeMCU vai enviar os dados de todos os sensores para o Thingspeak.
Os dados que conseguimos foram os seguintes:
API KEY: KKLZ0KXNGCN0KNH2
Veja como fica o firmware para essa API Key.
/*
Oficina Maker IoT - EsalqShow
Realização: Embarcados
*/
//Include da lib de Wifi do ESP8266
#include <ESP8266WiFi.h>
//Include da lib do sensor DHT11 e DHT22
#include "DHT.h"
//Define do pino a ser utilizado no ESP para o sensor = GPIO4
#define DHT_DATA_PIN 2
#define DHTTYPE DHT11
//Definir o SSID da rede WiFi
const char* ssid = "OficinaIoT";
//Definir a senha da rede WiFi
const char* password = "EmbarcadoS";
//Colocar a API Key para escrita neste campo
//Ela é fornecida no canal que foi criado na aba API Keys
String apiKey = "KKLZ0KXNGCN0KNH2"; //trocar pela API Write
const char* server = "api.thingspeak.com";
DHT dht(DHT_DATA_PIN, DHTTYPE);
WiFiClient client;
void setup() {
//Configuração da UART
Serial.begin(9600);
//Inicia o WiFi
WiFi.begin(ssid, password);
//Espera a conexão no router
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
dht.begin();
//Logs na porta serial
Serial.println("");
Serial.print("Conectado na rede ");
Serial.println(ssid);
Serial.print("IP: ");
Serial.println(WiFi.localIP());
}
void loop() {
//Espera 20 segundos para fazer a leitura
delay(20000);
//Leitura de umidade
float umidade = dht.readHumidity();
//Leitura de temperatura
float temperatura = dht.readTemperature();
//Se não for um numero retorna erro de leitura
if (isnan(umidade) || isnan(temperatura)) {
Serial.println("Erro ao ler o sensor!");
return;
}
int umidadeSolo = analogRead(0);
umidadeSolo = -0.0977*umidadeSolo + 100;
//Inicia um client TCP para o envio dos dados
if (client.connect(server,80)) {
String postStr = apiKey;
postStr +="&field1=";
postStr += String(temperatura);
postStr +="&field2=";
postStr += String(umidade);
postStr +="&field3=";
postStr += String(umidadeSolo);
postStr += "\r\n\r\n";
client.print("POST /update HTTP/1.1\n");
client.print("Host: api.thingspeak.com\n");
client.print("Connection: close\n");
client.print("X-THINGSPEAKAPIKEY: "+apiKey+"\n");
client.print("Content-Type: application/x-www-form-urlencoded\n");
client.print("Content-Length: ");
client.print(postStr.length());
client.print("\n\n");
client.print(postStr);
//Logs na porta serial
Serial.print("Temperatura: ");
Serial.print(temperatura);
Serial.print(" Umidade: ");
Serial.println(umidade);
Serial.print(" Umidade Solo: ");
Serial.println(umidadeSolo);
}
client.stop();
}
Montagem do Hardware e programação
Monte o circuito na protoboard conforme a figura a seguir. Utilize o pino D4 para o dispositivo DHT11, pino 3 (dispositivo azul) e o pino A0 para o sensor de umidade de solo, pino 1. Ligue a alimentação de ambos os sensores, GND e 3V nos sinais do NodeMCU. Entre os pinos 3 e 4 do sensor DHT11, coloque um resistor de 10k.
A seguir está uma foto de como fica o hardware montado.
Conecte o dispositivo na USB do PC. Verifique se o PC reconheceu o dispositivo. Clique em Tools > Port e verifique se a placa aparece em alguma COM, como por exemplo, COM5. Compile e programe utilizando a opção Sketch > Upload. O dispositivo vai ser programado, vai iniciar, se conectar à Internet e depois ao Thingspeak e vai começar a enviar dados pra lá.
Ao conectar ao Thingspeak, os dados vão aparecer na aba Private View do seu canal.
Agradecimentos
Fizemos essa oficina a pedido da Secretaria de Agricultura do Estado de São Paulo. Fabio Souza e Thiago Lima representaram o Embarcados neste evento. Mais de 50 pessoas realizaram a oficina nos dias 10 e 11 de outubro durante a EsalqShow. Essa foi uma ação para promover o próximo evento chamado Agrifutura que vai ser realizado no fim do mês de novembro de 2017 em São Paulo.
Gostaríamos de agradecer também à Secretaria que viabilizou a realização desse evento.






















A quem interessar possa eu fiz o projeto acima usando apenas o ESP-01 e o DHT22.
Caso alguém deseje posso disponibilizar o programa
Meu contato: rafaelgdacruz@gmail.com
Bom dia Rafael, poderia me enviar o código e o esquema de ligação… estou querendo ligar um ESP ao thingSpeak mas todos os tutoriais que estou encontrando são complexos. eu preciso apenas de enviar variaveis simples ao ThingSpeak. email: jronaldoac@hotmail.com
obrigado.
Queria tbm, por favor, estou tentando tbm fazer uma ligação com varios dispositivos e transmitir através do thingspeak.
Olá rafael, queria que você disponibilizasse o projeto pra min tbm, email : lima.mt96@gmail.com
Instruções
https://www.instructables.com/id/ESP-01-DHT22-Thingspeakcom/
Thiago, é possível montar o sistema para funcionar com bateria/pilha?