Télémétrie de capteur 2.0.1 – Surveillance avancée de température avec Azure IoT Hub
Histoire
MISE À JOUR : La télémétrie de capteur a été remaniée et renommée en 2.0.1.
Introduction
Vue d'ensemble
Ce projet montre comment lire un capteur de température MCP9808 haute précision sur un Raspberry Pi, envoyer la télémétrie vers Azure IoT Hub, traiter les données avec Stream Analytics et les stocker dans Azure SQL. Une application mobile UWP affiche l'historique du capteur et permet le contrôle à distance via SignalR.
L'application
Deux applications UWP partagent ~99 % de leur code : l'une s'exécute sur le Raspberry Pi (côté IoT) et l'autre sur un PC (côté client). L'application IoT envoie les données du capteur vers IoT Hub et SignalR, tandis que l'application cliente s'abonne à SignalR pour les mises à jour en temps réel et peut envoyer des commandes vers l'appareil.
Technologies
La base de code suit le pattern MVVM avec Prism (Prism.Unity pour l'IoC) et Prism.Event pour un système d'événements faiblement couplé. SignalR assure la communication en temps réel entre les instances d'application.
Architecture
La bibliothèque MCP9808 principale est un composant UWP réutilisable. Dans l'application cliente, les Vues sont associées aux ViewModels ; trois dépôts gèrent les paramètres, les logs de débogage et les données du capteur. Le Mcp9808TemperatureRepository publie un événement de changement de température uniquement lorsque la lecture change. Les services en arrière-plan gèrent la télémétrie, les minuteurs, la surveillance de la broche d'alerte, le contrôle des LED, la gestion du bouton poussoir, le relais de notifications et la journalisation de débogage.
Service de télémétrie
Écoute les changements de température et transmet les messages vers Azure Service Bus Event Hub.
Service de minuteur
Publie un tick de 500 ms ; utilisé pour l'affichage de l'heure UI et l'interrogation du capteur (intervalles de 1 s).
Service de surveillance de la broche d'alerte
Détecte les changements GPIO sur la broche d'alerte MCP9808 et publie des événements.
Service LED
Contrôle les LED en fonction des alertes de température.
Service de surveillance du bouton poussoir
Gère la réinitialisation manuelle d'alerte via un bouton poussoir GPIO.
Service de relais de notification
Mappe les événements internes vers des messages SignalR, permettant la communication inter-applications.
Service de console de débogage
Collecte et expose les événements de débogage pour l'UI.
Initialisation de l'application
L'application lance StartPage, qui initialise les services avant de naviguer vers la vue principale.
Mise en route
Exigences du circuit
- Grande plaque d'essai sans soudure (cobbler Vilros en T optionnel)
- Module MCP9808 (Adafruit)
- 4 LED, résistances 220 Ω, résistances de tirage 10 k Ω, bouton poussoir momentané
Assemblage
- Connectez les LED aux GPIO 18 (bleu), 23 (vert), 12 (rouge), 16 (jaune) avec 220 Ω vers 3,3 V.
- MCP9808 : VDD→3,3 V, GND→GND, SCL→GPIO 5, SDA→GPIO 3, ALERT→GPIO 6, tirage 10 k Ω vers 3,3 V.
- Bouton poussoir : un côté vers GPIO 5, l'autre vers GND, tirage 10 k Ω vers 3,3 V.
Des photos de la plaque d'essai terminée sont disponibles dans la galerie ci-dessous.
Exigences Microsoft Azure
Créez un compte Azure gratuit (crédit 200 $ USD) sur azure.com. Connectez-vous au portail Azure.
Configuration Azure IoT Hub
- Nouveau → Internet des objets → IoT Hub
- Nom unique, abonnement, groupe de ressources (créer nouveau), emplacement (même région)
- Niveau tarifaire : F1 Gratuit (un seul niveau gratuit par compte)
- Attendez le déploiement, puis consultez la vue d'ensemble du hub.
Créer un appareil
- Téléchargez le SDK Azure IoT pour C# depuis GitHub et ouvrez DeviceExplorer dans Visual Studio.
- Collez la chaîne de connexion IoT Hub (depuis hub > Politiques d'accès partagé > iothubowner).
- Créez un appareil (ex: TemperatureDevice1) avec clés auto-générées.
Configuration Azure SQL Database
- Bases de données SQL → Ajouter → Nom : SensorTelemetry.
- Utilisez le groupe de ressources existant ; créez un nouveau serveur avec nom unique, nom d'utilisateur/mot de passe admin, niveau Basic, même région.
- Configurez le pare-feu pour autoriser votre IP.
Créer la table de base de données
- Ouvrez l'Explorateur d'objets SQL Server dans Visual Studio, connectez-vous au serveur Azure SQL.
- Exécutez le script CREATE TABLE fourni pour créer
SensorReadings.
Créer un plan App Service et une application mobile
- Plans App Service → Nouveau, nom, groupe de ressources existant, emplacement, niveau Basic B1.
- Nouveau → Web+Mobile → Application mobile, nom, abonnement, groupe de ressources existant, plan App Service choisi.
Configuration Azure Stream Analytics
- Nouveau → Données + Analytique → Travail Stream Analytics.
- Configurez l'entrée comme IoT Hub, la sortie comme table Azure SQL.
- Utilisez la requête : SELECT [TimestampUtc], Source, Temperature, IsCritical, IsAboveUpperThreshold, IsBelowLowerThreshold INTO [YourOutputAlias] FROM [YourInputAlias];
- Démarrez le travail.
Configuration du logiciel
Téléchargez le code source depuis le lien du dépôt et ouvrez la solution dans Visual Studio.
Publier l'application mobile
- Clic droit sur le projet Web → Publier → Microsoft Azure App Service → sélectionnez votre App Service.
- Copiez la chaîne de connexion Azure SQL (ADO.NET) et collez-la dans
MS_TableConnectionStringdu projet, mettez à jour nom d'utilisateur/mot de passe. - Publiez ; le site web se lance automatiquement.
Entrer les identifiants IoT Hub
- Dans
App.xamldu projet UWP, remplacez{YOUR CONNECTION STRING HERE}par la chaîne de connexion de l'appareil depuis Device Explorer. - Remplacez
{YOUR DEVICE ID HERE}par l'ID d'appareil créé.
Entrer l'URL de l'application mobile
- Dans
UnityConfiguration.cs, collez l'URL App Service (copiée depuis le portail Azure) dans{YOUR MOBILE SERVICES URL HERE}.
Pour des instructions détaillées, consultez la documentation complète de Sensor Telemetry 2.0.1.
Processus de fabrication
- Étallonnage des Capteurs : Définition, Méthodes et Applications Clés
- Capteur de rythme cardiaque : fonctionnement et applications pratiques
- Capteur de température infrarouge TMP006 avec Raspberry Pi : bibliothèque Python et guide de configuration
- Contrôler une LED avec un capteur de mouvement PIR sur Raspberry Pi
- Construire un capteur d'humidité du sol Raspberry Pi low-cost pour irrigation intelligente
- Test du capteur de température DS18B20 sur Raspberry Pi
- Construire un moniteur de température domestique avec Raspberry Pi, MCP9808, InfluxDB et Grafana
- Télémétrie de capteur 2.0.1 – Surveillance avancée de température avec Azure IoT Hub
- Capteur d'émotion & EEG : Matériel low-cost pour détection d'émotion en temps réel