NodeMCU es un módulo para implementar una plataforma de IoT (Internet of Things), o del Internet de las cosas, de código abierto. Usa un firmware ejecutándose sobre el SoC ESP8266 de Espressif Systems que ya analizamos en este mismo blog, y un hardware basado en el módulo ESP-12, con 11 conexiones GPIO, una de ellas analógica de 10-bit (1024 valores digitales posibles), como pudiste leer en ese mismo artículo al que hago referencia.
El término NodeMCU se refiere al firmware y no a los kits de desarrollo, aunque últimamente se usa como sinónimo de toda la plataforma completa. Además, debes saber que estos módulos usaban como lenguaje Lua, en un inicio, pero como verás eso ha evolucionado. De hecho, se basaban en el proyecto eLua y en el SDK no operativo de Espressif para el ESP8266, y usando proyectos de código abierto para componer las piezas que les falta como lua-cjson, spiffs, etc. Por si no lo sabes, Lua es un lenguaje de programación imperativo y estructurado bastante ligero para ser usado como lenguaje interpretado con semántica extensible.
NodeMCU
Se ha popularizado mucho este módulo dentro de los que usan el ESP8266, ya que se está empleando en gran medida para proyectos IoT, tan de moda en la actualidad. Tras comenzar a comercializar el ESP8266 de Espressif Systems en 2013, un año más tarde, en octubre del 2014, se comenzó a enviar los primeros archivos de firmware del NodeMCU a GitHub. Dos meses más tarde, a finales de ese año, el proyecto se comenzó a expandir para incluir también una plataforma de hardware abierto.
Poco a poco se fue desarrollando y añadiendo más bibliotecas al proyecto, como la MQTT de Contiki para que la plataforma soportase así el protocolo IoT MQTT, usando para su acceso Lua. En 2015 llegaría otra actualización importante, cuando Devsaurus portó la biblioteca u8glib para NodeMCU, permitiéndole así controlar fácilmente pantallas de tipo LCD, OLED y VGA. Poco a poco todos los desarrolladores originales fueron abandonando el proyecto en verano de 2015 y dejaron paso a colaboradores independientes. En 2016, NodeMCU ya incluía más de 40 módulos diferentes…
También se incluiría la ESP8266 Core for Arduino IDE, para trabajar con la plataforma con placas de desarrollo Arduino, lo que permitió a muchos usuarios y makers crear tus propios proyectos usando esta plataforma.
Pinout
En cuanto al Pinout, ya se analizó en el otro artículo sobre el ESP8266 del blog, pero los pines más destacados son:
- Pin 0*: GPIO 16 solo para lectura/escritura del GPIO.
- Pin 1: GPIO 5
- Pin 2: GPIO 4
- Pint 3: GPIO 0
- Pin 4: GPIO 2
- Pin 5: GPIO 14
- Pin 6: GPIO 12
- Pin 7: GPIO 13
- Pin 8: GPIO 15
- Pin 9: GPIO 3
- Pin 10: GPIO 1
- Pin 11: GPIO 9
- Pin 12: GPIO 10
- Otros están reservados, o sirven para la alimentación (GND, Vcc), y para otras señales.
Los pines disponibles pueden variar según la versión o modelo, pero esos son los típicos.
Otras características del NodeMCU
El NodeMCU tiene un precio similar al ESP-201, con 7€ aprox. en Amazon, con todo lo necesario incluido en él, por lo que el uso no puede ser más sencillo. Algunos módulos superan los 10€, pero integran algunos elementos adicionales, como paneles LCD, etc.
Puedes descargar el firmware que lo controla desde GitHub de forma gratuita y se pueden usar lenguajes como C++, Python, BASIC, JavaScript, y otros como el propio Lua. Recuerda que es de código abierto, y por tanto, permite aprender de este proyecto o modificarlo de forma libre si necesitas agregar características o cambiar algún parámetro.
¿Qué incluye la placa de desarrollo?
La placa de desarrollo NodeMCU suele incluir en el kit tiene su puerto microUSB para programarlo y alimentarlo, y conversor Serie-USB, los terminales que he citado en el apartado de pinout, LED y botón de reset integrados en la placa. Por supuesto, al incluir el SoC ESP8266 para tener conectividad WiFi, también se ha serigrafiado en la PCB una antena en forma de serpentín.
No obstante, al haber varios fabricantes, versiones y modelos, cada uno de ellos tiene su propia filosofía y puede incluir sus propios extras o tener diferentes criterios según el objetivo para el que haya sido pensada la placa. Por ejemplo, como verás más adelante, se puede sustituir un chip ESP12 por un ESP12E en algunos modelos, o el CH340G en vez del CP2102 para la conversión serie, etc.
Por lo general, los principales fabricantes de placas NodeMCU son Amica, FBlue, Lolin/Wemos, DOIT/SmartArduino, AZ-Delivery, etc. Además de los diferentes proveedores, también encontrarás varias versiones:
- 1º Generacion: la devkit v0.9 es la versión original del NodeMCU con ESP12 con 4MB flash en el ESP8266, pero con menos pines GPIO que la versión ESP12E en la que se basan los actuales modelos. Ahora ha quedado obsoleta y no la pueds comprar.
- 2º Generación: es la versión v1.0/v2.0, creada por Amica, una compañía del alemán Gerwin Janssen para mejorar la anterior v0.9. Gustó tanto que se terminó transformando en la versión oficial de NodeMCU. Comenzó a usar ESP12E y con una hilera adicional de pines para las conexiones. Otros fabricantes terminaron también copiando esta versión, usando este modelo de open-hardware como base.
- 3º Generación: la v1.0/v3 fue diseñada por Lolin/Wemos cuando se decidió a crear un prototipo mejorado con algunos cambios menores. El principal cambio era montar un conversor serial CH340G en vez del CP2102, haciendo que el puerto USB sea más robusto. Actualmente es el modelo más vendido.
Por el momento, estos son los desarrollos más importantes que debes conocer, aunque algunos ya hayan quedado más obsoletos.
¿Qué se puede hacer con NodeMCU?
Lo que puedes hacer con una placa NodeMCU sobre IoT, puede variar en gran medida, y el límite es tu imaginación. Pero aquí tienes algunos ejemplos de ideas que puedes implementar gracias a las funciones para el control desde Internet, comunicación, etc.
- Crear tu propia estación meteorológica con sensores de humedad, temperatura, etc., y poder recibir los resultados de las mediciones desde cualquier punto con conexión a Internet. Por supuesto puede usar cualquier otro tipo de sensores o elementos para crear proyectos similares.
- Automatismos conectados, haciendo que ante un impulso se desencadene una acción, como el control de luces LED, conmutación de relés, activación de cualquier tipo de actuador, etc.
- Crear un servidor NTP, y otro tipo de servicios para tus dispositivos conectados.
- Sistemas de posicionamiento para interiores de viviendas o edificios usando GPS.
- Juguetes de todo tipo, domótica de la casa, etc.
Más información – Tutoriales Arduino
Ahora sabes las características más importantes de las placas NodeMCU y las puedes comenzar a usar en tus futuros proyectos IoT junto con tus placas Arduino y similares…
Es de lo mejor de lo mejor, para un técnico o ingeniero que quiera abarcar de forma amplia el tema de IoT debe pasar por él.
Excelente información tecnológica de IoT, para entender los pricipios