Olha quem voltou por aqui! Para o projeto da 6ª edição da BlueBox escolhemos uma estação meteorológica que utiliza o módulo ESP8266 NodeMCU, o display LCD TFT 1.8”, o sensor de umidade e temperatura DHT11 e o sensor de pressão e temperatura BMP180.
A estação meteorológica utiliza os sensores DHT11 e BMP180 para monitorar as informações locais de temperatura, umidade relativa do ar e pressão atmosférica; também utiliza os serviços do Open Weather Map para obter a previsão do tempo para os próximos 3 dias e o Network Time Protocol para adquirir informações de horário e data atuais.
Ficou empolgado para saber mais detalhes do projeto da sua BlueBox? Então siga o tutorial abaixo. 😉
Materiais Necessários
Para montar a sua estação meteorológica, você vai precisar dos seguintes componentes:
- Módulo WiFi ESP8266 NodeMCU
- Display LCD TFT 1.8” 128×160
- Sensor de umidade de temperatura DHT11
- Sensor de pressão e temperatura BMP180
- Jumpers Fêmea-Fêmea
- Barra de Pinos 1×40 90º
- Parafusos M2.2 x 6.5mm
- Tubo termo retrátil φ2.0 x 40mm
- Case da estação meteorológica
Além disso, você vai precisar de algumas ferramentas e acessórios extras:
- Ferro de solda
- Estanho
- Sugador de solda
- Malha fita dessoldadora
- Lupa com Suporte e Pinça
- Chave Phillips nº 1
- Alicate de corte
- Cabo Micro USB
- Fonte 5V / 2A Micro USB (opcional)
Obtendo uma chave no Open Weather Map
O Open Weather Map é um serviço que fornece dados meteorológicos do mundo inteiro. A fim de obter a previsão do tempo para os próximos 3 dias, vamos utilizar a API One Call. Para utilizar essa API, você deve criar uma chave que será utilizada no código do seu NodeMCU. Vá até a página do Open Weather Map e crie uma conta.
Na aba superior, clique no nome do seu usuário e depois clique em My API Keys.
Em Create Key, insira um nome para sua chave e clique em Generate.
Poucos segundos depois sua chave estará criada. Guarde-a, pois ela será utilizada no código.
Configurações da IDE do Arduino para o NodeMCU
Entre na IDE do Arduino e clique em Arquivo -> Preferências.
Digite ou cole o link abaixo no campo URLs adicionais de Gerenciadores de Placas:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
A sua tela ficará assim:
Clique em OK para retornar à tela principal da IDE.
Depois clique em Ferramentas -> Placa -> Gerenciador de Placas.
Na barra de busca digite esp8266. Aparecerá então “esp8266 by ESP8266 Community”. Clique em Instalar.
Após alguns minutos, as placas da linha ESP8266 já estarão disponíveis na lista de placas da IDE do Arduino. Vá em Ferramentas -> Placa e selecione NodeMCU 1.0 (ESP12-E Module).
Pronto! Agora você pode conectar o NodeMCU ao seu computador. Não esqueça de selecionar a porta em que o mesmo está conectado. Para isso, vá em Ferramentas -> Porta e selecione a porta que o NodeMCU está inserido.
Código da estação meteorológica
Antes de carregar o código para a placa, é necessário baixar e instalar a pasta com as bibliotecas:
Faça o download da biblioteca, descompacte a pasta e cole o conteúdo da mesma na pasta Libraries da Arduino IDE.
Depois, faça o download do código. Existem duas opções: uma com o fundo da tela claro e outra com fundo de tela escuro.
Faça o download do código, descompacte a pasta e cole-a na pasta Arduino da Arduino IDE.
Agora precisamos modificar algumas linhas do código. Primeiro, em WIFI_SSID e em WIFI_PASSWORD insira o nome e a senha da sua rede WiFi (mantenha as aspas).
Se necessário, altere a constante GMT. O código já está configurado para GMT -3 (-3*60*60). Se você mora em uma localidade diferente, use o GMT adequado.
Insira sua chave da API Open Weather Map. Depois, insira a latitude e longitude da localidade que você deseja obter a previsão do tempo. Para obter a latitude e longitude, acesse o site Latlong.
Pronto! Agora você pode carregar o código para a placa.
Montagem da estação meteorológica
O primeiro passo da montagem é dessoldar a barra de pinos do display LCD TFT 1.8”. Para isso, esquente cada um dos terminais usando o ferro de solda e retire todo o estanho usando o sugador de solda e a malha dessoldadora. Com cuidado e usando um alicate, puxe a barra de pinos até que ela saia por completo.
Se essa é sua primeira vez fazendo uma dessolda, saiba que este é um processo lento, então tenha paciência.
Separe 11 pinos da barra de pinos de 90º. Posicione a barra de pinos como mostra a imagem abaixo e solde cada um dos terminais.
Solde a barra de pinos que acompanha o sensor BMP180.
Corte o termo retrátil em três partes iguais. Separe três jumpers e corte a ponta de uma das extremidades de cada um deles. Passe cada um dos jumpers por dentro de cada parte do termo retrátil. Para facilitar a solda posterior, estanhe as pontas dos jumpers.
Solde os jumpers nos terminais do DHT11. Perceba que o terceiro pino do DHT11 não é utilizado. Depois, posicione o termo retrátil acima dos pinos e esquente os mesmos.
Agora é necessário conectar todos os componentes ao NodeMCU. Primeiro vamos conectar o display da seguinte forma:
Display LCD TFT 1.8” | ESP8266 NodeMCU |
VCC | 3.3V |
GND | GND |
CLK | D5 |
SDA | D7 |
RS | D8 |
RST | D4 |
CS | D3 |
Depois conecte o sensor BMP180 da seguinte forma:
Sensor BMP180 | ESP8266 NodeMCU |
VIN | 3.3V |
GND | GND |
SCL | D1 |
SDA | D2 |
Por último, faça a conexão do sensor DHT11:
Sensor DHT11 | ESP8266 NodeMCU |
Pino 1 | 3.3V |
Pino 2 | D6 |
Pino 4 | GND |
Antes de encaixar todos os componentes na case da estação meteorológica, ligue o NodeMCU e verifique se tudo está funcionando corretamente.
Encaixe o display na parte frontal da case.
Encaixe o NodeMCU na tampa da case. Note que a entrada micro USB do NodeMCU deve estar posicionada acima do chanfro da tampa.
Também prenda os sensores DHT11 e BMP180 na tampa.
Cuidadosamente, junte a parte frontal da case com a tampa. Quando tudo estiver no lugar, use os quatro parafusos para fechar a case.
Por fim, insira o cabo micro USB (ou uma fonte DC chaveada 5V / 2A) para ligar sua estação meteorológica.
Funcionamento da sua estação meteorológica
A estação meteorológica é formada por quatro telas:
- A temperatura ambiente, que é coletada pelo sensor BMP180;
- A umidade ambiente, que é coletada pelo sensor DHT11;
- A pressão atmosférica, que é coletada pelo sensor BMP180;
- A previsão do tempo dos próximos 3 dias.
Gostou do projeto da 6ª edição da BlueBox? Conte o que achou da estação meteorológica abaixo.
Rosana, boa tarde. Recebi minha BlueBox, montei a estação metereológica, fiz os ajustes e, depois de carregar o programa utilizando a IDE do Arduino em meu Mac conforme instruções acima, o display não mostra nada… No módulo ESP8266 só vejo uma luz azul piscando ao ligar… Há outro led no módulo? Depois de algumas tentativas, não estou mais conseguindo carregar o programa. Será que a placa está com problemas. Como posso testar? Obrigado,
Arduino: 1.8.13 (Mac OS X), Placa:”NodeMCU 1.0 (ESP-12E Module), 80 MHz, Flash, Legacy (new can return nullptr), All SSL ciphers (most compatible), 4MB (FS:2MB OTA:~1019KB), 2, v2 Lower Memory, Disabled, None, Only Sketch, 115200″
Executable segment sizes:
IROM : 275964 – code in flash (default or ICACHE_FLASH_ATTR)
IRAM : 27988 / 32768 – code in IRAM (ICACHE_RAM_ATTR, ISRs…)
DATA : 15456 ) – initialized variables (global, static) in RAM/HEAP
RODATA : 1932 ) / 81920 – constants (global, static) in RAM/HEAP
BSS : 31464 ) – zeroed variables (global, static) in RAM/HEAP
O sketch usa 321340 bytes (30%) de espaço de armazenamento para programas. O máximo são 1044464 bytes.
Variáveis globais usam 48852 bytes (59%) de memória dinâmica, deixando 33068 bytes para variáveis locais. O máximo são 81920 bytes.
esptool.py v2.8
Serial port /dev/cu.usbserial-1410
Connecting…….._____….._____….._____….._____….._____….._____…..____Traceback (most recent call last):
File “/Users/felixrib/Library/Arduino15/packages/esp8266/hardware/esp8266/2.7.4/tools/upload.py”, line 65, in
esptool.main(cmdline)
File “/Users/felixrib/Library/Arduino15/packages/esp8266/hardware/esp8266/2.7.4/tools/esptool/esptool.py”, line 2890, in main
esp.connect(args.before)
File “/Users/felixrib/Library/Arduino15/packages/esp8266/hardware/esp8266/2.7.4/tools/esptool/esptool.py”, line 483, in connect
raise FatalError(‘Failed to connect to %s: %s’ % (self.CHIP_NAME, last_error))
esptool.FatalError: Failed to connect to ESP8266: Timed out waiting for packet header
esptool.FatalError: Failed to connect to ESP8266: Timed out waiting for packet header
Olá Felix,
Sugiro que primeiro você refaça a instalação do conjunto de placas ESP8266. Depois, sem nenhum dos componentes conectados ao NodeMCU, carregue o exemplo Blink e veja o que acontece.
Dê o retorno por aqui 😉
Abraço!
Rosana, obrigado pelo retorno. Depois de seguir sua dica, descobri que o problema estava no pino CS (Chip Select) de display (fui montando fio a fio e testando). Descobri que, ao tentar retirar a barra de pinos do display para trocar pela de 90o, deixei que um resíduo de solda fizesse contado com o resíduo do outro pino RST (Reset). Assim que fiz a limpeza, tudo passou a funcionar. Bem bacana esta estação. Grato, Felix.
Fico feliz que tenha conseguido encontrar o problema!
Rosana, a temperatura está marcando com uns 9oC a mais… o sensor de temperatura tem algum tipo de ajuste? Obrigado,
Rosana, boa noite. Gostaria de usar o BMP280 no lugar do BMP180 neste projeto. Poderia me ajudar nos ajustes do hardware/software para esta alteração? Obrigado.
Seria legal aumentar o tempo de requisição das chamadas da API, deixei um dia ligado e já consumiu o limite gratuito.
Rodrigo,
Fiz este ajuste… aumentei o delay de atualizaçao para rodar a cada 90 segundos…
tft.fillScreen(PRETO);
data();
horario();
temperatura();
delay(90000);
A propósito, a temperatura no seu sistema está correta?
Abraço,
Felix.
Parabéns, gostei do projeto.
Olá Rosana, minha duvida é referente ao LCD1.8″, pode ser qualquer modelo, o preciso respeitar seria o tamanho e formato? pois pretendo usar o case sugerido. No aguardo.
Obrigado
Wilson,
Caso use a case presente no post, é necessário que siga o mesmo formato e tamanho.
Abraços!
Diogo – Equipe FilipeFlop
Boa noite !
Eu fiz o download dos arquivos, porém quando descompacto aparece que o arquivo está corrompido.
Está acontecendo com todos os arquivos do post .
Vocês tem Git hub que compartilham os códigos dos projetos ?
Parabéns pelo projeto !
Caros, quando utilizar o protocolo NTP, o melhor é utilizar o ‘pool.ntp.br’.
Este pool está localizado totalmente no Brasil e ainda utiliza servidores NTP stratum 1, os servidores stratum 1 estão sincronizados com relógios atômicos que são, por sua vez, sincronizados com o relógio atômico do Observatório Nacional.
O pool.ntp.br conta com 8 servidores NT no Brasil. Mais informações em http://ntp.nic.br/
Utilizar este pool dentro do Brasil é mais eficiente na sincronização do tempo.
Abraços,
Cordeiro