Monitoramento Meteorológico em Tempo Real com Arduino e ThingSpeak IoT
Componentes e Materiais
| Arduino UNO | 1 |
| Espressif ESP8266 ESP-01 | 1 |
| Sensor Temperatura e Umidade DHT11 (3 pinos) | 1 |
| Protoboard (genérica) | 1 |
| Fios Jumpers (genéricos) | 1 |
| Fonte para Protoboard SparkFun 5V/3.3V | 1 |
Aplicativos e Serviços Online
| ThingSpeak API |
| Arduino IDE |
| Microsoft Windows 10 |
Sobre o Projeto
ESTAÇÃO METEOROLÓGICA ARDUINO THINGSPEAK
Mergulhando no IoT

Mergulhar no IoT pode ser desafiador para um iniciante, não sabendo por onde começar das vastas opções disponíveis. Deus abençoe o Thingspeak. Este blog irá guiá-lo através do seu primeiro projeto Thingspeak IoT, que é:
- a) Barato e acessível
- b) Fácil de entender
- c) MUITO LEGAL.
O projeto – Um sensor de temperatura e umidade enviando dados para a Nuvem Thingspeak usando um Arduino e um módulo WiFi ESP-01.
Coisas que Você Vai Precisar
1. Arduino UNO

2. ESP-01

3. Sensor DHT-11


4. Protoboard
5. Fonte para Protoboard

5. Fios de conexão.
NOTA – Agora você poderia usar seu Arduino para alimentar o sensor e o módulo WiFi, mas uma fonte externa como um módulo Fonte para Protoboard será melhor porque as demandas de corrente de pico do módulo WiFi em operação não podem ser atendidas pela placa. Eu tentei, confiem em mim.
Cerro, vamos mergulhar direto.
CONEXÕES

ESP-01
- 1. VCC – 3.3V
- 2. GND – GND
- 3. CH_PD – 3.3V
- 4. RESET – 3.3V
- 5. TX – 2 (Arduino)
- 6. RX – 3 (Arduino)
DHT-11
- 1. VCC – 5V
- 2. OUT – A0
- 3. GND – GND
Não esqueça de configurar o jumper para 3.3V na Fonte para Protoboard.
Agora ligue tudo e se nada queimar ou soltar fumaça, até agora tudo bem.
CONFIGURANDO O THINGSPEAK
Vá para a página inicial do Thingspeak.

Cadastre-se e crie um Novo Canal com dois campos: Temperatura e Umidade.
Ao criar um novo canal, você obterá algo chamado Chaves API.

Usaremos estas mais adiante.
CONFIGURANDO A ARDUINO IDE
Agora este passo é fundamental para fazer o código rodar. BIBLIOTECAS.
Você usará duas no código e uma terceira para usar as do código.
Destacadas na caixa vermelha.

SoftwareSerial.h é uma biblioteca nativa, então sem problemas aí.
1. As bibliotecas que você precisa instalar por conta própria são a Adafruit Unified Sensor Library e a DHT sensor library. Links de download:
DHT Sensor by adafruit – https://github.com/adafruit/DHT-sensor-library
Adafruit Unified Sensor Library – https://github.com/adafruit/Adafruit_Sensor
2. Baixe ambas e adicione usando o recurso Add .ZIP Library na IDE.

Reta Final
O código está aqui – https://github.com/imalwaysontheinternet/Weather-Stasion Ou apenas copie o código daqui e cole no seu sketch.
Há algumas coisas a fazer no código antes de carregá-lo.
1. Cole sua Write API key aqui

2. Insira seu SSID e Senha do WiFi aqui.

Carregue o código. Se tudo foi feito corretamente, seu Canal Thingspeak deve parecer com isto.

Note que há um intervalo de 15 segundos entre atualizações nos gráficos.
Se ainda não funcionar, escreva seus problemas nos comentários abaixo, estamos sempre felizes em ajudar. Visite virginrobotics.blogspot.com para dúvidas e mais projetos como este.
Código
CÓDIGO
String myAPIkey = "Sua Write API key aqui";
#include <SoftwareSerial.h>
#include <DHT.h>;
SoftwareSerial ESP8266(2, 3); // Rx, Tx
#define DHTTYPE DHT11
#define DHTPIN A0
DHT dht(DHTPIN, DHTTYPE,11);
float humidity, temp_f;
long writingTimer = 17;
long startTime = 0;
long waitTime = 0;
boolean relay1_st = false;
boolean relay2_st = false;
unsigned char check_connection=0;
unsigned char times_check=0;
boolean error;
void setup() {
Serial.begin(9600);
ESP8266.begin(9600);
dht.begin();
startTime = millis();
ESP8266.println("AT+RST");
delay(2000);
Serial.println("Conectando ao Wifi");
while(check_connection==0) {
Serial.print(".");
ESP8266.print("AT+CWJAP=\"Nome da Rede Wifi\",\"Senha\"\r\n");
ESP8266.setTimeout(5000);
if(ESP8266.find("WIFI CONNECTED\r\n")==1) {
Serial.println("WIFI CONNECTED");
break;
}
times_check++;
if(times_check>3) {
times_check=0;
Serial.println("Tentando Reconectar..");
}
}
}
void loop() {
waitTime = millis()-startTime;
if (waitTime > (writingTimer*1000)) {
readSensors();
writeThingSpeak();
startTime = millis();
}
}
void readSensors(void) {
temp_f = dht.readTemperature();
humidity = dht.readHumidity();
}
void writeThingSpeak(void) {
startThingSpeakCmd();
// preparação da string GET
String getStr = "GET /update?api_key=";
getStr += myAPIkey;
getStr += "&field1=";
getStr += String(temp_f);
getStr += "&field2=";
getStr += String(humidity);
getStr += "\r\n\r\n";
GetThingspeakcmd(getStr);
}
void startThingSpeakCmd(void) {
ESP8266.flush();
String cmd = "AT+CIPSTART=\"TCP\",\"";
cmd += "184.106.153.149"; // endereço IP api.thingspeak.com
cmd += "\",80";
ESP8266.println(cmd);
Serial.print("Start Commands: ");
Serial.println(cmd);
if(ESP8266.find("Error")) {
Serial.println("AT+CIPSTART error");
return;
}
}
String GetThingspeakcmd(String getStr) {
String cmd = "AT+CIPSEND=";
cmd += String(getStr.length());
ESP8266.println(cmd);
Serial.println(cmd);
if(ESP8266.find(">")) {
ESP8266.print(getStr);
Serial.println(getStr);
delay(500);
String messageBody = "";
while (ESP8266.available()) {
String line = ESP8266.readStringUntil('\n');
if (line.length() == 1) {
messageBody = ESP8266.readStringUntil('\n');
}
}
Serial.print("MessageBody received: ");
Serial.println(messageBody);
return messageBody;
} else {
ESP8266.println("AT+CIPCLOSE");
Serial.println("AT+CIPCLOSE");
}
}
Esquemáticos

Código
https://github.com/imalwaysontheinternet/Weather-Stasion
Processo de manufatura
- Construindo Estação Meteorológica Externa com Raspberry Pi 2 e ADS‑WS1
- Construa Estação Meteorológica Raspberry Pi que Envia Dados Diários por Email
- Estação Meteorológica Avançada v2.0: Monitoramento em Tempo Real de Temperatura, Pressão, Umidade e Altitude
- Dados Digital com Arduino: Gere Números Aleatórios 1-6 em LCD 16x2
- Construa um Homem de Ferro com Arduino: Componentes, Sensores e Guia Passo a Passo
- Find Me: Localizador Inteligente de Objetos com Arduino e Bluetooth
- Construa um Braço Robótico 3D Impresso Funcional com Arduino – Guia Passo a Passo
- Controlador de Umidificador DIY com Arduino e Relé – Configuração Segura de Alta Tensão
- Estação Meteorológica Portátil Arduino por $10 – DIY com Nano, DHT22, BMP180 e LCD
- eDOT: Relógio de Precisão e Estação Meteorológica Arduino com Controle IR Embutido