Proyecto HMI Interactivo con Nextion, Arduino Mega y Múltiples Sensores
Componentes y materiales
| Arduino Mega 2560 | 1 |
| Shield Proto para Arduino Mega | 1 |
| Pantalla Nextion HMI 2.4" | 1 |
| Lector de tarjeta SD | 1 |
| Sensor temperatura/humedad DHT22 | 1 |
| Sensor atmosférico BME280 (temperatura, humedad, presión) | 1 |
| Módulo RTC DS3231 | 1 |
| Receptor superheterodino 433MHz RXB6 | 1 |
| Resistencia 10k Ω | 1 |
| Resistencia 475 Ω | 1 |
| Timer NE555 | 1 |
| Fuente AC-DC 5V | 1 |
Herramientas necesarias
- Soldador (genérico)
Aplicaciones y servicios online
- Arduino IDE
- Nextion Editor
Sobre el proyecto
¿Puede la pantalla Nextion ahorrar memoria en Arduino?
A menudo queremos usar gráficos coloridos para proyectos más atractivos. Desafortunadamente, los gráficos complejos consumen muchos recursos: memoria del controlador para librerías gráficas y almacenamiento externo (tarjeta SD) para imágenes. El Arduino tiene recursos limitados y no es ideal para proyectos gráficos ricos.
La pantalla Nextion soluciona esto: desde el punto de vista del controlador, es solo un dispositivo serie, no más costoso en recursos que un LCD monocromo convencional. No necesita almacenamiento externo para imágenes y reduce drásticamente los requisitos de memoria.
¿Se puede construir una estación meteorológica en Arduino UNO con Nextion? La respuesta es: sí, pero con funcionalidad muy limitada por falta de memoria. No se pueden incluir gráficos históricos, etc. Para una estación completa con registro de datos y gráficos, se necesita un microcontrolador más potente.
En este artículo muestro cómo construir una estación meteorológica con gráficos atractivos, registro de datos y recepción de múltiples sensores inalámbricos, usando Nextion y Arduino Mega 2560.
La idea principal
Asumimos que ya tenemos sensores meteorológicos externos (tipo Oregon THGN123N). Vamos a crear una unidad central que:
- Reciba datos de sensores externos inalámbricos
- Muestre temperatura, humedad y presión atmosférica
- Guarde datos periódicamente en tarjeta SD
- Dibuje gráficos de datos históricos
- Realice pronóstico meteorológico basado en cambios de presión
Característica destacada: Usa imágenes de fondo a pantalla completa para mostrar el pronóstico, no solo pequeños iconos como otras estaciones.
Los retos de la pantalla Nextion
La gran desventaja: no soporta imágenes con transparencia en su firmware. No se pueden crear elementos redondeados. La solución es usar "fondos recortados" dentro de los widgets de texto para mostrar datos sobre imágenes personalizadas. Cuando cambia el fondo, todos los fondos de los widgets de texto deben actualizarse accordingly.
Usando cambios de presión, se pueden hacer tres pronósticos: despejado, nublado o lluvia/nieve. Y hay dos periodos: día y noche. Total: 8 pantallas distintas que crear en el Nextion Editor:
- Despejado día (soleado)
- Despejado noche (lunado)
- Nublado día
- Nublado noche
- Lluvia día
- Lluvia noche
- Nieve día
- Nieve noche
Todas comparten los mismos nombres de widgets (temperatura, humedad, presión). El controlador selecciona la pantalla según el pronóstico y luego actualiza los datos de sensores en los widgets.
Pantalla principal - Datos
La pantalla principal se divide en tres áreas:
Línea superior: Datos del sensor interno (casa): temperatura, humedad, presión atmosférica, hora y fecha. Se asume que la presión dentro y fuera de la casa es la misma, así que un solo sensor de presión en la unidad principal es suficiente.
Mitad izquierda: Datos del sensor externo principal (temperatura y humedad). El ID del sensor principal se configura en la pantalla de ajustes, seleccionando de la lista de IDs disponibles. Nota: espera ~2 minutos tras encender para que todos los sensores envíen señal.
Lado derecho: Datos de todos los sensores (externos e internos): ID, temperatura, humedad. La información rota periódicamente. Soporta hasta 4 sensores externos. Si solo hay uno, los datos internos también aparecen aquí.
El módulo RTC DS3231 proporciona hora/fecha precisa para: logging con timestamp en SD, control de brillo de pantalla y cálculo día/noche para el pronóstico.
Otras pantallas
- Pantalla de hora de amanecer/atardecer y edad lunar (tocar la fecha en pantalla principal)
- Pantalla de configuración del controlador (tocar la hora actual)
- Pantalla de ajuste del RTC
- Pantalla de histórico de datos (tocar temperatura o presión)
Pantalla de histórico (log de datos)
Dos modos: 1 día y 8 días (tocar área del gráfico para cambiar).
Barra lateral izquierda: selección de sensor ID (interno = ID 0).
Barra superior: tipo de dato a graficar (presión, temperatura, humedad).
Pantalla de configuración
- Personalizar ID del sensor externo principal
- Configurar horas de mañana/tarde (cambio de brillo)
- Ajustar brillo de pantalla
Evitando bloqueos del controlador (Watchdog externo)
Para aumentar la estabilidad y evitar bloqueos, se implementó un watchdog hardware externo basado en NE555. Reinicia el Arduino cada 2-3 minutos si no recibe señal por el pin A2. Este circuito es reutilizable en otros proyectos.
Conclusión
La estación meteorológica tiene una pantalla con gráficos ricos y muy atractiva, y ha funcionado de forma estable durante más de medio año.
Código fuente
Repositorio GitHub: github.com/sfrwmaker/Weather_nextion
- Código principal:
Weather_nextion.ino - Esquemático completo:
weather_mega_nextion.jpg
Proceso de manufactura
- Construya el clásico juego Pong en Arduino UNO con pantalla OLED: Tutorial paso a paso
- Alcancía Inteligente: Controla un Aceptador de Monedas con Arduino Nano
- Monitor de Temperatura y Reloj en Tiempo Real con Arduino Due y Pantalla TFT 3.2"
- Controla un LED por Bluetooth con Arduino – Guía DIY paso a paso
- Conectar Arduino Mega a módulo GPS NEO‑6M: Guía paso a paso
- Construye un voltímetro DIY con Arduino y pantalla Nokia 5110 – Guía paso a paso
- Visualiza Temperatura, Humedad y Presión BME280 en Pantalla Táctil Nextion
- Kit de Entrenamiento Arduino Completo con Mega 2560, Sensores, Motores y PCB Personalizada
- Construye la App Fridgeye con una Pantalla Nextion: Guía Paso a Paso
- Medición Precisa de Radiación Solar con Arduino UNO y Shield Ethernet
- Proyecto Arduino GPS y Pantalla TFT Táctil Shield: Visualización de Ubicación en Tiempo Real