Smart Home para Micro:bit


¿Qué es Smart Home para micro:bit?

Se trata de una maqueta con montón de sensores y actuadores muy bien diseñada para sacarle al máximo jugo a la domótica, programación y mundo maker. Además de la posibilidad de trabajar con la placa Micro:bit

smarthomemicrobit.png

Fuente Innovadidactic con permiso del comercial


-  Placa micro:bit
-  Placa de expansión para micro:bit 
-  Pantalla LCD 1602 con interfaz I²C
-  Sensor de temperatura y humedad DHT11
-  Sensor de gas MQ-2
-  Sensor PIR de movimiento
 -  Módulo RGB WS2812
-   2 Servos 9 g
-  Motor DC 130
-  Sensor de lluvia / humedad
-  Módulo de alimentación con batería recargable
-  Panel solar
-  LED simple
-  Interruptor
-  Estructura tipo casa (madera + acrílico)
-  Set de cables Dupont, tornillos y separadores

Introducción

Introducción

Objetivos y Contenidos

Objetivos

Contenidos

Introducción

Pensamiento computacional

¿Dónde se encaja este robot? ¿Se puede comparar este robot con otros robots de otros cursos que hacemos desde CATEDU?

Esta es la hoja de ruta que proponemos, no se tiene que tomar al pie de la letra, pero intenta ayudar al profesorado que tenga una visión global de tanta oferta robótica:

Como se puede ver SMARTHOME CON MICROBIT tiene la ventaja de TENER LA MICROBIT con el centro de la programación y ampliarlo dentro de un proyecto maker con un amplio rango de prácticas con sensores y actuadores reales

Guía orientativa

Tenemos un grupo Telegram Robótica Educativa en Aragón, https://t.me/roboticaeducativaaragon

Introducción

Hardware ¿Qué es Microbit?

La placa micro:bit

Micro:bit es un pequeño ordenador del tamaño de media tarjeta de crédito creado inicialmente por la BBC (British Broadcasting Corporation) en 2015 con el fin de promover el desarrollo de la robótica y el pensamiento computacional entre la población escolar de entre 11 y 15 años del Reino Unido.

Actualmente su uso está extendido entre 39 millones de escolares de más de 60 países (Micro:bit Educational Foundation, 2023) con más de 5 millones de tarjetas distribuidas por todo el mundo  (Microes.org, 2023).

Corazón.gifPlaca BBC micro:bit. Micro:bit Educational Foundation CC BY-SA 4.0

El hardware es 100% libre, y está gestionado por una fundación sin ánimo de lucro fundada en 2016, la micro:bit Educational Foundation.

Micro:bit no es el primer proyecto de alfabetización informática de la BBC. Ya en 1981 produjo el BBC Micro, un ordenador de 8 bit programable mediante varios lenguajes de programación, entre ellos un lenguaje BASIC muy avanzado para la época. De este ordenador llegaron a venderse 1,5 millones de unidades, principalmente en el Reino Unido. Fue el ordenador con el que las escuelas británicas comenzaron la enseñanza de la informática.

640px-BBC_Micro_Front_Restored.jpgBBC Micro. Dominio público.

Volviendo a micro:bit, el desarrollo del proyecto ha sido llevado a cabo por 29 socios tecnológicos de primera línea. Por ejemplo, la implementación del Bluetooth corrió a cargo de la fundación propietaria de la marca, Bluetooth SIG, asociación privada sin ánimo de lucro.

Micro:bit es económico; tanto las placas como los accesorios producidos por terceras empresas tienen un precio muy contenido.

El sistema destaca por su alta integración de software y hardware: basta un clic de ratón para cargar las librerías necesarias para que funcione cualquier complemento robótico, como sensores, pantallas, tarjetas de Internet de las Cosas, robots, casas domóticas, etc.

Programación de micro:bit

La programación de la placa se realiza desde un ordenador a través de un navegador cualquiera, estando disponibles 12 lenguajes de programación. Dado su carácter abierto, existen múltiples soluciones de programación, aunque las más común es MakeCode.

El sitio MakeCode permite programar con bloques y también en Python y en Java, traduciendo de un lenguaje a otro instantáneamente. No se necesita ningún registro en la plataforma para poder programar. Nuestros programas se guardan en el servidor de MakeCode siempre que no utilicemos nuestro navegador de Internet en modo incógnito o que no tengamos activado el borrado automático de cookies.

Makecode.jpgSitio web de Make Code. Captura de pantalla

Los programas también pueden guardarse descargados en el ordenador compilados en código de máquina. Al subir de nuevo el programa en el editor, se realiza una decompilación automática al lenguaje de bloques, Python o Java. Los programas guardados en código de máquina se pueden cargar directamente en micro:bit, que en el escritorio de un ordenador aparece como una simple unidad USB.

MakeCode contiene además múltiples recursos como tutoriales, vídeos, fichas de programación, cursos para el profesorado, ejemplos y propuestas de proyectos y experimentos en varios idiomas.

Otra solución muy usada para programar micro:bit es MicroPython, creada por Python Software Foundation, otra organización sin ánimo de lucro.

MicroCode permite que los más pequeños, a partir de los 6 años de edad, programen micro:bit mediante un sistema de fichas dispuestas en líneas de acción. Están disponibles un tutorial introductorio en 20 idiomas, una guía del usuario y muchos ejemplos. El proyecto es de código abierto.

microcode.jpgEjemplo de programa con MicroCode. Captura de pantalla

Micro:bit también es programable en Scratch con sólo añadir una extensión al editor.

Todos los entornos de desarrollo descritos disponen de un simulador de micro:bit, por lo que ni siquiera resulta necesario disponer de una tarjeta física para aprender a programar.

Características de micro:bit

Características de micro:bit V2:

    • Procesador de 64 MHz.
    • 512 KB de RAM Flash y 128 KB de RAM.
    • Matriz de 5 x 5 LED rojos.
    • Dos pulsadores mecánicos y un tercer pulsador de apagado y reset.
    • Pulsador táctil en el logotipo.
    • Micrófono y altavoz.
    • Acelerómetro y compás.
    • Sensores de luz y de temperatura.
    • Bluetooth de bajo consumo.
    • Alimentación a 3 V o por USB.
    • 25 pines de entradas y salidas.
    • GPIO, PWM, I2C y SPI.
    • 200 mA disponibles en las salidas para alimentar accesorios.

La placa micro:bit  que se encontraba disponible en el mercado antes de la introducción de la V2 era la denominada V1.5. Se distingue de la V2 en que carece de micrófono, de altavoz y de pulsador táctil en el logo. Internamente tiene un procesador menos potente y menos memoria RAM. Tampoco tiene piloto de encendido ni puede apagarse desde el pulsador de reset.

Microbit 3d by GmedranoTIC on Sketchfab

Introducción

Hardware: Descripción de la placa micro:bit

Presentación de micro:bit

Micro:bit es una pequeña placa de circuito impreso de 52 mm x 42 mm, dimensiones que corresponden aproximadamente al tamaño de media tarjeta de crédito. El circuito dispone sus componentes electrónicos al aire, sin ninguna carcasa, y se encuentran soldados por las dos caras de la placa.

La placa micro:bit es segura para su uso con el alumnado de 8 a 14 años (Micro:bit Educational Foundation, 2023b).  Ha sido ampliamente probada y cumple con todos los requisitos de seguridad y compatibilidad medioambiental exigibles. En el siguiente enlace se muestran todas las normas y estándares que cumple la tarjeta: https://microbit.org/compliance/

El siguiente vídeo, pensado para personas sin conocimientos de robótica, proporciona una primera idea acerca de las posibilidades y del manejo de la placa micro:bit.

Kits

Micro:bit se encuentra disponible comercialmente como placa simple (micro:bit single) o como parte de un kit. El coste medio en el año 2023 de una placa es de unos 22 €. Por un precio un poco más elevado se puede adquirir un kit más completo, cuyo contenido está pensado como un equipo de iniciación.

Kit básico.JPGContenido de un kit de inicio. Elaboración propia

El kit presentado en la imagen contiene:

Componentes electrónicos integrados en la placa

El anverso de la placa en su versión 2 tiene el aspecto mostrado de la figura.

Anverso con partes.jpgAnverso de la placa BBC micro:bit. Elaboración propia

La parte marcada con el número 1 es una fila de contactos o pines que permiten conectar la placa a múltiples accesorios, como altavoces, robots, sensores o actuadores. Dispone de 25 pines, 5 de ellos de anillo. Estos últimos están pensados para conectar cables por medio de pinzas o bananas.

El número 2 corresponde al pulsador A. En el lado derecho de la placa existe otro pulsador B. Ambos pulsadores son programables y permiten al usuario comunicarse con micro:bit.

El número 3 apunta al pulsador táctil. Se trata de una novedad de la versión 2 de micro:bit. El pulsador puede distinguir entre pulsaciones rápidas y pulsaciones prolongadas.

El sensor marcado con el número 4 es un micŕofono. Es otra novedad de la versión 2 de la placa. Aunque puede grabar sonido, las grabaciones resultan de una calidad muy pobre. Es por ello que el micrófono se usa sobre todo para medir el ruido ambiental. Un diodo LED de color rojo indica que el micrófono está en funcionamiento.

La matriz de 25 LED rojos está marcada con el número 5. Se usa para representar mensajes de texto e iconos. Su intensidad es ajustable. Sirve también como sensor del nivel de luz ambiental.

El reverso de la placa es un poco más complejo. Aquí se encuentran soldados los dispositivos que permiten el funcionamiento de micro:bit. Se trata del procesador, de los sensores y de los circuitos integrados que proporcionan funcionalidades como la comunicación USB o Bluetooth.

Reverso con partes.jpgReverso de la placa BBC micro:bit. Elaboración propia

El circuito número 6 es un acelerómetro y un compás. Este dispositivo permite medir aceleraciones y giros, así como campos magnéticos.

El componente 7 es un pequeño zumbador que puede reproducir tonos y sonidos. Su potencia es muy baja, pero micro:bit puede también conectarse a un altavoz externo. 

El procesador es el circuito marcado con el número 8. Además contiene un sensor de temperatura.

La antena Bluetooth se indica con el número 9. Gracias al Bluetooth incorporado, micro:bit puede enviar y recibir datos por radio a cortas distancias.

Cuando el LED de color rojo 10 está encendido indica que la placa está conectada a una fuente de alimentación. Micro:bit puede ser alimentado por un ordenador o por una batería externa través de un cable USB o bien por un par de pilas.

La placa puede comunicarse con un ordenador mediante el conector micro USB 11. Mediante esta conexión micro:bit puede ser programado y también puede enviar al ordenador los datos que recoja con sus sensores.

El LED ámbar 12 parpadea cuando la placa está conectada a un ordenador y se encuentra emitiendo o recibiendo datos.

El pulsador 13 se usa para reiniciar el programa contenido en la placa. Una pulsación prolongada apaga micro:bit, pero sólo si la placa es de la versión 2.

El conector JST 14  permite conectar el portapilas para alimentar la placa con dos pilas alcalinas de 1,5 V. También se pueden usar pilas recargables; las clásicas pilas recargables de NiMH o níquel-hidruro metálico que se venden en algunos supermercados hacen que tanto micro:bit como sus accesorios funcionen sin problemas.

En la versión 2 existe un botón para apagar

2025-01-23 14_16_36-WhatsApp.png

Introducción

Sensores

Esta sección es una visión rápida de las posibles entradas de los robots. 
NO LEAS TODOS SINO LOS QUE TIENE TU ROBOT

Un poco de teoría...

Cualquier sistema de control podríamos decir que funciona de una manera similar a un ser humano, salvando las distancias. Nosotros recibimos la información del mundo exterior gracias a nuestros sentidos (oído, olfato, gusto, vista y tacto), nuestro cerebro procesa esa información y a través de nuestros músculos o de nuestra voz realizamos diferentes acciones. Pues lo mismo sucede con los sistemas de control, reciben información del exterior gracias a los diferentes SENSORES, procesan esa información en sus PLACAS CONTROLADORAS (sus cerebros) tales como Arduino y dan una respuesta utilizando sus diferentes ACTUADORES.

2022-04-13 19_23_12-PROYECTO 00 CONOCEMOS ARDUINO..pdf - Google Drive.png

Un sensor es un objeto capaz de detectar magnitudes físicas o químicas y transformarlas en variables eléctricas. Los sensores o periféricos de entrada nos permiten obtener información del mundo real para utilizarla desde el programa de Arduino.

En la actualidad la cantidad de sensores disponibles es tan extensa como las variables que queramos medir, desde sensores de temperatura, humedad, luminosidad,... hasta acelerómetros, giroscopios, GPS,... pasando por detectores de gases, de pulsos cardiacos, sensores de efecto HALL,...

Tipos de sensores

Ejemplo: un pulsador es un tipo de sensor sencillo que sólo nos da dos estados, “pulsado o no pulsado”. Conectado a la placa Arduino debe generar 0v en reposo y 5v al pulsarlo. De esta forma desde el programa de Arduino podremos leer el estado del botón.

2022-04-13 19_25_30-PROYECTO 00 CONOCEMOS ARDUINO..pdf - Google Drive.png

Ejemplo: Una fotorresistencia es un componente electrónico cuya resistencia disminuye con el aumento de intensidad de luz incidente. Su valor varía entre 0 y 5 v. la cantidad de valores que pueden leer las entradas analógicas de Ardunio son de 10 bits es decir 1024 valores. De tal modo que 0 = 0 v. y 1023 = 5V.

2022-04-13 19_26_06-PROYECTO 00 CONOCEMOS ARDUINO..pdf - Google Drive.png

Ejemplo: el sensor DHT11. Por un solo pin envía los datos de temperatura y humedad.

2022-04-13 19_27_43-PROYECTO 00 CONOCEMOS ARDUINO..pdf - Google Drive.png

Sensores modulares.

En  la  actualidad  existen  infinidad  de  sensores  que  los  fabricantes  presentan  en  forma modular.  Esto  hace  que  su  conexión  y  utilización  sea  mucho  más  sencilla  que  la  tradicional, olvidándonos de resistencias, polaridades, cableados,… para su correcto funcionamiento.

Sensor pulsador

Es un sensor digital, que presenta dos estados; cuando se presiona el botón,  emite  una  señal  de  bajo (0V), cuando suelta el botón, emite una señal de bajo alto (5V). Datasheet

Un ejemplo de uso

 2022-04-13 21_58_38-Modulo pulsador con tapa, 6uds.pngimage-1649922433118.png

Otra manera más "barata" de sustituir este módulo pulsador es poner un pulsador normal y una resistencia (±10k), al pulsar se produce una entrada en el Arduino, hay dos configuraciones, que al pulsar se emita un 0 lógico (configuración Pull up) o que al pulsar emita un 1 lógico (configuración Pull down) ¿Por qué hay que poner una resistencia?

image-1650097141548.pngimage-1650097157889.png

Lo "normal" es que al pulsar se emita un '1' configuración Pull down, pero hay pulsadores que funcionan Pull up y los llaman lógica invertida, por eso en la programación por bloques podemos encontrar esto:

logicainvertida.png

Sensor Táctil Capacitivo. 

Este  pequeño  sensor  puede  "sentir"  a  las  personas  y  el  tacto  y  la retroalimentación de metales a un nivel de voltaje alto / bajo. Incluso aislado por alguna tela y papel, todavía puede sentir el tacto. Su sensibilidad disminuye a medida que la 
capa de aislamiento se hace más gruesa. En nuestra opinión lo preferimos frente al Sensor pulsador pues es muy económico, duradero y fiable.

Un ejemplo de uso en

2022-04-13 21_59_29-Interruptor táctil TTP223B.png

Potenciómetro y joystick

Un potenciómetro es una resistencia variable, es decir, cambia de valor mecánicamente, lo tenemos en multitud de dispositivos. El joystick es internamente dos potenciómetros con un pulsador integrado en un solo mando.

potenciometro-joystick.png2023-11-24 18_45_14-Quiero una – EchidnaShield.png

Este sensor es analógico, su salida puede ser cualquier valor entre Vcc y GND (si está en divisor de tensión como en la placa Edubásica no llega a esos valores extremos), por lo tanto hay que conectarlo a una entrada analógica de Arduino y como cualquier entrada analógica, proporcionará valores entre 0 y 1023.

Ejemplos de uso:

 Sensor Fotocélula LDR. 

El  uso  de  fotocélulas  es  muy  común  en  nuestras  vidas,  las  encontramos  en  el  encendido automático de  farolas, apertura de  puertas,…  La  fotocélula  es un  semiconductor. Es  ampliamente utilizado  en  campos  de  interruptores  de  control  automático  como cámaras,  luces  solares  de  jardín,  lámparas  de césped,  detectores  de  dinero,  relojes  de cuarzo, tazas de música, cajas de regalo, mini luces  nocturnas,  interruptores  de  control  de luz y sonido, etc.  
Es un sensor analógico dando valores entre 0 y 5V y como entrada analógica de un Arduino se traduce en un rango de 0 a 1023 valores. 
Un ejemplos de uso :

Una manera más económica de montar este sensor es utilizar una resistencia y un LDR:

embedded-image-YfsLGvOe.jpeg2022-04-14 08_04_14-3.5 Cableado sensores _ Librería CATEDU.png

Los módulos LDR que se venden suelen esta configuración Pull down, es decir, cuanto más luz,  más tensión:

image-1650370178627.png

La instrucción con Arduinoblocks ya cuenta con esta configuración Pull downUp de que cuando más luz, más valor tiene la entrada analógica.

2022-04-19 14_05_05-ArduinoBlocks.png

Hay módulos LDR ya montados,  que tienen componentes activos es decir, llevan circuitos electrónicos, transistores que amplifican etc... y dan la salida digital con un potenciómetro para definir el rango de luz que cambia de estado lógico. Puedes ver en la figura que tiene una salida digital D0.

sensorluzarduinodigital.jpg

O hay algunos que tienen 4 pines como en la figura que ofrecen las dos cosas: salida analógica A0 y digital D0.

sensorluzarduino.jpg

Nosotros aconsejamos el divisor de tensión por tres razones: más barato, no implica gran circuitería y es visible su funcionamiento frente a estos encapsulados.

Sensor de Ultrasonidos.

Es un sensor digital de distancias por ultrasonidos capaz de detectar objetos y calcular la distancia a la que se encuentra en un rango de 2 a 350 cm. Su uso es tan sencillo como enviar el pulso de arranque y medir la anchura del pulso de retorno.
No es un sensor preciso, con una ligera inclinación de la superficie ya da lecturas erróneas pero es muy barato
El más común es el HC-SR04 que tiene 4 pines de conexión:  VCC   Trig (Disparo del ultrasonido)   Echo (Recepción del ultrasonido) y  GND aunque en algunos modelos como el de Elecfreaks tiene 3 pines. Integra Trig y Echo en uno sólo.
La distancia se calcula con esta fórmula:
Distancia en cm = {(Tiempo en segundos entre Trig y el Echo) * (V.Sonido 34000 en cm/s)} / 2
Si programas en código, tienes que utilizar la fórmula anterior, previamente tienes que programar el cálculo del tiempo entre una emisión de un pulso en Trg y la respuesta en Echo.
Si utilizas la programación en bloques, no es necesario, seguro que hay un bloque que lo hace todo por ti 😍
2022-04-14 08_10_43-PROYECTO 00 CONOCEMOS ARDUINO..pdf - Google Drive.png2022-04-14 08_11_21-PROYECTO 00 CONOCEMOS ARDUINO..pdf - Google Drive.png

Ejemplos de uso:

Sensor DHT11 (Temperatura y Humedad).

Este sensor de temperatura y humedad DHT11 nos permite determinar las zonas de confort para un rango de temperaturas entre 0ºC y 50ºC con un error de ± 2ºC y un rango de humedad entre 20 y 90 % ± 5% . Una salida digital para dos variables cómo lo hace? Tiene dentro un pequeño microprocesador que lanza por el bit de datos 40 bits en serie, los 16 primeros son la humedad (en BCD) y los 16 restantes es la temperatura (en BCD) los 8 restantes son de comprobación Checksum (en binario) como la letra del DNI. Por ejemplo 0100 0111 0000 0011 0001 1001 0000 0000 0001 1000  es 0100 0111 0000 0011 = 47.03% de humedad y 0001 1001 0000 0000 = 19.00ºC y la comprobación es la suma de 4+7+0+3+1+9+0+0=24=11000

Ejemplos de uso:

2022-04-13 19_27_43-PROYECTO 00 CONOCEMOS ARDUINO..pdf - Google Drive.png

No es un sensor con gran sensibilidad, pero para propósitos educativos cumple sus funciones. Por dentro tiene una resistencia NTC que decrementa su resistencia si aumenta la temperatura. Hay otros que van al revés, los PTC. Tanto los NTC como los PTC se llaman thermistores. Para la humedad, mide la capacidad de un condensador que es sensible a la humedad, o sea, un sensor capacitivo.

Tenemos dos opciones comerciales: Encapsulado que lo tienes preparado para conectar la alimentación y leer por el pin de datos, o sin encapsular, que hay que colocar una resistencia de aproximadamente 10k entre Vcc y Data

dht11-pines.png

Ejemplo de uso de un DHT11 sin encapsular:

dht11sinencapsular.png
Fuente Luis LLamas CC-BY-NC-SA https://www.luisllamas.es/arduino-dht11-dht22/

Si queremos mejorar la sensibilidad, podemos utilizar el DHT22 que es igual pero de color blanco y más caro. Si lo que queremos es sólo la temperatura es mejor utilizar el LM35D que tiene un rango de temperaturas desde 0ºC a 100ºC con una sensibilidad de 2mV/ºC

lm35.jpg

Es un sensor bastante mediocre, si necesitas una precisión el doble, te recomendamos el DHT22 que funciona exáctamente igual pero es de color blanco y más caro ⁓3€. Ver https://www.luisllamas.es/arduino-dht11-dht22/

Sensor IR

Es un sensor para distancias cortas hasta 2cm y no da la distancia, simplemente si hay o no hay obstáculo, pero son muy baratos, unos 0.30€. Aquí tienes un ejemplo de evita obstáculos en un rover marciano con Raspberry Para saber más te recomendamos esta página de Luis Llamas

IR Sensor Module for Arduino Projects | 3D Model by Veer AI on Sketchfab

Sensor llama

Este sensor de llama se puede utilizar para detectar fuego u otras luces cuya longitud de onda se encuentra entre 760 nm ~ 1100nm.

Un ejemplo de su uso:

2022-04-14 08_06_56-PROYECTO 00 CONOCEMOS ARDUINO..pdf - Google Drive.png2022-04-14 08_07_38-PROYECTO 00 CONOCEMOS ARDUINO..pdf - Google Drive.png

Sensor de Gas (MQ2).

Detecta gases inflamables : GLP, I-butano, propano, metano, alcohol, hidrógeno, humo... con más sensibilidad en algunos que en otros. Siempre detecta el conjunto. Son usados en electrónica de consumo y mercados industriales.

2022-04-14 11_05_36-PROYECTO 00 CONOCEMOS ARDUINO..pdf - Google Drive.png

Sensor de humedad de suelo.

Un higrómetro de suelo FC-28 es un sensor que mide la humedad del suelo. Son ampliamente empleados en sistemas automáticos de riego para detectar cuando es necesario activar el sistema de bombeo. El FC-28 es un sensor sencillo que mide la humedad del suelo por la variación de su conductividad. No tiene la precisión suficiente para realizar una medición absoluta de la humedad del suelo, pero tampoco es necesario para controlar un sistema de riego.  Los valores obtenidos van desde 0 sumergido en agua, a 1023 en el aire (o en un suelo muy seco). Un suelo ligeramente húmero daría valores típicos de 600-700. Un suelo seco tendrá valores de 800-1023.
Luis Llamas CC-NC-BY-SA https://www.luisllamas.es/arduino-humedad-suelo-fc-28/

Se puede utilizar este sensor para hacer un dispositivo de riego automático, puede detectar si las plantas “tienen sed” y evitar que se marchiten
 La corriente de trabajo del sensor es menor de 20mA. El voltaje de salida es de 0V (en el aire) a 2,3V (totalmente sumergido en agua).

2022-04-14 08_15_34-PROYECTO 00 CONOCEMOS ARDUINO..pdf - Google Drive.png

Sensor de humedad.

Este sensor analógico está diseñado para identificar y detectar la presencia de agua y su cantidad. Puede servir para detectar el nivel de agua, para disparar una alarma en caso de una fuga de agua, también para hacer un limpiapalabrisas automático.... puedes ver un ejemplo de uso en :

Mide el volumen de agua caída a través de una serie de rastros de cables paralelos expuestos.

2022-04-14 08_19_22-PROYECTO 00 CONOCEMOS ARDUINO..pdf - Google Drive.png2025-11-08 18_13_20-.png

Sensor de efecto Hall.

Este es un sensor de inducción magnética. Detecta los materiales magnéticos dentro de un rango de detección de hasta 3 cm. El  rango de detección y la fuerza del campo magnético son proporcionales. La salida es digital.

2022-04-14 10_07_05-1.3 Conexiones _ Librería CATEDU.png
Sensor Hall.                              Edwin Helber Hall De Desconocido - Popular Science Monthly Volume 64, Dominio público

Edwin Helbert Hall descubrió en 1879 que en presencia de un campo magnético, un conductor que conduzca una corriente se le producía un campo eléctrico porque las cargas eléctricas se desviaban de su trayectoria principal, nuestro sensor simplemente mide ese campo eléctrico:

De Luis Llamas CC-BY-NC

El sensor tiene un led de color rojo que indica que hay una lectura de campo magnético. Un ejemplo de uso lo puedes ver aquí: medir rocas magnéticas con el Rover con Arduino

Sensor inclinación

Este sensor funciona al hacerle vibrar, emitiendo una señal digital de todo o nada. El módulo del sensor viene provisto de un potenciómetro para poder regularlo.

2022-04-14 11_01_13-PROYECTO 00 CONOCEMOS ARDUINO..pdf - Google Drive.png

Sensor de golpe

Es un sensor digital que al ser golpeado este sensor envía una señal momentánea.

2022-04-14 11_02_09-PROYECTO 00 CONOCEMOS ARDUINO..pdf - Google Drive.png

Sensor de pulso cardíaco.

Este módulo utiliza un LED infrarrojo (IR) ultrabrillante y un fototransistor para detectar el pulso en el dedo. Principio de funcionamiento: Se debe colocar el dedo entre el LED infrarrojo ultrabrillante (parte superior) mientras que el fototransistor, que queda en el otro lado, recoge la cantidad de luz transmitida. La resistencia del fototransistor variará levemente a medida que la sangre pase a través de su dedo.

2022-04-14 11_03_47-PROYECTO 00 CONOCEMOS ARDUINO..pdf - Google Drive.png

Sensor de Alcohol.

Este sensor de gas analógico MQ-3 es adecuado para detectar alcohol. Se puede usar en un analizador de aliento. También tiene una alta sensibilidad al alcohol y baja sensibilidad a la bencina (éter de petróleo). La sensibilidad se puede ajustar con el potenciómetro.

2022-04-14 11_04_42-PROYECTO 00 CONOCEMOS ARDUINO..pdf - Google Drive.png

Sensor de CO2

Hay sensores que utilizan el protocolo I2C, este protocolo permite conexiones serie y pueden compartir el mismo cable pues cada elemento tiene una dirección diferente. Esto lo veremos en el Display LCD. Se identifican por los pinen SDA y SCL

CCS811-KEYSTUDUUDIO.png

Resistencia Flex

Es una resistencia que cuanto más se dobla más resistencia ofrece, desde 25k hasta 125k

Datasheet Sparkfun

Para utilizar esta resistencia haremos un DIVISOR DE TENSIÓN que consistirá en poner dos resistencias en serie y repartirá la tensión total entre 0V y 5V en las dos resistencias, el punto medio será un punto que tendrá una tensión variable en función de las dos resistencias, como la es variable, esa tensión es variable y ya tenemos la entrada analógica:

Es decir:

Este sensor tiene posibilidades para usarlo en "ropa inteligente".

Sensor de movimiento 

Los sensores infrarrojos pasivos (PIR) son dispositivos para la detección de movimiento. Son baratos, pequeños, de baja potencia, y fáciles de usar. Por esta razón son frecuentemente usados en juguetes, aplicaciones domóticas o sistemas de seguridad. 
Los sensores PIR se basan en la medición de la radiación infrarroja. Todos los cuerpos (vivos o no) emiten una cierta cantidad de energía infrarroja, mayor cuanto mayor es su temperatura. Los dispositivos PIR disponen de un sensor piro eléctrico capaz de captar esta radiación y convertirla en una señal eléctrica.
En realidad cada sensor está dividido en dos campos y se dispone de un circuito eléctrico que compensa ambas mediciones. Si ambos campos reciben la misma cantidad de infrarrojos la señal eléctrica resultante es nula. Por el contrario, si los dos campos realizan una medición diferente, se genera una señal eléctrica.
De esta forma, si un objeto atraviesa uno de los campos se genera una señal eléctrica diferencial, que es captada por el sensor, y se emite una señal digital.
2026-02-09 12_25_59-Greenshot.png
El otro elemento restante para que todo funcione es la óptica del sensor. Básicamente es una cúpula de plástico formada por lentes de fresnel, que divide el espacio en zonas, y enfoca la radiación infrarroja a cada uno de los campos del PIR.
De esta manera, cada uno de los sensores capta un promedio de la radiación infrarroja del entorno. Cuando un objeto entra en el rango del sensor, alguna de las zonas marcadas por la óptica recibirá una cantidad distinta de radiación, que será captado por uno de los campos del sensor PIR, disparando la alarma.
2026-02-09 12_27_59-Inbox - jjquintana@educa.aragon.es - Mozilla Thunderbird.png
Luis Llamas CC-BY-NC-SA https://www.luisllamas.es/detector-de-movimiento-con-arduino-y-sensor-pir/

Puedes ver ejemplos de uso en robótica en : 

2022-04-16 10_24_22-sensor pir arduino at DuckDuckGo.png2025-11-08 18_11_48-.png

Más sensibles son los sensores de microondas. Son un radar que por efecto Doppler pueden captar cualquier objeto en movimiento dentro de un alcance de 5-7 metros en cualquier dirección e independiente de su temperatura. Es un buen sensor para alarmas, activación de luz por presencia..... Para saber más ver la página de Luis Llamas

image-1650097316026.png

Su conexión es muy sencilla, es un detector digital que hay que alimentarlo como el resto de sensores.

image-1650097889205.png

 Curiosamente, la gran ventaja técnica de los de microondas es un gran inconveniente para usarlo en el aula, con cualquier movimiento se dispara, luego para clase es mejor el sensor PIR 

Esta página esta adaptada de este enlace. José Andrés Echevarría @cantabRobots CC-BY-NC-SA.

Introducción

Actuadores

Esta página es un repaso rápido de las posibles salidas de los robots
NO LEAS TODOS SÓLO LOS QUE TIENE TU ROBOT

¿Qué es un actuador?

Un actuador es el nombre genérico que empleamos para cualquier dispositivo capaz de realizar acciones en el mundo físico y que podremos controlar desde un autómata o procesador como Arduino. En particular, usamos el nombre actuador para los dispositivos que son capaces de generar movimiento.   Luis LLamas CC-BY-NC-SA

ACTUADORES                                                                                                   

Motores baja potencia

Con el Arduino podemos usar motores de corriente continua de juguete como en la figura, aptos para poner un ventilador. Ejemplo de uso Smart Home para microbit

Motores con algo de potencia

Si quieres usar un motor para mover unas ruedas, ya pide más corriente, no se puede conectar directamente al la placa (Arduino, esp32 etc..). El de la figura es típico en robótica y lleva reductores dentro para bajar la velocidad :

2022-04-16 10_40_41-motor arduino at DuckDuckGo.png

Necesita una alimentación extra, como el LM298N y las pilas., o el B6612FNG o una shield específica.

CC-BY-NC Luis Llamas

Ejemplos de uso lo puedes ver en 

Los motores pueden (y deben) de estar conectados a salidas PWM de tal manera que se pueda regular la potencia y por lo tanto la velocidad.

Servos

Un servo convencional es un motor donde fijamos el ángulo desde 0º a 180º, pero si queremos una rotación, existen servos rotatorios que simplemente tienen su velocidad de rotación controlada

Ejemplos de uso de servos:

Relés

Un relé es un interruptor activado por un electroimán, lo que permite independizar los circuitos. En el dibujo se ve que el circuito rojo de 220V esta separado del verde, de sólo 1.5V. Pero es el circuito verde que al funcionar, hace que el electroimán mueva el interruptor del relé y encienda la bombilla. El objetivo es que he podido encender una bombilla de 220V sin tocar los 220V peligrosos. En el circuito verde, el interruptor puede ser un Arduino. Experiméntalo en este simulador.

2025-01-09 18_42_34-Simple Relay with bulb - Simulador De Circuito On Línea _ DCACLab.png

Electroimán

El electroimán no se puede conectar directamente, utilizaremos una etapa de potencia, por ejemplo el transistor el IRF520N que amplifique la señal del Arduino, pues las salidas de Arduino no tienen potencia para mover el electroimán. Para dar esa potencia utilizaremos otra fuente externa, unas pilas:

image-1649970623453.png

Las conexiones son :

image-1649970676310.png

Motor paso a paso

Igual que el electroimán, necesitamos un controlador que nos de la potencia necesaria para mover el motor, el ULN2003

Imagen BY-NC-SA de Luis Llamas

También igual que el electroimán, necesitamos una potencia extra con las pilas:

Conexión :

La configuración más sencilla es la rotación simple en sentido horario (llamada fase1) :

Imagen BY-NC-SA de Luis Llamas

Es decir:

Paso IN1=D10 IN2=D11 IN3=D12 IN4=D13
Paso 1 ON OFF OFF OFF
Paso 2 OFF ON OFF OFF
Paso 3 OFF OFF ON OFF
Paso 4 OFF OFF OFF ON

Si has entendido este ejemplo serás capaz de realizar las configuraciones que desees.

OTRAS SALIDAS                                                                                              

No son actuadores pues no representan movimiento pero son también salidas del Arduino como los actuadores, luego lo vemos en esta página

Buzzer activo

Reproduce un tono de una frecuencia determinada por el fabricante cuando recibe un '1' digital. Su conexión es muy simple:

Ejemplos de uso:

Buzzer pasivo

La diferencia de un buzzer activo con el pasivo es que el pasivo hay que mandar la onda que se tiene que reproducir, como Arduino no puede reproducir onda puras (senoidales analógicas), se le envía ondas cuadradas con la frecuencia que se pretende reproducir. Como se puede ver en la figura, no tiene elementos auxiliares para reproducir un tono, es simplemente un altavoz.

zumbadorpasivo.png

Ejemplos de uso

LEDS Y OTROS ELEMENTOS VISUALIZADORES                                             

Led normal

Un diodo es la unión de dos semiconductores P-N que sólo permite la corriente en un sentido. Un diodo LED es un diodo, que al pasar esta corriente emite una luz. Hay de 3mm y de 5mm de grosor, transparentes, traslúcidos y de colores (realmente son traslúcidos tintados)

Tenemos pues que respetar su polaridad para que funcione:

arduino-led-patillaje.png

Fuente Luis LLamas CC-BY-NC Encender LED con Arduino

Si alimentamos el LED con una tensión inferior a su tensión de polarización directa Vd ±1,4V-3,8V el led no luce. si alimentamos con una tensión superior, la corriente que circula se dispara por lo que se rompe. Conclusión: Hay que poner una resistencia limitante. Para calcularla te recomiendo la página de Luis Llamas  Encender LED con Arduino

Aquí puedes ver un ejemplo de semáforo en el curso Arduino con código

image-1650005625137.pngimage-1650005638493.png

Se puede conectar directamente pues las salidas de Arduino tienen una limitación interna de 20mA como en este ejemplo https://www.youtube.com/watch?v=EFFSLvIF9rY

Los LEDS igual que los motores pueden se encendidos o todo o nada con salidas digitales 0 y 1 o salidas PWM de esta manera conseguimos luminosidades medias, en esta práctica con el potenciómetro se regula la intensidad de la luz de un LED

Led RGB

Se trata de un encapsulado que integra 3 leds de los tres colores básicos. Cada color básico se puede regular desde 0 a 255 de intensidad, luego tenemos 16 millones de tonalidades diferentes.

image-1650007895867.png

Un ejemplo de su uso lo puedes ver en

Existen LEDS RGB que se comunican unos a otros, (ver este ejemplo en el curso mClon) como las tiras de leds RGB que cambian de color todos simultáneamente.

Neopixel

La cinta LED RGB se basa en el chip controlador WS2812B de Neopixel con el cual podemos tener el control de cada pixel y de cada color, ya sea rojo, verde y azul a través de un solo cable de datos.

Los WS2811, WS2812 y WS2812B son LED que disponen de lógica integrada, por lo que es posible variar el color de cada LED de forma individual (a diferencia de las tiras RGB convencionales en las que todos los LED cambian de color de forma simultánea). Están basados en el LED 5050, llamado así porque tiene un tamaño de 5.0 x 5.0 mm.
Es un LED de bajo consumo y alto brillo, que incorpora en un único encapsulado los 3 colores RGB. La genial novedad del WS2812B (y resto de familia) es añadir un integrado dentro de cada LED, que permite acceder a cada pixel de forma individual. Por este motivo este tipo de LED se denominan “individual addressable”. Esto abre la puerta a un sinfín de aplicaciones y combinaciones, que van desde dotar de iluminaciones distintas zonas con una única tira, animaciones complejas, o incluso generar pantallas enteras de alta luminosidad.... 
A los LED WS2812B también se les denomina NeoPixel
Luis Llamas CC-BY-NS-SA https://www.luisllamas.es/arduino-led-rgb-ws2812b/

2025-11-08 18_27_31-.png

Láser

El diodo láser es un elemento motivador, barato y fácil de usar con el Arduino pues se activa digitalmente, si enviamos un 1 emite un rayo láser. Un ejemplo de uso lo puedes ver en la Alarma por láser en Domótica con Arduino

Si quieres saber más de este componente, te recomendamos esta página de Luis Llamas.

Si tienes que comprar uno, es importante que no sea superior a 5mW, pues puede dañar permanentemente la retina del ojo [+info].
El modelo que proponemos es de 1mW, no obstante, EVITA SIEMPRE QUE EL LÁSER APUNTE A LOS OJOS especialmente con niños.

image-1649971311304.png

Display LCD

Si queremos visualizar datos de forma independiente del ordenador, existen matrices de led que puedes ver en los cursos de mBot o mClon pero lo mejor es una pantalla Liquid Crystal Display y la mejor forma de conectar esta interfaz es en serie utilizando el protocolo I2C. 

Ejemplo de uso :

image-1650096059762.png

CC-BY-SA Luis Llamas

No confundas Display LCD con matriz de LEDs , o una OLED

Aclarando conceptos: Protocolo I2C                                                                                      

Es un protocolo de emitir los datos con sólo dos cables SDA (los datos) y SCL (reloj) y además pueden compartir varios dispositivos SLAVE) para ello la placa Arduino ESP32, microbit... (MASTER) tiene que saber qué dirección tiene cada dispositivo IMPORTANTE:

2025-11-08 18_35_50-.png
Fuente Luis Llamas ArduinoI2C CC-BY-SA

Aclarando conceptos: Lógica invertida                                                                                   

Igual que vimos en sensores, con las configuraciones Pull up y Pull down, las salidas de cualquier actuador PUEDEN SER LÓGICA INVERTIDA, mira en este NodeMCU (básicamente es un Arduino con wifi, aquí está conectado con el servidor Blynk) como funciona al revés, cuando apretamos, por lo tanto enviamos un uno a la salida, se apaga la salida !!

Introducción

Software para la micro:bit

Micro:bit se puede programar :

Tipo de lenguaje Lenguaje Ventajas Inconvenientes En AULARAGON
BLOQUES

MAKECODE
https://makecode.microbit.org/

 

-Muy extendido
-Existen en Internet muchos recursos y ejemplos
-Con CretateAI podemos usar IA

-micro:bit
-micro:bit+car
-Smart Home
-Smart Agriculture
BLOQUES

SCRATCH+LearningML

https://learningml.org/lml-scratch/

-Se puede usar IA

-En vivo


Es el que proponemos en el curso de micro:bit en LearningML
BLOQUES

Classroom Microbit
https://classroom.microbit.org/

- Se puede crear una clase, enviar proyectos a los alumnos, corregir....

BLOQUES

Microblocks

https://microblocks.fun/

-Código abierto

BLOQUES

mBlock

-Permite usar multitud de extensiones Recomendamos usar la versión descargada no la online
CÓDIGO

PYTHON
https://python.microbit.org/

- Se usa todo el potencial del código - Curva de aprendizaje alta, no recomendado en primaria. Micro:bit y Python

Guía de los lenguajes de programación para robots

Tenemos un grupo Telegram Robótica Educativa en Aragón, https://t.me/roboticaeducativaaragon

Introducción

Software para la Smart home

¿Qué opciones tenemos para para programar SMART HOME PARA MICRO:BIT?

Por ahora con la maqueta NO se puede programar con scratch+learningML, pues no tiene opción de manejar los pines. Sólo se podría utilizar scratch+learningML sólo con la placa micro:bit como se explica aquí https://libros.catedu.es/books/microbit/chapter/learning-ml

Jugando sólo con la micro:bit

Jugando sólo con la micro:bit

Software : El entorno de trabajo de MakeCode

El punto de partida para el estudio de un lenguaje de programación pasa inevitablemente por los lenguajes gráficos o de bloques que facilitan su estudio al mostrar de forma visual las instrucciones del algoritmo programado. (Morales, 2023)

Vamos a utilizar MakeCode ofrece un entorno integrado, simple e intuitivo de codificación por bloques. Hay que decir que en el entorno de MakeCode también están disponibles los lenguajes Java y Python, con la ventaja de que un programa desarrollado mediante bloques puede ser traducido instantáneamente a cualquiera de los otros dos lenguajes. 

Aquí tienes un esquema de dónde se sitúa Makecode, encaja dentro de los programas de bloque se se carga en la placa

2025-11-30 10_24_40-ESQUEMA LENGUAJES PROGRAMACIÓN - PowerPoint.png

Para acceder al entorno basta con abrir en un navegador cualquiera el enlace: https://makecode.microbit.org/. Si nuestro navegador tiene desactivadas las cookies o navega en modo incógnito, aparecerá un mensaje de advertencia:

Advertencia guardado automático.jpgPulsando sobre el botón de continuar aparecerá la ventana principal de MakeCode. Para iniciar el entorno de programación habremos de pulsar sobre el botón de nuevo proyecto:

Nuevo proyecto.jpgMakeCode nos pedirá seguidamente dar un nombre cualquiera al proyecto y pulsar el botón de crear, tras lo cual se abrirá la ventana del editor.

Entorno MakeCode.jpg

Entorno Microsoft MakeCode. Captura de pantalla

Para trabajar con MakeCode no se requiere registro. No obstante, pulsando sobre el icono de la esquina superior derecha, situado en la barra de herramientas, es posible acceder a MakeCode desde una cuenta de Google o de Microsoft. Esta característica permite guardar en la nube los diseños realizados y acceder a ellos desde cualquier ordenador.

Podemos ajustar el idioma de la interfaz pulsando sobre la rueda dentada de la esquina superior derecha. Están disponibles 33 idiomas, incluyendo el español.

El panel de la izquierda representa el anverso de una placa micro:bit. Se trata de un simulador, que mostrará en tiempo real el efecto del programa en desarrollo. Nótese que no es necesario disponer de una placa real para realizar los primeros pasos en programación con micro:bit.

Con el puntero del ratón se puede interactuar con la placa y pulsar sus botones, agitarla o cambiar las condiciones simuladas de luz o de ruido. Por otro lado, los controles situados bajo la placa nos permiten:

Controles simulador.jpg

El panel central es una caja de herramientas en forma de menú desplegable con todos los bloques de programación disponibles. Los bloques pueden ser arrastrados directamente con el ratón desde el menú. Cada color del menú se identifica con un tipo de acción o de estructura de control. Por ejemplo, el color verde se reserva para los bloques que permiten ejecutar acciones repetitivas o bucles.

Menú bucles.jpg

La caja de búsqueda colocada sobre el menú desplegable es muy útil para encontrar rápidamente el bloque más adecuado para realizar la acción deseada en cada momento.

El panel de la derecha es el área de programación. Aquí se escriben los programas arrastrando y encajando los bloques de código. Cuando se abre el navegador aparecen por defecto dos bloques azules de eventos del menú básico:

Pulsando con el botón derecho del ratón sobre un bloque se desplegará un menú contextual que dará varias opciones, como duplicar, borrar u obtener ayuda sobre el uso del bloque.CMenú contextual bloques.jpg

Al colocar el puntero del ratón sobre un bloque, el editor mostrará una etiqueta de ayuda con una breve explicación sobre la función del bloque. 

Hints.png

https://makecode.microbit.org/reference contiene explicaciones detalladas de los bloques de MakeCode.

En la parte inferior de la ventana de MakeCode se dispone la barra de herramientas, con botones para realizar acciones como descargar el programa en un placa micro:bit conectada al ordenador, guardar el programa en nuestro ordenador o en un repositorio en línea, hacer y deshacer y ampliar o reducir la imagen.

Jugando sólo con la micro:bit

Nuestro primer programa

El primer programa que se realiza cuando se comienza a aprender un nuevo lenguaje consiste casi siempre en presentar un saludo por pantalla. Micro:bit es más original, puesto que propone como primer programa un corazón palpitante.

Vamos a combinar el saludo inicial con el corazón. De esta forma ilustraremos el funcionamiento de los bloques de eventos al inicio y para siempre.

Se trata de seguir los pasos explicados en la página anterior y crear un programa llamado Hola. Tras la apertura del editor pulsaremos sobre el menú Básico y arrastraremos y encajaremos los bloques para configurar el siguiente programa:Hola.jpg

Para escribir el texto ¡Hola! basta con hacer clic sobre la caja blanca del bloque mostrar cadena. De igual forma, los iconos de los bloques mostrar icono y los números de los bloques pausa (ms) pueden seleccionarse pulsando sobre las flechas, acción que despliega menús de selección.

Desplegable de bloque.jpg

Como en el caso de la caja de texto, también puede teclearse directamente el número de milisegundos del bloque pausa (ms).

¿Qué hace el programa? Cuando se enciende la placa, el algoritmo de inicio mostrará una vez mediante la matriz de LED la cadena de texto "¡Hola!". Como la pantalla es muy pequeña, micro:bit deslizará el texto horizontalmente, de derecha a izquierda.

Seguidamente, el algoritmo principal mostrará en pantalla el icono de un corazón grande y entrará en pausa 500 milisegundos, es decir, medio segundo. Pasado este tiempo, micro:bit mostrará un corazón pequeño y esperará otro medio segundo. Este algoritmo se ejecutará indefinidamente hasta que se apague la placa, se pulse el botón de reinicio o se acaben las pilas. El efecto visual será el de un corazón palpitante.

Nada más terminar de colocar el último bloque, el simulador de MakeCode mostrará en pantalla el resultado del programa en ejecución. Para reiniciar el programa hay que pulsar sobre el icono de reinicio, situado justo bajo el dibujo de la placa micro:bit.

Saludo.gif

Cargar el programa en micro:bit

Hay que conectar primero la placa al ordenador por medio del cable USB. Después de unos instantes, el sistema operativo, (Linux, Windows o MacOS) reconocerá a la tarjeta micro:bit conectada como si se tratase de una unidad USB con el nombre MICROBIT.

Microbit USB Mint.jpgLa unidad Micro:bit en el escritorio de Linux Mint

Si la tarjeta es nueva, llevará cargado de fábrica un programa de demostración que empezará a ejecutarse nada más ser conectada al puerto USB. El programa mostrará mensajes, iconos en movimiento y sonidos y pedirá al usuario que calibre el compás magnético.

METODO RÁPIDO: EMPAREJAMIENTO (recomendable)

La primera vez que le damos a descargar, nos pide que conectemos la MICRO:BIT

2025-11-02 19_03_44-WhatsApp.png

La primera vez nos muestra la opción de EMPAREJAR 

2025-11-02 19_04_58-Greenshot.png

Nos pregunta por la tarjeta que tiene que estar conectada al USB

2025-11-02 19_06_36-Greenshot.png

Una vez emparejado, ya sale la opción de descargar

2025-11-02 19_08_18-Greenshot.png

Empieza a cargarse 

2025-11-02 19_09_02-Greenshot.png

Y YA ESTA

🥳🥳🥳 La siguiente vez que utilices esa micro:bit automáticamente pasa a descargar de forma muy rápida. 

METODO QUE NO FALLA : DESCARGAR COMO ARCHIVO Y COPIAR Y PEGAR EN LA NUEVA UNIDAD USB CREADA

Seguidamente hay que pulsar sobre el botón Descargar, acción que abrirá el diálogo de guardado de archivos del sistema operativo. Bastará con seleccionar la unidad MICROBIT y confirmar la descarga. 

Descargar.jpg

Si tienes Vitalinux, te recomendamos visitar https://libros.catedu.es/books/vitalinux-y-robotica/page/r8-microbit

Mientras dure la transferencia de datos, el LED ámbar situado junto al conector USB de micro:bit parpadeará rápidamente, quedando fijo cuando el programa haya sido transferido.

La transferencia de archivos a micro:bit lleva algo de tiempo, especialmente si el programa es largo. Tras la transferencia, el programa empezará a ejecutarse inmediatamente sobre la tarjeta micro:bit.

La desventaja es que es un método LENTO y no se reduce la velocidad en los siguientes intentos, no como en el método anterior

¿Y ahora qué?

Pues simplemente la placa ejecutará el programa cargado cuando se le alimente.

Sólo es posible cargar un programa a la vez en micro:bit, por lo que cada nuevo programa se reescribe sobre el anterior.

Si se desea que micro:bit funcione desconectado del ordenador, simplemente hay que alimentarlo por medio de la caja de pilas o mediante una batería externa o un cargador USB. El programa se ejecutará de igual forma, pues se encuentra guardado en la memoria de la placa.

embedded-image-aT6h3zXl.jpeg

Jugando sólo con la micro:bit

Retos básicos

INDICE DE RETOS EN
https://libros.catedu.es/books/microbit-car/chapter/retos-con-microbit

Panel LED

Jugando con los LED: bloques básicos de código

Sensor temperatura

Sensor luminosidad y sonido

Pulsadores

Acelerómetro

Brújula

Radio

Pines entrada y salida

Jugando sólo con la micro:bit

Retos avanzados

Los tienes en https://libros.catedu.es/books/microbit-car/chapter/retos-avanzados-con-microbit

Mejorando el termómetro

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

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

Nivel de burbuja usando el giroscopio

Lectura puerto USB por MakeCode o Coolterm

BLUETOOTH programa en Makecode

Extensión Bluetooth en Makecode En Makecode instalaremos la siguiente extensión Entramos en Ext...

BLUETOOTH programa Serial Bluetooth Terminal

Entramos con el móvil a Google Play e instalamos esta aplicación https://play.google.com/store/ap...

BLUETOOTH con App Inventor. Extensiones

Descargas e instalación Necesitamos estas extensiones para poder crear una APP que pueda enviar ...

BLUETOOTH App Inventor programa

En DESIGNER incorporamos: HorizontalArrangment para que los botones queden alineados horizon...

Jugando sólo con la micro:bit

Música y sonido con micro:bit

Lo tienes en https://libros.catedu.es/books/microbit-car/chapter/musica-y-sonido-con-microbit

Una pequeña melodía

Grabadora de sonidos

Fray Santiago

Controles de volumen, tempo y tono

Jugando sólo con la micro:bit

Inteligencia artificial Create AI

Lo tienes en https://libros.catedu.es/books/microbit-car/chapter/create-ai

Qué es CreateAI

Es una aplicación web en  a https://createai.microbit.org/ ideada para realizar estos pasos: R...

Vestibles

Para proyectos con CreateAI es recomendable fijar la micro:bit a una pulsera.  Fuente Ro-botic...

Paso 1 Collect data por Bluetooth y 1 micro:bit

Si trabajamos con un PC sin bluetooth no puedes usar esta página, mira esta página Conectamos nu...

Paso 2 Test model

Grabando una acción  Vamos a darle una acción, elegimos un icono, uno nombre y una acción, en es...

Paso 3 Code

Una vez testeado nuestro modelo pulsamos a Edit in MakeCode AHORA ES NUESTRO MOMENTO DE PROGRA...

Sin Bluetooth y 2 micro:bit

La idea es utilizar una micro:bit que haga de "puente inalámbrico" utilizando la conexión vía rad...

Entendiendo a mi peluche

Vamos a a reconocer diferentes gestos de un muñeco peluche. Extraído de https://microbit.org/proj...

Más proyectos CreateAI

Con el mismo principio de detectar con la AI movimientos con el acelerómetro, se pueden hacer div...

Montando la maqueta Smart Home


Montando la maqueta Smart Home

Preliminar

La casa nos lo venden a piezas, y es más difícil de montar que un mueble de Ikea

NO RECOMENDAMOS REALIZAR EL MONTAJE CON LOS ALUMNOS. La probabilidad de una rotura podría hacer la maqueta totalmente inservible.

Ojo, que quede bien claro que nosotros estamos para ayudarte en tu formación, no somos comerciales de este robot. O sea, esto mejor que no:

Pero te queremos animar:

Luego al final el resultado es muy satisfactorio :

2025-10-21 23_52_30-WhatsApp.png

 

Montando la maqueta Smart Home

Las paredes

Montamos la pared del display LCD, ojo que los pines del display LCD tienen que quedar a la izquierda, a la esquina

2025-11-03 17_31_13-Greenshot.png

Captura Youtube KS4027 (KS4028)Microbit Smart Home autor Keyestudio licencia Youtube

Ponemos el sensor DHT11 azul, el sensor PIR y el LED

2025-11-03 21_44_34-Greenshot.png
Captura Youtube KS4027 (KS4028)Microbit Smart Home autor Keyestudio licencia Youtube

Recomendamos poner ya los cables del LCD antes de colocar la pared pues después no hay espacio para ponerlo o doblarlos y ponerlos perpendicular a la pared
2025-11-04 10_20_56-WhatsApp.png
Son los cables que son 4, uno de ellos azul. La regla es sencilla: el negro a masa (queda pues el cable negro en la parte superior)

Para la pared de la ventana utilizaremos un servo, que irá hacia el exterior y hay que utilizar dos tornillos largos muy finos

Es mejor poner la cabeza dentro de la maqueta y la tuerca fuera tal y como la figura. En caso contrario se corre el peligro que al apretar sobresalga la punta del tornillo y roce con la rueda dentada

Ante un atasco, suelen estropearse los servos. Son muy baratos, lo que cuesta es montarlos.

2025-11-03 21_49_20-Greenshot.png
Captura Youtube KS4027 (KS4028)Microbit Smart Home autor Keyestudio licencia Youtube

Para la rueda dentada, utilizar los tornillos con punta para que se fijen en la cruz de plástico

2025-11-03 21_50_35-Greenshot.png
Captura Youtube KS4027 (KS4028)Microbit Smart Home autor Keyestudio licencia Youtube

Colocamos la ventana abierta y el servo girado al máximo en posición ventana abierta y los tornillos llevan tuercas bloqueantes que no tienen que apretar la ventana tiene que moverse libremente

2025-11-12 07_04_48-Greenshot.png
Captura Youtube KS4027 (KS4028)Microbit Smart Home autor Keyestudio licencia Youtube

La pared posterior no tiene dificultades especiales. El tornillo del porta pilas tiene que tener la cabeza plana pues de lo contrario la pila no entra

2025-12-27 23_04_22-Greenshot.png
captura Youtube KS4027 (KS4028)Microbit Smart Home autor Keyestudio licencia Youtube

Un lateral del tejado tiene la tira de leds

2025-11-03 22_03_45-Greenshot.png
Captura Youtube KS4027 (KS4028)Microbit Smart Home autor Keyestudio licencia Youtube

El suelo de la planta 2 tiene otro servo y una rueda dentada de madera y los separadores de latón:

Es mejor en los tornillos que sujetan el servo poner la cabeza dentro de la maqueta y la tuerca fuera tal y como hicimos con la ventana. En caso contrario se corre el peligro que al apretar sobresalga la punta del tornillo y roce con la rueda dentada

Ante un atasco, suelen estropearse los servos. Son muy baratos, lo que cuesta es montarlos.

2025-11-03 22_06_59-Greenshot.png
Captura Youtube KS4027 (KS4028)Microbit Smart Home autor Keyestudio licencia Youtube

Y la puerta giratoria no tiene complicación, pero intenta minimizar la altura pues si es alta, rozará entre el suelo base y el suelo de la 2 planta.

Rebajar las ranuras centrales con un cutter, lija... para que entre al fondo
En algunos casos ha sido necesario lijar también las bases (menos el saliente) para que no roce por el suelo.

2025-11-03 22_05_48-Greenshot.png
Captura Youtube KS4027 (KS4028)Microbit Smart Home autor Keyestudio licencia Youtube

Juntamos las paredes con el techo y el suelo de la planta 2

2025-11-03 22_14_32-Greenshot.png
Captura Youtube KS4027 (KS4028)Microbit Smart Home autor Keyestudio licencia Youtube

Y finalmente el suelo de la planta baja con la puerta y la otra rueda dentada

Es recomendable poner una gota de cola blanca en la rueda dentada con la puerta levantada para 1.- que la rueda dentada no se desprenda 2.- Que la puerta "flote" y no roce con el suelo

2025-12-27 09_48_12-WhatsApp.png

A veces por defecto de fabricación "no empareja bien" el agujero del suelo con el saliente de la puerta. En estos casos una solución sencilla es coger un taladro y aumentar el agujero por el lado que roza

2025-11-03 22_16_25-Greenshot.png
Captura Youtube KS4027 (KS4028)Microbit Smart Home autor Keyestudio licencia Youtube

Montando la maqueta Smart Home

¿Un pilar?

Repetidamente se quita y se pone la micro:bit. Además en la próxima sección, en conexiones, se presiona la placa. El resultado es que al final el suelo de la planta 1 se curva hacia abajo y esto provoca que la puerta giratoria no tenga libertad de movimiento

Para prevenir esto recomendamos poner un pilar en el recuadro

2025-11-04 15_03_50-.png
Captura Youtube KS4027 (KS4028)Microbit Smart Home autor Keyestudio licencia Youtube

Para ello sacamos un trozo de madera de los restos del recortable, por ejemplo el marcado 

2025-11-04 15_07_21-WhatsApp.png

Se corta muy fácil con unas tijeras algo decentes:

2025-11-04 15_09_32-WhatsApp.png

Utilizando un lápiz, ponemos un extremo en la base y marcamos la altura del suelo de la planta 2 :

2025-11-04 15_08_25-WhatsApp.png

Y lo colocamos como pilar consiguiendo que el suelo de la planta 2 no se curve hacia abajo

2025-11-04 15_10_40-WhatsApp.png

Montando la maqueta Smart Home

El techo

No montes aún el techo a la maqueta, tenlo preparado pero no lo ensambles.
Aprovecharemos que no tenemos tejado para ir colocando la placa electrónica y las conexiones

El tejado tiene el motor y el sensor de humedad

2025-11-03 22_03_02-Greenshot.png
Captura Youtube KS4027 (KS4028)Microbit Smart Home autor Keyestudio licencia Youtube

La otra vertiente tien el panel solar que no tiene tornillos, tiene unas tiras adhesivas. Los cables los pasamos por  el agujero

2025-11-03 22_38_53-Greenshot.png
Captura Youtube KS4027 (KS4028)Microbit Smart Home autor Keyestudio licencia Youtube

No montes aún el techo a la maqueta, tenlo preparado pero no lo ensambles.
Aprovecharemos que no tenemos tejado para ir colocando la placa electrónica y las conexiones

Montando la maqueta Smart Home

La placa electrónica

Montamos la placa de extensión de la micro:bit con la placa transparente

2025-11-12 07_03_14-Greenshot.png
Captura Youtube KS4027 (KS4028)Microbit Smart Home autor Keyestudio licencia Youtube

Colocamos la rueda dentada que va con la puerta giratoria y luego montamos la placa base de micro:bit en los separadores de latón. Es aconsejable poner una gota de cola en la rueda dentada y el eje de la puerta pues se suelta con facilidad.

2025-11-03 22_43_43-Greenshot.png
Derivado de captura Youtube KS4027 (KS4028)Microbit Smart Home autor Keyestudio licencia Youtube

Montando la maqueta Smart Home

Conexiones

¿Cómo se conectan los cables Dupont?

Es muy fácil, el cable negro siempre es la masa que a veces se nombra como G ground:

2025-11-04 08_57_34-WhatsApp.png

Utiliza los largos para los sensores que están a la izquierda de la puerta (DHT11🌡️ azul y el sensor de movimiento PIR 🏃‍♂️‍➡️)

CONECTAMOS LOS DIFERENTES ELEMENTOS

Los conectamos según indican las figuras

2025-11-04 11_01_54-Microsoft PowerPoint - [Presentación1.pptx].png

2025-11-04 10_25_52-Microsoft PowerPoint - [Presentación1.pptx].png

2025-11-04 10_32_47-Microsoft PowerPoint - [Presentación1.pptx].png

2025-11-04 10_59_22-Microsoft PowerPoint - [Presentación1.pptx].png

2025-11-04 11_00_21-Microsoft PowerPoint - [Presentación1.pptx].png

2025-11-04 11_07_16-Microsoft PowerPoint - [Presentación1.pptx].png

2025-11-04 11_09_25-Microsoft PowerPoint - [Presentación1.pptx].png

para el sensor de humedad OJO va en el conector que esta cerca de la micro:bit. La razón es que va a 3.3V para poder leer su valor que es analógico, no digital.

2025-11-04 10_56_41-Microsoft PowerPoint - [Presentación1.pptx].png

Componente Nomenclatura PIN
LED amarillo
16
Módulo RGB 6812 2x2 full color RGB Module 14
Sensor PIR
15
Sensor de humedad Steam Sensor 0 pero de los conectores 3.3V
Sensor de gas MQ-2 1
Sensor H-T DHT11 2
Servo ventana
9
Servo puerta
8
DISPLAY LCD

Si has sido previsor, ya tenías conectado el cable en el LCD cuando montamos las paredes:

2025-11-04 10_20_56-WhatsApp.png

En la placa de expansión micro:bit se colocan en el conector especial SCL, SDA, 5V GND y se respeta el orden

2025-11-04 10_23_53-WhatsApp.png

El motor

El IN va al 12 y en OUT va al 13 (realmente da igual, si se conecta al revés el motor gira hacia el otro lado) PERO

EL ORDEN DE LA ALIMENTACIÓN Y LA MASA CAMBIA. SI TE FIJAS EL G EN EL MOTOR ESTÁ EN EL EXTREMO IZQUIERDO Y LA ALIMENTACIÓN V (Voltios) EL SIGUIENTE
MIENTRAS QUE EN LA PLACA DE EXPANSION MICRO:BIT EN EL EXTREMO ESTAN LOS 5V Y EL SIGUIENTE MASA
HAY QUE INTERCAMBIAR LOS CABLES como en la figura

Los colores de los cables pueden variar según tu kit

2025-11-04 09_26_08-Microsoft PowerPoint - [Presentación1.pptx].png

Detalle en el motor

2025-11-04 09_26_32-WhatsApp.png

Detalle en la placa

2025-11-04 09_27_09-WhatsApp.png

O sea:

La alimentación

La placa solar, la batería y el puerto USB  se conectan a través de la interface Solar USB Charging Module (ver foto anterior)

  1. Conector para alimentar a través de un USB externo
  2. Conector a la placa solar
  3. Conector a la batería.
  4. Conector a la placa de expansión de micro:bit

2025-12-27 23_22_54-Microsoft PowerPoint - [Presentación1].png



Detalle de cómo pasar el cable 4 a  la placa expansión micro:bit

2025-11-04 09_00_01-WhatsApp.png

Alimentación de la maqueta

Alimentación de la maqueta

El módulo de carga solar

Solar USB Charging Module

Es un módulo que no hemos encontrado mucha documentación, sólo aquí. y aquí  Su funcionamiento es el siguiente:

El Switch (el que está debajo del conector número 2) 

Si el interruptor esta en OFF la alimentación por 4 se pierde por lo tanto la maqueta se queda sin alimentación
LA MAQUETA HAY ALIMENTARLA POR USB Y EL SWITCH DE ESTE MÓDULO EN ON

2025-12-27 23_22_54-Microsoft PowerPoint - [Presentación1].png


Panel Solar

También poco podemos encontrar. Solo esto

2025-11-06 21_04_18-Manual - PDF-XChange Viewer.png

Pero las características de salida depende de la luz solar (evidente) de la temperatura y de la impedancia de carga. Una simple luz de flexo ya proporciona una tensión:

2025-11-07 14_45_00-WhatsApp.png

Con el led azul que proporcionan en el kit, conectando la pata larga al rojo (+) y la corta al negro (-) podemos hacer ya un sencillo experimento

Alimentación de la maqueta

Cables USB (mejor dos que uno)

Conectamos una fuente de alimentación con cable USB micro B (igual que el que se utiliza para la micro:bit) a la interface Solar USB Charging Module, ponemos el interruptor en ON y ya esta la maqueta preparada para usarse

Pero se necesita otro cable USB micro B conectado a la placa micro:bit para programar la placa

P: ¿Tiene que estar la micro:bit con su cable y la interface Solar USB Charging Module también A LA VEZ?
R NO. El cable de la micro:bít SOLO ES NECESARIO PARA CARGAR EL PROGRAMA luego se puede quitar (o mantener)

P: ¿Tiene que estar alimentado el cable USB de la interface Solar USB Charging Module con el ordenador?
R: NO, es sólo alimentación, recomendamos conectarlo a un cargador de 3A
No hay datos por ese cable y tiene que proporcionar suficiente corriente para alimentar la maqueta.

Debido a que la hembra de la interface Solar USB Charging Module es algo débil, recomendamos no quitar y poner continuamente, lo mejor es conectar la alimentación e intentar no moverlo 
2026-02-04 12_50_03-WhatsApp.png

Luego la situación ideal es:

2025-12-27 23_46_29-Microsoft PowerPoint - [smarthome-alimentacion.pptx].png


Alimentación de la maqueta

La fuente de alimentación

Lo alimentaremos con un cable USB-microB y un cargador micro USB de 3A se pueden conseguir en muchas tiendas de electrónica físicas y online pues son alimentaciones que se usan en la raspberry 3, powerbanks, tablets ...

2026-01-08 18_39_31-PhotoFiltre 7.png2026-01-08 18_41_37-PhotoFiltre7 - Explorador de archivos.png

¿Y si es de menos de 3 A ?

Pues lo que pasa es sobre todo el LCD, como puedes ver en la foto, casi no se ve:

2025-11-14 14_48_13-WhatsApp.png

Si es tu caso, hay que poner el potenciómetro al máximo de corriente, el azul cuadrado que hay detrás, en el sentido de apretando (o sea el sentido de las agujas del reloj) :


CC-BY-SA Luis Llamas

Jugando con la maqueta y Makecode

Jugando con la maqueta y Makecode

LED AMARILLO

Vamos a hacer este sencillo proyecto, es tan sencillo que no hace falta las extensiones anteriores.

https://makecode.microbit.org/S51000-47523-37650-37264

RETOS

RETO1: Haz que brille de forma gradual y luego baje y así sucesivamente, si no lo sabes mira:
https://docs.keyestudio.com/projects/KS4027-KS4028/en/latest/makecode.html#project-2-breathing-led

RETO2: Haz que cuando sea de noche, se encienda la luz
Es decir el llamado Interruptor Crepuscular
Pista:
- El sensor de luz lo tienes en la propia placa de microbit por aquí tienes una pista: https://libros.catedu.es/books/microbit/page/sensor-luminosidad-y-sonido

Jugando con la maqueta y Makecode

NEOPIXEL

Hay que tener instalada la extensión correspondiente

2025-11-06 22_44_42-_C__Users_HP_Dropbox_preguntassmarthomemircrobit.txt - Notepad++.png

Vamos a jugar ahora con esta extensión. Al iniciar, configuramos los 4 leds en pin 14 y le asignamos un color aleatorio. En el bucle, van rotando:

Si pulsas al siguiente enlace, no hace falta instalar las extensiones, ya lo pone

https://makecode.microbit.org/S80703-67256-64383-19034

RETO: Que realice una secuencia de colores
Ver https://docs.keyestudio.com/projects/KS4027-KS4028/en/latest/makecode.html#project-3-6812-2x2-full-color-rgb

El NEOPIXEL SE QUEDA ENCENDIDO 😡😠😤
¿Molesta? pues es normal, se queda el sensor activado
La única manera de apagarlo es ejecutar
2026-01-14 17_08_41-.png

Jugando con la maqueta y Makecode

PIR SENSOR MOVIMIENTO

Un bucle para determinar si hay movimiento o no

La instrucción PIN lo encontramos en avanzados:

2025-11-04 14_26_13-Configuración.png

https://makecode.microbit.org/S50667-88978-39987-85757

RETOS

RETO1: que muestre lo que detecta por el puerto USB 
ver https://docs.keyestudio.com/projects/KS4027-KS4028/en/latest/makecode.html#project-4-pir-motion-sensor

RETO2 que si detecta movimiento se encienda el led amarillo
ver https://docs.keyestudio.com/projects/KS4027-KS4028/en/latest/makecode.html#project-5-induction-lamp

RETO3 que si detecte que suene una alarma Pista: aquí tienes cómo hacer sonidos https://libros.catedu.es/books/microbit/page/una-pequena-melodia

Jugando con la maqueta y Makecode

LCD DISPLAY

Extensión

Para manejar el display, se necesita la extensión I2CLCD1602 (si has instalado las extensiones, https://libros.catedu.es/books/smart-home-para-microbit/page/instalando-la-extension-smart-home-para-microbit ya la tienes)

2025-11-04 18_30_55-Greenshot.png

Vamos a hacer el programa anterior, pero que lo visualice el display

Si pulsas al siguiente enlace, no hace falta instalar las extensiones, ya lo pone

En la extensión de la placa micro:bit el LCD está en la dirección 039 por lo tanto tenemos que indicarlo al iniciar. En caso contrario no funciona, pues no sabría a qué dirección enviarlo.

Regular el contraste

Cuenda ejecutes el programa, gradúa el potenciómetro de atrás para ver los caracteres con el contraste adecuado

Programa

Vamos a realizar un programa que si detecta una persona salude, en caso contrario que visualice que está en reposo

Solución

https://makecode.microbit.org/S74903-63787-58066-67229

RETOS

RETO1: Visualizar por el LCD un contador de medio segundo
Solución https://docs.keyestudio.com/projects/KS4027-KS4028/en/latest/makecode.html#project-9-1602-lcd

RETO2: ¿Y si las maquetas se comunicaran entre sí y lo muestran por la pantalla del Display? Hacer un programa que si detecta presencia, envíe un mensaje tipo radio a los vecinos diciendo que han entrado
Pista: Para la comunicación por radio aquí tienes cómo hacerlo : https://libros.catedu.es/books/microbit/page/radio

Jugando con la maqueta y Makecode

PUERTA

Vamos a realizar un programa que simplemente vaya girando de 10 en 10 grados la puerta desde su valor mínimo 0º hasta el máximo 180º

https://makecode.microbit.org/S31244-36562-66788-32342

¿va mal? ¿no tiene libertad de movimientos?
Porque no le has puesto un pilar. Mira https://libros.catedu.es/books/smart-home-para-microbit/page/un-pilar

Ante un atasco, suelen estropearse los servos. Son muy baratos, lo que cuesta es montarlos.

RETO Realizar el mismo programa pero que sea 0 - 45 - 90 - 135 - 180
Solución https://docs.keyestudio.com/projects/KS4027-KS4028/en/latest/makecode.html#project-6-adjust-angles-of-servo

Jugando con la maqueta y Makecode

VENTANA

Hacemos igual pero con la ventana

Con una diferencia, no vamos a llegar al tope de apertura 180º pues tropieza con la pared, con 150º es suficiente y la ventana a esos grados esta totalmente abierta

https://makecode.microbit.org/S97837-07871-42459-70030

Ante un atasco, suelen estropearse los servos. Son muy baratos, lo que cuesta es montarlos.

Jugando con la maqueta y Makecode

LLUVIA CIERRO LA VENTANA

Vamos ahora a hacer un programa que si el sensor detecta lluvia, que cierre la ventana

Aquí la cuestión es ¿Cuál es nuestro umbral para determinar lo que es lluvia y lo que no es? pues el sensor es analógico no como los anteriores

En este programa definimos un umbral de 500, más de ese valor vamos a pedir que cierre la ventana

El display LCD visualiza los datos de lluvia para poder ver qué ocurre

https://makecode.microbit.org/S48168-34893-12799-18989

RETO Que emita un sonido de alarma y que se visualice por el led amarillo
Si no sabes mira https://docs.keyestudio.com/projects/KS4027-KS4028/en/latest/makecode.html#project-11-rains-alarm

Jugando con la maqueta y Makecode

DHT11

Vamos a ver en esta página:

Extensión DHT11

Para manipular DHT11 con makecode tenemos que tener la extensión correcta: Busca DHT11 en extensiones...

2025-11-04 20_10_42-Greenshot.png

Instala una extensión con estas instrucciones:

2025-11-04 20_12_12-Greenshot.png

Tal y como dice su página sirve tanto para DHT11 como DHT22, el DHT22 es blanco, es un poco más caro pero más preciso (tacaños !!!)

Programa lectura de valores temperatura y humedad DHT11 al display LCD con Makecode

Si pulsas al siguiente enlace, no hace falta instalar las extensiones, ya lo pone

Realizamos este programa https://makecode.microbit.org/S12731-23834-73453-08192

Como puedes ver da muchas veces el error Checksum -999
RETO: 🧠🧠🧠Cambia el programa para que cuando detecte esos valores de Checsum, simplemente el display no lo muestre, que siga mostrando el valor correcto anterior.
La solución la tienes aquí

¿Qué no sabes qué es Checksum? eso es porque no te has leído bien la página de sensores

Programa lectura de valores temperatura y humedad DHT11 al puerto serie con Makecode

A pesar de que en la página oficial propone un programa que también da error checksum, vamos a realizar esta modificación que no da ese error:

AGRADECIMIENTOS a CARMEN GARROTE mentora digital del CP Angel Sanz Briz Teruel autora de esta modificación:

Debajo del dibujo de la Micfrobit tienes el botón para ver el puerto serie:

2026-03-21 19_37_17-Bandeja de entrada - jjquintana@educa.aragon.es - Outlook.png
El resultado :

DHT11 puerto serie2.png

Programa lectura de valores temperatura y humedad DHT11 al display LCD con Microblocks

CROBLOCKS que es un programa local que se descarga en https://microblocks.fun/ 
Se instala los drivers que por cierto son del mismo fabricante keyestudio :2025-11-08 09_48_20-MicroBlocks.png
Se ha añadido la librería Temperatura y Humedad DHT11.  
Realizamos el siguiente programa y lo grabamos en la microbit:

2025-11-08 18_02_06-MicroBlocks.png

¡¡ FUNCIONA PERFECTAMENTE !!! en ningún momento salta -9992025-11-08 10_09_49-MicroBlocks.png

Enlace al programa

DH11MICROBLOCKS.ubp


Jugando con la maqueta y Makecode

MOTOR

El motor tiene un sencillo funcionamiento:

PIN12 PIN13 MOTOR
0 0 PARADO
0 1 ROTACIÓN SENTIDO RELOJ
1 0 ROTACIÓN SENTIDO ANTIRELOJ
1 1 PARADO

https://makecode.microbit.org/S96383-79923-07943-79319

RETO Lo mismo que anteriormente pero sin bucle
SOLUCIÓN https://docs.keyestudio.com/projects/KS4027-KS4028/en/latest/makecode.html#project-7-130-motor

 

Jugando con la maqueta y Makecode

GAS

El sensor MQ-2 es sensible a gas de combustible, incluso alcohol. Vamos a realizar un circuito que si detecta alguno de estos gases, funcione el ventilador.

Es un sensor que internamente lleva una resistencia que al calor, hace que los sensores detecten gases inflamables. Si te tocas el sensor, verás que esta caliente.

Este sensor, como todos los de este tipo, van al revés pull down, es decir cuando detectan se lee un 0 y cuando no detecta, se lee un 1

https://makecode.microbit.org/S89674-59327-62723-53770

acercamos una botella de alcohol y funciona !!!

Aunque también es sensible al butano, como podemos ver en el tutorial de Aularagon SMART HOME ESP32 https://libros.catedu.es/books/smart-home-esp32/page/project-82-dangerous-gas-alarm

RETO: Que cuando detecte el gas, que suene una alarma y el led amarillo parpadee
SOLUCIÓN https://docs.keyestudio.com/projects/KS4027-KS4028/en/latest/makecode.html#project-12-analog-gas-mq-2-sensor

Jugando con la maqueta y Makecode

Exensiones

OPCIÓN A PONER LA EXTENSIÓN QUE NECESITEMOS EN CADA MOMENTO

Si vas a utilizar alguno de estos elementos, necesitas instalar la extensión correspondiente

Para instalarlas. En Makecode https://makecode.microbit.org/#editor vamos a Extensions

2025-11-04 13_46_36-Configuración.png

Para DHT11

2025-11-04 20_10_42-Greenshot.png

Para el LCD display

2025-11-04 18_30_55-Greenshot.png

Para Neopixel

2025-11-06 22_44_42-_C__Users_HP_Dropbox_preguntassmarthomemircrobit.txt - Notepad++.png

OPCIÓN B : PONER LAS EXTENSIONES TODAS DE GOLPE

En Makecode https://makecode.microbit.org/#editor vamos a Extensions

2025-11-04 13_46_36-Configuración.png

Y pegamos la siguiente URL https://github.com/keyestudio2019/ks_IoT

2025-11-04 13_47_32-Configuración.png

Al pulsar Intro o dar a la lupa, aparece una extensión que instalaremos

2025-11-04 13_49_03-Configuración.png

al instalarlo se instalan tres extensiones

2025-11-04 13_51_03-Configuración.png


Jugando con Bluetooth

Jugando con Bluetooth

Un poco de teoría Bluetooth

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

Jugando con Bluetooth

La 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


Jugando con Bluetooth

Programa en Makecode

Parecido al que vimos con la micro:bit sola en https://libros.catedu.es/books/microbit-car/page/bluetooth-programa-en-makecode pero con la diferencia que ahora podemos añadir elementos de entrada y salida de la maqueta:

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/S49239-73240-65616-30917

 

Jugando con Bluetooth

APP Serial Bluetooth Terminal

DESCARGA LA APP

Esta APP es muy sencilla y la puedes descargar aquí. Tiene las siguientes ventajas :

2025-11-02 21_50_49-Greenshot.png

EMPAREJAR DISPOSITIVOS

Si no esta emparejado con el móvil NO TE PUEDES CONECTAR, para ello entramos en Devices :

2026-01-19 10_15_17-WhatsApp.png

Aquí puedes ver dos capturas de dispositivos en Bluetooth clásico y Bluetooth BLE

LOS QUE ESTAN EN VERDE SON LOS QUE TIENES EMPAREJADOS Y PUEDES CONECTARTE

unnamed.webp  2026-01-19 10_08_05-WhatsApp.png

¿Y si no aparece o no esta emparejado? Entras en el diálogo de Android de Bluetooth y lo emparejas
2026-01-19 10_12_41-Greenshot image editor.png

CONECTARTE

Una vez seleccionado el dispositivo emparejado ya puedes conectarte :

  1. Menú
  2. Entras en Terminal
  3. Enchufe
  4. Sale conectado, ya estas preparado para enviar y recibir

2026-01-19 10_15_17-WhatsApp.png


Jugando con Bluetooth

Resultado con la APP Serial Bluetooth Terminal

En Makecode

En la micro:bit hemos puesto este programa en Makecode :

En la APP

2025-11-02 21_50_49-Greenshot.png

Podemos hacer:

Resultado


Agradecimientos al tutorial de https://lopegonzalez.es/eso-y-bachillerato/proyectos-con-microbit/control-remoto-por-bluetooth/

Jugando con Bluetooth

APP INVENTOR extensiones bluetooth LE y microbit

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

Jugando con Bluetooth

APP INVENTOR tu programa

Parecido al programa que realizamos con la Micro:bit sola en https://libros.catedu.es/books/microbit-car/page/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. Botones para encender o apagar el motor de la maqueta
  6. Un Label que lo llamaremos LabelTextoRecibido que mostrará el mensaje desde micro:bit
  7. Añadimos los elementos de las extensiones que hemos instalado anteriormente 
    1. Microbit_UART_Simple
    2. BluetoothLE

2025-11-05 09_58_11-Configuración.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 ON o OFF, le enviamos el texto ON o OFF entre "#" pues así lo hemos definido en el programa Makecode: (si quieres saber más sobre estas instrucciones UART aquí)

2025-11-05 10_09_25-Configuración.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

SMARTHOMEMICROBIT.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...

Jugando fuerte con Python

Jugando fuerte con Python

Ventajas y desventajas Python

Ventajas

Python es un lenguaje de desarrollo y curva de aprendizaje rápido. Tiene una comunidad amplia con muchas librerías, ejemplos, tutoriales... que para casi todos los problemas, seguro que encuentras una solución escrita en Python

Es un lenguaje de alto nivel, es decir, que se programa igual que los programadores, pero interpretable para los humanos !. Comparándolo con otros lenguajes (Java, C++, etc..) es el más "humanizado".

También gestiona la memoria, por ejemplo, si programas en C++, tú eres el responsable de limpiar la memoria de datos que ya no usas, o corres el peligro de quedarte sin memoria. En Python ya lo hace por ti.

Desventajas

La gestión de memoria que antes se mencionaba tiene un precio; bajada de velocidad y paradójicamente coste de memoria. 

En otros programas, el compilador esta en tu PC, pero en Python está en el dispositivo (por eso se llama lenguaje Interpretado), esto hace que ocupa memoria, y en microbit por ejemplo esto hace que no puedes usar Python y código Bluetooh pues no hay suficiente memoria RAM.

2024-07-04 18_44_27-(1) Exploring the Arduino Nano ESP32 _ MicroPython & IoT Cloud - YouTube.png
Fuente  vídeo Exploring the Arduino Nano ESP32 | MicroPython & IoT

También hay que tener en cuenta que si Python es un lenguaje interpretado, siempre será más lento que un lenguaje compilado por ejemplo el C++, pues para ejecutarlo el dispositivo, lo ejecuta, pues lo tiene en binario y en paz, pero en Python cada instrucción necesita ser interpretado, decodificado, en binario antes de ejecutarse.

Jugando fuerte con Python

Editores

Tienes dos opciones, online o local :

Programar online con https://python.microbit.org (recomendado)

Entramos en https://python.microbit.org/ y el editor online nos permite trabajar ;

  1. Una biblioteca de códigos que nos permitirá seleccionar y usar para programar de forma guiada
  2. Un simulador para ver cómo se ejecutaría nuestro código
  3. Un botón para enviar a la microbit real
  4. Botones para guardar nuestro código de forma local y abrir los existentes.

2024-09-18 22_40_17-micro_bit Python Editor.png

En este curso utilizaremos el editor online microbit.org

Programar en local con MU

Es un editor muy sencillo, se descarga en https://codewith.mu/ y permite su instalación en Windows, Linux y Apple.2024-07-04 18_44_27-(1) Exploring the Arduino Nano ESP32 _ MicroPython & IoT Cloud - YouTube.png
Fuente https://codewith.mu/ CC-BY-NC-SA
La primera vez que lo ejecutamos (tarda algo la primera vez) nos pide el modo que se puede cambiar en cualquier momento:2024-09-18 22_28_05-Configuración.png1 Escribimos el código
2 Lo comprobamos
3 Flasheamos, es decir enviamos el código al Microbit (conectarlo previamente)
4 Cuando sale el mensaje Código copiado al microbit procedemos a resetearlo para que la placa ejecute el programa.

ATENCIÓN ES IMPORTANTE RESETEAR LA MICRO:BIT tienes un botón de reset al lado del conector de USB para no estar desconectando y conectando. Una vez reseteado tu programa funcionará.

2024-09-18 22_34_58-Configuración.png

from microbit import *

while True:
  display.scroll("Hola Mundo")

OTROS EDITORES DE PYTHON QUE NO SON COMPATIBLES CON PYTHON MICROBIT

Vamos a ver este programa escribo en https://python.microbit.org/

# Imports go at the top
from microbit import *
while True:
    if pin0.is_touched():
        display.show(Image.HEART)
    else:
        display.show(Image.NO)

Lo que hace es :


EL MISMO CÓDIGO EN MAKECODE-PYTHON
Makecode a pesar de que esta orientado a programar con bloques, tiene su sección de Python

2024-09-23 10_37_07-Microsoft MakeCode for micro_bit.png

Al darle en Python (arriba a la derecha), muestra este código

def on_forever():
    if pins.digital_read_pin(DigitalPin.P0) == 1:
        basic.show_icon(IconNames.HEART)
    else:
        basic.show_icon(IconNames.NO)
basic.forever(on_forever)

Como se puede ver makecode python no es compatible con https://python.microbit.org/ ya lo dice en su tutorial https://microbit-micropython.readthedocs.io/en/v2-docs/

2024-09-23 10_46_05-BBC micro_bit MicroPython documentation — BBC micro_bit MicroPython 2 documentat.png

EL MISMO CÓDIGO CON PYTHON DE TINKERCAD

Tinkercad https://www.tinkercad.com/ es una herramienta estupenda de simulación pues es muy realístico, igual que Maquecode, este muy orientado a la programación en bloques pero también tiene su sección de código python

2024-09-23 10_51_49-Circuit design PIN0-CORE-CREW - Tinkercad.png

Si le das la opción de bloque+código intenta muestra los bloques traducidos a código, pero si le das la opción sólo código pierdes la programación en bloques, Esto ya lo vimos en https://libros.catedu.es/books/programa-arduino-mediante-codigo/page/software en los párrafos escritos en naranja.

El código generado vemos que no es compatible con Python microbit

# Python code
#

def on_pulsed_p0_high():
  basic.show_icon(IconNames.Heart)
pins.on_pulsed(DigitalPin.P0, PulseValue.HIGH, on_pulsed_p0_high)

def on_pulsed_p0_low():
  basic.show_icon(IconNames.No)
pins.on_pulsed(DigitalPin.P0, PulseValue.LOW, on_pulsed_p0_low)

Jugando fuerte con Python

Introducción al Python

Esta es una muy breve introducción al Python como recordatorio de algunas instrucciones si ya has utilizado este lenguaje.
Si es la primera vez, te recomendamos que visites nuestro curso PYTHON PARA TODOS Python for everybody por Charles R. Severance licencia CC-BY-NCSA que empieza desde cero.

Lenguajes, intérpretes y compiladores

Python es un lenguaje de alto nivel destinado a ser relativamente sencillo para que los humanos lean y escriban y para que los ordenadores lean y procesen. Otros lenguajes de alto nivel incluyen Java, C ++, PHP, Ruby, Basic, Perl, JavaScript y muchos más. El hardware real dentro de la Unidad Central de Procesamiento (CPU) no comprende ninguno de estos lenguajes de alto nivel.

La CPU entiende un idioma que llamamos lenguaje de máquina. El lenguaje de máquina es muy simple y francamente muy tedioso de escribir porque está representado en ceros y unos:

El lenguaje de máquina parece bastante simple en la superficie, dado que solo hay ceros y unos, pero su sintaxis es aún más compleja y mucho más compleja que Python. Muy pocos programadores escriben lenguaje de máquina. En su lugar, creamos varios traductores para permitir que los programadores escriban en lenguajes de alto nivel como Python o JavaScript y estos traductores convierten los programas al lenguaje de máquina para su ejecución real por parte de la CPU.

Estos traductores de lenguaje de programación se dividen en dos categorías generales: (1) intérpretes y (2) compiladores.

Un intérprete lee el código fuente del programa como está escrito por el programador, analiza el código fuente e interpreta las instrucciones sobre la marcha. Python es un intérprete y cuando ejecutamos Python de forma interactiva, podemos escribir una línea de Python (una oración) y Python la procesa de inmediato y está lista para que escribamos otra línea de Python.

    >>> x = 6
    >>> print(x)
    6
    >>> y = x * 7
    >>> print(y)
    42
    >>>

Está en la naturaleza de un intérprete poder tener una conversación interactiva como se muestra arriba. A un compilador debemos entregarle todo el programa en un archivo, y luego ejecuta un proceso para traducir el código fuente de alto nivel al lenguaje de máquina y luego el compilador coloca el lenguaje de máquina resultante en un archivo para su posterior ejecución.

Variables

Las variables son como cajas que puedes meter valores. Y los valores pueden ser de varios tipos :

Para crear una variable puedes usar cualquier palabra, x, y, z o Nombre_alumno ... pero algunas palabras no puedes usar, ver

Para visualizar variables puedes usar la instrucción print poniendo entre paréntesis el valor o variable que quieres visualizar.

En la siguiente ventana puedes dar al botón play y ver el resultado

Modifica los valores como quieras, es un intérprete, juega y dale al play para ver el resultado 

Como puedes ver se ha introducido un operador el + que realiza la suma del valor de x original (43) y se le incrementa una unidad resultando en la impresión un 44.

Cadenas

Cadenas son secuencias de caracteres, por ejemplo la palabra "banana"

2025-04-05 09_29_39-Editing Page 6 Cadenas _ Librería CATEDU.png
fuente  
'Python for Everybody' por Charles R. Severance

Se puede obtener su longitud con la función len, o obtener un carácter ...

Operadores

Este apartado de operadores es adaptado de Federico Coca Guia de Trabajo de Microbit CC-BY-SA

Los operadores aritméticos se utilizan para realizar operaciones matemáticas como sumas, restas, multiplicaciones, etc.

Operador Descripción Ejemplo
+ Suma o concatenación en textos 5+3=8"Hola" + "Mundo" = "Hola Mundo
- Diferencia 6-3=3
* Multiplicación 3*3=9
/ División 6/2=3
// Parte entera de un cociente 10//3=3
% Resto de un cociente 10%3=1
** Potenciación 5**2=25

Los operadores de asignación se utilizan para asignar valores a variables.

Operador Descripción Ejemplo
= Asignación x=4a = a + 1
+= Suma y asignación x+=1 equivale a x = x + 1
-= Diferencia y asignación x-=1 equivale a x = x - 1
*= Multiplicación y asignación x*=3 equivale a x = x * 3
/= División y asignación x/=3 equivale a x = x / 3
%= Asignación de restos x%=3 equivale a x = x % 3
**= Asignación de exponentes x**=3 equivale a x = x ** 3

Los operadores de comparación comparan dos valores/variables y devuelven un resultado booleano: Verdadero o Falso True o False.

Operador Descripción Ejemplo
== Igual a 2==3 retorna False
!= Distinto de 2!=3 retorna True
< Menor que 2<3 retorna True
> Mayor que 2>3 retorna False
<= Menor o igual que 2<=3 retorna True
>= Mayor o igual que 2>=3 retorna False

Los operadores lógicos se utilizan para comprobar si una expresión es Verdadera o Falsa. Se utilizan en la toma de decisiones.

Operador Descripción Ejemplo
and AND lógica a and b #True si a y b son ciertos
or OR lógica a or b #True si a o b son ciertos
not NOT lógica not a #True si el operador a es falso
in pertenencia Devuelve True si pertenece
no int no pertenencia Devuelve True si no pertenece
is identidad Devuelve True si son iguales
is not no identidad Devuelve True si no son inguales

Los operadores bit a bit o bitwise actúan sobre los operandos como si fueran cadenas de dígitos binarios. Operan bit a bit:

Operador Descripción Ejemplo
& AND bit a bit 5&6 # 101 & 110 = 110 = 4
| OR bit a bit 5 \| 6 # 101 \| 110 = 111 = 7
~ NOT bit a bit ~3 # ~011 = 100 = -4
^ XOR bit a bit 5^3 # 101^011 = 110 = 6
<< Desplazamiento izquierda 4<<1 # 100 << 1 = 1000 = 8
>> Desplazamiento derecha 4 >> 1 # 100 >> 1 = 010 = 2

Prueba, juega con este código:




Comentarios en Python
Una sola línea : Escribiendo el símbolo almohadilla (#) delante del comentario.
Multilínea: Escribiendo triple comillas dobles (“””) al principio y al final del comentario.

Entradas de teclado

Ya hemos visto salidas por pantalla con print, pero ahora con input puede leer variables del teclado, esto es mejor experimentarlo que leerlo :

Fíjate que hay que poner las líneas x = float (x) e y = float(y) para convertirlos a números decimales, en caso contrario las interpreta string y no puede multiplicar en Resultado, pero en el siguiente ejemplo no es necesario en la variable cel (celsius) pues se multiplica por números decimales 32.0 5.0 y 9.0 

try y except son dos funciones que son un seguro para el programador por si el usuario en vez de teclear un número, mete un string o carácter

La sangría es importante en Python
La sangría se refiere a los espacios al comienzo de una línea de código. Mientras que en otros lenguajes de programación la sangría en el código es solo para facilitar la lectura, la sangría en Python es muy importante ya que se usa para indicar un bloque de código.

Condicionales

Las instrucciones if: else: son las que nos permiten realizar operaciones según las condiciones puestas. Ojo con la sangría

\n es un carácter especial que significa "Salto de página"

Bucles

Para verlo mejor vamos a ver estos ejemplos

Venga pruébalo !!!

Funciones

No vamos a entrar en detalle, pero observa el siguiente código

Para saber más de Python

CURSO PYTHON FOR EVERYBODY en español ver
Curso completo de Python 222pag pdf (*) Descargar
Curso completo de Python 422pag (*) Descargar
Curso completo de Python desde 0 (*) Ver
Curso de Python desde 0 (*) Ver
Manual de referencia Python (*) Ver
Programación en Python (*) Ver
Trabajando con ficheros en Python (*) Ver
Programación orientada a objeto en Python (*) Ver
un manual para aquellos usuarios con previos conocimientos de Python, como la programación modular y orientada a objetos.
También algunos conocimientos de las librerías tkinter  (Para crear interfaces gráficos y SQlite3 (para gestionar bases de datos). (*)
Descargar

(*) Agradecimientos a Pere Manel http://peremanelv.com

Jugando fuerte con Python

Micropython de microbit

Página extraída de Federico Coca Guia de Trabajo de Microbit CC-BY-SA

API: El módulo microbit

Todo lo necesario para interactuar con el hardware de la micro:bit está en el módulo microbit y se recomienda su uso escribiendo al principio del programa:

from microbit import *

Las funciones disponibles directamente son:

sleep(ms) #1
running_time() #2
temperature() #3
scale(valor_a_convertir, from_=(min, max), to=(min, max)) #4
panic(error_code) #5
reset() #6
set_volume(valor) #7 (V2)
'''
1 Esperar el número de milisegundos indicado
2 Devuelve el tiempo en ms desde la última vez que se encendió la micro:bit
3 Devuelve la temperatura en Celcius
4 Convierte un número de una escala de valores a otra
5 La micro:bit entra en modo pánico por falta de memoria y se dibuja una
cara triste en la pantalla. El valor de error_code puede ser cualquier entero.
6 Resetea la micro:bit
7 Estable el volumen de salida con un *valor* entre 0 y 255
'''

Estructuras de datos en Python

Las listas (list)

Se trata de un tipo de dato que permite almacenar series de datos de cualquier tipo bajo su estructura. Se suelen asociar a las matrices o arrays de otros lenguajes de programación.

En Python las listas son muy versatiles permitiendo almacenar un conjunto arbitrario de datos. Es decir, podemos guardar en ellas lo que sea.

Una lista se crea con [] y sus elementos se separan por comas. Una gran ventaja es que pueden tener datos de diferentes tipos.

lista = [1, "Hola", 3.141592, [1 , 2, 3], Image.HAPPY]

Las de principales propiedades de las listas:

Hay dos métodos aplicables:

En el ejemplo vemos el funcionamiento.

ejem_listas.png
Federico Coca Guia de Trabajo de Microbit CC-BY-SA

Con estos conocimientos tendremos suficiente para hacer lo que pretendemos, que no es otra cosa que animar imágenes.

Las tuplas (tuple)

Son muy similares a las listas con una diferencia principal con las mismas y es que las tuplas no pueden ser modificadas directamente, lo que implica que no dispone de los métodos vistos para listas. Una tupla permite tener agrupados un número inmutable de elementos.

Una tupla se crea con () y sus elementos se separan por comas.

tupla = (1, 2, 3)

Principales propiedades:

A continuación vemos un ejemplo.

ejem_tuplas.png
Federico Coca Guia de Trabajo de Microbit CC-BY-SA

Diccionarios (dict)

Estas estructuras contienen la colección de elementos con la forma clave:valor separados por comas y encerrados entre {}. Las claves son objetos inmutables y los valores pueden ser de cualquier tipo. Sus principales características son:

A continuación vemos un ejemplo

ejem_dicc.png
Federico Coca Guia de Trabajo de Microbit CC-BY-SA

Bucles

Los Bucles son un tipo de estructura de control muy útil cuando queremos repetir un bloque de código varias veces. En Python existen dos tipos de bloques, el bucle for para contar la cantidad de veces que se ejecuta un bloque de código, y el bucle while que realiza la acción hasta que la condición especificada no sea cierta.

While 
La sintaxis de while es la siguiente:
while condicion:
    bloque de codigo

donde "condicion", que se evalúa en cada iteración, puede ser cualquier expresión realizado con operadores condicionales que devuelva como resultado un valor True o False. Mientra que "bloque de codigo" es el conjunto de instrucciones que se estarán ejecutando mientras la condición sea verdadera (True o '1'). Es lo mismo poner while true: que poner while 1:.

Para recorrer los bucles se utilizan variables que forman parte de la condición, estableciendose en esta lo que deben cumplir.

Un ejemplo sencillo podría ser el siguiente, controlar el riego de una planta en función del valor de la humedad de la tierra en la que está.

from microbit import *

while (humedad() < 45):
    display.scroll(Image.SAD)
    sleep(1000)

display.show(Image.HAPPY)

que hará que si la humedad baja por debajo de 45 se muestre una carita triste indicando que hay que regar y si es mayor mostrará una carita feliz. Evidentemente hay que resolver el tema de como obtener la humedad, pero esa es una historia que veremos mas adelante.

El bucle while puede tener de manera opcional un bloque else cuyas sentencias se ejecutan cuando se han realizado todas las iteraciones del bucle. Un ejemplo lo vemos a continuación:

cuenta = 0
while cuenta < 5:
    print("Iteración del bucle")
    cuenta = cuenta + 1
else:
    print("bucle finalizado")
for

Son también bucles pero su acción está dirigida a contar el número de veces que ocurre algo o realizar una acción un determinado número de veces. Es especialmente útil para recorrer los datos de una lista, tupla o diccionario.

La sintaxis de este tipo de bucles en Python es:

for variable in secuencia:
    declaracion

Siendo "variable" la variable que se va a recorrer en el bucle de forma que cuando se alcance el valor establecido se sale del bucle.

La variable puede ser una cadena, un rango de valores que se expresa con range(n), siendo n el número de valores del rango que se inicia en 0 y que pueden ser iterados con una variable. Mas ampliamente, la sintaxis de range() es range(start, stop, step) siendo start y stop opcionales.

Veamos un primer ejemplo en el que vamos a utilizar un bucle para encender uno a uno por filas los LEDs de la primera y última columna.

from microbit import *
for var in range(5): # var puede tomar 5 valores, del 0 al 4
    display.set_pixel(0, var, 9) # Se ilumina el LED de la fila 0 y el valor de var para columna
    sleep(300)
    display.set_pixel(4, var, 9) # Se ilumina el LED de la fila 4 y el valor de var para columna
    sleep(300)

Los bucles se pueden anidar, es decir se puede crear un bucle dentro de otro del mismo o diferente tipo, de forma que por cada iteración del bucle mas externo se tienen que producir todas las iteraciones del bucle mas interno. Veamos como ejemplo el de encender todos los LEDs de uno en uno, de izquierda a derecha, utilizando el valor de sus coordenadas x,y. El programa sería:

from microbit import *

display.clear()
for y in range(0, 5): # Valor de columna
    for x in range(0, 5): # Valor de fila
        display.set_pixel(x, y, 9) # Encender LED x,y
        sleep(100)

En la animación siguiente vemos el programa en funcionamiento.

ejem_dicc.png

Federico Coca Guia de Trabajo de Microbit CC-BY-SA

El bucle for puede tener de manera opcional un bloque else cuyas sentencias se ejecutan cuando se han realizado todas las iteraciones del bucle. Un ejemplo lo vemos a continuación:

for var in range(5):
    print(var)
else:
    print("bucle finalizado")
Bucle for decontando

Se trata del mismo bucle for pero ahora la cuenta la realizamos hacia atrás. Hay dos formas sencillas de hacerlo:

for i in range(20, 0, -2): #imprimere 20, 18, 16, ... 0
for i in reversed(range(0,21,2)): #imprimere 20, 18, 16, ... 0
Sentencias break y continue

La sentencia break se utiliza para terminar un bucle de forma inmediata al ser encontrada. En la imagen vemos la sintaxis de la sentencia break y su funcionamiento.

break.png
Federico Coca Guia de Trabajo de Microbit CC-BY-SA

La sentencia continue se utiliza para saltar la iteración actual del bucle y el flujo de control del programa pasa a la siguiente iteración. En la imagen vemos la sintaxis de la sentencia continue y su funcionamiento.

continue.png
Federico Coca Guia de Trabajo de Microbit CC-BY-SA

En la figura siguiente vemos dos ejemplos de esta sentencia

ejem_continue.png
Federico Coca Guia de Trabajo de Microbit CC-BY-SA

Sentencia condicional if...else

En Python hay tres formas de declaración de if...else

  1. Declaración if
  2. Declaración if...else
  3. Declaración if...elif...else
  1. Declaración if. La sintaxix de esta declaración en Python tiene la forma siguiente:
if condicion:
    # Cuerpo de la sentencia if

# Código después del if

Si el resultado de evaluar la condición es cierto (True o 1), el código en "Cuerpo de la sentencia if" y lo estará haciendo mientras se cumpla la condición.

En el momento que la condición sea evaluada como falsa (False o 0) el código en "Cuerpo de la sentencia if" se omite y continua la ejecución del programa por "Código después del if". En la figura siguiente vemos la explicación de forma gráfica.

f_if.png
Funcionamiento de la sentencia if
Federico Coca Guia de Trabajo de Microbit CC-BY-SA

1. Declaración if...else. Una sentencia if puede tener de manera opcional una clausula else. La sintaxix de esta declaración en Python tiene la forma siguiente:

if condicion:
    # Bloque de sentencias si condicion es True

    else:
    # Bloque de sentencias si condicion es False

La sentencia se evalúa de la siguiente forma: Si condición es True se ejecuta el código dentro del if y el código dentro del else se omite. Si condición es False se ejecuta el código dentro del else y el código dentro del if se omite. Cuando finaliza bien la parte del if o bien la del else el programa continua con la siguiente sentencia.

En la figura siguiente vemos la explicación de forma gráfica.

f_ifelse.png
Funcionamiento de la sentencia if...else Federico Coca Guia de Trabajo de Microbit CC-BY-SA

  1. Declaración if...elif...else. La sentencia if...else se utiliza para ejecutar un bloque de código entre dos alternativas posibles. Sin embargo, si necesitamos elegir entre más de dos alternativas, entonces utilizamos la sentencia if...elif...else. La sintaxis de la sentencia if...elif...else es:
if condicion_1:
    # Bloque 1
elif condicion_2:
    #Bloque 2

    else:
    # Bloque 3

Se evalúa así: Si condicion_1 es True, se ejecuta Bloque 1. Si condicion_1 es False, se evalúa condicion_2. Si condicion_2 es True, se ejecuta Bloque 2. Si condicion_2 es False, se ejecuta Bloque 3.

En la figura siguiente vemos la explicación de forma gráfica.

f_ifelifelse.png
Federico Coca Guia de Trabajo de Microbit CC-BY-SA

Funciones en Python

En esta sección vamos a dar solamente una breve introducción a lo que son las funciones y los módulos en Python para estudiar dos funciones concretas definidas en MicroPhyton para micro:bit.

Una función es un bloque de código que realiza una tarea específica.

Supongamos que necesitas crear un programa para crear un círculo y colorearlo. Puedes crear dos funciones para resolver este problema:

Dividir un problema complejo en trozos más pequeños hace que nuestro programa sea fácil de entender y reutilizar.

Existen dos tipos de funciones en Python:

La sintaxis de una función es la siguiente:

def nombre_funcion(argumentos):
    #Cuerpo de la función

    return

Donde,

Veamos un ejemplo sencillo que no manda parametros ni retorna nada.

def saludo():
    print("Hola Mundo!")

saludo() #Llama a la función
print("Programa")
saludo()
print("Otra vez programa")

Va a generar como salida la cadena "Hola Mundo!" seguida de la cadena "Programa" seguida otra vez de "Hola Mundo!" y finaliza con "Otra vez programa".

Cuando se llama a la función, el control del programa pasa a la definición de la función, se ejecuta todo el código dentro de la función y despés el control del programa salta a la siguiente sentencia después de la llamada a la función.

Como ya se ha mencionado, una función también puede tener argumentos. Un argumento es un valor aceptado por una función. Cuando creamos una función con argumentos necesitamos pasar los correspondientes valores cuando la llamamos.

De forma genérica una función con argumentos tiene la siguiente sintaxis:

def funcion(arg1, arg2, ar3,...):
    #Código

#Llamada a la función
funcion(valor1, valor2, valor3, ...)
#Código

Cuando llamamos a la función le pasamos los valores correspondiendo valor1 a arg1, valor2 a arg2 y así sucesivamente.

La llamada a la función se puede hacer mencionando el nombre del argumento, que es lo que se conoce como 'argumentos con nombre', siendo el código totalmente equivalente al anterior.

funcion(arg1=valor1, arg2=valor2, arg3=valor3, ...)

Una función Python puede o no devolver un valor. Si queremos que nuestra función devuelva algún valor a una llamada realizada a función, utilizamos la sentencia return.

En el ejemplo siguiente se llama a la función cuatro veces con valores diferentes.

def cal_potencia(base, exponente):
    resultado = base ** exponente
    return resultado

#Llamadas a la función
print('Potencia =', cal_potencia(2,8))
print('Potencia =', cal_potencia(3,3))
print('Potencia =', cal_potencia(4,5))
print('Potencia =', cal_potencia(9,6))

El resultado es:

Potencia = 256
Potencia = 27
Potencia = 1024
Potencia = 531441

En Python, las funciones de la biblioteca estándar son las funciones incorporadas que se pueden utilizar directamente en nuestro programa. Por ejemplo,

Estas funciones están definidas dentro de un módulo. Y, para utilizarlas debemos incluir dicho módulo en nuestro programa. Por ejemplo, sqrt() y pow() están definidos en el módulo math. Para usar las funciones podemos hacer como en el ejemplo siguiente:

import math #Carga el módulo math

raiz = math.sqrt(25)
print("La raiz cuadrada de 25 es ", raiz)

potencia = pow(2, 8)
print("2^8 =", potencia)

En el ejemplo la variable raiz contendrá el cálculo de la raiz cuadrada y se define por defecto como variable real o decimal y potencia contendrá el resultado de elevar a 8 el número 2. Los resultados obtenidos son:

La raiz cuadrada de 25 es 5.0
2^8 = 256

Las principales ventajas de utilizar funciones son:

Módulos en Python

A medida que nuestro programa crece, puede contener muchas líneas de código. En lugar de poner todo en un solo archivo, podemos utilizar módulos para separar por funcionalidad los códigos en varios archivos. Esto hace que nuestro código quede organizado y sea más fácil de mantener.

Un módulo es un archivo que contiene código para realizar una tarea específica. Un módulo puede contener variables, funciones, clases, etc. Veamos un ejemplo, vamos a crear un módulo escribiendo algo como lo siguiente:

#Definición del módulo suma

def sumar(a, b):

    resultado = a + b
    return resultado

Guardamos este programa en un archivo, por ejemplo modulo_sumar.py y tendremos definida una función de nombre sumar en ese módulo. La función recibe dos valores y devuelve la suma.

Cuando, en un programa diferente, queramos sumar dos números podemos importar la definición creada utilizando la palabra reservada import. Para acceder a la función definida en el módulo tenemos que utilizar el operador . (punto). Se parece mucho a que el módulo es una clase y la función una instancia de esa clase.

# Programa de sumas
import modulo_sumar

modulo_sumar.sumar(4, 5) #devolverá 9

Python tiene mas de 200 módulos estándar que pueden ser importados de la misma manera que importamos los módulos definidos por nosotros. En la documentación de Python en español encontramos la referencia a La biblioteca estándar de Python.

Números aleatorios

Este módulo está basado en el módulo random de la librería estándar de Python. Contiene funciones para generar comportamientos aleatorios.

Para acceder a este módulo es necesario:

import random

Vamos a ver sus funciones a continuación.

random.getrandbits(n)

.seed(n). Inicializa el generador de números aleatorios con un número entero conocido "n". Esto le proporcionará una aleatoriedad determinista reproducible a partir de un estado inicial dado (n).

random.seed(n)
random.randint(a, b)
random.randrange(stop)
random.randrange(start, stop)
random.randrange(start, stop, step)
random.choice(secuencia)
random.random()
random.uniform(a, b)

En la imagen vemos ejemplos ejecutados en la shell.

func_random.png

Página extraída de Federico Coca Guia de Trabajo de Microbit CC-BY-SA

 

Jugando fuerte con Python

Solo placa: Hola Mundo

No hay mejor manera para empezar que este sencillo programa

  1. Entramos en https://python.microbit.org/
  2. Nos vamos a la pestaña de Reference - Loops y arrastramos el código de While loops infinite
  3. Cambiamos el texto por "Hola Mundo" y lo simulamos en el microbit virtual de la izquierda
  4. ¿Lo ha hecho bien? pues conecta tu microbit a tu ordenador, y Sent to Microbit te saldrá un diálogo pidiendo vincular tu microbit, acepta y ya esta !!!!

2024-09-14 13_48_48-Configuración.png

El código Pytho que ha subido a Microbit es el siguiente, la primera línea importa las librerías para manejar microbit, la segunda es el bucle While y al poner la condición true, se ejecutará siempre, y la instrucción que ejecuta es display.scroll donde visualiza en forma de marquesina el texto que pongamos, también puede ser un número.

from microbit import *


while True:
    display.scroll('Hola Mundo')

Jugando fuerte con Python

Solo placa: Imágenes

Extraído de Federico Coca Guia de Trabajo de Microbit CC-BY-SA

API: Display

Control de la matriz de 5x5 LEDs que en micro:bit se conoce como pantalla. Los métodos de la clase son:

display.get_pixel(x, y) #1
display.set_pixel(x, y, val) #2
display.clear() #3
display.show(image, delay=0, wait=True, loop=False, clear=False) #4
display.scroll(string, delay=400) #5
'''
1 Obtiene el brillo [0 (apagado) a 9 (máx))] del pixel (x,y)
2 Establece el brillo [0 (apagado) a 9 (máx))] del pixel (x,y)
3 Borra (apaga) la pantalla
4 Muestra la imagen
5 Desplaza una cadena por la pantalla a la velocidad en ms del *delay*
'''

En ambos casos de la API existen otras muchas opciones no incluidas. La funcionalidad de autocompletar nos ayudará para no tener que recordar la sintaxis y conocer las que no aparece aquí. En la animación siguiente vemos un ejemplo de ambos casos.

logicos.png
Federico Coca Guia de Trabajo de Microbit CC-BY-SA

Imágenes prediseñadas

MicroPython nos ofrece muchas imágenes integradas para mostrar por pantalla y podemos crear efectos interesantes. 

from microbit import *

while True:
  display.show(Image.HEART)
  sleep(500)
  display.show(Image.HEART_SMALL)
  sleep(500)

Las opciones son múltiples:

Image.HEART
Image.HEART_SMALL
Image.HAPPY
Image.SMILE
Image.SAD
Image.CONFUSED
Image.ANGRY
Image.ASLEEP
Image.SURPRISED
Image.SILLY
Image.FABULOUS
Image.MEH
Image.YES
Image.NO
Image.CLOCK12,Image.CLOCK11,Image.CLOCK10,Image.CLOCK9,Image.CLOCK8,Image.CLOCK7,Image.CLOCK6,Image.CLOCK5,Image.CLOCK4,Image.CLOCK3,Image.CLOCK2,Image.CLOCK1
Image.ARROW_N,Image.ARROW_NE,Image.ARROW_E,Image.ARROW_SE,Image.ARROW_S,Image.ARROW_SW,Image.ARROW_W,Image.ARROW_NW
Image.TRIANGLE
Image.TRIANGLE_LEFT
Image.CHESSBOARD
Image.DIAMOND
Image.DIAMOND_SMALL
Image.SQUARE
Image.SQUARE_SMALL
Image.RABBIT
Image.COW
Image.MUSIC_CROTCHET
Image.MUSIC_QUAVER
Image.MUSIC_QUAVERS
Image.PITCHFORK
Image.PACMAN
Image.TARGET
Image.TSHIRT
Image.ROLLERSKATE
Image.DUCK
Image.HOUSE
Image.TORTOISE
Image.BUTTERFLY
Image.STICKFIGURE
Image.GHOST
Image.SWORD
Image.GIRAFFE
Image.SKULL
Image.UMBRELLA
Image.SNAKE,Image.ALL_CLOCKS,Image.ALL_ARROW
Imágenes DIY

Es perfectamente posible crear nuestras propias imágenes configurando cada Pixel o LED de la pantalla. También es posible crear animaciones con imágenes.

Crear nuestras propias imágenes va a resultar una tarea sencilla cuando conozcamos la información para hacerlo. Cada pixel (LED) de la pantalla se puede configurar con diez valores que pueden tomar un valor entre 0 (cero) y 9 (nueve). Cuando le damos valor 0 (cero) es decirle literalmente que el brillo es nulo y sin embargo cuando le damos el valor 9 (nueve) lo ponemos al máximo de brillo posible. Podemos jugar con todos los valores intermedios para crear niveles de brillo.

La forma mas sencilla de definir una imagen consiste en utilizar la clase microbit.Image para crearla a partir de una cadena o string que devuelva el pictograma. Es decir utilizando el comando Image(string) teniendo que constar de dígitos con los valores 0 a 9 indicados. Para verlo rápidamente hacemos el ejemplos de dibujar una X en relieve asignándola a una variable.

mi_imagen_X = Image("90009:"
                    "06060:"
                    "00300:"
                    "06060:"
                    "90009")

Los dos puntos indican un salto de línea por lo que se puede usar el ASCII no imprimible "\n" que es precisamente eso, un salto de línea.

mi_imagen_X = Image("90009\n"
                    "06060\n"
                    "00300\n"
                    "06060\n"
                    "90009")

Los valores de brillo dan la sensación de relieve de profundidas a la X.

En cualquier caso esto no se escribe normalmente así, salvo para hacer mas o menos un gráfico del pixelado, sino en una sola línea.

mi_imagen_X = Image("90009\n06060\n00300\n06060\n90009")

Ahora parece mas elegante utilizar los dos puntos como indicador de salto de línea.

mi_imagen_X = Image("90009:06060:00300:06060:90009")

En la imagen vemos el resultado de lo explicado.

mi_X_relieve.png
Imagen de una X en relieve
Federico Coca Guia de Trabajo de Microbit CC-BY-SA

Este es el código creado:

from microbit import * 
"""mi_imagen_X = Image("90009\n"
                       "06060\n"
                       "00300\n"
                       "06060\n"
                       "90009")"""
#mi_imagen_X = Image("90009\n06060\n00300\n06060\n90009")
mi_imagen_X = Image("90009:06060:00300:06060:90009")
display.show(mi_imagen_X)
Animar imágenes

En micro:bit Python ya disponemos de un par de listas de imágenes incorporadas que se llaman

Image.ALL_Clocks
Image.ALL_ARROWS

Estas dos ordenes hacen que MicroPython entienda que necesita mostrar cada imagen de la lista, una tras otra.

Cuando queremos mostrar en la pantalla una imagen se nos muestra la siguiente ayuda contextual:

ayuda_disp_show.png
Ayuda contextual para display.show()
Federico Coca Guia de Trabajo de Microbit CC-BY-SA

donde nos indica claramente que image puede ser una cadena, un número, una imagen o una lista de imágenes. Además aparecen las opciones que podemos configurar.

Con esta información crear un "reloj" que esté continuamente marcando cada hora es bastante sencillo, basta con poner el siguiente código y darle a simular.

# Imports go at the top
from microbit import *
display.show(Image.ALL_CLOCKS, delay=400, loop=True)

En la animación vemos el funcionamiento de este "reloj".

ayuda_disp_show.png

Federico Coca Guia de Trabajo de Microbit CC-BY-SA

Si cambiamos el reloj por las flechas veremos como van rotando flechas en ángulos de 45 grados.

ayuda_disp_show.png
Federico Coca Guia de Trabajo de Microbit CC-BY-SA

Para animar nuestras propias imágenes tendremos que crear cada una sobre un lienzo de 5x5 pixeles y establecer las diferencias para crear la animación. Podemos crear tantas imágenes como creamos oportuno. Creamos una lista con todas las imágenes en el orden que se tienen que reproducir y ya podemos mostrar nuestra lista en la pantalla.

En la animación siguiente vemos un efecto creado de esta forma.

ayuda_disp_show.png
Federico Coca Guia de Trabajo de Microbit CC-BY-SA

Este es el código para crear la animación.

# Imports go at the top
from microbit import *
display.clear()
cor1=Image("90000:90000:90000:90000:90000")
cor2=Image("79000:79000:79000:79000:79000")
cor3=Image("57900:57900:57900:57900:57900")
cor4=Image("35790:35790:35790:35790:35790")
cor5=Image("13579:13579:13579:13579:13579")
cor6=Image("01357:01357:01357:01357:01357")
cor7=Image("00135:00135:00135:00135:00135")
cor8=Image("00013:00013:00013:00013:00013")
cor9=Image("00001:00001:00001:00001:00001")
cor10=Image("00000:00000:00000:00000:00000")
todas_las_cortinas=[cor1,cor2,cor3,cor4,cor5,cor6,cor7,cor8,cor9,cor10]
display.show(todas_las_cortinas, delay=100, loop=True)

Funciones para la pantalla

Si wait es True, esta función se bloqueará hasta que la animación termine, de lo contrario la animación ocurrirá en segundo plano.

Si loop es True, la animación se repetirá para siempre.

Si clear es True, la pantalla se borrará después de que las iteraciones hayan terminado.

Los argumentos waitloop y clear deben especificarse utilizando su palabra clave.

Si wait es True, esta función se bloqueará hasta que la animación termine, de lo contrario la animación ocurrirá en segundo plano.

Si loop es True, la animación se repetirá para siempre.

Si monospace es True, todos los caracteres ocuparán 5 columnas de píxeles de ancho, de lo contrario habrá exactamente 1 columna de píxeles en blanco entre cada carácter mientras se desplazan.

Los argumentos waitloop y monospace deben especificarse utilizando su palabra clave.

Extraído de Federico Coca Guia de Trabajo de Microbit CC-BY-SA

Jugando fuerte con Python

Solo placa: Imágenes estáticas y animadas

Imágenes estáticas

Sin tocar el código anterior, vamos ahora a Display y arrastramos el código de sonrisa

2024-09-15 09_34_49-micro_bit Python Editor.png

Vamos a tocar el código para que quede de esta forma, de esta manera practicamos la edición de código

# Imports go at the top
from microbit import *


# Code in a 'while True:' loop repeats forever
while True:
    display.show(Image.SMILE)
    sleep(1000)
    display.scroll('Hola mundo')    

La sonrisa se ve un segundo = 1.000 mseg y luego ejecuta el scroll

¿¿ Qué esperas para experimentar otras imágenes ?

Imágenes animadas

Podemos poner las imágenes prediseñadas en la variable Image pero también podemos crearlas fácilmente. En el siguiente programa se define qué led de la matriz 5x5 se enciende a la máxima intensidad (0-9)

Avanzando en la programación, se definen 5 variables catedux tipo imagen, y se define una variable all_catedus que es tipo array que contienen todas.

from microbit import *

catedu1 =  Image("00900:"
                 "09000:"
                 "90000:"
                 "09000:"
                 "00900")

catedu2 =  Image("09000:"
                 "90000:"
                 "09000:"
                 "00900:"
                 "00090")

catedu3 =  Image("90000:"
                 "09000:"
                 "00900:"
                 "00090:"
                 "00009")

catedu4 =  Image("00009:"
                 "00090:"
                 "00900:"
                 "09000:"
                 "90000")

catedu5 =  Image("00090:"
                 "00900:"
                 "09000:"
                 "90000:"
                 "09000")

all_catedus = [catedu1,catedu2,catedu3,catedu2,catedu1,catedu5,catedu4]
while(True):
    display.show(all_catedus, delay=200)

O jugar con las intensidades: En este juego de luces del coche fantástico se utiliza la intensidad media 5 :

Este ejemplo de regular la intensidad del led es imposible de realizar en programación por bloques.

from microbit import *


catedu1 =  Image("00005:"
                 "00000:"
                 "00000:"
                 "00000:"
                 "00000")

catedu2 =  Image("00009:"
                 "00050:"
                 "00000:"
                 "00000:"
                 "00000")

catedu3 =  Image("00005:"
                 "00090:"
                 "00500:"
                 "00000:"
                 "00000")

catedu4 =  Image("00000:"
                 "00050:"
                 "00900:"
                 "05000:"
                 "00000")

catedu5 =  Image("00000:"
                 "00000:"
                 "00500:"
                 "09000:"
                 "50000")

catedu6 =  Image("00000:"
                 "00000:"
                 "00000:"
                 "05000:"
                 "90000")

catedu7 =  Image("00000:"
                 "00000:"
                 "00000:"
                 "00000:"
                 "50000")

all_catedus = [catedu1,catedu2,catedu3,catedu4,catedu5,catedu6,catedu7,catedu6,catedu5,catedu4,catedu3,catedu2]
while(True):
    display.show(all_catedus, delay=100)


¿No sabes lo que es el coche fantástico? eso es que no tienes la edad adecuada para la robótica 😁

También podemos hacerlo pixel a pixel y no utilizar variables tipo array

from microbit import *

display.clear()
while(True):
    for n in range(0, 5): 
        display.set_pixel(n, 3, 9)
        if (n<4):
            display.set_pixel(n+1, 3, 5)
        if (1<n):
            display.set_pixel(n-1, 3, 5)
        if (1<n):
            display.set_pixel(n-2, 3, 0)    
        sleep(200)
    for n in reversed(range(0, 5)): 
        display.set_pixel(n, 3, 9)
        if (n<4):
            display.set_pixel(n+1, 3, 5)
        if (1<n):
            display.set_pixel(n-1, 3, 5)
        if (n<3):
            display.set_pixel(n+2, 3, 0)    
        sleep(200)

Jugando fuerte con Python

Solo placa: Eventos para los botones

Página extraída de Federico Coca Guia de Trabajo de Microbit CC-BY-SA

Si trabajamos con versiones anteriores a V2 solamente disponemos de los botones A, B y A+B, pero si tenemos una versión V2 también disponemos del botón táctil incorporado en el logo, aunque a todos los efectos este se considera un pin de entrada.

El logo no es tratado exactamente como un botón, sino como un pin de nombre logo. En el borde existen otros tres pines, los 0, 1 y 2. Por ello la forma de trabajar con el logo va a ser un poco diferente, como veremos en la actividad A04.

La diferencia fundamental, ademas de la forma, es que el logo es un sensor capacitivo y los pines son sensores resistivos. En la práctica esto significa que el logo funciona simplemente tocandolo y los pines necesitan cerrar el circuito con GND, por lo que para que funcionen como pulsador debemos tocar tanto el pinto como GND.

Si queremos que MicroPython reaccione a los eventos de pulsación de los botones, debemos ponerlo en un bucle infinito y comprobar si el botón is_pressed.

Para trabajar con los botones de la micro:bit tenemos disponibles funciones que se han cargado al importar el módulo microbit. Estas funciones están basadas en la función genérica is_pressed() pensada para saber que tecla de un teclado se ha pulsado. Sin embargo, en el caso de MicroPython a para micro:bit a estos botones se les ha asignado un nombre a cada uno, button_a para el A y button_b para el B, de manera que para usarlos se llama al botón y con el operador . a la función is_pressed(). Por ejemplo, button_a.is_pressed() es el código encargado de saber si estamos pulsando el botón A y button_b.is_pressed() si lo es el B.

Esta función retorna el total acumulado de pulsaciones de botones y restablece este total a cero antes de volver. Es decir, podemos capturar el número de veces que hemos pulsado un botón. El valor de retorno es un número, por lo que, para mostrarlo en la pantalla de LEDs hay que convertirlo en cadena con la función str().

Devuelve True o False para indicar si se ha presionado el botón desde la última vez que se inicio el dispositivo o se llamó a este método. Llamar a este método borra el estado de que ha sido pulsado, de modo que el botón debe pulsarse de nuevo antes de que este método vuelva a retornar True.

Vamos a hacer un ejemplo que aclarará mejor lo explicado. Se trata de crear un programa (le podremos de nombre Caritas_X) en el que mientras mantegamos pulsado el botón A se muestra una cara sonriente, si no se pulsa ningún botón se muestra una cara triste y si se pulsa el botón B la cara desaparece (se apagan todos los LEDs) y tras 2 segundos aparece una X que se va haciendo cada vez mas grande partiendo del punto central. Finalmente pasados otros 2 segundos el programa vuelve a empezar. El código es:

from microbit import *
while True:
    while True:
        if button_a.is_pressed():
            display.show(Image.HAPPY)
        elif button_b.is_pressed():
            break
        else:
            display.show(Image.SAD)

    display.clear()
    sleep(2000)
    mi_X_peque = Image("00000:00000:00900:00000:0000")
    display.show(mi_X_peque)
    sleep(200)
    mi_X_media = Image("00000:09090:00900:09090:0000")
    display.show(mi_X_media)
    sleep(200)
    mi_X_grande = Image("90009:09090:00900:09090:90009")
    display.show(mi_X_grande)
    sleep(2000)

En la animación siguiente vemos como funciona

f_ifelifelse.png
Federico Coca Guia de Trabajo de Microbit CC-BY-SA

Si observamos con cuidado apreciaremos que en algún momento se accionan los botones A y B pero los que aparecen en la parte inferior, debajo de la pantalla de simulación. Están al lado de un logotipo que indica que se pulsen con una flechita. Justo debajo de estos aparecen los citados del borde de placa y el logo junto a ellos, pues es tratado asi, como un pin, y además a su izquierda hay un candado cerrado indicativo de que no se está usando ninguno de ellos. En la imagen siguiente se ve mejor lo indicado.

control_simu.png

Federico Coca Guia de Trabajo de Microbit CC-BY-SA

Vamos a crear otro ejemplo en el que se cuenten las veces que pulsamos el botón A o el botón B durante un tiempo de 3 segundo. El programa es el siguiente:

from microbit import *

sleep(3000) #Espera de 3 segundos

#Convertimos número a cadena con str()
pulsado = str(button_b.get_presses())

display.show(pulsado)

# Por si hemos pulsado mas de 9 veces
display.scroll(pulsado)

En la 'Referencia' del compilador, dentro de Botones tenemos un ejemplo que nos indica el botón que hemos pulsado con cuatro opciones posibles, el A, el B, A o B y finalmente A y B. Animamos a cargarlos y probarlos para familiarizarnos todo lo posible con ellos.

Página extraída de Federico Coca Guia de Trabajo de Microbit CC-BY-SA

Jugando fuerte con Python

Solo placa: Botones

Los botones pueden dar juego, combinándolos con la instrucción if --- else

from microbit import *

while True:
    if button_a.is_pressed():
        display.show(Image.HAPPY)
    elif button_b.is_pressed():
        break
    else:
        display.show(Image.SAD)

display.clear()

Extraido de tutorial https://microbit-micropython.readthedocs.io/en/v2-docs/tutorials/buttons.html

¿Qué pasa si pulsamos el botón B ?

En el apartado Reference podemos ir a Buttons tenemos diferentes muestras de código :

2024-09-18 22_52_55-micro_bit Python Editor.png

La diferencia entre este código 

while True:
    if button_a.was_pressed():
        display.scroll('A')

y este otro código

while True:
    if button_a.is_pressed():
        display.scroll('A')

es muy sutil, no hay diferencia si apretamos el botón A  excepto si lo mantenemos pulsado

El siguiente código, visualiza el número de veces que pulsas el botón A durante 3 segundos :

from microbit import *
display.scroll('Press A')
sleep(3000)
display.scroll(button_a.get_presses())

Jugando fuerte con Python

Solo sensores de la placa

Podríamos continuar, pero solo con la placa podemos hacer muchos más programas con Python

Nivel de luz

Página extraída de Federico Coca Guia de Trabajo de Microbit CC-BY-SA Vamos a ver como utilizar ...

Temperatura

La función en micropython para leer la temperatura de la placa en ºC interna y devuelve un valor ...

Magnetómetro

Página extraída de Federico Coca Guia de Trabajo de Microbit CC-BY-SA Este módulo permite accede...

Acelerómetro

Página extraída de Federico Coca Guia de Trabajo de Microbit CC-BY-SA Este objeto permite accede...

Micrófono

Página extraída de Federico Coca Guia de Trabajo de Microbit CC-BY-SA ATENCIÓN SÓLO VÁLIDO PARA ...

Radio

Página extraída de Federico Coca Guia de Trabajo de Microbit CC-BY-SA El módulo de radio permite...

Pines de Entrada/salida

Página extraída de Federico Coca Guia de Trabajo de Microbit CC-BY-SA En MicroPython, cada pin e...

Input output

Una manera rápida de probar las entradas y salidas de microbit es utilizar el código predefinido ...

Música predefinida o crea tu música

SALIDAS DE AUDIO La placa Microbit v2 tiene un altavoz incorporado que se puede anular o activar...

Musica

Página extraída de Federico Coca Guia de Trabajo de Microbit CC-BY-SA MicroPython de BBC micro:b...

Putty

Putty es un programa que nos permite realizar comunicaciones, normalmente se usa en protocolo SSH...

UART

Página extraída de Federico Coca Guia de Trabajo de Microbit  https://fgcoca.github.io/Guia-de-tr...

Registro de datos

Página extraída de Federico Coca Guia de Trabajo de Microbit CC-BY-SA Grabar datos Para utiliza...

Jugando fuerte con Python

Solo placa: Música

Tan fácil como elegir la música y arrastrar el código:

2026-01-08 22_32_49-Greenshot.png

Si te sabe a poco aquí tienes más

Jugando fuerte con Python

Maqueta: Intermitente led amarillo

Nos vamos a https://python.microbit.org/ y ponemos este código:

from microbit import *
display.show(Image.HOUSE)
pin16.write_digital(0)
while True:
    pin16.write_digital(1)
    sleep(1000)
    pin16.write_digital(0)
    sleep(1000)

2025-11-06 14_56_27-Mattermost Desktop App.png

Jugando fuerte con Python

Maqueta: LED amarillo intermitente gradual

Vamos a hace lo mismo pero que el brillo vaya del mínimo 0 al máximo 255 y viceversa, aprovechando las señales PWM

from microbit import *
display.show(Image.HOUSE)
pin16.write_digital(0)
brillo=0
while True:
    for brillo in range (0, 255):
        pin16.write_analog(brillo)
        sleep(5)
    while brillo >0 :
        pin16.write_analog(brillo)
        brillo = brillo -1
        sleep(5)


¿Qué es eso de señal PWM?

Arduino, ESP32, Micro:bit, PicoW...  tienen entradas analógicas y digitales. Pero salidas sólo digitales.

Para simular una salida analógica entre 0V y 5V  se utilizan señales digitales PWM. En Arduino sólo tiene 6 salidas pseudo-analógicas. En los pines digitales 3, 5, 6, 8, 10 y 11 son PWM

¿Qué es eso de PWM? La señal PWM (Pulse Width Modulation, Modulación de Ancho de Pulso) es una señal que utiliza el microcontrolador para generar una señal continua sobre el proceso a controlar. Por ejemplo, la variación de la intensidad luminosa de un led, el control de velocidad de un motor de corriente continua,...

Para que un dispositivo digital, microcontrolador de la placa Arduino, genere una señal continua lo que hace es emitir una señal cuadrada con pulsos de frecuencia constante y tensión de 5V. A continuación, variando la duración activa del pulso (ciclo de trabajo) se obtiene a la salida una señal continua variable desde 0V a 5V.

Veamos gráficamente la señal PWM:

Los pines digitales de la placa Arduino que se utilizan como salida de señal PWM generan una señal cuadrada de frecuencia constante (490Hz), sobre esta señal periódica por programación podemos variar la duración del pulso como vemos en estos 3 casos:

Ejemplo en código ArduinoIDE y Arduino
Para ejecutar una señal PWM, es simplemente analogWrite(analogOutPin, outputValor); donde analogOutPin es el número del Pin PWM, acuérdate que sólo puede ser uno de estos 6 : 3, 5, 6, 8, 10 y 11 y outpuValor es el valor de la señal PWM pero ojo desde 0 a 255 es decir si quieres el valor de 0V tienes que poner 0, si quieres el valor de 5V tienes que poner 255 y si quieres poner un valor medio, haz una regla de tres, por ejemplo 2.5V tienes que poner 255/2=127 o 128 da igual
Otro ejemplo en Python con Micro:bit
pin16.write_analog(brillo) donde brillo puede ir de 0 a 255

Jugando fuerte con Python

Maqueta: Neopixel RGB

Vamos a hacer una discoteca !!!

from microbit import *
import neopixel
NEOPIXEL = neopixel.NeoPixel(pin14, 4)
from random import randint

while True:
   for index in range(0, 4):
        NEOPIXEL.clear()
        NEOPIXEL[index] = (randint(10, 255), randint(10, 255), randint(10, 255))
        NEOPIXEL.show()
        sleep(100)

Jugando fuerte con Python

Maqueta : Sensor PIR

Vamos a visualizar la lectura del sensor PIR por el puerto serie:

from microbit import *
DETECTO = 0
display.show(Image.SILLY)
while True:
    DETECTO = pin15.read_digital()
    print("digital signals:", DETECTO)
    sleep(100)

El resultado :

2025-11-06 14_58_25-Mattermost Desktop App.png


Jugando fuerte con Python

Servos

Hay varias opciones para manejar servos con micro:bit y python

Opción A: Lo más sencillo enviar un pulso adecuado

Los servos funcionan según la anchura del pulso que se envía, siendo los pulsos de 20mseg. Se explica mejor con una imagen :

arduino-servo-funcionamiento.webp
Autor Luis Llamas CC-BY-SA https://www.luisllamas.es/controlar-un-servo-con-arduino/

  1. Por lo tanto podríamos establecer primero pulsos de 20 mseg con la instrucción adecuada (por ejemplo en la pueta pin 8 sería pin8.set_analog_period(20) )
  2. Enviar pulsos de forma adecuada. Ejemplo en puerta pin 8
    1. si queremos 0º enviamos pulsos de 1mseg que equivale a pin8.write_analog(50)
    2. si queremos 90º enviamos pulsos de 1.5mseg que equivale a pin8.write_analog(75)
    3. si queremos 180º enviamos pulsos de 2mseg que equivale a pin8.write_analog(100)

Los valores no responden a una regla de tres (en teoría 20mseg serían 255 en formato PWM) sino a la experiencia-ensayo-prueba-error. Hemos probado que para la puerta los valores 50-75-100 son correctos. Para la ventana que se ve bien la apertura y cierre los valores son 30-60-100

Mas info en https://support.microbit.org/support/solutions/articles/19000101864-using-a-servo-with-the-micro-bit

Opción B Cargar una librería servo.py
  1. Nos vamos a https://github.com/microbit-playground/microbit-servo-class y descargamos servo.py
  2. Lo grabamos en la carpeta /mu_code/ donde se ha instalado el editor Mu
  3. Utilizamos el código usando esta librería y poniendo los grados como grados

Por ejemplo para la puerta pin 8

sv1 = Servo(pin8)
sv1.write_angle(50) # turn servo to 50 degrees 

Si quieres saber cómo se instala una librería, consulta la página LCD que ahí se ha instalado una librería https://libros.catedu.es/books/smart-home-para-microbit/page/maqueta-lcd

Opción C Crea tu una librería en tu programa

Esta opción esta extraída del tutorial del fabricante https://docs.keyestudio.com/projects/KS4027-KS4028/en/latest/Python.html#project-6-servo

No explicamos el código pues se extiende de los objetivos del curso

from microbit import *

class Servo:
    def __init__(self, pin, freq=50, min_us=600, max_us=2400, angle=180):
        self.min_us = min_us
        self.max_us = max_us
        self.us = 0
        self.freq = freq
        self.angle = angle
        self.analog_period = 0
        self.pin = pin
        analog_period = round((1/self.freq) * 1000)  # hertz to miliseconds
        self.pin.set_analog_period(analog_period)

    def write_us(self, us):
        us = min(self.max_us, max(self.min_us, us))
        duty = round(us * 1024 * self.freq // 1000000)
        self.pin.write_analog(duty)
        sleep(100)
        self.pin.write_analog(0)

    def write_angle(self, degrees=None):
        if degrees is None:
            degrees = math.degrees(radians)
        degrees = degrees % 360
        total_range = self.max_us - self.min_us
        us = self.min_us + total_range * degrees // self.angle
        self.write_us(us)

Servo(pin8).write_angle(0)
display.show(Image.HAPPY)

while True:
        Servo(pin8).write_angle(0)
        sleep(1000)
        Servo(pin8).write_angle(45)
        sleep(1000)
        Servo(pin8).write_angle(90)
        sleep(1000)
        Servo(pin8).write_angle(135)
        sleep(1000)
        Servo(pin8).write_angle(180)
        sleep(1000)

Jugando fuerte con Python

Maqueta puerta

Utilizaremos la versión sencilla de manejo de los servos :

from microbit import * 
 
pin8.set_analog_period(20) # pulsos de 20 milisegundos cada uno

while True: 
  
  pin8.write_analog(50)  #equivale a 1mseg de pulso a la derecha
  sleep(1000)
  pin8.write_analog(75) #equivale a a 1.5mseg
  sleep(1000)
  pin8.write_analog(100) #equivale a 2mseg de pulso todo a la izquierda
  sleep(1000)

Jugando fuerte con Python

Maqueta: Ventana

Para la ventana hemos usado el mismo código pero jugando, hemos visto que la ventana cierra mejor a valores más bajos

el código

from microbit import * 
 
pin9.set_analog_period(20) # pulsos de 20 milisegundos cada uno

while True: 
  
  pin9.write_analog(30)  #equivale a 1mseg de pulso a la derecha
  sleep(1000)
  pin9.write_analog(60) #equivale a a 1.5mseg
  sleep(1000)
  pin9.write_analog(100) #equivale a 2mseg de pulso todo a la izquierda
  sleep(1000)

Jugando fuerte con Python

Maqueta: Motor

El motor tiene un sencillo funcionamiento:

PIN12 PIN13 MOTOR
0 0 PARADO
0 1 ROTACIÓN SENTIDO RELOJ
1 0 ROTACIÓN SENTIDO ANTIRELOJ
1 1 PARADO

Pero con Pytho no sólo podemos poner los pines 12 y 13 a 0 o 1 sino también podemos poner su potencia

Valora qué pasa en cada una de las 4 situaciones siguiente

from microbit import *

pin12.write_digital(0)
pin13.write_digital(0)

while True:
    # 1 Que pasa 1 ##########♥1
    display.scroll('1')
    pin12.write_digital(1)
    pin13.write_analog(50)
    sleep(5000)
    # Paramos 
    pin12.write_digital(0)
    pin13.write_analog(0)
    sleep(1000)
    # 2 Que pasa 2  ##########♥2
    display.scroll('2')
    pin12.write_digital(1)
    pin13.write_analog(255)
    sleep(5000)
    # Paramos 
    pin12.write_digital(0)
    pin13.write_analog(0)
    sleep(1000)
    # 3 Que pasa 3  ##########♥3
    display.scroll('3')
    pin12.write_digital(1)
    pin13.write_digital(0)
    sleep(5000)
    # Paramos 
    pin12.write_digital(0)
    pin13.write_analog(0)
    sleep(1000)
    # 4 Que pasa 4  ##########♥4
    display.scroll('4')
    pin12.write_digital(1)
    pin13.write_digital(1)
    sleep(5000)
    # Paramos 
    pin12.write_digital(0)
    pin13.write_analog(0)
    sleep(1000)
    # 5 Que pasa 5  ##########♥5
    display.scroll('5')
    pin12.write_digital(0)
    pin13.write_digital(1)
    sleep(5000)
    # Paramos 
    pin12.write_digital(0)
    pin13.write_analog(0)
    sleep(1000)

Jugando fuerte con Python

Maqueta: LCD

El display LCD no es nativo, y no hay una solución simple como en los servos (ver https://libros.catedu.es/books/smart-home-para-microbit/page/servos) luego tenemos que incorporar UNA LIBRERIA EXTERNA para LCS 16x2 (16 columnas 2 filas)

La librería mb_i2c_lcd1602.py

La puedes descargar aquí https://github.com/Pratt-Institute/MicroPython4MicroBit/blob/master/mb_i2c_lcd1602.py

2025-11-06 14_04_54-Configuración.png

Vamos a utilizar el editor Python online https://python.microbit.org/

Abrimos un nuevo proyecto y le damos a Open

2025-11-06 14_07_22-Configuración.png

Abrimos el fichero mb_i2c_lcd1602.py que hemos descargado anteriormente 

nos pide si queremos reemplazar el contenido de main.py LE DECIMOS QUE NO, que añada un nuevo fichero mb_i2c_lcd1602.py OJO QUE HAY QUE DAR AL ICONO PEQUEÑO que pone en esa imagen

2025-11-06 14_08_31-Configuración.png

Nuestro programa

Confirmamos, vamos al main.py y pegamos este código

from mb_i2c_lcd1602 import *

l = LCD1620()
l.puts("Hola microbit!")

Y send to micro:bit

2025-11-06 14_15_04-Configuración.png

Resultado

2025-11-06 14_16_34-WhatsApp.png

Jugando fuerte con Python

Maqueta Sensor lluvia

No necesitamos ninguna librería especial. Simplemente leer los valores analógicos del Pin 0. En este caso lo visualizamos por el puerto serie :

from microbit import *
while True:
    val = pin0.read_analog()
    print("Humedad=", val)
    sleep(100)

Para leer el puerto serie en https://python.microbit.org/ lo tienes aquí :

2025-11-06 14_24_00-Configuración.png

ALARMA LLUVIA

El proyecto pide una alarma. El siguiente código es extraído de https://docs.keyestudio.com/projects/KS4027-KS4028/en/latest/Python.html#project-11-rains-alarm

from microbit import *
import music
display.show(Image.HAPPY)

pin16.write_digital(0)

while True:
    if pin0.read_analog() > 500:
        music.play("C5:4")
        pin16.write_digital(1)
        sleep(100)
        music.reset()
        pin16.write_digital(0)
        sleep(100)
        music.play("C5:4")
        pin16.write_digital(1)
        sleep(100)
        music.reset()
        pin16.write_digital(0)
        sleep(100)
    else:
        music.reset()
        pin16.write_digital(0)

Una vez mojado el sensor, si se seca y queda por debajo de 500 se apaga la alarma:

 

Jugando fuerte con Python

Maqueta: Sensor Gas

Vamos a realizar un detector de gas

from microbit import *
import music

pin16.write_digital(0)

while True:

    if pin1.read_digital() == 0:
        music.play("C4:4")
        pin16.write_digital(1)
        sleep(100)
        music.reset()
        pin16.write_digital(0)
        sleep(100)
    else:
        music.reset()
        pin16.write_digital(0)

En este caso acercamos una botella de Alcohol

RETO visualiza la lectura del sensor gas por el pueto serie:
Solución https://docs.keyestudio.com/projects/KS4027-KS4028/en/latest/Python.html#project-12-analog-gas-mq-2-sensor

 

Jugando fuerte con Python

Maqueta DHT11

Se ha intentado el código de fgcoca y no ha resultado

Se ha intentado con la librería version_2 y con el siguiente código

# Imports go at the top
from microbit import *
from version_2 import *

SENSOR = DHT11(pin2)
while True:
    display.show(Image.HEART)
    t , h = SENSOR.read()
    print("Temperatura=",t)
    print("Humedad=",h)
    sleep(2000)

Y tampoco ha funcionado, el error lo sigue dando el chequeo de error. Si en la librería version_2 se anula, por el puerto serie no salen los valores correctos.

Si consigues hacer funcionar el DHT11 de la maqueta con Python dínoslo, https://catedu.es/informacion/

🤔🤔Que curioso que el fabricante no ha puesto código Python en su tutorial https://docs.keyestudio.com/projects/KS4027-KS4028/en/latest/Python.html#expansion-projects

2025-11-08 12_59_46-Configuración.png

Para saber más ....

MATERIAL KS4027 MICROBIT SMART HOME de Keystudio
(English)

El fabricante pone a disposición numeroso material en este Dropbox que hay que matizar :

Página oficial Keystudio KS4027 KS4028 Smart Home Kit for Micro:bit
(English)

Encontramos numeroso material para la maqueta (replica del anterior Dropbox pero online)

MANUAL DE USO DE SMARTHOME CON MICROBLOCKS
(Catalán)

En este enlace https://drive.google.com/file/d/1Im1-M6GKotzSo-bzsveeBFXFDWAndteQ/view

2025-11-08 13_07_06-Manual - PDF-XChange Viewer.png

Créditos

Autores:

Cualquier observación o detección de error en soporte.catedu.es

Los contenidos se distribuyen bajo licencia Creative Commons tipo BY-NC-SA excepto en los párrafos que se indique lo contrario.

image-1648462225402.gif

image-1648462299882.png

image-1648462361893.png