Sensor Telemetry 2.0.1 – Monitorización Avanzada de Temperatura con Azure IoT Hub
Sensor Telemetry 2.0.1 entrega datos de temperatura en tiempo real desde un sensor MCP9808 a Microsoft Azure IoT Hub. El sistema procesa telemetría con Azure Stream Analytics, almacena resultados en Azure SQL y visualiza el historial en una app Universal Windows para móvil. Actualizado 17 mayo 2017.
Historia
ACTUALIZACIÓN: Sensor Telemetry ha sido rehecho y renombrado a 2.0.1.
Introducción
Resumen
Este proyecto muestra cómo leer un sensor de temperatura de alta precisión MCP9808 en una Raspberry Pi, enviar telemetría a Azure IoT Hub, procesar los datos con Stream Analytics y persistir lecturas en Azure SQL. Una app UWP móvil muestra el historial del sensor y permite control remoto vía SignalR.
La Aplicación
Dos apps UWP comparten ~99% de su código: una corre en la Raspberry Pi (lado IoT) y la otra en PC (lado cliente). La app IoT envía datos del sensor a IoT Hub y SignalR, mientras la app cliente se suscribe a SignalR para actualizaciones en tiempo real y puede enviar comandos de vuelta al dispositivo.
Tecnologías
El código sigue MVVM con Prism (Prism.Unity para IoC) y Prism.Event para un sistema de eventos débilmente acoplado. SignalR impulsa la comunicación en tiempo real entre instancias de la app.
Arquitectura
La librería principal MCP9808 es un componente UWP reutilizable. En la app cliente, las Vistas se emparejan con ViewModels; tres repositorios gestionan ajustes, logs de depuración y datos del sensor. El Mcp9808TemperatureRepository publica un evento de cambio de temperatura solo cuando la lectura cambia. Servicios en segundo plano manejan telemetría, temporizadores, monitorización de pin de alerta, control de LED, manejo de pulsador, relé de notificaciones y logging de depuración.
Servicio de Telemetría
Escucha cambios de temperatura y reenvía mensajes a Azure Service Bus Event Hub.
Servicio de Temporizador
Publica un tick de 500 ms; usado para mostrar hora en UI y sondeo del sensor (intervalos de 1 s).
Servicio de Monitorización de Pin de Alerta
Detecta cambios GPIO en el pin de alerta del MCP9808 y publica eventos.
Servicio LED
Controla LEDs basándose en alertas de temperatura.
Servicio de Monitorización de Pulsador
Gestiona reinicio manual de alerta vía pulsador GPIO.
Servicio de Relé de Notificaciones
Mapea eventos internos a mensajes SignalR, permitiendo comunicación entre apps.
Servicio de Consola de Depuración
Recopila y expone eventos de depuración para la UI.
Inicialización de la Aplicación
La app lanza StartPage, que arranca los servicios antes de navegar a la vista principal.
Primeros Pasos
Requisitos del Circuito
- Protoboard grande sin soldar (cobbler Vilros en T opcional)
- Breakout MCP9808 (Adafruit)
- 4 LEDs, resistencias 220 Ω, pull-ups 10 kΩ, pulsador momentáneo
Montaje
- Conecta LEDs a GPIO 18 (azul), 23 (verde), 12 (rojo), 16 (amarillo) con 220 Ω a 3.3 V.
- MCP9808: VDD→3.3 V, GND→GND, SCL→GPIO 5, SDA→GPIO 3, ALERT→GPIO 6, pull-up 10 kΩ a 3.3 V.
- Pulsador: un lado a GPIO 5, otro a GND, pull-up 10 kΩ a 3.3 V.
Fotos del protoboard terminado disponibles en la galería.
Requisitos de Microsoft Azure
Crea una cuenta Azure gratis (crédito 200 USD) en azure.com. Inicia sesión en portal.azure.com.
Configuración de Azure IoT Hub
- Nuevo → Internet de las Cosas → IoT Hub
- Nombre único, suscripción, grupo de recursos (crear nuevo), ubicación (misma región)
- Plan de precios: F1 Gratis (un solo nivel gratis por cuenta)
- Espera despliegue y revisa la vista general del hub.
Crear un Dispositivo
- Descarga Azure IoT SDK para C# desde GitHub y abre DeviceExplorer en Visual Studio.
- Pega la cadena de conexión de IoT Hub (desde hub > Políticas de acceso compartido > iothubowner).
- Crea un dispositivo (ej. TemperatureDevice1) con claves auto-generadas.
Configuración de Azure SQL Database
- SQL Databases → Añadir → Nombre: SensorTelemetry.
- Usa grupo de recursos existente; crea nuevo servidor con nombre único, usuario/contraseña admin, nivel Basic, misma región.
- Configura firewall para permitir tu IP.
Crear Tabla en la Base de Datos
- Abre SQL Server Object Explorer en Visual Studio, conéctate al servidor Azure SQL.
- Ejecuta el script CREATE TABLE proporcionado para crear
SensorReadings.
Crear Plan de App Service y Mobile App
- App Service plans → Nuevo, nombre, grupo de recursos existente, ubicación, nivel Basic B1.
- Nuevo → Web+Mobile → Mobile App, nombre, suscripción, grupo de recursos existente, plan de App Service elegido.
Configuración de Azure Stream Analytics
- Nuevo → Data + Analytics → Stream Analytics Job.
- Configura entrada como IoT Hub, salida como tabla Azure SQL.
- Usa query: SELECT [TimestampUtc], Source, Temperature, IsCritical, IsAboveUpperThreshold, IsBelowLowerThreshold INTO [YourOutputAlias] FROM [YourInputAlias];
- Inicia el job.
Configuración del Software
Descarga el código fuente del enlace del repositorio y abre la solución en Visual Studio.
Publicar la Mobile App
- Clic derecho en proyecto Web → Publicar → Microsoft Azure App Service → selecciona tu App Service.
- Copia la cadena de conexión Azure SQL (ADO.NET) y pégala en
MS_TableConnectionStringen el proyecto, actualizando usuario/contraseña. - Publica; el sitio web se lanza automáticamente.
Introducir Credenciales de IoT Hub
- En
App.xamldel proyecto UWP, reemplaza{YOUR CONNECTION STRING HERE}con la cadena de conexión del dispositivo desde Device Explorer. - Reemplaza
{YOUR DEVICE ID HERE}con el ID de dispositivo creado.
Introducir URL de Mobile App
- En
UnityConfiguration.cs, pega la URL del App Service (copiada del portal Azure) en{YOUR MOBILE SERVICES URL HERE}.
Para instrucciones detalladas, consulta la documentación completa de Sensor Telemetry 2.0.1.
Proceso de manufactura
- Sensor infrarrojo TMP006 con Raspberry Pi: librería Python y guía de configuración
- Controle un LED con Sensor PIR de Movimiento en Raspberry Pi
- Construya un Sensor de Humedad de Suelo de Bajo Coste para Riego Inteligente con Raspberry Pi
- Prueba del Sensor de Temperatura DS18B20 en Raspberry Pi
- Monitor de temperatura casero con Raspberry Pi, MCP9808, InfluxDB y Grafana
- Sensor Telemetry 2.0.1 – Monitorización Avanzada de Temperatura con Azure IoT Hub
- Sensor de Emociones y EEG: Hardware de Bajo Coste para Detección de Emociones en Tiempo Real
- UnifiedWater v1 – Kit completo de sensor de calidad de agua con Arduino
- Entendiendo el sensor de oxígeno (O2): función, ubicación y señales de fallo
- Calibración de Sensores Explicada: Definición, Métodos y Aplicaciones Clave
- Sensor de Latido Cardíaco: Cómo Funciona y Aplicaciones Prácticas