Recollida de datos dende sensores bluetooth¶
Cando creamos unha observación, ademais dos datos multimedia que podes obter do teu teléfono, Peneira pode obter datos de sensores bluetooth para incluílos nas túas observacións. Referímonos a diferentes tipos de sensores para medir a luz solar, o ruído, o CO₂, a humidade, a temperatura, a presión, a calidade do aire ou calquera outro parámetro ambiental ou industrial.

Para principiantes
Aquí tes unha guía paso a paso sobre como facelo usando dispositivos amigables como micro:bit e sensores analóxicos, incluíndo exemplos descargables listos para usar.
Para usuarios avanzados
Aquí tes instrucións detalladas para que poidas configurar o teu propio dispositivo para enviar datos a través de Bluetooth nun formato que Peneira entenda. Esta información é independente do tipo de hardware empregado: poden ser placas Arduino, micro:bit, Raspberry Pi ou outros dispositivos similares.
Configurar o teu dispositivo para enviar datos a Peneira¶
Esta guía explica como debes deseñar o teu dispositivo para enviar datos a través de Bluetooth no formato correcto. Esta documentación é independente do tipo de hardware empregado: poden ser placas Arduino, micro:bit, Raspberry Pi ou outros dispositivos similares.
Podes usar varios tipos de sensores, como medir a luz solar, o ruído, o CO₂, a humidade, a temperatura, a presión, a calidade do aire ou calquera outro parámetro ambiental ou industrial. O que realmente importa é que o dispositivo exporte os datos nun formato JSON estandarizado.
Especificacións de formato de datos¶
O dispositivo debe enviar datos en formato JSON, cunha estrutura clara que permita á aplicación analizar e mostrar a información. O JSON debe incluír:
- timestamp: Timestamp no formato ISO8601 (por exemplo,
"2024-12-11T10:00:00Z"). - device_name: Nome ou identificador único do dispositivo (por exemplo,
"HM-10_Sensor_Node_001"). - owner: Nome ou identificador do propietario do dispositivo.
- description: Breve descrición da función ou localización do dispositivo.
- sensores: Matriz de obxectos, un para cada sensor, no seguinte formato:
- name: Nome do sensor (por exemplo, "Temperatura", "Humidade", "CO2", "Luz", "Ruído", etc.).
- value: Valor numérico da medición.
- unit: Unidade de medida (por exemplo, "°C", "%", "ppm", "lux", "dB").
Exemplo dun formato JSON correcto¶
{
"timestamp": "2024-12-11T10:00:00Z",
"device_name": "HM-10_Sensor_Node_001",
"owner": "Nome do admin",
"description": "Sensor instalado na aula",
"sensors": [
{
"name": "Temperatura",
"value": 25.3,
"unit": "°C"
},
{
"name": "Humidade",
"value": 58.2,
"unit": "%"
},
{
"name": "CO2",
"value": 350,
"unit": "ppm"
},
{
"name": "Luz",
"value": 12000,
"unit": "lux"
},
{
"name": "Ruido",
"value": 42,
"unit": "dB"
}
]
}
Comunicación por Bluetooth¶
O dispositivo debe usar un módulo Bluetooth LE (por exemplo, un HM-10) e debe estar configurado para:
- Enviar datos periodicamente.
- Usar o servizo e a funcionalidade que a aplicación espera (no exemplo, o servizo
0000ffe0-0000-1000-8000-00805f9b34fbe a funcionalidade0000ffe1-0000-1000-8000-00805f9b34fb). - Se o dispositivo non é un HM-10, informar aos usuarios do UUID exacto do servizo e da funcionalidade.
Envía cada mensaxe JSON seguida dun salto de liña (\n), para que a aplicación poida detectar o final de cada mensaxe. Por exemplo, en Arduino:
Isto facilita que a aplicación distinga as mensaxes completas dos fragmentos parciais.
Asegúrate de que o JSON completo cabe no paquete ou ten en conta que pode chegar fragmentado. A aplicación implementa un búfer para reconstruír a mensaxe completa antes de analizala.
Recomendacións de Deseño de Dispositivo¶
- Identificación clara do dispositivo: usa un nome de dispositivo único e representativo, que axude aos usuarios a recoñecer o dispositivo na lista de Bluetooth. Por exemplo:
"HM-10_Sensor_Node_001"ou"Greenhouse_Node_A". - Descrición e metadatos: usa o propietario e a descrición para proporcionar contexto: quen é o propietario do dispositivo, onde se coloca, cal é a súa función. Isto axuda ao usuario final a comprender a orixe dos datos.
- Estrutura do sensor: cada sensor debe ter un nome claro, un valor numérico e unha unidade estandarizada. Por exemplo, "Temperatura" → °C, "Humidade" → %, "CO2" → ppm, "Luz" → lux, "Ruído" → dB.
- Frecuencia de envío: envía datos periodicamente a intervalos razoables (por exemplo, cada 5 ou 10 segundos). A aplicación está preparada para recibir datos a estes intervalos, mostrándoos segundo chegan.
Seguindo estas pautas, os usuarios poden deseñar os seus dispositivos (Arduino, micro:bit, Raspberry Pi ou outro hardware) con varios sensores ambientais ou industriais e exportar os datos en formato JSON estandarizado a través de Bluetooth. A aplicación está lista para recibir, analizar e mostrar estes datos dun xeito claro e accesible, garantindo unha integración sen fisuras e unha boa experiencia de usuario.
Micro:bit e Peneira¶
Micro:bit é un sistema integrado baseado en ARM, con hardware de código aberto, moi popular e sinxelo, deseñado pola BBC para o seu uso na educación informática no Reino Unido. Está presente en millóns de escolas de todo o mundo. Está deseñado para facilitar a aprendizaxe da programación informática, ao tempo que ofrece moitas funcións e conectividade interesantes.
Neste proxecto de exemplo, imos configurar Micro:bit para conectarse a un sensor de luz e enviar os datos a Peneira a través do sinal Bluetooth.
Necesitas:¶
- Unha placa micro:bit
- Unha proto-placa micro:bit
- Un sensor de luz analóxico
- Se queres que o dispositivo funcione de forma independente, tamén necesitarás unha batería, un cargador portátil ou similar para alimentalo.
Programa a micro:bit¶
Primeiro precisamos crear un programa para ler os datos do sensor e envialos por Bluetooth. Se estás familiarizado con Javascript, o código de embaixo é moi doado de seguir. Podes adaptalo ás túas necesidades.
Abre https://makecode.microbit.org/ e Crea un novo proxecto. Ponlle un nome ao teu proxecto.

Na páxina principal, vai ao menú da esquina superior dereita (icona de engrenaxe) e selecciona "Configuración do proxecto".

Selecciona a primeira opción: "Non se require emparellamento: calquera pode conectarse por Bluetooth". Gardar.

Fai clic na opción Javascript no menú superior azul (xa que queremos pegar o código, non compilalo desde cero na linguaxe Blocks).

Fai clic no menú "+ Extensións" na barra central para engadir as funcións de Bluetooth ao noso programa.
Busca "bluetooth" na barra de busca e fai clic na primeira opción "servizos de bluetooth".

Unha xanela emerxente avisaranos de que a activación dos servizos de Bluetooth eliminará a extensión de radio. Fai clic no botón "Eliminar extensión e engadir Bluetooth".

É hora de engadir o noso código! Elimina o código predeterminado e pega o código a continuación:
let jsonStr = ""
let lightLevel = 0
// Engade UART Bluetooth extension en MakeCode
bluetooth.startUartService()
// Amosa unha cara contenta cando está listo o bluetooth
basic.showIcon(IconNames.Happy)
basic.forever(function () {
// Usaremos 1 sensor de luz conectado ao P1
lightLevel = pins.analogReadPin(AnalogPin.P1)
const data = {
timestamp: control.millis(),
device_name: "micro:bit",
sensors: [
{
name: "Light",
value: lightLevel,
unit: "level"
}
]
}
// Convertiremos a texto e engadiremos un fin de liña '
' ao final
jsonStr = "" + JSON.stringify(data) + "
"
// Envío de data
bluetooth.uartWriteString(jsonStr)
// Agarda 5 segundos e repite
basic.pause(5000)
})
Debería ter este aspecto. Podes ver os comentarios en verde e podes facer os cambios que queiras ou comprobar como queda na linguaxe Blocks.

Agora xa estás listo para descargar este código no teu Micro:bit. Conéctao ao teu ordenador e envía o código.
Conectar a micro:bit à placa e ao sensor de luz¶
Agora que temos o noso micro:bit co programa, necesitamos conectalo a unha placa proto e conectar o sensor de luz ao pin P1 (se queres usar outro pin, lembra cambialo no teu programa).
Para este exemplo, empregamos os seguintes elementos:
- Micro:bit V2
- Internet WIFI Breakout Board For micro:bit (de ElecFreaks)
- 3 cables de ponte (femia-femia) para conectar o sensor à placa
- Sensor de luz analóxico (Keyestudio TEMT6000)
Asegúrate de conectar os cables ao sensor e à placa seguindo o mesmo código de letras (s-v-g) ou non funcionará.
Agora conectámolo a unha fonte de alimentación (baterías ou o teu PC).

Hora de probalo!¶
Unha vez que o noso micro:bit e o sensor funcionan, volvemos a Peneira desde o noso teléfono.
Deberíamos ter un proxecto Peneira cun campo para capturar datos de sensores bluetooth. Cando queiramos completar este campo, debemos premer no botón verde "Escanear bluetooth".
Entón, o noso teléfono comezará a buscar dispositivos bluetooth preto. Debería atopar o noso módulo micro:bit. Se todo é correcto, deberíamos recibir un aviso do noso teléfono, semellante a este.
Deberíamos premer no nome do noso micro:bit e premer en "emparellar" para conectarnos a el.

Unha vez conectado, deberiamos ver a Peneira mostrando os valores do sensor. Neste exemplo, podemos ver o sensor de luz e o nivel capturado. Non obstante, podemos ter varios sensores conectados ao noso micro:bit, polo que poderiamos ter varios datos neste campo.
Activa o control deslizante para confirmar o valor que queremos capturar.

Fai clic en Seguinte campo para confirmar a captura e pasar ao seguinte campo da túa observación.