Icono del sitio Programar fácil con Arduino

Nextion pantalla TFT conectada a un ESP8266, OpenWeatherMap y CloudMQTT

nextion esp8266 openweathermap cloudmqtt
Cómo hacer una estación meteorológica con pantallas Nextion y ESP8266

En este tutorial voy a explicar cómo puedes utilizar una pantalla TFT Nextion de Itead conectada a OpenWeatherMap y CloudMQTT a través de un ESP8266 para recibir datos meteorológicos en tiempo real.

Cuando terminés tendrás la nociones básicas sobre Nextion Editor, cómo conectarte a la API OpenWeatherMap y cómo utilizar el servicio CloudMQTT con un ESP8266.

Todo explicado paso a paso para que puedas construir una estación o panel meteorológico tu mismo y poderlo utilizar en tu casa.

Y esto es solo la punta de iceberg. Las pantallas Nextion ofrecen muchas más posibilidades. Sólo tienes que explorar el Nextion Editor para descubrirlas.

Ponte cómodo que empezamos el tutorial paso a paso de Nextion, OpenWeatherMap, CloudMQTT y ESP8266.

¿Qué es una pantalla Nextion?

Nextion es una interfaz hombre-máquina o HMI (del inglés Human Machine Interface) que no es más que una pantalla TFT donde cualquier persona puede interactuar con la propia pantalla o con otros dispositivos.

Están compuestas por un procesador integrado y una pantalla TFT táctil que puede ser programada a través de un software que se llama Nextion Editor.

Se trata de un software propietario que permite programar una pantalla Nextion tanto a nivel de diseño como a nivel de acciones e interacciones con el usuario y otros dispositivos. Más adelante veremos cómo podemos diseñar nuestra propia pantalla Nextion para un caso práctico.

La pantalla Nextion tiene la capacidad de conectarse a un microcontrolador a través de un puerto serie o TTL. Esto quiere decir que podemos conectar fácilmente un Arduino o un ESP8266 y así poder conectarse a Internet.

Las pantallas Nextion son fabricadas por Itead, la empresa china que también comercializa productos como los relés WiFi Sonoff basados en el ESP8266.

Una de las ventajas de las pantallas Nextion es su bajo precio. Comparado con el resto de soluciones HMI que hay en el mercado, hay una gran diferencia.

También es cierto que la calidad con respecto a marcas punteras como Siemens o Mitshubishi se nota. Aún así, una pantalla Nextion tiene una buena relación calidad precio.

Otro de los aspectos muy valorados es su facilidad a la hora de diseñar y programar y su compatibilidad con Arduino y ESP8266.

Todo esto lo iremos viendo a lo largo de este tutorial. Pero antes de meternos en los aspectos técnicos, vamos a ver los tipos de pantallas que existen.

Tipos de pantallas Nextion

Itead nos ofrece un amplio abanico de pantallas Nextion. Elegir una u otra pantalla dependerá de las necesidades del proyecto. Se dividen en tres categorías:

A parte de los diferentes tamaños que vas a encontrar en cada categoría de pantallas Nextion, también se diferencian en cuanto al hardware y las capacidades. Veamos un resumen de cada categoría empezando por las pantallas TFT Basic Series.

Pantallas TFT Nextion Basic Series

La categoría Basic Series de Nextion ofrece pantallas TFT HMI de diferentes tamaños y diferentes características.

Antes de ver las pantallas Nextion de esta categoría tengo que aclarar lo del tamaño. Se mide en pulgadas y cuando dice por ejemplo 3,2″ (se lee tres coma dos pulgadas) está diciendo que la diagonal de la pantalla mide 8,128 centímetros.

1 pulgada equivale a 2,54 centímetros.

Modelo:NX3224T024NX3224T028NX4024T032NX4832T035
Tamaño2,4″2,8″3,2″3,5″
Resolución320 x 240320 x 240400 x 240480 x 320
Flash4 MB4 MB4 MB16 MB
Precio *17€19€23€28€
Modelo:NX4827T043NX8048T050NX8048T070
Tamaño4,3″5,0″7,0″
Resolución480 x 272800 x 480800 x 480
Flash16 MB16 MB16 MB
Precio *45€65€75€

* Se trata de un precio aproximado según Itead Nextion.

Todas las pantallas TFT Nextion tienen una memoria RAM de 3584 bytes y un microcontrolador integrado de 48 MHz.

Pantallas TFT Nextion Enhanced Series

Las pantallas TFT Nextion de la categoría Enhanced Series son un salto de cualidad con respecto a las Basic Series. Aunque disponen de los mismos tamaños, las grandes diferencias se encuentran a partir de las pantallas de 3,5″.

Las mejoras, como veremos a continuación, se basan sobre todo en la potencia del microcontrolador, la memoria flash y la memoria SRAM.

A parte, incorpora un reloj en tiempo real o RTC (del inglés Real Time Clock), memoria EEPROM y 8 pines digitales de los cuales 4 son pines PWM.

Modelo:NX3224K024NX3224K028NX4024K032NX4832K035
Tamaño2,4″2,8″3,2″3,5″
Resolución320 x 240320 x 240400 x 240480 x 320
Flash16 MB16 MB16 MB32 MB
RAM3584 bytes3584 bytes3584 bytes8192 bytes
MCU48 MHz48 MHz48 MHz108 MHz
Precio *21€23€28€33€
Modelo:NX4827K043NX8048K050NX8048K070 NX8048K070 011R/011C
Tamaño4,3″5,0″7,0″7,0″
Resolución480 x 272800 x 480800 x 480800 x 480
Flash32 MB32 MB32 MB32 MB
RAM8192 bytes8192 bytes8192 bytes8192 bytes
MCU108 MHz108 MHz108 MHz108 MHz
Precio *55€85€83€89/109€

* Se trata de un precio aproximado según Itead Nextion.

Todas las pantallas tienen una EEPROM de 1024 bytes, 8 GPIO y 1 RTC.

Pantalla TFT Nextion Intelligent Series

Las pantallas TFT Nextion de la categoría Intelligent Series son las pantallas más avanzadas y de más calidad. Solo presentan dos tamaños de 7,0″ y 10,1″.

Las pantallas TFT Intelligent Series tienen un hardware más potente en cuanto a la potencia del microcontrolador o MCU, la memoria flash y la memoria RAM comparadas con las pantallas TFT de Enhanced Series y Basic Series.

A parte, a nivel de software las pantallas Nextion Intelligent Series admiten funciones avanzadas como animaciones, audio, vídeo y alguna funcionalidad más que iremos viendo.

Se trata de la solución más avanzada y potente que ofrece Nextion e Itead con respecto a pantallas TFT o HMI.

Modelo:NX8048P070-011RNX8048P070-011R-YNX8048P070-011C
Tamaño7,0″7,0″7,0″
Resolución800 x 480800 x 480800 x 480
Precio*79€87€86€
Modelo:NX8048P070-011C-YNX1060P101-011R-INX1060P101-011C-I
Tamaño7,0″10,1″10,1″
Resolución800 x 4801024 x 6001024 x 600
Precio*105€121€131€

* Se trata de un precio aproximado según Itead Nextion.

Todas las pantallas TFT Nextion de Intelligent Series tiene además una memoria flash de 128 MB, una RAM de 512 KB, una MCU de 200 MHz, una EEPROM de 1024 bytes, 8 GPIO y un RTC.

Y una vez que tenemos claro qué es Nextion y que tipos de pantallas TFT nos ofrecen, vamos a pasar a ver cómo hacer un ejercicio práctico para que veas cómo se trabaja con las pantallas Nextion.

Panel meteorológica DIY con pantalla Nextion

Sí, está claro. Puedes comprar una estación meteorológica en Amazon o en el Mediamarkt que te proporcione datos de temperatura, humedad, presión, etc..

Hay infinidad de marcas y modelos. Unas funcionan mejor y otras son más económicas.

Sin embargo, con este tutorial te planteo otra forma de hacer una estación o panel meteorológico con una pantalla Nextion. Se trata de hacer una estación meteorológica tu mismo, DIY.

De hecho, no es la primera vez que hablo de este tema. Hace tiempo publiqué una estación meteorológica solar con Arduino ¿te acuerdas?

En ese caso utilicé un Arduino MKRFOX1200 con conexión a SigFox.

Ahora te planteo otro reto. Te voy a explicar paso a paso (como a mi me gusta) cómo hacer un panel de control donde mostrar información del tiempo obtenida de la API gratuita OpenWeatherMap a través de un ESP8266.

También te enseñaré cómo puedes obtener los datos de temperatura de dos dispositivos conectados a un sensor de temperatura y repartidos por tu casa utilizando MQTT.

Y todo se mostrará en una pantalla Nextion de 7″ a todo color con la que podrás interactuar.

Vamos con ello. Primero vamos a empezar viendo el material que vas a necesitar para seguir este tutorial.

Material necesario

El siguiente material es el que voy a utilizar a lo largo del tutorial.

Para poder desarrollar aplicaciones y programas con una pantalla TFT Nextion necesitas tener un Windows instalado ya que el software de edición, Nextion Editor, solo está para este sistema operativo.

Se trata de un proyecto que no es muy complejo pero sí que es largo. Por eso, lo primero que quiero que tengas claro es una perspectiva general de lo que vamos a hacer y lo que se va a conseguir.

Siempre me gusta hacer esto tanto en los proyectos que hago para mi mismo, como en los artículos que publico en el blog o en los mis cursos de formación.

Esquema general

Más o menos la idea general del proyecto la puedes ver en el siguiente esquema.

Partimos de un ESP8266 que hará de gateway o pasarela entre los diferentes componentes del proyecto. Sus funciones son:

Por otro lado tenemos los dos nodos ESP8266 conectados a los sensores DS18B20. Son los encargados de registrar la temperatura y enviarla al gateway a través de un topic MQTT.

El broker MQTT es un servicio en la nube que se llama CloudMQTT. Utiliza por debajo Mosquitto. Luego veremos cómo configurarlo.

El servicio OpenWeatherMap es una API que nos permite consultar datos meteorológicos en tiempo real de cientos de ciudades. Luego también veremos cómo se configura.

Por último la pantalla TFT Nextion que hará de interfaz gráfica o HMI para poder visualizar los datos de temperatura de tu ciudad y de los nodos.

Creo que más o menos ha quedado el proyecto en términos generales. Ahora, para poder afrontar este proyecto de una forma sencilla lo mejor es dividirlo en fases que se puedan ir realizando poco a poco.

  1. Diseño y configuración de la pantalla TFT Nextion
  2. Configuración del servicio OpenWeatherMap
  3. Conexión y actualización de la pantalla TFT Nextion con los datos del tiempo obtenidos con un ESP8266
  4. Configuración CloudMQTT con ESP8266
  5. Configuración de los nodos para medir temperatura con un ESP8266 y un DS18B20

Tenemos mucho trabajo por delante así que vamos a empezar configurando y diseñando la pantalla TFT Nextion con el Nextion Editor.

Nextion Editor para programar y diseñar pantallas TFT HMI

Cuando recibes la pantalla en tu casa no tiene nada instalado. Bueno, si acaso tendrá un programa demo que suelen tener las pantallas Nextion.

En esta fase del proyecto nos centraremos en diseñar la pantalla.

El software Nextion Editor tiene muchas opciones que, por supuesto, no veremos en este tutorial. Me voy a centrar solo en las necesarias e indispensables para este proyecto concreto. Si necesitas saber más te aconsejo que consultes la documentación de Nextion.

Lo primero es instalar el software. Puedes descargarlo desde aquí. El único inconveniente que tiene es que de momento solo está para Windows. Lo siento por los usuarios de Linux o de Mac.

Instalarlo es muy sencillo y no merece la pena hacer ninguna aclaración salvo que lo instales con permisos de administrador (botón derecho y Ejecutar como administrador).

Una vez instalado ya podrías empezar a diseñar tus propias pantallas pero antes hay que conectar la pantalla TFT Nextion al ordenador. Esto lo hacemos a través del FTDI o TTL.

Junto con la pantalla tendrás 4 cables que se unen por un extremo con un conector JST y por el otro lado están suelto. El conector JST con los 4 cables unidos debes conectarlo a la pantalla en el conector donde pone

El otro extremo, los 4 cables sueltos, deben ir conectados al FTDI o TTL que a su vez irá conectado a un puerto USB de tu ordenador.

Ojo, que la conexión se tiene que hacer cruzada. El cable amarillo RX de la pantalla TFT Nextion debe ir conectado al pin TX del FTDI. El cable azul TX de la pantalla TFT Nextion debe ir conectado al pin RX del FTDI. Los otros dos cables van el negro al GND y el rojo a 5V.

Bien, ahora sí, ya podemos empezar a diseñar y programar la pantalla. Para hacerlo vas a necesitar las siguientes imágenes. Descargarlas a tu ordenador.

Sigue las instrucciones del siguiente vídeo donde te enseñaré a diseñar una pantalla con Nextion Editor.

Si quieres saber más sobre cómo utilizar Nextion Editor a continuación te dejo los enlaces a la documentación:

Ahora vamos a pasar a la segunda fase donde configuramos OpenWeatherMap y programamos el ESP8266 para consultar la API.

ESP8266 y OpenWeatherMap

Lo primero es explicarte qué es OpenWeatherMap. Se trata de un servicio online que proporciona datos meteorológicos de todo el mundo. Es mundialmente conocida y se la utilizan multitud de aplicaciones de Internet como apps o webs.

Obtiene los datos de diferentes fuentes como estaciones meteorológicas de aeropuertos, estaciones de radar y de estaciones de los servicios públicos de meteorología de todo el mundo.

A parte de proporcionar datos meteorológicos en tiempo real, proporciona datos de previsiones.

A parte de todo esto, el servicio de OpenWeatherMap se centra en el aspecto social y pretende que los usuarios y dueños de estaciones meteorológicas se conecten al servicio para proporcionar más datos aumentando así la precisión de la información.

Imagínate la cantidad de información que puede llegar a almacenar OpenWeatherMap.

Aunque cuenta con varias cuentas de pago según la necesidad, también está disponible una cuenta gratuita con restricciones pero suficiente para el uso que vamos a dar nosotros.

Te tienes que dar de alta. Es muy sencillo. Lo único que necesitas es un email y una contraseña.

En el siguiente vídeo te explico más sobre esta plataforma y cómo puedes consultar el tiempo de tu ciudad.

Estos son los enlaces de los que hablo en el vídeo:

Lo siguiente que vamos a hacer es conectar el ESP8266 a la pantalla TFT Nextion.

Conexión ESP8266 y pantalla Nextion

En principio la conexión no tiene mucho misterio, lo único que hacemos es conectar los pines RX y TX de la pantalla TFT Nextion a los pines TX y RX del ESP8266.

Ojo que se deben cruzar. El RX con el TX y el TX con el RX.

El problema lo tenemos con la alimentación. Desde la propia página de Nextion aconsejan que se alimente con un cargador de móvil por ejemplo de 5V y 1A.

Yo voy a utilizar una fuente de alimentación para protoboard que suministra 3V3 y 5V. Tu puedes utilizar lo que mejor te convenga.

En la pantalla que yo tengo junto con los cables venía un adaptador USB para poder obtener la alimentación de un cargador de móvil USB.

El esquema de conexión es el siguiente.

Con esto tenemos todo preparado. Te has dado de alta en OpenWeatherMap, has conectado el ESP8266 a la pantalla TFT Nextion y ahora solo nos queda programar el ESP8266 para que se conecte a la API de OpenWeatherMap y obtenga los datos.

A continuación te dejo el código completo que verás en el vídeo. Copialo y pégalo en el IDE de Arduino.

En el siguiente vídeo te explico cómo obtener los datos de OpenWeatherMap y mostrarlos en la pantalla TFT Nextion.

A continuación te dejo los enlaces a los que hago referencia en el vídeo anterior.

El resultado hasta aquí es espectacular. Tenemos una pantalla diseñada por nosotros mismos y hemos sido capaces de conectar un ESP8266 a un servicio como OpenWeatherMap y mostrar los datos en el la pantalla TFT Nextion.

Solo nos queda una cosa y es poder mostrar también información de temperatura de otros sensores situados por casa. Esto lo vamos a hacer gracias al protocolo MQTT.

Configuración CloudMQTT y ESP8266

En esta primera parte de MQTT vamos a ver cómo configurar CloudMQTT y a modificar el código del ESP8266. La idea es poder recibir información a través de dos topics a los que se tiene que suscribir el ESP8266 conectado a la pantalla TFT Nextion.

Aunque en este tutorial voy a utilizar CloudMQTT (luego te explico qué es este servicio) podrías hacerlo de la misma forma utilizando tu propio broker como Mosquitto.

Sea como sea, lo único que necesitas es una red MQTT funcionando.

¿Qué es CloudMQTT?

CloudMQTT es un servicio en la nube que nos permite utilizar una red de datos que utiliza el protocolo MQTT sin tener que montar nosotros la infraestructura o el broker.

Se trata de servidores alojados en AWS (Amazon Web Services) donde tienen instalados varias instancias del broker Mosquitto.

Ofrecen un plan gratuito con limitaciones y si necesitas más funcionalidades y capacidad, debes pasar por caja como es lógico.

El plan más básico, el gratis, permite la conexión de 5 clientes y una velocidad de transmisión de 10 kbit/s. Se llama Cute Cat (lindo gatito en español).

Si necesitas más conexiones de clientes tendrías que pasar al plan que cuesta 5 dólares por mes que permite hasta 25 usuarios y una velocidad de 20 kbit/s.

Y así podrías llegar hasta los 10.000 clientes con un coste de 299 dólares por mes.

Ahora toca programar. Hay que adaptar el código que hemos visto antes donde el ESP8266 se conecta a la API de OpenWeatherMap y recibe los datos de meteorología y ahora necesita también suscribirse a dos topics.

Te dejo el código completo a continuación.

En el siguiente vídeo te enseño cómo configurar CloudMQTT y el ESP8266 para recibir datos desde un cliente MQTT.

Ya está preparado tanto la pantalla TFT Nextion como el ESP8266 para recibir los datos que nos envíen los nodos con los sensores de temperatura. Ahora solo queda configurar los nodos que es lo que veremos a continuación.

ESP8266, DS18B20 y MQTT

Los nodos ESP8266 van a ser los encargados de recoger la información de temperatura y enviarla al ESP8266 conectado a la pantalla Nextion vía MQTT.

En este ejemplo yo voy a utilizar un sensor DS18B20 pero realmente puedes utilizar cualquier tipo de sensor de temperatura con Arduino.

El esquema eléctrico para cada nodo sería el siguiente.

Este sería el código de uno de los nodos, el nodo 1. Para cargar el mismo código en el nodo 2 solo tienes que cambiar es el topic MQTT y el id del cliente.

En el siguiente vídeo te explico el código que hay que cargar a cada nodo.

Y con esto doy por finalizada este tutorial donde te he mostrado cómo hacer un panel de control con una pantalla TFT Nextion y un ESP8266.

A parte hemos visto cómo hacer una petición HTTP a una API como OpenWeatherMap.

Y por último te he mostrado cómo configurar el servicio CloudMQTT para utilizarlo con ESP8266.

Espero tus comentarios, dudas y preguntas aquí abajo. Muchas gracias :)

Gracias a Shutterstock por ceder los derechos de las siguientes imágenes:

Salir de la versión móvil