Sensor Telemetry 2.0.1 – Monitoramento Avançado de Temperatura com Azure IoT Hub
Sensor Telemetry 2.0.1 entrega dados de temperatura em tempo real de sensor MCP9808 para Microsoft Azure IoT Hub. O sistema processa telemetria com Azure Stream Analytics, armazena resultados em Azure SQL e visualiza histórico em app móvel Windows Universal. Atualizado em 17 de maio de 2017.
História
ATUALIZAÇÃO: Sensor Telemetry foi remasterizado e renomeado para 2.0.1.
Introdução
Visão Geral
Este projeto demonstra como ler sensor de temperatura de alta precisão MCP9808 em Raspberry Pi, enviar telemetria para Azure IoT Hub, processar dados com Stream Analytics e persistir leituras em Azure SQL. App móvel UWP exibe histórico do sensor e permite controle remoto via SignalR.
A Aplicação
Dois apps UWP compartilham ~99% do código: um roda no Raspberry Pi (lado IoT) e outro no PC (lado cliente). App IoT envia dados do sensor para IoT Hub e SignalR, enquanto app cliente assina SignalR para atualizações em tempo real e pode emitir comandos de volta ao dispositivo.
Tecnologias
Base de código segue MVVM com Prism (Prism.Unity para IoC) e Prism.Event para sistema de eventos fracamente acoplado. SignalR impulsiona comunicação em tempo real entre instâncias do app.
Arquitetura
Biblioteca principal MCP9808 é componente UWP reutilizável. No app cliente, Views pareadas com ViewModels; três repositórios lidam com configurações, logs de debug e dados do sensor. Mcp9808TemperatureRepository publica evento de temperatura alterada apenas quando leitura muda. Serviços em background lidam com telemetria, timers, monitoramento de pino de alerta, controle de LED, botão push, relé de notificações e logging de debug.
Serviço de Telemetria
Escuta mudanças de temperatura e encaminha mensagens para Azure Service Bus Event Hub.
Serviço de Timer
Publica tick de 500 ms; usado para exibição de tempo na UI e polling do sensor (intervalos de 1 s).
Serviço de Monitoramento de Pino de Alerta
Detecta mudanças GPIO no pino de alerta MCP9808 e publica eventos.
Serviço de LED
Controla LEDs baseados em alertas de temperatura.
Serviço de Monitoramento de Botão Push
Lida com reset manual de alerta via botão push GPIO.
Serviço de Relé de Notificação
Mapeia eventos internos para mensagens SignalR, permitindo comunicação inter-app.
Serviço de Console de Debug
Coleta e expõe eventos de debugging para UI.
Inicialização da Aplicação
App lança StartPage, que bootstrappa serviços antes de navegar para view principal.
Começando
Requisitos de Circuito
- Protoboard grande sem solda (Vilros T‑shaped cobbler opcional)
- Breakout MCP9808 (Adafruit)
- 4 LEDs, resistores 220 Ω, pull-ups 10 k Ω, botão push momentâneo
Montagem
- Conecte LEDs aos GPIO 18 (azul), 23 (verde), 12 (vermelho), 16 (amarelo) com 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.
- Botão push: um lado ao GPIO 5, outro a GND, pull-up 10 k Ω a 3.3 V.
Fotos do protoboard finalizado disponíveis na galeria abaixo.
Requisitos Microsoft Azure
Crie conta Azure gratuita (crédito USD 200) em azure.com. Entre em portal.azure.com.
Configuração Azure IoT Hub
- New → Internet of Things → IoT Hub
- Nome único, subscription, resource group (criar novo), location (mesma região)
- Pricing tier: F1 Free (single free tier por conta)
- Aguarde deploy, então revise visão geral do hub.
Criar Dispositivo
- Baixe Azure IoT SDK para C# do GitHub e abra DeviceExplorer no Visual Studio.
- Cole connection string do IoT Hub (de hub > Shared access policies > iothubowner).
- Crie dispositivo (ex: TemperatureDevice1) com chaves auto-geradas.
Configuração Azure SQL Database
- SQL Databases → Add → Name: SensorTelemetry.
- Use resource group existente; crie novo server com nome único, admin username/password, tier Basic, mesma região.
- Configure firewall para permitir seu IP.
Criar Tabela do Banco
- Abra SQL Server Object Explorer no Visual Studio, conecte ao server Azure SQL.
- Execute script CREATE TABLE fornecido para criar
SensorReadings.
Criar App Service Plan & Mobile App
- App Service plans → New, nome, resource group existente, location, tier Basic B1.
- New → Web+Mobile → Mobile App, nome, subscription, resource group existente, App Service plan escolhido.
Configuração Azure Stream Analytics
- New → Data + Analytics → Stream Analytics Job.
- Configure input como IoT Hub, output como tabela Azure SQL.
- Use query: SELECT [TimestampUtc], Source, Temperature, IsCritical, IsAboveUpperThreshold, IsBelowLowerThreshold INTO [YourOutputAlias] FROM [YourInputAlias];
- Inicie job.
Configurando o Software
Baixe fonte do link do repositório e abra solution no Visual Studio.
Publicar Mobile App
- Right‑click Web project → Publish → Microsoft Azure App Service → selecione seu App Service.
- Copie connection string Azure SQL (ADO.NET) e cole em
MS_TableConnectionStringno projeto, atualizando username/password. - Publish; site web lança automaticamente.
Inserir Credenciais IoT Hub
- Em
App.xamldo projeto UWP, substitua{YOUR CONNECTION STRING HERE}por device connection string do Device Explorer. - Substitua
{YOUR DEVICE ID HERE}pelo device ID criado.
Inserir URL Mobile App
- Em
UnityConfiguration.cs, cole URL do App Service (copiada do portal Azure) em{YOUR MOBILE SERVICES URL HERE}.
Para instruções detalhadas, veja documentação completa do Sensor Telemetry 2.0.1.
Processo de manufatura
- Calibração de Sensores Explicada: Definição, Métodos e Aplicações Principais
- Sensor de Batimentos Cardíacos: Como Funciona e Aplicações Práticas
- Entendendo o Sensor de Oxigênio (O2): Função, Localização e Sinais de Falha
- Sensor de Temperatura Infravermelho TMP006 com Raspberry Pi: Biblioteca Python e Guia de Configuração
- Controle um LED com Sensor de Movimento PIR no Raspberry Pi
- Construa um Sensor de Umidade do Solo de Baixo Custo para Irrigação Inteligente com Raspberry Pi
- Testando o Sensor de Temperatura DS18B20 no Raspberry Pi
- Construa Monitor de Temperatura Doméstico com Raspberry Pi, MCP9808, InfluxDB e Grafana
- Sensor Telemetry 2.0.1 – Monitoramento Avançado de Temperatura com Azure IoT Hub
- Sensor de Emoção & EEG: Hardware de Baixo Custo para Detecção de Emoções em Tempo Real