Control de circuitos eléctricos con Raspberry Pi: LUA

En una entrada anterior hemos visto la forma de controlar desde un programa Python la GPIO y con ello un circuito eléctrico más o menos complejo, ahora vamos a ver como se hace con LUA.

Primero hay que instalar las librerias básicas  como luarocks (Hay que ejecutar los comandos uno a uno), para poder instalar las de GPIO de Raspberry Pi, probaremos rpi-gpio (con una sintaxis idéntica a la vista en Python, pero que da un error de desactualización “SystemError: This module can only be run on a Raspberry Pi!” ) y periphery (que funcionó con facilidad):

  • sudo apt-get install liblua5.1-0-dev
  • sudo apt-get install luarocks

  • sudo apt-get install openssl
  • sudo apt-get install libssl-dev
  • -- Librerias para luarocks
  • sudo luarocks install luarocks
  • sudo luarocks install luasec
  • -- librerias para GPIO
  • sudo luarocks install rpi-gpio
  • sudo luarocks install lua-periphery

El fuente led.lua es el siguiente:

-- led.lua 
-- Programa que enciende un LED 1s
-- Librerias Importa librerias (completan los comandos LUA)
-- Sintaxis https://pypi.python.org/pypi/RPi.GPIO 
--
function Inicio()
 local periphery = require('periphery')
 local GPIO = periphery.GPIO
 print ('Version: ' .. GPIO.version)
 -- Enciende led
 local gpio_out = GPIO(18, "out")
 gpio_out:write(true)
 print('LED ON')
 periphery.sleep(2)
 -- Apaga led
 gpio_out:write(false)
 print('LED OFF')
 gpio_out:close()
end
-- Llamada a la función Inicio
Inicio()

Las librerías GPIO funcionan solamente con LUA 5.1 para la ejecución correcta debemos cambiar los permisos (Hay que evitar lanzar comandos como sudo) y lanzar:

pi@raspberrypi:~ $sudo chmod 755 ./proyectos/LUA/led.lua

pi@raspberrypi:~ $ lua ./proyectos/LUA/led.lua
Version: 1.1.1
LED ON
LED OFF

El funcionamiento es el esperado, e igual al programa Python.

LUA en Raspberry Pi

LUA es un lenguaje de programación similar a Python, pero en este caso  no se encuentra en el menú de inicio del Sistema Opertativo Raspbian de las Raspberry Pi.

Para comprobar si está LUA o no preinstalado en su sistema, hay que ir a: Menu =>  Accesorios => LXTerminal y teclee el comando “lua”:

pi@raspberrypi:~ $ lua
Lua 5.1.5 Copyright (C) 1994-2012 Lua.org, PUC-Rio
>

en este caso está instalada la versión 5.1.5, pero en el caso de que no esté, o quisiera instalar la versión más reciente, la 5.3,  habría que instalar el paquete Debian correspondiente (update e install) para después  lanzar el interprete o shell mediante “lua5.3”

pi@raspberrypi:~ $ sudo apt-get update
...
pi@raspberrypi:~ $ sudo apt-get install lua5.3
...
pi@raspberrypi:~ $ lua5.3
Lua 5.3.3 Copyright (C) 1994-2016 Lua.org, PUC-Rio
>

Para el primer programa con LUA  podemos usar el editor Geany y salvar el código con la extensión .lua:

-- main.lua
-- Programa que escribe en el terminal
--
-- Definicion de la función Inicio
function Inicio()
 print ('Hola mundo')
end
-- Llamada a la función Inicio
Inicio()

Para ejecutar debe lanzar desde el terminal:

pi@raspberrypi:~ $ sudo lua5.3 ./proyectos/LUA/main.lua
Hola mundo

En otra entrada veremos como controlar GPIO de Raspberry desde LUA

Qué es LUA

Lua, como “luna” en portugués, es un sencillo lenguaje de programación, de código abierto y gratuito (open-source free ), del tipo script, es decir como lo son,  los lenguajes: comandos de Windows, Ruby, Java script o Python.

El interés por ellenguaje  Lua proviene, de que es el lenguaje elegido por varios entornos de desarrollo (SDK Software Development Kit) de aplicaciones para móviles (smart phone & tablets) como es Corona de Corona Labs cuya web es http://www.coronalabs.com

La versión actual es (2018)  la 5.3.4 y su web es http://www.lua.org

Lenguaje LUA

Un programa LUA se puede escribir con un sencillo editor de textos, como el caso del “block de notas” de Windows  o el Notepad++ (Software Libre).  o con un entorno desarrollo (IDE) como Eclipse.

Un termino medio entre ambos es LUAEdit un cómodo y sencillo editor orientado a la edición de programas LUA o más completo ZeroBrane Studio.

Los ficheros que contienen programas LUA, se reconocen por la extensión .LUA

Una vez escrito el programa LUA con el editor que hayamos elegido, podemos ejecutarlo en un interprete LUA o en un entorno de desarrollo como Corona y generar una aplicación Android, extensión .apk

Un apk podemos también ejecutarlo en el entorno de desarrollo de Google (http://developer.android.com )  o de una forma más sencilla con el programa  BlueStack (http://bluestacks.com).

Por último podemos copiar el .apk en un dispositivo móvil con Android enviándolo como anexo a un correo,  o con una aplicación como  Dropbox con lo que completará de una forma sencilla todo un ciclo de programación de una app.

 

Hay otras formas de estudiar

¿Quién no ha preparado un examen resolviendo los enunciados de convocatorias pasadas?¿Quién no ha hecho cientos de preguntas tipo test para estudiar una oposición? … ¿realmente no hay otra forma de preparar un examen que sentados en una mesa con lapiz y papel?¿no se puede pensar algo más atractivo y adictivo para niños y jóvenes que un PDF y un CD?

Bajo estas premisas hemos desarrollado unas maquetas para preparar los exámenes de nivel de chino de Hanban desde un smartphone o una tablet.

El encargo nos lo realizó  el Instituto Confucio de Valencia (España) y lo unico que hemos hecho es darle un nuevo soporte al material tradicional de estudio (PDF+CD).

Un ejemplo esta app para preparar el examen YCT-IV , disponible para Android y Apple de forma gratuita en las respectivas tiendas (GooglePlay y Apple Store)  y realizada en solamente una semana.

Se ha probado la versión de Android en una tablet de alta gama (Nexus 7 con Android 4.2.1) y una más modesta (Vortexcolor Android 4.0.4 no llega a los 60 € ), y la de Apple en un iPhone3 y en una IPad.

Sonotrigger Software ofrece soluciones para dispositivosmóviles Android y Apple.