Projeto HMI Interativo com Nextion, Arduino Mega e Sensores
Componentes e materiais
| Componente | Quantidade |
|---|---|
| Arduino Mega 2560 | 1 |
| Shield Proto para Arduino Mega | 1 |
| Display HMI Nextion 2.4" | 1 |
| Leitor de cartão SD | 1 |
| Sensor de Temperatura DHT22 | 1 |
| Sensor Atmosférico BME280 (SparkFun) | 1 |
| Módulo RTC DS3231 | 1 |
| Receptor Superheterodino 433MHz RXB6 | 1 |
| Resistor 10k ohm | 1 |
| Resistor 475 ohm | 1 |
| Timer NE555 | 1 |
| Fonte AC-DC 5V | 1 |
Ferramentas necessárias
- Ferro de solda (genérico)
Aplicativos e serviços online
- Arduino IDE
- Nextion Editor
Sobre o projeto
O display Nextion pode economizar espaço de programa no Arduino?
Às vezes queremos usar gráficos coloridos para criar projetos mais atraentes. Infelizmente, belos gráficos exigem grande quantidade de recursos, como memória do controlador para rotinas de bibliotecas gráficas e armazenamento externo, como cartão SD, para armazenar imagens. O controlador Arduino, por outro lado, tem recursos limitados e não é totalmente adequado para projetos gráficos ricos. Para reduzir os requisitos de recursos, podemos usar o display Nextion. Neste caso, não precisamos de armazenamento externo para imagens e podemos reduzir significativamente os requisitos de memória.
Do ponto de vista do controlador, o display Nextion é apenas um dispositivo serial, não mais caro em recursos do que um display LCD preto e branco comum. Então, é possível construir uma estação meteorológica no Arduino UNO e tela Nextion?
A resposta não é exatamente. Você pode construir uma, mas teria funcionalidade muito limitada devido à falta de memória do controlador. Não é possível incluir algum gráfico de histórico, por exemplo. Para construir uma estação meteorológica de rica funcionalidade, você precisa de um microcontrolador mais avançado.
Neste artigo, vou mostrar como construir a estação meteorológica destacada com gráficos atraentes e registro de dados que recebe dados meteorológicos de muitos sensores sem fio. Esta estação meteorológica é baseada em display Nextion e Arduino Mega 2560.
A ideia principal
Vamos supor que já temos sensores meteorológicos externos, como este ou fabricados pelo famoso fabricante OREGON, THGN123N. Vamos criar nossa própria unidade central, que recebe os dados meteorológicos desses sensores externos, exibe temperatura, umidade e pressão atmosférica, salva periodicamente os dados no cartão SD e desenha gráficos dos dados históricos. Além disso, a unidade central faz algum tipo de previsão do tempo baseada nas mudanças de pressão.
A principal característica desta unidade de estação meteorológica é que ela usa a imagem de fundo para mostrar a previsão do tempo, não apenas um pequeno ícone como outras estações costumam fazer.
Os truques do display
A grande desvantagem do display Nextion é que imagens transparentes não são suportadas pelo firmware do display. Portanto, não podemos criar elementos arredondados. Você tem que usar 'fundo recortado' dentro dos seus widgets de texto para mostrar os dados de texto sobre imagem personalizada. No meu caso, isso significa que quando o fundo do display muda, todos os fundos dos widgets de texto devem ser alterados de acordo. Então, precisamos criar várias telas completas para cada previsão do tempo.
Por outro lado, usando mudanças de pressão, podemos fazer três tipos diferentes de previsão do tempo: limpo, nublado ou chuva (neve). Também existem dois principais períodos do dia: dia e noite. Então, precisamos criar apenas 8 telas diferentes:
- Ensolarado (céu limpo, dia)
- Com lua (céu limpo, noite)
- Nublado dia
- Nublado noite
- Chuva dia
- Chuva noite
- Neve dia
- Neve noite
Todas essas telas devem ser criadas dentro do display Nextion usando o Nextion Editor. Todas compartilham os mesmos nomes de widgets para campos de texto (temperatura, umidade, pressão) para nossos dados de sensores. Quando o controlador atualiza a tela, ele primeiro seleciona a tela correspondente com o fundo desejado, depois atualiza os dados dos sensores dentro dos widgets do display.
Dados da tela principal
A tela principal divide-se em três áreas principais. Na linha superior do display, você encontra dados do sensor interno: temperatura e umidade da casa, pressão atmosférica, hora e data atuais. Assume-se que todos vivemos em casas com janelas normais, então a pressão atmosférica é a mesma dentro e fora de casa. Portanto, o controlador tem apenas um sensor de pressão dentro do módulo principal para medir com precisão a pressão atmosférica.
Na metade esquerda da tela, você encontra os dados do sensor principal: temperatura e umidade. É conveniente ver os dados do sensor externo principal na tela o tempo todo. O ID do sensor principal pode ser definido na tela de configuração. Você pode selecionar o ID necessário na lista de IDs de sensores disponíveis. Por favor, seja paciente e aguarde até que todos os sensores externos enviem sinais ao controlador. Geralmente leva cerca de dois minutos.
No lado direito da tela, você encontra dados de todos os sensores externos e internos: ID do sensor, temperatura e umidade. A informação muda periodicamente, permitindo monitorar dados de todos os sensores. O controlador suporta até 4 sensores externos. Se você tiver apenas um sensor externo, os dados do sensor interno também seriam exibidos no lado direito da tela principal.
O controlador tem um módulo de relógio em tempo real preciso, DS3231, permitindo obter hora e data reais. Esses dados de relógio são usados para registrar os dados dos sensores junto com carimbo de tempo no cartão SD, construir previsão de dia e noite e controlar o brilho do display.
Outras telas
Existem várias telas extras dentro do display Nextion:
- Tela exibindo hora do nascer e pôr do sol e idade da lua
- Tela para configuração do controlador
- Tela para ajustar relógio em tempo real
- Tela para exibir dados históricos dos sensores
Para acessar a tela 'nascer do sol', toque na tela principal na data atual. Para configurar o controlador e ajustar o relógio, toque na hora atual. Para exibir dados históricos, toque na temperatura ou pressão.
A tela de dados de log histórico
Existem dois modos para a tela de dados históricos: período de 1 dia e período de 8 dias. Para alterar o modo atual, toque na área do gráfico.
Existem dois menus de barra de ferramentas de ícones no lado esquerdo e topo da tela de histórico. Na barra de ferramentas esquerda, você pode selecionar o ID do sensor desejado (escolha entre os disponíveis). O sensor interno tem ID igual a 0. Na barra de ferramentas superior, você pode alterar o tipo de dado a ser exibido: pressão, temperatura ou umidade.
A tela de configuração
Na tela de configuração, você pode:
- Personalizar o ID do sensor externo principal (aguarde até que o controlador receba sinais de todos os sensores)
- Configurar horários da manhã e noite (quando o controlador muda o brilho do display)
- Configurar o brilho do display
Evitando travamento do controlador
Para aumentar a estabilidade do controlador e evitar travamentos, um circuito watchdog externo foi implementado no esquemático. Este circuito pode ser implementado em outros projetos também, então aqui você pode ver a imagem separada para este timer abaixo.
O timer reiniciaria o controlador Arduino em cerca de 2-3 minutos se não recebesse o sinal através do pino A2 do Arduino.
Conclusão
A estação meteorológica tem display com gráficos ricos, muito atraente visualmente, e funciona de forma muito estável há cerca de meio ano.
Código
Código fonte: GitHub - Weather_nextion.ino
Esquemáticos
Esquemático completo: GitHub - weather_mega_nextion.jpg
Processo de manufatura
- Construa o Clássico Jogo Pong no Arduino UNO com Display OLED – Tutorial Passo a Passo
- Mealheiro Inteligente: Controlar Aceitador de Moedas com Arduino Nano
- Monitor de Temperatura e Relógio Tempo Real com Arduino Due e Display TFT 3.2"
- Controlar um LED via Bluetooth com Arduino – Guia DIY Simples
- Conectando Arduino Mega ao Módulo GPS NEO‑6M: Guia Passo a Passo
- Construa um Voltímetro DIY com Arduino e Display Nokia 5110 – Guia Passo a Passo
- Exibir Temperatura, Umidade e Pressão do BME280 em Touchscreen Nextion
- Kit de Treinamento Arduino Completo com Mega 2560, Sensores, Motores e PCB Personalizada
- Construa o App Fridgeye com Display Nextion: Guia Passo a Passo
- Medição Precisa de Radiação Solar com Arduino UNO e Ethernet Shield