Ir al contenido principal

Sense Hat

Pi+Sense Hat en mi casa
Los reyes se han adelantado y me han traído un Sense Hat. 

 Muy contento que mi yerno me haya regalado esta pieza mágica que de alguna manera viajó al espacio. Lástima no haberla tenido antes y ponerme a jugar con mis alumnos con un proyecto que se sale de lo cotidiano y nos permite pensar en el espacio.


Se trata de un dispositivo accesorio para la raspberry pi, que se conecta sobre ella, a través de los puertos GPIO de una forma muy fácil y con la ayuda de cuatro separadores y 8 tornillos.


Chito con la Pi y el Sense Hat en sus manos
Según la página oficial.
"Es una tarjeta adicional diseñada especialmente para ser añadida a la Raspberry Pi. Es un "Hat" Un sombrero (hardware adjunto en la parte superior) El HAT "sombrero" se puede sujetar de manera segura a su anfitrión "Raspberry Pi" utilizando cuatro separadores y ocho tornillos"

 
Sense Hat arriba, Pi abajo.
Foto: https://astro-pi.org

Solo necesitarás un destornillador Phillips pequeño (más abajo explicaré el procedimiento de instalación).









¿Para que sirve este cacharro?


Tim Peake.
Foto: https://www.facebook.com/ESATimPeake
Para experimentar y recoger datos del entorno. Fue utilizado en la Estación Espacial Internacional, con este propósito. La idea fue promover la participación de la escuelas en el proyecto Astro Pi, los alumnos enviaban sus códigos de programación y los mejores eran enviados al espacio y los ejecutaba el astronauta Tim Peake en su Pi.

La Fundación Raspberry Pi se unió a la Agencia Espacial Británica, la ESA y la UK Space Trade Association para dirigir un concurso que dio a los estudiantes en edad escolar en el Reino Unido la oportunidad de crear experimentos informáticos para Tim Peake para correr a bordo de la ISS.  Esto se desarrolló entre diciembre de 2014 y julio de 2015. Aquí está nuestro vídeo de la competencia, expresado por Tim Peake mismo (vídeo viejo). Ver biografía.






Partes

Sense Hat vista superior e inferior


Partes del Sense Hat y su carcasa.
Fuente: Sense HAT Essentials

Este dispositivo viajó al espacio, a la Estación Espacial Internacional ISS






Infórmate sobre todos los ganadores y sus experimentos aquí.
 
Tim volvió a la tierra, pero el astronauta francés Thomas Pesquet de la ESA pronto estará en la ISS, y él está interesado en ver lo que los estudiantes de toda Europa pueden hacer con las unidades de Astro Pi. Así, la ESA, junto con la Fundación Raspberry Pi, están lanzando un nuevo Desafío Astro Pi, y esta vez está abierto a los niños de todos los países miembros de la ESA.

Esta es una oportunidad increíble para los estudiantes de toda Europa. ¿Qué mejor manera de aprender sobre computación, ciencia y espacio que realmente ser capaz de ejecutar sus propios experimentos a bordo de la Estación Espacial Internacional? Imagínese poder decir que participó en una verdadera misión de la ESA, que los programas que escribió fueron ejecutados en órbita y que los resultados de sus experimentos fueron analizados por niños de todo el mundo.

En este momento, a 400 km por encima de la Tierra a bordo de la Estación Espacial Internacional, hay dos piezas muy especiales de hardware. Dos computadoras Raspberry Pi están en órbita alrededor de nuestro planeta, cada una equipada con un Sense HAT, un módulo de cámara, y un carcasa especial de vuelo de aluminio. Estas son las unidades de Astro Pi, y los niños de toda Europa tienen la oportunidad de programarlas.

Austronauta francés. Thomas Pesquet

 


Lanzamiento del cohete con la Raspberry Pi y la Sense Hat en su carcasa
(Fueron lanzadas dos)
La carga útil de Astro Pi lanzada desde 
la Base de la Fuerza Aérea de Cabo Cañaveral de Florida, 
en el carguero de carga Cygnus de Orbital Sciences, 
el 6 de diciembre de 2015 a las 21:44 GMT. Vídeo del lanzamiento aquí.

¿Qué trae el Sense Hat?

Pantalla con matrix de LEDS RGB de 8x8 (64 leds) "que permiten visualizar información en pantalla.
Joystick con 5 botones.

"¿Qué funciones tiene la Sense Hat y cómo podemos beneficiarnos de ella? Bueno, comencemos por los sensores. Cuenta con un sensor de presión y de temperatura, con 24 bits de resolución para el caso de la presión y 16 bit para la temperatura. Otro sensor de temperatura, combinado con un sensor de humedad, ambos con 16 bit de resolución. Y el que puede ser más interesante para según que usos: un sensor de aceleración, giroscopio y campo magnético con nueve grados de libertad y 16 bit de resolución. Los sensores pueden tomar muestras de forma periódica en una cola FIFO, pudiendo tomar valores en algunos de los sensores con una frecuencia máxima de 25 por segundo, mientras que el acelerómetro/giróscopo/medidor de campo magnético puede tomar 952 muestras por segundo, ideal para funcionar como estabilizador de cuadricópteros y otros drones."  1
1. Extráido de: Sense Hat, ahora ya puedes comprar la placa que acompañará a la Raspberry Pi al espacio. https://www.xatakahome.com/trucos-y-bricolaje-smart/sense-hat-ahora-ya-puedes-comprar-la-placa-que-acompanara-a-la-raspberry-pi-al-espacio


Los sensores (detalles)  
Fuente: https://astro-pi.org/about/hardware/sense-hat/
  • Giroscopio mide la orientación de un objeto. Puede ser muy difícil de visualizar si nunca has utilizado uno antes, pero puede haber visto uno que se utiliza para un paseo feria. El paseo, un Aerotrim, toma solamente una persona que es atada con correa por sus piernas y brazos. Se sientan dentro de tres grandes anillos de metal, que pueden girar independientemente en relación entre sí. El operador de paseo por lo general dice "Gritar si quieres ir más rápido!" Y te pone en marcha; Usted entonces va upside-down, de nuevo al frente y de lado a lado de una vez, mientras que grita. Este paseo es un giroscopio ya que permite tres grados de movimiento. Estos son normalmente llamados:
    Giroscopio. Dibujo de Raspberry Pi Fundation
    Pitch (arriba y abajo como un avión despegando y aterrizando) 
    Yaw (izquierda y derecha como dirigir un coche) 
    Roll (imaginar un movimiento sacacorchos, como barril rodando un avión de combate)
  •  
  • Acelerómetro, mide el aumento de velocidad de un objeto (aceleración). En reposo, va a medir la dirección y la fuerza de la gravedad, pero en movimiento mide la dirección y la fuerza de la aceleración que actúa sobre ella - como si estuviera balanceándolo alrededor de su cabeza en una cuerda. Debido a que los acelerómetros pueden detectar la dirección de la gravedad, a menudo se encuentran en dispositivos que necesitan saber cuando están apuntando hacia abajo, como un teléfono móvil o una tableta. Cuando gira la pantalla lateralmente, el acelerómetro interior detecta que la dirección de la gravedad ha cambiado y, por lo tanto, cambia la orientación de la pantalla.
    El Nintendo Wiimote utiliza acelerómetros para detectar la fuerza y ​​la dirección de tu movimiento mientras juegas con Wii Sports, por ejemplo. Se puede decir si usted está haciendo un back-swing duro o un disparo bajo el brazo suave en el juego de tenis. El Sentido HAT también tiene un acelerómetro incorporado; Puede leer sus datos en el código como ángulos de tono, de balanceo y de guiñada o como valores de eje X, Y y Z en Gs. En el espacio, el acelerómetro siempre leerá cero porque está en caída libre. Sin embargo, cualquier movimiento será recogido, ya que también es lo suficientemente sensible para detectar cuando la estación está bajo empuje, por ejemplo cuando la estación espacial está haciendo una corrección orbital o una maniobra de evitación de escombros.
  • Magnetómetro, se utiliza para medir la fuerza y ​​la dirección de un campo magnético. La mayoría de las veces se utilizan para medir el campo magnético de la Tierra con el fin de encontrar la dirección del Norte. Si su teléfono o tablet tiene una brújula, probablemente utilizará un magnetómetro para encontrar Norte. También se utilizan para detectar perturbaciones en el campo magnético de la Tierra causadas por algo magnético o metálico; Los escáneres de aeropuertos los utilizan para detectar el metal en armas ocultas, por ejemplo. El SENSE HAT tiene un magnetómetro incorporado también. Los datos vienen como sólo un ángulo entre 0 y 360 grados en su código, un poco como sólo tomar el valor de guiñada de los dos sensores anteriores, y muestra la dirección del Norte geomagnético. También puede leer la fuerza y ​​la dirección del campo magnético como valores de eje X, Y y Z en microteslas (μT).En la superficie de la Tierra, las líneas del campo magnético corren a través de ella, lo que las hace ideales para encontrar la dirección del Norte. Usted debe fácilmente ser capaz de programar una brújula con la matriz LED. Sin embargo, cuanto más lejos esté de la superficie, más curvo se vuelve el campo magnético. Considere que, en la ISS, el Norte magnético podría parecer que está apuntando hacia el espacio en alguna parte, porque la forma del campo está enormemente curvada allí. A medida que la estación gira en órbita alrededor de la Tierra, la dirección del Norte geomagnético oscilará hacia adelante y hacia atrás, y esto podría usarse como una forma de contar cuántas órbitas han ocurrido mientras su código está funcionando.
  • Un sensor de temperatura se utiliza para medir el calor y el frío. Es exactamente como el termómetro que pondría en su boca para tomar su propia temperatura, excepto que es una electrónica incorporada en el Sense HAT e informa de la temperatura como un número en Celsius en su código. La temperatura ambiental en la ISS se controla cuidadosamente, por lo que la temperatura ambiente no cambiará mucho. Usted puede ser consciente de que el aire caliente se levanta mientras el aire fresco cae; Esto se debe a que el aire frío es más denso y más pesado que el aire caliente y, por lo tanto, es empujado hacia abajo por la gravedad. En la ISS este efecto no sucede, porque no hay gravedad para tirar del aire más pesado hacia abajo. El flujo de aire es una cuestión importante en la estación, por lo que puede ser que se detectan diferentes temperaturas ambientales en diferentes partes de la estación donde el flujo de aire es diferente. Considere también que el sensor de temperatura puede estar midiendo un poco de calor proveniente de la Rasberry Pi en sí, así como el entorno de la ISS.)
  • Un sensor de presión (a veces llamado barómetro) mide la fuerza ejercida por moléculas diminutas del aire que respiramos. Aunque las moléculas de aire son invisibles, todavía tienen peso y ocupan espacio. Hay mucho espacio vacío entre las moléculas de aire y por lo tanto pueden ser comprimidos para encajar en un espacio más pequeño; Esto es lo que sucede cuando usted hace estallar un globo. El aire dentro del globo está ligeramente comprimido y por lo tanto las moléculas de aire están empujando hacia fuera sobre la piel elástica; Por eso se mantiene inflado y se siente firme cuando lo aprieta. Del mismo modo, si usted chupa todo el aire de una botella de plástico, que está disminuyendo la presión dentro de él y por lo que la mayor presión en el exterior aplasta la botella. ¿Alguna vez sintió sus oídos estallar al subir y bajar en un ascensor? .El Sense HAT tiene un sensor de presión de aire incorporado y reportará presión de aire a usted en milibares en su código. La presión del aire en la ISS está controlada y usted no debe esperar verla cambiar mucho.
  • Un sensor de humedad mide la cantidad de vapor de agua en el aire. Hay varias maneras de medirla, pero la más común es la humedad relativa. Una de las principales propiedades del aire es que cuanto más caliente es, más vapor de agua puede ser suspendido dentro de él. Por lo tanto, la humedad relativa es una proporción, usualmente un porcentaje, entre la cantidad real de vapor de agua suspendido hasta la cantidad máxima que podría suspenderse para la temperatura actual. Si hubiera humedad relativa del 100%, significaría que el aire es totalmente saturado con vapor de agua y no puede sostener más.El Sense HAT tiene un sensor de humedad que reportará la humedad relativa como un porcentaje en su código. Utiliza datos del sensor de temperatura para darle el valor correcto. La humedad en la ISS es cuidadosamente controlada por los sistemas ambientales por lo que puede esperar que sea bastante bajo todo el tiempo - el aire es muy seco hasta allí. Sin embargo, el sensor será lo suficientemente bueno para detectar el vapor de agua en el aliento humano, por lo que podría ser capaz de utilizar estos datos para detectar la presencia de la tripulación de trabajo cerca de la Astro Pi.
  • 8×8 RGB Pantalla matrix de LEDS, esta es la única forma real de reproducción visual que el Astro Pi (astronauta)  tendrá en la ISS. Por una serie de razones técnicas y de seguridad no se nos permite conectar las salidas HDMI o compuestas de la raspberry Pi en nada en la ISS, ya que esto habría requerido un proceso de certificación muy largo que no tuvimos tiempo para hacerlo

        
    LED significa 'diodo emisor de luz'; La luz emite porque emite luz (yup), y el diodo significa que la corriente sólo puede fluir a través de ella en una dirección. La matriz consta de 64 LEDs dispuestos en una cuadrícula de ocho por ocho, y cada LED individual tiene un componente rojo, verde y azul que se puede controlar en código.

        
    Para un solo LED puede especificar la cantidad de rojo, verde y azul que desee, utilizando números entre 0 y 255. Utilizando varias combinaciones de rojo, verde y azul para cada LED, puede crear cualquier color o sombra que desee. Debería permitirle crear una pantalla básica o un monitor de estado, o incluso reproducir animaciones que muestren lo que está haciendo su programa.

  • Joystick mini 5 botones. Este es un pad de dirección estándar como el de su controlador de consola de juegos, compuesto de cinco botones para arriba, abajo, izquierda, derecha y centro. Usted será capaz de recoger eventos en su código cuando el joystick se mueve y se podría utilizar para permitir que un usuario humano para controlar su programa. Combine esto con la matriz de LED y tiene la capacidad de crear un juego para el equipo de la ISS a jugar. Tetris, Pong y Snake vienen a la mente, pero también puedes usar el joystick para hacer un juego de tiempo de reacción y usar los datos que capturas para determinar si las reacciones del equipo se están haciendo más rápido o más lento con el tiempo.

    El joystick Sense HAT está asignado a las cuatro teclas del cursor del teclado, con el botón central del joystick asignado a la tecla Return. Esto significa que mover el joystick tiene exactamente el mismo efecto que presionar esas teclas en el teclado.
La carcasa "Astro Pi flight case"

Esta es la original en aluminio.
Fuente: www.astro-pi.org
Lamentablemente, no está disponible para comprar, porque son muy costosas. Se hicieron ocho carcasas , y dos de ellas han sido lanzados al espacio. Están hechas de aluminio grado 6063 que es estándar para aplicaciones aeroespaciales.
Una vez que el hardware de Raspberry Pi se ha insertado, las dos mitades se unen por los cuatro cerramientos de perno en las esquinas. El producto final es la unidad de vuelo Astro Pi.


Columbus ISS Training
Module in Germany –
Image credit ESA




Pasos para instalar el Sense Hat sobre la Pi

He tenido que sacarla de su caja protectora en acrílico transparente para hacer esta maniobra de ensamblaje.

1) Apague la raspberry pi, desconecte la fuente de alimentación. Desconecte todo los cables.
2) El sense Hat viene en una bolsa anti estática y trae los siguientes elementos:
  • 1 x GPIO  cabezal de extensiones de pin
  • 4 x Hexagonales stand-offs (hembra-a-hembra)
  • 8 x M2.5 tornillos
Toque algún objeto metálico a tierra (pulsera antiestática) y saque el sense hat de la bolsa antiestática en que viene (plateada).
3) El siguiente esquema muestra como deberás montarla.


Fuente: raspberrypilearning/astro-pi-guide

  • Oriente correctamente ambas tarjetas . Pines (pi) y conector (Sense Hat).
  • Enrosque los tornillos de la parte inferior y gire los hexágonos entre el dedo y el pulgar. (4xM2.5 y 4xtuercas hexagonales)
  • A continuación, inserte el HAT Sense en el encabezado de extensión de pines GPIO. Los orificios de las esquinas deben alinearse con los hexagonales.
  • Por último, coloque los tornillos restantes de la parte superior (4xM2.5)
  • Utilice un destornillador Phillips pequeño para apretar cada esquina stand-off individualmente. No necesitan ser especialmente ajustados, lo suficiente para asegurar que el HAT no se suelte.


Instación del software desde la consola de tu raspberry Pi


Conecta tú Sense Hat  e inicia tu raspberry Pi.

Primero actualiza tú sistema operativo con los siguientes comandos en el terminal de la raspberry conectada a Internet
sudo apt-get update
sudo apt-get upgrade

Ahora instala los siguientes paquetes (sense-hat y pip3)
sudo apt-get install sense-hat 


Finalmente reinicia la Pi para completar la instalación
sudo reboot



Ejemplos de programación (Códigos simples de programación, escritos en el lenguaje Python)


Son modificaciones de los códigos de la organización Raspberry Pi, extraídos de: https://www.raspberrypi.org/learning/getting-started-with-the-sense-hat/worksheet/ 
Se le ha agregado explicaciones dentro del código y algunas otras funciones

Nota: toda información escrita después de "#" son comentarios, el programa no lo ejecuta, no deberás utilizar acentos o caracteres raros (ñ,@).


Primer programa, correr un texto en la matrix de leds

ParámetroEfecto
scroll_speed La velocidad de carrera del texto en la pantalla se puede cambiar. El valor por defecto es 0.1, un valor más alto disminuye su velocidad.

text_colour
Parámetro que altera el color del texto. Deberás especificar tres valores para rojo, verde y azul. Cada valor deberá estar comprendido entre el 0 y el 255. Ejemplo (RGB) [255,0,255] .Será la suma de Red + Blue = Purple

back_colour Este parámetro altera el color del fondo y trabaja de forma similar que el parámetro text_colour


Cómo escribir el código.

Yo los escribo desde nano (editor simple de texto), puedes escribirlo con otras aplicaciones.
Abro nano y escribes el siguiente texto.
nano

(verás el editor con la hoja vacía)

Código en python
#Chito.py 
 
#se ve un texto corriendo "scroll" a la velocidad 0.15, color de texto amarillo y
#fondo azul, rotados ya que la Pi esta al reves 
#posteriormente sale otro texto

from sense_hat import SenseHat

sense = SenseHat()
sense.set_rotation(180) # rota 180 grados la matrix de leds

#corre el texto con las letras de color amarillo y fondo azul y velocidad 0.15
sense.show_message("Hola", text_colour=[255,255,0],  back_colour=[0,0,255], scroll_speed=0.15)
sense.clear()#borra la matrix de leds

#texto de color blanco, fondo negro, velocidad 0.1 (valores predeterminados)
sense.show_message(" mi nombre es Chito")
sense.clear



Lo ejecutas
python hola_mundo.py 


Nota: si deseas salir del programa en "loop" simplemente deberás apretar "ctrl+c", quedará el proceso interrumpido y la pantalla el último paso del comando .


Encender dos leds a colores diferentes
Esto sería lo que veríamos

Recuerda que se enumera empezando desde el cero desde la esquina superior izquierda de la matrix de leds.
Dibujo extraído Guía del Emulador
El punto azul 0,2
El punto rojo 7,4


# comentario,
No es interpretado como un comando, pero no puedes colocar acentos ni caracteres raros, daría un error de ejecución.

Invertirá la pantalla de leds, muy útil cuando deseamos hacer esto.

Código en python

# encender_dos_leds.py

# enciende dos leds en colores diferentes
# sobre un fondo apagado  y rota la matrix de leds 180 grados


from sense_hat import SenseHat
from time import sleep # importa el modulo para detener la ejecucion del software

sense = SenseHat() # carga el software sense hat
sense.set_rotation(180) # rota 180 grados la matrix de leds
sense.set_pixel(0, 2, [0, 0, 255])# indica encender el led 0,2  y el color rgb
sense.set_pixel(7, 4, [255, 0, 0])# indica encender el led 7,4  y el color rgb
sleep(3) # detienes el programa 3 s
sense.clear() # borras lo visualidado en la matrix de leds y fin

 



Mezclar colores (todo el display)
Animación de lo que pasará


Mezcla de colores luz el centro sería [255,255,255]


código python

#mezclar_dos_colores.py 

# Mezcla de colores aditivos
# Este programa genera un color que es la suma del rojo, verde y azul
# El maximo valor es 255


from sense_hat import SenseHat
from time import sleep # importa el modulo para detener la ejecucion del software
sense = SenseHat()

# Los 64 leds se haran blanco
r = 255 # parametro de rojo
g = 255 # parametro de verde
b = 255 # parametro de azul
sense.clear((r, g, b)) # borra la matrix y la configura a los parametros
# r,g,b  esto origina la suma de los tres para originar el blanco
sleep(3) # detienes el programa 3 s
sense.clear() # borra la matrix y la configura a los parametros 0,0,0

# Los 64 leds se haran cyan
r = 0   # parametro de rojo
g = 255 # parametro de verde
b = 255 # parametro de azul

sense.clear((r, g, b)) # borra la matrix y la configura a los parametros
# r,g,b  esto origina la suma de los tres para originar el blanco

sleep(3) # detienes el programa 3 s
sense.clear() # borra la matrix y la configura a los parametros 0,0,0


Animar un dibujo (eyes.py)
Animación del programa creado

Primero sale un mensaje y después unos miran hacia los lados


Código
#eyes.py

# permite ver unos ojos mirando de lado a lado
# fuente: https://www.raspberrypi.org/learning/getting-started-with-the-sense-hat/worksheet/
# modificado por chito

from sense_hat import SenseHat
import time #modulo de tiempo
sense = SenseHat()

#configura el color a cada variable
w = [150,150,150]
b = [0,0,255]
e = [0,0,0]

time.sleep(1)
sense.flip_h()

#disposicion de los pixeles en la matrix
image = [
    e,e,e,e,e,e,e,e,
    e,e,e,e,e,e,e,e,
    w,w,w,e,e,w,w,w,
    w,w,b,e,e,w,w,b,
    w,w,w,e,e,w,w,w,
    e,e,e,e,e,e,e,e,
    e,e,e,e,e,e,e,e,
    e,e,e,e,e,e,e,e
]

sense.set_pixels(image) #llama a la imagen
# mientras corra el programa cada segundo cambia el dibujo en horizontal
while True:
time.sleep(1) #pausa 1s
sense.flip_h() #configura la pantalla rotando 180
# para interrumpir el programa (ctl+c)



Sense HAT examples





Problemas sin resolver
La temperatura que registra el Sense Hat está muy influenciada por la Pi (calor desprendido por el procesador, al estar tan cerca). Por lo que la temperatura del lugar donde estamos registrando con el sensor será inferior. Pensamos que si la conectamos con un cable IDE podríamos minimizar esta situación.

Fuentes utilizadas


Comentarios