Retos avanzados con micro:bit

Mejorando el termómetro

Programación del termómetro

El siguiente programa proporcionará el valor numérico de la temperatura ambiente en grados Celsius cada vez que se pulse el botón A. La variable temperatura (ºC) se encuentra disponible en el menú Entrada.

Termómetro de pulsador.png

El evento al iniciar comienza encendiendo un punto de la matriz de LED a modo de piloto de funcionamiento. El brillo de la pantalla se ajusta a un valor bajo para conseguir un bajo consumo de energía.

Por otro lado, cada vez que se pulse el botón A, ocurrirá un evento del tipo al presionarse el botón A que subirá el brillo de la pantalla al máximo (255) y  mostrará la temperatura mediante una cadena de texto deslizante, para volver más tarde a dejar encendido el piloto de funcionamiento a bajo brillo.

La temperatura indicada será algo superior a la ambiental. Esto ocurre porque el sensor de temperatura se encuentra en el microprocesador y éste se calienta ligeramente cuando la placa está en funcionamiento. Martínez de Carvajal (2019) establece el error medio en 3ºC, por lo que habrá que restar 3 al valor mostrado en pantalla para obtener la temperatura real. La manipulación de la placa con los dedos también contribuye al calentamiento y al error en la medida de la temperatura.

Podemos añadir un evento de tiempo para que el termómetro muestre la temperatura cada cierto tiempo. Para ello debemos usar el evento cada ms, dentro del menú Bucles.

Termómetro de evento.png

Cada 30000 ms, o cada 30 segundos, el programa mostrará la temperatura aunque no haya sido pulsado el botón A. Dentro del bucle de tiempo no se sube el brillo, así que los dígitos se mostrarán con bajo brillo para ahorrar batería.

Es posible mejorar un poco más el programa haciendo que micro:bit muestre tres veces la temperatura cada 30 segundos. Podríamos repetir sin más la sentencia mostrar cadena temperatura (ºC) tres veces dentro del bucle de tiempo, pero en su lugar vamos a usar un bucle del tipo repetir veces , que también se encuentra en el menú Bucles.

Evento de tiempo y bucle.png

Nótese que el programa ejecuta un bucle cada 30 segundos, y que dentro de ese bucle se ejecuta otro bucle que muestra la temperatura tres veces seguidas. Al hecho de introducir un bucle dentro de otro se le llama anidar bucles.

Mejorando la lectura del sensor de temperatura

Para corregir el error de 3 grados Celsius en la lectura del sensor, bastará con restar 3 al valor de la variable temperatura (ºC). El menú Matemática contiene bloques para realizar operaciones aritméticas. Si se usa el bloque de resta - dentro de los bloques mostrar cadena resulta sencillo realizar la corección necesaria. El código del termómetro completo quedará:

Termómetro corregido.png

Los dos bloques mostrar LED han sido sustituidos por dos bloques graficar x y para conseguir que el código sea algo más compacto. 

Aprender con un led la diferencia entre analógico y digital

Vamos a conectar un led, el pin corto (-) al GND y el otro al pin0

2024-06-02 20_13_07-Copia de Wednesday - Presentaciones de Google.png

Ulrich Pedersen Dah & Ture Reimer-Mattesen Center for Underisningsmidler CPU

Vamos a ver la diferencia entre estos dos métodos de encender y apagar la luz

2024-06-02 20_14_07-Copia de Wednesday - Presentaciones de Google.png
Ulrich Pedersen Dah & Ture Reimer-Mattesen Center for Underisningsmidler CPU

El programa en digital es sencillo

2024-06-02 20_14_57-Copia de Wednesday - Presentaciones de Google.png
Ulrich Pedersen Dah & Ture Reimer-Mattesen Center for Underisningsmidler CPU

Y el programa en analógico

2024-06-02 20_33_34-Copia de Wednesday - Presentaciones de Google.png
Ulrich Pedersen Dah & Ture Reimer-Mattesen Center for Underisningsmidler CPU

Bloques de entradas: sonómetro, magnetómetro y acelerómetro con una sola línea de código

Sensor de sonido

Para usar los sensores integrados de micro:bit no es necesario cargar ni inicializar bibliotecas de código. Las medidas de los sensores se encuentran disponibles en el menú Entrada en forma de variables. En el lenguaje de bloques las variables se representan mediante rectángulos de extremos redondeados.

La versión 2 de micro:bit dispone de un micrófono que además de grabar sonidos puede medir el nivel de ruido. La variable nivel de sonido nos dará lecturas entre 0 (nivel mínimo de sonido) y 255 (nivel máximo). Estos niveles no se corresponden con ninguna unidad física, como el dB por ejemplo, y deben usarse con fines comparativos.

La razón de que algunos sensores de micro:bit proporcionen medidas entre 0 y 255, es que con un byte (8 bits) sólo se pueden representar 28 = 256 números distintos, es decir, el 0 y los 255 primeros números naturales.

El bloque plot bar graph of del menú LED permite construir un sencillo medidor de sonido ambiente. Como 255 es un valor muy alto de intensidad de sonido, ajustamos el rango de medida de la barra, up to, a la mitad, es decir, a 128. Así la barra reflejará mejor el sonido de una voz o el sonido ambiental normal.

Programa de barra de sonido.jpg

La variable nivel de sonido debe arrastrarse desde el menú Entrada. En el momento en el que la variable haya sido introducida en el programa, el simulador de micro:bit cambiará, mostrando una barra ajustable que simulará el nivel de sonido captado por el micrófono. El valor numérico del nivel de sonido simulado también será mostrado al lado del LED del micrófono.

microbit-Sonido.png

Tras descargar el programa en la placa real, la matriz de LED representará continuamente el sonido recogido por el micrófono en forma de barra vertical. El LED del micrófono iluminado indicará que micro:bit está captando sonido.

Barra de sonido.gif

Una tarjeta micro:bit ejecutando este programa puede agotar un par de pilas alcalinas IEC R03 (AAA) en unas 40 horas (Frost 2018). Para ahorrar energía y prolongar la autonomía del medidor podemos reducir tanto el brillo de la pantalla como el número de medidas por segundo que realiza el sensor. Para conseguir esto último introduciremos en el bucle para siempre un bloque pausa (ms). Si el bloque se ajusta a 100 ms, el sensor sólo realizará 10 mediciones del nivel de sonido cada segundo.

Ahorro de energía.jpg

Magnetómetro y acelerómetro

Con una mínima modificación, el código anterior puede usarse para monitorizar aquellas magnitudes que puedan variar rápidamente. Por ejemplo, podemos usar el sensor integrado de campo magnético (magnetómetro) para medir el campo magnético de la Tierra, el de una imán o el de una masa de hierro. 

Podemos acceder al sensor mediante la variable fuerza magnética (µT), que proporciona la inducción magnética medida en microtesla. Al cargar el programa, micro:bit comenzará a medir el campo magnético terrestre que varía, según la localización, entre 25 y 65 µT. Nótese que el magnetómetro no limita sus medidas al valor de 255.

Programa de inducción magnética.jpg

Otra medida interesante es la de la aceleración de la placa. La variable de acceso al acelerómetro se llama aceleración (mg) y proporciona las aceleraciones medidas en milésimas de g. Cuando la placa esté en reposo medirá  la aceleración de la gravedad terrestre, que es de 1 g. Los movimientos bruscos de la placa en cualquier dirección deberían alterar el valor medido.

Programa de aceleración.jpg

Nivel de burbuja usando el giroscopio

Mediante el sensor de fuerza, micro:bit puede determinar para cada uno de los tres ejes coordenados las proyecciones de la aceleración de la gravedad y, a partir de ellas, el giro de la placa con respecto al plano horizontal.

Vamos a usar la medida  del giro de la placa para programar un sencillo nivel de burbuja. La burbuja será un punto luminoso en la pantalla LED de micro:bit. Cuando el punto se encuentre en el centro de la pantalla, cuyas coordenadas son (2,2), micro:bit estará nivelado. Si micro:bit está desnivelado hacia la izquierda o hacia la derecha, el punto se dibujará desplazado en esas direcciones.

La estructura del código, compuesto por múltiples sentencias condicionales, es muy similar al de la brújula analógica presentada en el apartado anterior.Nivel.png

El código consta de un único evento temporal dentro del cual se evalúa el giro de la placa cada 250 ms y que, en función del ángulo de inclinación, enciende el punto correspondiente. Por ejemplo, si la placa se inclina hacia la izquierda con una rotación inferior a -5º, se encenderá el punto situado más a la izquierda, cuyas coordenadas son (0,2). En caso contrario, si la placa está incilinada hacia la izquierda menos de -2º, se encenderá el siguiente punto, de coordenadas (1.2), y así sucesivamente.

Tarjeta nivel.png

Lectura puerto USB por MakeCode o Coolterm

Podemos enviar datos por el puerto USB y visualizarlos en el ordenador

Hemos elegido el sensor de luz, pero PUEDE SER CUALQUIER SENSOR

https://makecode.microbit.org/S14202-21125-85484-72930

METODO VISUALIZACIÓN EN EL MISMO MAKECODE

Debajo del simulador podemos ver una evolución de los datos que lee

2025-11-02 20_31_54-.png

y el resultado es muy visual

METODO COOLTERM

Este método es utilizando un programa que lo podemos descargar en esta página https://freeware.the-meiers.org/

2025-11-02 20_33_40-Greenshot.png

Es un programa libre, y portable, es decir es una carpeta con un ejecutable y programas accesorios

2025-11-02 20_34_32-Greenshot.png

lo ejecutamos

2025-11-02 20_35_26-CoolTermWin64Bit - Explorador de archivos.png

En Connection - Options 

2025-11-02 20_36_05-Untitled_0.png

Subimos la velocidad a 115.200 baudios

2025-11-02 20_36_40-Connection Options (Untitled_0).png

Al darle a conectar se ven los datos numéricamente

2025-11-02 20_37_48-Untitled_0 _.png

LA VENTAJA DE COOLTERM ES QUE LEE CUALQUIER DISPOSITIVO (MICRO:BIT, ARDUINO, ECHIDNA....)

BLUETOOTH un poco de teoría

ONDAS

Una onda es una señal que se propaga por un medio. Por ejemplo el sonido, que es una onda mecánica que viaja usando el aire o cualquier otro material. Pero en el caso de las señales eléctricas pueden ser enviadas por el cable o a través del vacío (no necesitan un medio para transmitirse).

Dependen de 3 parámetros principalmente:

La relación entre ellas es muy fácil pues las ondas electromagnéticas viajan a la velocidad de la luz c y si velocidad es espacio/tiempo luego c = λ/T luego c= λ*f

Dentro del espectro electromagnético encontramos diferentes tipos de señales dependiendo de las características de su onda.

TRANSMISIÓN INALÁMBRICA: BLUETOOTH.   

¿Sabias que?
Su curioso nombre viene de un antiguo rey Noruego y Danés, y su símbolo, de las antiguas ruinas que representan ese mismo nombre. 

Hay 3 clases de bluetooth que nos indican la máxima potencia a la que emiten y por tanto la distancia máxima que podrán alcanzar:

También es muy importante la velocidad a la que pueden enviarse los datos con este protocolo:

Mbps : Mega Bits por segundo.       MBps: Mega Bytes por segundo.
kb = 1.024 b     M = 1.024 k     G = 1.024 M

¿Te atreves a calcularlo . ?

¿Cuántos ciclos por segundo tendrán las ondas que están en la Banda ISM? ¿Cuál es el periodo de esas ondas?

Solución 
a)  f = 2.4G
b) λ=c/f= 12.5cm o sea, las antenas tendrían que ser de esta longitud. Hay muchos trucos para reducirla, una de ellas es la forma de serpiente que puedes ver en el HC-06

¿Te atreves a calcularlo...?

¿A qué distancia y cuanto tiempo tardarían en enviarse los siguientes archivos por Bluetooth?

  1. Un vídeo de 7Mb usando versión 2 clase 2
  2. Una imagen de 2.5Mb usando versión 3 clase 1
  3. Un archivo de texto de 240KB usando versión 1.2 clase 1

Solución 
1) 7Mb / 3Mbs = 2.3 seg.
2) 2.5Mb / 24Mbs = 0.1 seg.
3) 240 kB 8b/B = 1.920 kb   1.920 kb  / 1.024 =   1.875 Mb     1.875Mb / 1Mbs  = 1.875 seg. 

¿Bluetooth clásico o Bluetooth Low Energy = BLE?

Es un protocolo similar al clásico Bluetooth pero diseñado a consumir menos potencia manteniendo funcionalidad. Su popularidad ha crecido en multitud de dispositivos  

En robótica, el clásico device que utiliza BLE es la Micro:bit. Aunque la Micro:bit no tiene Wifi integrada, posee una radiofrecuencia que podemos configurar para Bluetooth (hay que elegir, o utilizar sus comandos de Radio o utilizar comandos de Bluetooth)

Por eso a la hora de elegir la APP tienes que tener en cuenta:

Nosotros hemos elegido uno sencillo que cumple las dos condiciones (hay muchas APPs) Serial Bluetooth Terminal

2025-12-05 08_05_39-WhatsApp.png

BLUETOOTH extensión en Makecode

En Makecode instalaremos la siguiente extensión

Entramos en Extensiones

2025-11-02 21_37_10-Greenshot.png

Buscamos Bluetooth y elegimos la esta :

2025-11-02 21_41_46-Greenshot.png

Nos dirá que es incompatible con la radio, y hay que eliminar la radio y poner Bluetotth, aceptamos :

2025-11-02 21_43_22-.png

Por si acaso...

En Makecode, si vamos a la rueda dentada - Project settings 

2025-11-05 09_44_34-Configuración.png

Hay que tener que cualquiera se puede conectar via Bluetooth

2025-11-05 09_45_48-Configuración.png


BLUETOOTH programa en Makecode

Realizamos un programa que :

¿Para qué mostrar el nombre de la micro:bit? Para saber a qué micro:bit conectarte. En una clase con muchas micro:bit es importante este dato. El nombre del equipo está en
2026-01-09 16_36_45-Greenshot.png

https://makecode.microbit.org/S60585-58735-21378-05922

BLUETOOTH programa Serial Bluetooth Terminal

Entramos con el móvil a Google Play e instalamos esta aplicación https://play.google.com/store/apps/details?id=de.kai_morich.serial_bluetooth_terminal

2025-11-02 21_50_49-Greenshot.png

Tiene la ventaja de

Entramos en Devices y en Bluetooth LE y nos conectamos a la Micro:bit

unnamed.webp

Una vez conectado, podemos:

BLUETOOTH con App Inventor. Extensiones

Descargas e instalación

Necesitamos estas extensiones para poder crear una APP que pueda enviar y recibir con nuestra micro:bit

Página de descargas https://iot.appinventor.mit.edu/#/

2025-11-02 22_05_10-.png

Una vez descargadas, vamos al APP INVENTOR https://ai2.appinventor.mit.edu y las instalamos en extensiones :

2025-11-02 22_08_33-Mattermost Desktop App.png

 

Una vez instaladas, se visualizan como extensiones abajo del menú. Las dos últimas son las que utilizaremos:

2025-11-02 22_10_51-.png

La extensión Bluetooth tiene diversas funciones que tienes su descripción aquí (English). Para poder instalarla, vamos al APP INVENTOR https://ai2.appinventor.mit.edu

Avanzado BLUETOOTH App Inventor programa

En DESIGNER

incorporamos:

  1. HorizontalArrangment para que los botones queden alineados horizontalmente
  2. Botones
    1. Scan
    2. Stop
    3. Conectar
    4. Desconectar
  3. Label que dirá el estado de la conexión. Lo llamaremos LabelEstado
  4. ListView que lo llamaremos ListBLE donde mostrará los diferentes dispositivos Bluetooth LE que detecta
  5. TextBox para poner el texto que queramos a enviar a micro:bit
  6. Un botón Enviar el texto anterior
  7. Un Label que lo llamaremos LabelTextoRecibido que mostrará el mensaje desde micro:bit
  8. Añadimos los elementos de las extensiones que hemos instalado anteriormente 
    1. Microbit_UART_Simple
    2. BluetoothLE

2025-11-02 22_13_06-Mattermost Desktop App.png

En Blocks

Cuando escaneemos, que el elemento empiece el escaneado y la lista se vuelva visible, además de que LabelEstado diga que esta escaneando

2025-11-02 22_24_04-Greenshot.png

Si ha encontrado un dispositivo, que lo vaya añadiendo a la lista ListBLE

2025-11-02 22_25_21-Mattermost Desktop App.png

Cuando le digamos que pare, simplemente se lo mandamos al dispositivo y LabelEstado lo informa

2025-11-02 22_24_44-Mattermost Desktop App.png

Cuando le demos a conectar, pues conecta con el seleccionado en ListBLE y LabelEstado informa

2025-11-02 22_25_49-Greenshot.png

Si conecta, pues LabelEstado informa y ListBLE no es necesaria por lo tanto se oculta, pues entorpece la visión

2025-11-02 22_26_36-Greenshot.png

Si queremos desconectar, pues le decimos al elemento BluetoothLE que desconecte

2025-11-02 22_27_31-Greenshot.png

Si se ha desconectado (voluntariamente al dar al botón anterior, o involuntariamente pues el dispositivo se ha desconectado, o esta muy lejos... etc) que informe

2025-11-02 22_28_08-Mattermost Desktop App.png

Si apretamos el botón enviar, le enviamos el texto que esta en TextBox entre "#" pues así lo hemos definido en el programa Makecode

2025-11-02 22_30_07-Mattermost Desktop App.png

Si se ha recibido un mensaje, pues que lo visualice, pero primero comprueba que el mensaje no este vacío
NOTA el mensaje "message" lo arrastras desde la instrucción "when.." tal y como señala la línea roja

2025-11-02 22_30_57-Mattermost Desktop App.png

basicoBluetoothLE.aia

La APP a tu móvil

Tienes dos opciones

OPCIÓN EN VIVO AI COMPANION

Instalas la APP MIT AI2 COMPANION

APP-MIT.png

En APP INVENTOR 

conect-ai-companion.png

Y sale un código y un QR asociado al código

cod-ai-companion.png

Abrimos la APP MIT AI2 COMPANION y metemos el código anterior (o lo escaneamos con el QR)

ai-companion2.jpg

En APP INVENTOR verás que sale una barra de progreso enviando tu APP a tu móvil. Cuando termina automáticamente lo ejecuta.

A jugar...