¿Qué es Lua y cómo lo utilizo?

Lua es un lenguaje de programación ligero, poderoso, eficiente y empotrable basado en scripts. Utiliza una sintaxis simple que permite prototipar rápidamente. Es utilizado en una gran variedad de software, en videojuegos y para IoT con las tarjetas basadas en el ESP8266, como el NodeMCU. De hecho, el firmware está escrito en Lua y con Lua Uploader o la IDE ESPlorer es posible configurar el microcontrolador de forma simple y efectiva.

Para desarrolladores de IoT puede ser útil este tipo de lenguaje, pues abre las posibilidades a experimentar con librerías que no estén disponibles en otros lenguajes o puedan tener mayor soporte con Lua. Además, al ser un lenguaje basado en scripts uno puede ejecutar porciones de código progresivamente sin tener que compilar todo de una sola vez.

Para desarrollar este ejemplo utilizaremos un NodeMCU v2 con el firmware original NodeMCU_float_0.9.6 y Lua Uploader v_1.2.0, que puede ser descargado desde su repositorio en Github https://github.com/JeffCost/ESP8266_Lua_Uploader. La interfaz es simple y puede dividirse en 3 secciones, una para configurar el puerto serial y abrir los archivos, otro es el editor de codigo y a la derecha está la caja con los mensajes del programa.

Como podremos ver en la caja de código tenemos abierto un archivo predeterminado con el nombre de init.lua. Este archivo nos permitirá hacer parpadear un LED de la tarjeta basada en ESP8266. Para cargar el programa a la tarjeta basta con seleccionar el puerto en el que está conectada la tarjeta y seleccionar Save to ESP. Si todo salió en orden podremos ver los mensajes del puerto serial en la caja y nuestro LED parpadeando en la tarjeta.

Pero mencioné que se pueden ejecutar codigos progresivamente asi que tomemos este ejemplo, una declaración de variables y una operación simple, escribimos en el código a=1, b=2, print(a+b) y luego seleccionamos esa porcion de código y le damos execute selection.

O podemos ejecutar comandos en el NodeMCU directamente, por ejemplo configurar entradas y salidas y enecender o apagar LEDs. Primero en la primer ventana hay que presionar delete, esto borrará el programa de ejemplo de init.lua y reseteamos nuestra NodeMCU, luego pasamos a la ventana Immediate y ponemos nuestro código en la caja y le damos execute. La caja de salida nos mostrará el resultado y podremos ver como se configuró el puerto y se encendió el LED.

Así se verían algunas porciones de código hechas con Lua:

Para encontrar más ejemplos de cómo utilizar el lenguaje, el repositorio de GitHub contiene varias carpetas con código que puede servir: https://github.com/nodemcu/nodemcu-firmware/tree/master/lua_examples

Conclusiones:

Lua es un lenguaje de sintaxis simple, se ejecuta mediante scripts y puede ser útil para desarrollar aplicaciones de IoT sin recurrir al IDE de Arduino, te permite ejecutar porciones de código por separado y como la documentación de NodeMCU utiliza este lenguaje vale la pena realizar algunas practicas y familiarizarse con el código.

Referencias:

https://www.lua.org/about.html

https://nodemcu.readthedocs.io/en/master/

https://robologs.net/2017/09/05/construir-un-servidor-http-con-nodemcu-esp-12-e-y-lua/

http://akirasan.net/esplorer-ide-de-programacion-para-esp8266/

https://electronics.stackexchange.com/questions/286328/esp8266-elua-nodemcu-vs-micropython

Comentarios