Oficina Maker de IoT – Conecte sua planta à Internet com Thingspeak

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.

  1. 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:.

  1.  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:

https://arduino.esp8266.com/stable/package_esp8266com_index.json

Confirme clicando em OK.

Selecione Board > Board Manager.

planta com Thingspeak

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.

https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers
https://github.com/nodemcu/nodemcu-devkit/tree/master/Drivers

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:

https://thingspeak.com/users/sign_up

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 +="&amp;field1=";
           postStr += String(temperatura);
           postStr +="&amp;field2=";
           postStr += String(umidade);
           postStr +="&amp;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.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.
Comentários:
Notificações
Notificar
6 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Rafael Gustavo
Rafael Gustavo
06/10/2018 04:29

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

Ronaldo
Ronaldo
Reply to  Rafael Gustavo
09/10/2018 09:11

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.

Mateus Lima
Mateus Lima
Reply to  Rafael Gustavo
04/05/2019 16:35

Queria tbm, por favor, estou tentando tbm fazer uma ligação com varios dispositivos e transmitir através do thingspeak.

Mateus Lima
Mateus Lima
Reply to  Rafael Gustavo
04/05/2019 16:36

Olá rafael, queria que você disponibilizasse o projeto pra min tbm, email : lima.mt96@gmail.com

Rafael Gustavo
Rafael Gustavo
Reply to  Rafael Gustavo
31/10/2019 22:06
Diego
Diego
22/12/2017 08:03

Thiago, é possível montar o sistema para funcionar com bateria/pilha?

Home » Internet Das Coisas » Oficina Maker de IoT – Conecte sua planta à Internet com Thingspeak

EM DESTAQUE

WEBINARS

VEJA TAMBÉM

JUNTE-SE HOJE À COMUNIDADE EMBARCADOS

Talvez você goste: