Raspberry PI 3 model B y Raspbian: evaluando los lenguajes

Es un buen momento para recapitular el estado en el que nos encontramos.

El sistema con el que contamos lo componen:

  • La Raspberry Pi  cuyo modelo podemos comprobar con el comando de terminal cat /proc/cpuinfo y después buscar el modelo concreto en  esta lista de modelos y fabricantes. (Por ejemplo Hardware : BCM2835 corresponde a la  Pi 3 Model B 1GB a02082 Sony, UK).
  • El Sistema Operativo Raspbian iy para saber la versión con la que contamos podemos usar el comando de terminal uname -a  (Por ejemplo Linux raspberrypi 4.9.59-v7+ #1047 SMP Sun Oct 29 12:19:23 GMT 2017 armv7l GNU/Linux) o el comando cat /etc/os-release (Por ejemplo PRETTY_NAME=”Raspbian GNU/Linux 9 (stretch)” )

Los lenguajes de programación que hasta el momento hemos probado su correcto funcionamiento con el clásico programa “Hola mundo” y después su trabajo con el módulo GPIO para controlar un sencillo LED son los siguientes:

Software Version IDE Version Ejecución GPIO
Java 1.8.0_65 Bluej 3.1.7b Terminal Completo
Python 3.5.3 Integrado 3.5.3 Integrada Completo
Scratch 2 Integrado 2 Integrada Limitado
LUA 5.1.5 No Terminal Incompleta

Para futuros ejemplos en Raspberry Pi  usaré Python y para enseñar y disfrutar con los más pequeños Scratch.

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.