工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Azure IoT対応スマートプール制御システム:水温・気温監視と遠隔ポンプ制御

部品と材料

部品数量備考
DS18B20防水デジタル温度センサ2赤:3-5V、青/黒:GND、黄/白:データ
IoTパワーリレー(110Vコンセント制御)1ポンプ・塩水システム用
抵抗 4.75kΩ (1/4W, 5%)2DS18B20プルアップ用
Raspberry Pi 2 Model B1Windows 10 IoT Core稼働、フィールドゲートウェイ
Arduino UNO R31温度センサ読取、I2CでPiへ送信

使用アプリ・オンラインサービス

プロジェクト概要

インテックス社製15フィート×48インチラウンドプール(約19,000リットル)の水温・気温を監視し、ポンプ・ヒーター・塩水システムを自動制御して、子供たちが快適に泳げる水温を維持しつつ、無駄な運転を防ぐシステムです。砂フィルタ/ポンプ、11kWヒーター、塩水システムが接続されています。

システムアーキテクチャ

Azure IoT対応スマートプール制御システム:水温・気温監視と遠隔ポンプ制御

Raspberry Pi、Arduino、IoTパワーリレー、ブレッドボードを防水プラスチックケースに収納し、ケーブル用穴と通気孔を設けています。

Azure IoT対応スマートプール制御システム:水温・気温監視と遠隔ポンプ制御

センサ部(Arduino側)

DS18B20温度センサ×2

Arduino UNOでDallasTemperatureライブラリとOneWireライブラリを使用し、2つのセンサから摂氏温度を読み取り、1秒ごとにI2CでRaspberry Piへ送信します(データ形式:水温|気温)。

temperatureData = padRight(String(poolSensor.getTempCByIndex(0)) + "|" + String(outsideSensor.getTempCByIndex(0)), I2C_BUFFER_LEN);

Azure IoT対応スマートプール制御システム:水温・気温監視と遠隔ポンプ制御

Azure IoT対応スマートプール制御システム:水温・気温監視と遠隔ポンプ制御

リレー制御部(Raspberry Pi側)

IoTパワーリレー

Raspberry Piの3.3V GPIOピンで制御し、110Vコンセント2口(ポンプ用と塩水システム用)をON/OFFします。デフォルトはOFFです。ヒーター(220V/60A)は内蔵フローセンサで水流連動制御されるため、別途リレーは不要としています。

Azure IoT対応スマートプール制御システム:水温・気温監視と遠隔ポンプ制御

Raspberry Pi(フィールドゲートウェイ)

OS: Windows 10 IoT Core Build 10.0.10586.0
役割:

Azure IoT Hubへ送信するJSONペイロード(毎分)

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

無料版IoT Hub(8,000メッセージ/日、500バイト/メッセージ)で十分な余裕があります(1,440メッセージ/日、158バイト/メッセージ)。

Azureクラウド側構成

Azure Stream Analytics (ASA)

IoT Hub入力 → Azure SQL Database出力へ、以下のシンプルなクエリで流します。

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

将来的には集計関数でアラート(例:平均水温>35℃で過熱警告)も可能です。

Azure SQL Database

コスト最優先でS0 Standard(10 DTU)を採用。単一テーブル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 (RESTful)

ASP.NET Web APIで構築。APIキー認証(HTTPヘッダapi-key)。主なエンドポイント:

将来的にはAzure API Management配下に配置し、Azure AD認証も追加予定。

Azure Web App (管理画面)

ASP.NET Web Formsで構築。Azure AD認証必須。モバイルフレンドリー版も用意。default.aspx.csでAPIエンドポイントとAPIキーを設定します。

Azure IoT対応スマートプール制御システム:水温・気温監視と遠隔ポンプ制御

Mobile App (Xamarin Forms)

Windows Phone/Windows 10で動作確認済み(iOS/Androidへクロスコンパイル可能)。Core.cs、DataService.cs、PoolPage.xaml.csでAPI URLとキーを設定。

Azure IoT対応スマートプール制御システム:水温・気温監視と遠隔ポンプ制御

Power BI ダッシュボード

Power BI Desktop(無料版)でAzure SQL DBにDirectQuery接続し、リアルタイムダッシュボードを作成・公開。PowerBI.comまたはモバイルアプリで閲覧可能。将来的にはWebアプリへ埋め込み予定。

Azure IoT対応スマートプール制御システム:水温・気温監視と遠隔ポンプ制御

参考資料・謝辞

Miles Burton氏(ライブラリ提供)とMike Mackes氏(Arduino/I2C/DS18B20コードとインスピレーション)に感謝。

ソースコードリポジトリ

https://github.com/khilscher/iotpool に全ソースコードを公開。

回路図

製造プロセス

  1. プール設計・施工完全ガイド:インプールとアボーブグラウンドプール
  2. GPSデータロガー構築と Azure IoT Hub での空間分析
  3. IoTとAIで水質監視し水生生物を守るシステム
  4. ArduinoとMAX30100で作るリアルタイムIoT心拍数モニター
  5. IoTで遠隔操作する自作ロボットアーム:Arduino MKR1000とSimulink、ThingSpeak活用
  6. ESP8266・Arduino・超音波センサーで作るスマートIoTジャー:リアルタイム中身監視
  7. IoT対応ソーラートラッカー:Arduinoによるスマートエネルギー管理
  8. Arduino、Yaler、IFTTTでWeb対応IoTゲージを構築する
  9. Arduino、CESで産業グレードIoTボード「Portenta H7」を発表
  10. Azure RTOS、主要組み込みプラットフォームへ対応拡大、新開発キットで開発を簡素化
  11. Azure vs AWS:IoTに最適なクラウドプラットフォームはどっち?