ÍNDICE DE CONTEÚDO
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
/* 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: [email protected]
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: [email protected]
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 : [email protected]
Instruções
https://www.instructables.com/id/ESP-01-DHT22-Thingspeakcom/
Thiago, é possível montar o sistema para funcionar com bateria/pilha?