Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Système de Contrôle de Piscine IoT Azure : Capteurs Intelligents & Surveillance à Distance

Composants et Fournitures

ComposantQuantitéNotes
Capteur température étanche DS18B202Rouge = 3-5V, Bleu/Noir = GND, Jaune/Blanc = Data
Relais IoT Power Relay1
Résistance 4.75k ohm21/4W, 5%
Raspberry Pi 2 Modèle B1
Arduino UNO R31

Applications et Services en Ligne

À propos du projet

Vue d'ensemble

Ce projet vise à contrôler et surveiller une piscine à l'aide de capteurs de température, relais et Microsoft Azure. L'inspiration vient du besoin de piloter à distance la piscine de nos enfants (Intex 15' x 48", ~19 000 litres), équipée d'un filtre à sable/pompe, chauffage 11kW et système au sel. L'objectif : surveiller la température de l'eau et de l'air, contrôler pompe, chauffage et système sel pour maintenir une température agréable sans surconsommation.

Système de Contrôle de Piscine IoT Azure : Capteurs Intelligents & Surveillance à Distance

Le Raspberry Pi, Arduino, relais IoT et breadboard sont fixés dans un conteneur plastique étanche avec passages de câbles et ventilation.

Système de Contrôle de Piscine IoT Azure : Capteurs Intelligents & Surveillance à Distance

Capteurs

Deux capteurs DS18B20 étanches (eau piscine + air ambiant) connectés à l'Arduino Uno via bibliothèques Dallas Controls et OneWire. Les températures (en °C) sont envoyées au Raspberry Pi chaque seconde via I2C, séparées par "|".

temperatureData = padRight(String(poolSensor.getTempCByIndex(0)) + "|" + String(outsideSensor.getTempCByIndex(0)), I2C_BUFFER_LEN);
Système de Contrôle de Piscine IoT Azure : Capteurs Intelligents & Surveillance à Distance

Le capteur eau est immergé (rallonge fil sonnette 20 AWG). Le capteur air est collé à l'extérieur du boîtier.

Relais

Le Raspberry Pi contrôle un IoT Power Relay (barre de prises) alimentant pompe et système sel en 110V via sa broche 3.3V. Cette broche active/désactive une paire de prises 110V (éteintes par défaut).

Système de Contrôle de Piscine IoT Azure : Capteurs Intelligents & Surveillance à Distance

Le chauffage 220V/60A n'est pas relayé : il possède un capteur de débit intégré et s'arrête/démarre selon la présence d'eau. Aucun relais 3V/5V → 220V/60A n'était facilement disponible.

Raspberry Pi

Exécute Windows IoT Core Build 10.0.10586.0 et l'application IoTPoolRaspiBackgroundApp (C#, template "Background Application (IoT)" dans VS2015 Update 3) :

Payload JSON envoyé :

{ "PoolName" : "iotpool", "PoolWaterTempC" : 30, "OutsideAirTempC" : 27, "IsPoolPowerOn" : false, "SampleDateTime" : "2016-07-05T23:35:58.0882185Z" }

Le Pi est enregistré comme device dans Azure IoT Hub (via Device Explorer pour obtenir la chaîne de connexion).

Arduino Uno

Connecté aux deux DS18B20, alimenté par le Pi via USB, envoie les températures via I2C (broches SDA/SCL). Voir schéma Fritzing.

Système de Contrôle de Piscine IoT Azure : Capteurs Intelligents & Surveillance à Distance

Code : Two-DS18B20-I2C.ino

Architecture Azure

Tous les composants dans la même région (West US) pour minimiser les coûts de trafic sortant.

Azure IoT Hub (édition gratuite)

Limité à 8 000 messages/jour @ 500 octets. L'envoi 1/min (1 440/jour @ 158 octets) laisse de la marge pour les messages C2D.

Système de Contrôle de Piscine IoT Azure : Capteurs Intelligents & Surveillance à Distance

Azure Streaming Analytics

Job ASA reliant IoT Hub (entrée) → Azure SQL Database (sortie) :

SELECT PoolName, PoolWaterTempC, OutsideAirTempC, IsPoolPowerOn, SampleDateTime INTO sql FROM iothub

Écrit chaque message D2C (1/min) dans la table Pools. Futures améliorations : fonctions d'agrégation pour alertes (ex: moyenne température > 35°C).

Azure SQL Database

Niveau S0 Standard (10 DTUs) pour minimiser les coûts. Table unique Pools :

CREATE TABLE [dbo].[Pools] (
  [Id] INT IDENTITY (1, 1) NOT NULL,
  [PoolName] NVARCHAR (MAX) NULL,
  [PoolWaterTempC] FLOAT (53) NOT NULL,
  [OutsideAirTempC] FLOAT (53) NOT NULL,
  [IsPoolPowerOn] INT NOT NULL,
  [SampleDateTime] DATETIME NOT NULL,
  CONSTRAINT [PK_dbo.Pools] PRIMARY KEY CLUSTERED ([Id] ASC)
);

Azure API App

API RESTful ASP.NET Web API avec authentification par clé API dans l'en-tête HTTP :

api-key : {votre clé API}

Clé définie dans IoTPoolAPI\Controllers\PoolControllers.cs. Méthodes supportées : GET latest, POST poweron/poweroff.

Système de Contrôle de Piscine IoT Azure : Capteurs Intelligents & Surveillance à Distance

Azure Web App

Application ASP.NET Web Forms (IoTPoolWebApp) interagissant avec l'API. Version mobile-friendly disponible.

Système de Contrôle de Piscine IoT Azure : Capteurs Intelligents & Surveillance à Distance

Configuration dans default.aspx.cs (clé API, URLs endpoints). Authentification via Azure Active Directory (AAD) obligatoire. Enregistrer l'app web dans votre tenant AAD, copier Client ID, modifier web.config.

Application Mobile

Développée avec Xamarin Forms (compilée Windows Phone / Windows 10, compatible iOS/Android).

Système de Contrôle de Piscine IoT Azure : Capteurs Intelligents & Surveillance à Distance

Modifications dans Core.cs, DataService.cs, PoolPage.xaml.cs (clé API, URLs).

Power BI

Édition gratuite pour tableau de bord temps réel des données IoT Pool.

Système de Contrôle de Piscine IoT Azure : Capteurs Intelligents & Surveillance à Distance

Processus : Power BI Desktop → connexion Azure SQL (DirectQuery) → rapports visuels → publication .pbix sur PowerBI.com → épinglage au dashboard. Accessible via PowerBI.com ou app mobile Power BI. Futur : Power BI Embedded dans l'app web.

Références

Remerciements à Miles Burton (bibliothèque Dallas) et Mike Mackes (code Arduino/I2C/DS18B20 et inspiration).

Code

Format JSON Payload Device-to-Cloud (D2C)

Note : "IsPoolPowerOn" = 0 (éteint), 1 (allumé)

{ "PoolName" : "IoTPool", "PoolWaterTempC" : 30, "OutsideAirTempC" : 27, "IsPoolPowerOn" : false, "SampleDateTime" : "2016-07-05T23:35:58.0882185Z" }

Schéma Table SQL "Pools"

CREATE TABLE [dbo].[Pools] ( [Id] INT IDENTITY (1, 1) NOT NULL, [PoolName] NVARCHAR (MAX) NULL, [PoolWaterTempC] FLOAT (53) NOT NULL, [OutsideAirTempC] FLOAT (53) NOT NULL, [IsPoolPowerOn] INT NOT NULL, [SampleDateTime] DATETIME NOT NULL, CONSTRAINT [PK_dbo.Pools] PRIMARY KEY CLUSTERED ([Id] ASC) );

Dépôt GitHub IoT Pool

Tout le code source : https://github.com/khilscher/iotpool

Schémas

Liaison Raspberry Pi ↔ Arduino via I2C avec 2 capteurs DS18B20 : RaspiArduinoTwoDS18B20.fzz

Système de Contrôle de Piscine IoT Azure : Capteurs Intelligents & Surveillance à Distance
Système de Contrôle de Piscine IoT Azure : Capteurs Intelligents & Surveillance à Distance

Processus de fabrication

  1. Guide complet conception et construction piscines enterrées et hors-sol
  2. Arduino lance Portenta H7 : Carte IoT grade industriel débute au CES
  3. Azure RTOS s'étend sur les principales plateformes embarquées avec de nouveaux kits de développement
  4. Azure vs AWS : quelle plateforme cloud gagne pour l'IoT ?
  5. Enregistreur GPS avec Analyse Spatiale sur Azure IoT Hub
  6. Surveillance qualité de l'eau IoT et IA pour protéger la vie aquatique
  7. Moniteur de Fréquence Cardiaque IoT en Temps Réel avec Arduino et MAX30100
  8. Contrôle IoT à Distance d'un Bras Robotique Personnalisé avec Arduino MKR1000
  9. Bocal Intelligent IoT avec ESP8266, Arduino et Capteur Ultrasonique – Surveillance Temps Réel