Raspberry Sense Hat – Astro Pi – 1 – Pantalla y Sensores de Ambiente

astro-pi

INTRODUCCIÓN

La Sense Hat es una tarjeta del tipo HAT creada por  Raspberry específicamente para el  proyecto Astro Pi, dotando a la Raspberry Pi de  funciones adicionales como la medición de la temperatura, humedad, presión atmosférica, sensores de orientación (3 ejes), acelerómetro, pantalla led de 8×8 y un pequeño joystick.

El proyecto consistente en enviar 2 Raspberry Pi a la Estación Espacial Internacional (ISS), con la intención de que el astronauta británico Tim Peake pudiera realizar varias pruebas con ellas, tuvo previamente una fase de concurso/desafio dirigido a alumnos de enseñanza secundaria de Reino Unido, los cuales debían de desarrollar programas de ciencias que pudieran ser puestos a prueba posteriormente en la ISS, decidiendo premiar a los 7 mejores.

COMPRA E INSTALACIÓN

La tarjeta puede comprarse a través de varias vías, siendo relativamente fácil de comprar a través de webs especializadas en la venta de componentes para Raspberry , su coste varía entre 65 y 75 euros.

Su instalación es sencilla, basta con orientarla correctamente, y conectarla al puerto GPIO de la Raspberry II o III, siempre con la Raspberry Pi apagada y desconectada de la corriente.

Una vez conectada, para que nuestra Raspberry Pi pueda comunicarse con el nuevo módulo tendremos que instalar el software necesario:

sudo apt-get update
sudo apt-get install sense-hat
sudo pip-3.2 install pillow

Tras lo cual será necesario reiniciar el sistema para que los cambios tomen efecto.

reboot

PUESTA EN MARCHA, Y PRUEBA DE DISTINTAS FUNCIONALIDADES

Pantalla LED: La primera prueba que podemos hacer es la de mostrar algún texto a través de su pantalla LED para lo que podemos crear un script python como el siguiente:

nano astrospace.py

se nos abrirá el programa de edición de texto nano, e introduciremos el siguiente contenido:

from sense_hat import SenseHat
sense = SenseHat()
sense.show_message(«Hola»)

Tras lo cual guardaremos los cambios con CTRL + X , pulsando y posteriormente para confirmar la grabación de los cambios.

Para probar el resultado:

python astrospace.py

En el programa anterior podemos cambiar la velocidad con la que se desplaza el texto horizontalmente, su color, y el color de fondo con los siguientes parámetros:

scroll_speed   -> por defecto 0.1 , como mayor sea el número menor será la velocidad

text_colour   ->  se compone de una combinación de rojo, verde y azul que podemos combinar, informado de 0 a 255 cada uno de ellos, por ejemplo [255,255,255] sería para rojo+verde+azul, lo que daría lugar al color blanco. Para que el texto fuera de color rojo elegiríamos [255,0,0].

back_colour -> para informar el color de fondo de la pantalla, por defecto negro, de igual que ocurre que con text_colour se compone de una combinación de los 3 colores básicos (rojo, verde y azul), informándose la intensidad de cada uno de ellos con un valor que entre 0 y 255.

Ejemplo de script python mostrando en el LED un texto mostrado con una velocidad inferior a la estandard, y color rojo sobre fondo azul:

from sense_hat import SenseHat
sense = SenseHat()

sense.show_message(«Prueba de LED», scroll_speed=0.05, text_colour=[255,0,0], back_colour=[0,0,255])

Dentro del manejo de cadenas de texto, otras funciones disponibles son:

sense.flip_h() para rotar horizontalmente el texto

sense.flip_v() para rotar verticalmente el texto

sense.set_rotation(n), donde n es un número de grados (0, 90,180 o 270)

Otra opción que tenemos disponible es la de encender uno o varios pixeles de diferentes colores,  o incluso representar una figura en 8×8, todo ello podemos hacerlo utilizando la función sense.set_pixel(), a continuación acompaño un ejemplo:

from sense_hat import SenseHat
sense = SenseHat()

sense.set_pixel(3, 4, [255, 0, 0])

Al ejecutar el script se encenderá un pixel de color rojo aproximadamente en el centro de la matriz led, concretamente en la columna 4 y en la fila 5. La diferencia entre los parámetros  informados y el número de columna y fila se debe a que sense.set_pixel numera los leds de 0 a 7, de izquierda a derecha y de arriba a abajo.

Si lo que queremos es representar una figura, una forma más eficiente que nos ahorrará la introducción de muchísimo código es la siguiente:

Asignar cada color a una variable, como por ejemplo:

n = [0, 0, 0, 0]
r = [255, 0, 0]
a = [0, 255, 0]
v = [0, 0, 255]

Asignar una matriz de valores a otra variable:

matriz = [
n,n,n,n,n,n,n,n,
n,r,r,r,r,r,n,n,
r,r,v,r,v,r,r,n,
r,r,r,r,r,r,r,n,
n,r,r,r,r,r,n,n,
n,n,r,n,r,n,n,n,
n,r,n,n,n,r,n,n,
n,n,n,n,n,n,n,n,
]

(Si observamos la matriz podremos observar que nos hemos limitado a dar un valor a cada led, considerando la pantalla una cuadrícula de 8×8.)

Y trasladarlo a un pequeño programa como podría ser el siguiente:

from sense_hat import SenseHat
import time

sense = SenseHat()

n = [0, 0, 0]
r = [255, 0, 0]
a = [0, 255, 0]
v = [0, 0, 255]

matriz = [
n,n,n,n,n,n,n,n,
n,r,r,r,r,r,n,n,
r,r,v,r,v,r,r,n,
r,r,r,r,r,r,r,n,
n,r,r,r,r,r,n,n,
n,n,r,n,r,n,n,n,
n,r,n,n,n,r,n,n,
n,n,n,n,n,n,n,n
]

rotacion = [90, 0, 90, 180, 270, 0]

sense.set_pixels(matriz)

for x in rotacion:
  sense.set_rotation(x)
  time.sleep(1)

Al ejecutarlo nos encontraremos con una figura que seguro que a más de uno trae recuerdos 🙂 rotando en distintas direcciones.

 

Otra funcionalidad importante del Sense Hat es la medición de varios valores meteorológicos como son: Humedad, Temperatura y Presión Atmosférica.

Para obtener dichos valores contamos con las siguientes funciones:

sense.get_temperature()  para  temperatura en grados centígrados

sense.get_pressure()  para presión en milibares

sense.get_humidity() para humedad en tanto por cien %

 

Iré ampliando las instrucciones durante los próximos días. En la siguiente versión explicaré como funcionan sus sensores de campo magnético, posición y aceleración (g)

Os adjunto el video oficial del dispositivo y la misión.

Esta entrada fue publicada en Raspberry Pi y etiquetada , , , , , , . Guarda el enlace permanente.

Deja un comentario