Estação meteorológica sem fio Arduino
Componentes e suprimentos
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Sobre este projeto
Construir uma estação meteorológica sem fio é uma ótima experiência de aprendizado. Quando terminar de construir este projeto, você terá um melhor entendimento de como funcionam as comunicações sem fio, como funcionam os sensores e como a plataforma Arduino pode ser poderosa. Com este projeto como base e a experiência adquirida, você poderá construir facilmente projetos mais complexos no futuro.
Uma estação meteorológica é um dispositivo que coleta dados relacionados ao clima e ao meio ambiente usando muitos sensores diferentes. Podemos medir muitas coisas como:
- Temperatura
- Umidade
- Vento
- Pressão barométrica
- índice UV
- chuva
Na estação meteorológica que vamos construir, vamos medir a temperatura e a umidade em dois locais e mostrar a data e a hora atuais. Construir uma estação meteorológica é extremamente fácil. Mas um fabricante pode construir uma unidade com um display TFT colorido e recursos que correspondem aos de uma unidade comercial? A resposta é sim! Com o poder do software e hardware de código aberto, pode-se construir facilmente esta impressionante estação meteorológica!
O projeto consiste em duas partes:o transmissor e o receptor.
O transmissor mede a temperatura e a umidade e envia os dados sem fio para o receptor. O receptor mede a temperatura e a umidade, recebe os dados do sensor remoto e exibe tudo em um grande display TFT colorido.
Vamos construir esse projeto!
Etapa 1:obtenha todas as peças
As peças necessárias para construir este projeto são as seguintes:
- Arduino Due ▶ http://educ8s.tv/part/ArduinoDue
- Arduino Mega ▶ http://educ8s.tv/part/ArduinoMega
- Arduino Nano ▶ http://educ8s.tv/part/ArduinoNano
- Visor TFT de 3,2 "▶ http://educ8s.tv/part/32TFT
- DHT22 ▶ http://educ8s.tv/part/DHT22
- NRF24L01 ▶ http://educ8s.tv/part/NRF24L01
- DS3231 RTC ▶ http://educ8s.tv/part/DS3231
- Breadboard ▶ http://educ8s.tv/part/SmallBreadboard
- Wires ▶ http://educ8s.tv/part/Wires
- Pinos de cabeçalho ▶ http://educ8s.tv/part/HeaderPins
- Xiaomi Powerbank ▶ http://educ8s.tv/part/Powerbank
O custo do projeto é de cerca de 40 $. Você pode reduzir o custo do projeto em 5 $ se usar o Arduino Mega em vez do Arduino Due. Optei por usar o Arduino Due para o receptor porque é muito rápido e tem muita memória. Isso será muito útil no futuro, à medida que adicionarmos mais recursos ao projeto.
Etapa 2:Sensor de Temperatura e Umidade - DHT22
O DHT22 é um sensor de temperatura e umidade muito popular. É barato, fácil de usar e a especificação garante boa precisão e exatidão.
Os sensores DHT são compostos por duas partes:um sensor capacitivo de umidade e um termistor. Há também um chip interno que faz algumas conversões de analógico para digital e emite um sinal digital com a temperatura e a umidade. O sinal digital é bastante fácil de ler usando qualquer microcontrolador.
Características do DHT22
- Baixo custo
- 3 a 5 V de alimentação e E / S
- 2,5mA máximo de uso de corrente durante a conversão
- leituras de umidade de 0-100% com precisão de 2-5%
- leituras de temperatura de -40 a 125 ° C ± 0,5 ° C de precisão
- lento
A conexão com o Arduino é extremamente fácil. Conectamos o pino do sensor com o sinal + à saída de 5 V ou 3,3 V do Arduino. Conectamos o pino do sensor com o sinal - ao TERRA. Por último, conectamos o pino OUT a qualquer pino digital do Arduino.
Para usar o sensor DHT22 com Arduino, temos que usar a biblioteca DHT.
https://github.com/adafruit/DHT-sensor-library
Etapa 3:Módulo de relógio em tempo real DS3231
O módulo DS3231 Real-Time Clock é como o nome sugere um relógio de tempo real. Usando sua bateria, ele pode manter o tempo por anos, pois tem um consumo mínimo de energia.
O custo do módulo é extremamente baixo; custa cerca de 2 $ incluindo a bateria! Vamos usá-lo para manter o tempo em nosso Projeto Estação Meteorológica.
Etapa 4:NRF24L01 +:Módulos sem fio
O módulo NRF24L01 é um módulo transceptor bidirecional de baixo custo. O custo é inferior a 3 $! Ele opera na banda de 2,4 GHz e pode atingir uma taxa de dados de 2 Mbits! Impressionante, não é? Ele usa a interface SPI para se comunicar com o Arduino, por isso é muito fácil de usar com ele. Temos que conectar 7 dos 8 pinos do módulo para fazê-lo funcionar com o Arduino.
Infelizmente, não podemos conectar o módulo na placa de ensaio, então usaremos fios macho-fêmea para conectar o módulo ao Arduino. O pino número 1 do módulo é GND. Você tem que conectá-lo ao Arduino Ground. O próximo pino é Vcc. Você deve conectá-lo à saída de 3,3 V do Arduino Uno. Tome cuidado! Não conecte em 5V ou você destruirá seu módulo! O terceiro pino é denominado CE e você pode conectá-lo a qualquer pino digital de sua preferência. Neste exemplo, vou conectá-lo ao pino digital 7. O pino 4 é CS e você pode conectar a qualquer pino digital também. Vou conectar ao pino digital 8. O próximo pino é SCK, que vai para o pino digital 13 do Arduino Uno. O próximo pino é o MOSI, que vai para o pino digital 11, e o último pino do MISO, que vai para o pino digital 12. É isso!
Para ser fácil de usar, o módulo com Arduino temos que usar a seguinte biblioteca:https://github.com/TMRh20/RF24
Se você não usou os módulos NRF24L01 + até agora, verifique o vídeo em anexo para ver como usá-lo construindo um projeto simples. Isso o ajudará a entender como funciona.
Etapa 5:construindo o transmissor
Vamos primeiro construir o transmissor. É muito simples.
Para o transmissor, usamos:
- Um Arduino Nano
- Um sensor DHT22
- Um módulo sem fio NRF24L01 +
- Uma placa de ensaio
- Alguns fios
Conectamos o pino de saída do sensor ao pino digital 4 do Arduino Nano. Conectamos o Ground e o Vcc e estamos prontos. Agora, basta conectar o módulo sem fio NRF24L01.
Anexe-o usando os pinos que são mostrados na terceira imagem. Para obter mais detalhes, assista ao vídeo detalhado que anexei na etapa anterior.
É isso, seu transmissor está pronto. Vamos agora passar para o receptor.
Etapa 6:Construindo o receptor
Para construir o receptor, precisamos das seguintes peças:
- Um Arduino Due ou um Mega
- Um módulo DS3231 Real Time Clock
- Um sensor de temperatura e umidade DHT22
- Um módulo NRF24L01 + sem fio
- Um visor TFT colorido de 3,2 "
- Uma placa de ensaio
- 7 pinos de cabeçalho
- Alguns fios
No início, dobramos 7 pinos de cabeçalho e os colocamos em alguns dos pinos do Arduino Due. Precisamos de um para aterramento e outro para 3,3V. Precisamos de dois nos pinos I2C. Precisamos dos 3 pinos digitais restantes de 6 a 8. Também precisamos soldar três fios aos pinos SPI de hardware dos pinos do Arduino Due. Precisamos de MOSI, MISO e SCK. Verifique o diagrama cuidadosamente. Conectamos os fios aos pinos do cabeçalho e estamos prontos para conectar o display.
Conectando o DS3231
- pino VCC na saída de 3,3 V do Arduino
- pino GND para GND do Arduino e
- pino SDA (linha de dados serial) para pino SDA do Arduino e
- pino SCL (linha de relógio serial) para pino SCL do Arduino
Conectando o Sensor DHT22
- pino VCC na saída de 3,3 V do Arduino
- pino GND para GND do Arduino e
- pino de saída para o pino digital 8 do Arduino
Conectando o módulo NRF24L01
- PIN GND para GND do Arduino
- pino VCC para Arduino 3.3V
- 3º pino para pino digital 6 do Arduino
- 4º pino para o pino digital 7 do Arduino
- 5º pino para pino SCK que soldamos
- 6º pino para pino MOSI que soldamos
- 7º pino para pino MISO que soldamos
Etapa 7:o código do transmissor
Em primeiro lugar, temos que fazer o download da biblioteca RF24 para facilitar nossa vida quando trabalhamos com os módulos wireless NRF24L01. Também precisamos da biblioteca DHT para o sensor DHT22.
- Biblioteca DHT22: https://github.com/adafruit/DHT-sensor-library
Vamos primeiro ver o código do transmissor. Ele envia uma estrutura de dados simples que contém dois flutuadores, a temperatura e a umidade.
Para estabelecer um elo de comunicação, temos que criar um “tubo” entre os dois módulos. Esse tubo precisa ter um endereço. Ambos os módulos precisam escrever e ler no mesmo tubo para se comunicarem. Essa é a primeira coisa que definimos em nosso código. Definimos o endereço do tubo como “0”. Em seguida, definimos o canal no qual queremos nos comunicar com o outro módulo. O chip NRF24L01 suporta 126 canais diferentes. Ambos os módulos precisam usar o mesmo canal para se comunicarem. Neste exemplo, estou usando o canal 115. A seguir, defino que quero usar a potência máxima de transmissão que o módulo oferece. Ele usa mais energia, mas amplia o alcance da comunicação. Em seguida, definimos a taxa de dados da transmissão. Eu o configurei para 250Kbs, que é a taxa de dados mais baixa possível, a fim de alcançar um melhor alcance. O próximo passo é abrir o pipe para escrever nele mais tarde.
Na função de loop, lemos os valores de temperatura e umidade do sensor, salvamos esses dados na estrutura de dados e, em seguida, enviamos a estrutura de dados gravando a estrutura de dados no tubo. É isso. Você pode encontrar o código anexado neste tutorial.
FU361QHIQFCEYSE.ino
Etapa 8:O código do receptor
Vamos agora ver o código do receptor. Precisamos de 4 bibliotecas. Primeiro, temos que baixar a biblioteca para a exibição neste link:
Biblioteca DISPLAY: https://github.com/Bodmer/TFT_HX8357_Due
Depois de baixar a biblioteca, você deve abrir o arquivo User_Setup.h. Comente a linha 13 e descomente a linha 14, porque o monitor que temos está usando o driver HX8357C. Agora podemos continuar com as outras 3 bibliotecas. Precisamos de uma biblioteca para o relógio em tempo real, uma para o sensor DHT22 e, por último, uma para o módulo sem fio.
- NRF24L01:https://github.com/TMRh20/RF24
- DHT22:https://github.com/adafruit/DHT-sensor-library
- DS3231:https://github.com/SodaqMoja/Sodaq_DS3231
Vamos dar uma olhada no código. A primeira coisa que temos que fazer é definir a hora para o módulo de relógio em tempo real, se ainda não estiver definido. Para fazer isso, insira a data e hora atuais no
setRTCTime
função, descomente o setRTCTime
chamada da função na linha 54 e carregue o programa no Arduino. Agora a hora está acertada. Mas então temos que comentar setRTCTime
chame a função novamente e carregue o programa para o Arduino mais uma vez. O código do receptor funciona da seguinte maneira. Na função de configuração, inicializamos todos os sensores e os módulos e imprimimos a Interface do Usuário. Em seguida, na função de loop, verificamos continuamente se há novos dados sem fio. Se houver novos dados, salvamos esses dados em variáveis e os imprimimos no display. Lemos a temperatura e a umidade uma vez por minuto e só atualizamos o display se houver uma alteração nos valores. Desta forma, reduzimos ainda mais a cintilação da tela! Também preparei uma versão do código com a temperatura exibida em graus Fahrenheit. Você pode encontrar as duas versões do código anexadas neste tutorial.
F053BTXIQFCEZ09.ino FNV3X4LIQFCEZ0C.ino
Etapa 9:Testando o projeto
A última etapa para ligar tudo e ver se tudo está funcionando conforme o esperado. Nesse caso, na parte superior do visor, a data e a hora atuais são exibidas. Na parte inferior do display, você pode ver a temperatura e a umidade do sensor remoto e local.
Se não houver dados exibidos para o sensor remoto , mova o transmissor para mais perto - ele pode estar fora de alcance. Se o problema persistir, verifique todas as conexões mais uma vez - deve haver algo errado aí.
Como você pode ver, este projeto é uma grande demonstração do que o hardware e software de código aberto são capazes. Em poucas horas, pode-se construir um projeto tão impressionante! Claro, isso é apenas o começo. Podemos adicionar muitos mais recursos ao projeto. Em breve adicionarei um botão, para que possamos exibir gráficos e ter diferentes modos. Também podemos adicionar mais sensores, registro de dados, conexão com a Internet e assim por diante. Estamos usando o Arduino Due, portanto, temos bastante memória para implementar muito mais coisas. Eu adoraria ouvir sua opinião sobre este projeto. Como você quer ver isso evoluir? Por favor, poste seus comentários ou ideias na seção de comentários abaixo!
Se quiser mais detalhes, assista ao vídeo do YouTube na introdução ou visite meu site. Obrigado por dar uma olhada!
Código
Github
https://github.com/adafruit/DHT-sensor-libraryhttps://github.com/adafruit/DHT-sensor-libraryGithub
https://github.com/TMRh20/RF24https://github.com/TMRh20/RF24Github
http:// DISPLAY:% 20https://github.com/Bodmer/TFT_HX8357_Duehttp:// DISPLAY:% 20https://github.com/Bodmer/TFT_HX8357_DueGithub
https://github.com/SodaqMoja/Sodaq_DS3231https://github.com/SodaqMoja/Sodaq_DS3231Processo de manufatura
- Estação meteorológica Raspberry Pi 2
- Estação meteorológica Raspberry Pi
- Estação meteorológica V 2.0
- Dados digitais Arduino
- Homem de Ferro
- Encontre-me
- Arduino 3D-Printed Robotic Arm
- Controle do umidificador Arduino
- $ 10 Estação meteorológica portátil Arduino (AWS)
- eDOT - Relógio de precisão baseado em Arduino e estação meteorológica