Comprobamos cómo micro:bit sirve para algo más que para dibujar caritas en su matriz de ledes controlando una tira LED para señalizar maniobras circulando en bicicleta.
Introducción
En Niubit uno de nuestros "juguetes" favoritos es micro:bit. Es un proyecto educativo de la BBC que pretende facilitar la alfabetización tecnológica por medio de una pequeña y asequible placa. Permite introducir a la programación, robótica, internet de las cosas y telecomunicaciones, por medio de sencillos proyectos. Contiene un pequeño microcontrolador (similar a Arduino), un montón de sensores, una pantalla constituida por una matriz de LEDs, Bluetooth y unos cuantos puntos de conexión de grandes dimensiones que permite trabajar con ella sin necesidad de soldar ni utilizar placas de pruebas (breadboard).
Aunque los entornos de programación previstos para ser utilizados con niños son muy básicos, la placa contiene un rápido microcontrolador, lo que unido a la cantidad de sensores que monta y sus capacidades de comunicaciones inalámbricas, permite utilizarla como alternativa a Arduino para ciertos proyectos. Vamos a ver aquí un ejemplo.
Adaptador
Alrededor de micro:bit se organizan concursos de proyectos educativos para estudiantes. Uno de ellos es do your :bit, a una de cuyas ediciones planeamos presentarnos. Para proporcionar a los alumnos piezas más o menos terminadas que pudieran ensamblar para hacer un montaje, diseñamos un adaptador para micro:bit. El adaptador tiene una ranura para insertar la placa, un portapilas y un conector para hasta tres tiras de LED. De esta forma ellos tienen resuelta la alimentación y las conexiones para que puedan centrarse en desarrollar una utilidad creativa programando micro:bit sacando partido de sus sensores para producir distintos efectos en los LEDs. No encontramos el conector suelto para micro:bit, por lo que echamos mano de una de las placas que convierte sus terminales en una tira de pins, en concreto ésta:
Alrededor de la tira de pins del conector anterior diseñamos una pequeña PCB para soportar todos los elementos necesarios:
- Portapilas
- Interruptor
- Conector rápido para las tiras de LED
- Componentes necesarios para conseguir una alimentación adecuada de la tira y conectarla a los terminales de micro:bit
En la PCB se implementa un esquema como el siguiente:
A pesar de que el pin de alimentación de la tira de LED está marcado con 5V, se puede alimentar con la misma tensión que necesita micro:bit, es decir 3,3V. En el esquema anterior vemos la conexión de una única tira, pero se pueden conectar dos más, tomando la alimentación en paralelo y el pin de datos (DIN) conectado a los pines 1 y 2 de micro:bit para la segunda y tercera tira respectivamente. La PCB resultante tiene el siguiente aspecto (falta el modelo 3D del portapilas):
El conector rápido JST se cablea de la siguiente forma (siendo 0, 1 y 2 los pines de datos de micro:bit donde se conectarán los terminales DIN de las hasta tres tiras de LED):
El resultado final montado dentro de una carcasa con tapa para acceder a las pilas que diseñamos con Tinkercad e imprimimos en una de nuestras impresoras 3D es el siguiente:
Proyecto
Una vez que teníamos resuelta la parte hardware, llegó el momento de plantear un proyecto a los alumnos. La propuesta fue programar un sistema de señales luminosas para bicicleta. La centralita y LEDs irían montadas en el casco, recorriendo esta última el perímetro exterior y las señales propuestas serían las siguientes:
- Cuando el acelerómetro de micro:bit detecte una deceleración, se indicará que estamos frenando encendiendo todos los LEDs en rojo con una intermitencia rápida durante 3 segundos.
- Cuando los giróscopos detecten ladeo del casco hacia derecha o izquierda se indicará la intención de cambiar de dirección encendiendo de forma intermitente los LEDs del lado correspondiente durante 10 segundos.
El programa escrito con el entorno MakeCode de micro:bit resulta lo suficientemente sencillo como para que los alumnos lo implementen por sí mismos tras explicarles algunos conceptos como el manejo de variables y la creación de bloques independientes para gestionar cada una de las tres funcionalidades (equivalente a las funciones). El siguiente programa consigue cumplir con los requerimientos:
El código en MakeCode no permite calibrar el acelerómetro y giróscopo para afinar el comportamiento, aunque con la calibración predeterminada ya funciona bastante bien. Para tener más control sobre ese aspecto habría que afrontar el desarrollo en alguno de los lenguajes más avanzados que soporta micro:bit como Python.
Con un poco de cinta de doble cara tanto para sujetar la tira de LEDs como la centralita se puede hacer la instalación sobre un casco. Podemos ver que el programa anterior se comporta bastante bien: