
Chisme 91 del Lince: consultas SQL con la micro:bit
El Lince de la Noche llevaba semanas apuntando en un cuaderno la temperatura, la luz y el ruido de la cueva. Página tras página, columna tras columna.
—Gata Montesa, necesito saber a qué hora hizo más calor el martes pasado —dijo, pasando hojas con un dedo.
—¿Y vas a mirar mil quinientas líneas una por una? —respondió ella, sin levantar la vista del portátil.
—Es el método tradicional.
—Es el método cansado. Lo que necesitas es una base de datos y hacerle una pregunta.
El Lince miró el cuaderno. El cuaderno, de repente, le pareció muy pequeño.
Consultas SQL: qué vamos a construir
En este chisme aprendemos consultas SQL con datos de verdad. Una micro:bit mide temperatura, luz y sonido, guardamos las lecturas en una tabla y después le hacemos preguntas: ¿cuándo hubo más de 24 grados?, ¿cuál fue el momento más ruidoso?, ¿cuál es la temperatura media de cada hora?
El simulador tiene dos modos. En el modo simulación aparece una mañana de clase inventada, para practicar sin material. En el modo real conectas la micro:bit por USB y las lecturas llegan en directo. Lo pruebas aquí: simulador de consultas SQL con la micro:bit.
SQL es el lenguaje que se usa para consultar bases de datos relacionales. Aquí solo usamos SELECT: leer y preguntar. Los datos los inserta el programa, no tú.
La tabla lecturas, definida con claridad
Una base de datos relacional guarda la información en tablas. Una tabla es una cuadrícula: cada columna es una magnitud y cada fila es una lectura. La nuestra se llama lecturas:
CREATE TABLE lecturas (
fecha_hora TEXT PRIMARY KEY, -- 'AAAA-MM-DD HH:MM:SS'
temperatura INTEGER, -- grados Celsius
luz INTEGER, -- 0 (oscuro) a 255 (muy luminoso)
sonido INTEGER -- 0 (silencio) a 255 (muy ruidoso)
);
| Columna | Tipo | Qué guarda | Clave |
|---|---|---|---|
| fecha_hora | TEXT | Momento de la lectura, por ejemplo 2026-10-13 08:00:00 | Clave primaria |
| temperatura | INTEGER | Grados Celsius, en pasos de 1 grado | |
| luz | INTEGER | Nivel de luz de la micro:bit, de 0 a 255 | |
| sonido | INTEGER | Nivel de sonido de la micro:bit, de 0 a 255 |
La clave primaria es la columna que identifica cada fila y no se puede repetir. Elegimos fecha_hora porque no puede haber dos lecturas en el mismo segundo. Si intentas insertar una fecha que ya existe, la base de datos rechaza la fila. El simulador tiene un botón para comprobarlo.
Cada lectura nueva entra con una orden INSERT, y el simulador te enseña el registro:
INSERT INTO lecturas VALUES ('2026-10-13 08:00:00', 19, 66, 160);
Cómo llegan los datos desde la micro:bit
La micro:bit manda una línea por segundo con tres números separados por comas: 23,120,41 (temperatura, luz y sonido). La página las recibe por Bluetooth (o por cable USB) y cada una se convierte en una fila de la tabla. Necesitas una micro:bit V2, por su sensor de sonido, y Chrome o Edge.
La micro:bit no tiene reloj de calendario, así que la fecha y la hora las pone el ordenador cuando llega cada línea. Los datos no salen de tu ordenador. Si ya conoces la estación del tiempo con micro:bit, esto te resultará familiar.
Paso a paso: preparar la micro:bit
- Abre makecode.microbit.org y crea un Nuevo proyecto.
- Pulsa Extensiones (al final de la lista de bloques, dentro de «Avanzado»), escribe bluetooth y elige la extensión Bluetooth. MakeCode avisará de que quita el bloque de radio: acepta.
- Pulsa el engranaje de arriba a la derecha, entra en Configuración del proyecto y marca «No se requiere emparejamiento: cualquiera puede conectarse por Bluetooth». Sin este paso, la página no podrá conectarse.
- Pulsa JavaScript (arriba, en el centro), borra lo que haya y pega este programa:
// Telemetría: temperatura (°C), luz (0-255) y sonido (0-255) cada segundo
bluetooth.startUartService()
bluetooth.onBluetoothConnected(function () {
basic.showIcon(IconNames.Yes)
})
bluetooth.onBluetoothDisconnected(function () {
basic.showIcon(IconNames.No)
})
basic.forever(function () {
let linea = "" + input.temperature() + "," + input.lightLevel() + "," + input.soundLevel()
bluetooth.uartWriteLine(linea) // por Bluetooth
serial.writeLine(linea) // por cable USB
basic.pause(1000)
})
- Descarga el programa en la micro:bit, con «Conectar y descargar» o arrastrando el archivo .hex a la unidad MICROBIT.
- Cierra la pestaña de MakeCode y pulsa el botón de reset de la micro:bit.
- Abre el simulador de consultas SQL, pasa a Modo real y pulsa Conectar por Bluetooth.
- Elige «BBC micro:bit [letras]» en la ventana del navegador. Cuando conecte, la micro:bit mostrará un ✓ y empezarán a llegar lecturas.
Si no conecta: comprueba que marcaste «No se requiere emparejamiento» y que descargaste el programa después. Quita «BBC micro:bit» de los dispositivos Bluetooth de tu ordenador, pulsa reset y vuelve a probar. Solo una aplicación puede estar conectada a la vez. Si prefieres el cable USB, usa el botón Conectar por cable USB y cierra antes la pestaña de MakeCode: el puerto solo lo puede usar una página.
El programa tiene dos líneas de envío a propósito: bluetooth.uartWriteLine para Bluetooth y serial.writeLine para el cable. Con el mismo programa sirven los dos modos de conexión.
Tus primeras consultas SQL
El simulador trae diez ejemplos con botón: lo pulsas, la consulta aparece en el editor, la ejecutas y ves el resultado. Después la cambias o escribes la tuya. Algunos ejemplos:
SELECT fecha_hora, temperatura FROM lecturas WHERE temperatura > 24;
SELECT elige columnas, FROM dice de qué tabla y WHERE filtra filas. Esta consulta devuelve los momentos en que hizo más de 24 grados.
SELECT fecha_hora, sonido FROM lecturas WHERE sonido > 100 ORDER BY sonido DESC;
ORDER BY ordena. Con DESC, de mayor a menor: los momentos más ruidosos primero.
SELECT SUBSTR(fecha_hora, 12, 2) AS hora,
ROUND(AVG(temperatura), 1) AS temp_media,
MAX(sonido) AS ruido_max
FROM lecturas
GROUP BY hora
ORDER BY hora;
GROUP BY agrupa las filas con la misma hora, y funciones como AVG o MAX resumen cada grupo. Esta es la pregunta de la Gata Montesa, contestada en un instante.
Cuando algo falla, el simulador explica el error en español: una columna que no existe, una comilla sin cerrar o una coma olvidada. Equivocarse con consultas SQL forma parte de aprender.
Qué estamos midiendo realmente
- Temperatura: la micro:bit mide la temperatura de su propio chip, que se calienta al funcionar. Sirve para ver tendencias, no es un termómetro de precisión.
- Luz: usa los LEDs como sensor. El número de 0 a 255 es relativo; no son lux.
- Sonido: también va de 0 a 255 y no son decibelios.
- Hora: la pone el ordenador al recibir la línea, no la micro:bit.
Medir no significa medir bien. Una consulta SQL te da una respuesta exacta a una pregunta sobre datos que pueden no ser exactos. Esa diferencia es ciencia.
Para el aula
- Dibuja la tabla en papel con cinco filas y señala la clave primaria. ¿Qué pasaría si dos filas tuvieran la misma?
- Escribe en lenguaje normal una pregunta sobre los datos y tradúcela a una consulta.
- Predice cuántas filas devolverá una consulta antes de ejecutarla. ¿Acertaste?
- Cambia
ANDporORen una consulta y explica la diferencia. - Toma datos reales en distintos sitios del instituto y compara: pasillo, patio, aula, biblioteca.
- Descarga el CSV y represéntalo en una hoja de cálculo. ¿Coincide con la gráfica?
- ¿Qué datos de la tabla no te fiarías para una conclusión científica y por qué?
Si hiciste el chisme de entrada y salida con sensores, aquí das el siguiente paso: no solo leer el dato, sino guardarlo y consultarlo.
Retos
- Reto 1: haz funcionar el simulador y ejecuta los diez ejemplos.
- Reto 2: resuelve los cinco retos con comprobación automática de la página.
- Reto 3: escribe una consulta que devuelva las lecturas con luz baja y sonido alto a la vez.
- Reto 4: pasa al modo real y guarda unos minutos de datos de tu aula.
- Reto 5: descarga el CSV y analízalo con una hoja de cálculo.
- Reto 6: diseña una pequeña investigación: ¿el ruido del recreo sube la temperatura del patio?
Qué hemos aprendido con las consultas SQL
Una base de datos no es un cuaderno más grande: es un cuaderno al que puedes preguntar. Hemos visto qué es una tabla, qué hace una clave primaria, cómo entra cada lectura con un INSERT y cómo SELECT, WHERE, ORDER BY y GROUP BY sacan respuestas de los datos.
Es el paso natural entre medir y analizar, como en la estación de tierra del CanSat: sensor, dato, conjunto de datos, análisis y conclusión. El Lince, por cierto, ha guardado el cuaderno en un cajón. Con cariño.
Prototipo educativo: las lecturas de la micro:bit no son medidas de laboratorio.




Etiqueta:AIDARAC, ies monterroso, montesteam


