亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

Azure IoT智能游泳池监控系统:温度感知与远程控制

核心硬件清单

组件数量关键参数/备注
DS18B20防水温度传感器2红线接3-5V,蓝/黑接地,黄/白为数据线
IoT智能电源继电器1控制水泵与盐水系统(110V),3.3V逻辑触发
4.75kΩ电阻21/4W,5%,DS18B20上拉
Raspberry Pi 2 Model B1运行Windows 10 IoT Core,边缘网关
Arduino UNO R31采集双路温度,通过I2C传给Pi

软件与云服务

项目概述

目标:远程监控并控制一座Intex 15'×48"圆形游泳池(约19,000升水量),配套砂缸过滤泵、11kW加热器、盐水氯化系统。核心需求:实时掌握池水温度与环境温度,智能控制水泵/加热器/盐水系统运行时长,确保水温适宜且避免设备过度运行。

Azure IoT智能游泳池监控系统:温度感知与远程控制
整体架构:传感器→Arduino→Pi(I2C)→Azure IoT Hub(AMQP)→Stream Analytics→SQL Database→API/Web/Mobile/Power BI
Azure IoT智能游泳池监控系统:温度感知与远程控制
Pi、Arduino、继电器板、面包板扎带固定于防水塑料箱内,预留走线与散热孔

温度采集子系统

两只DS18B20分别测量池水温度(传感器浸入池中,用门铃线延长)与环境温度(贴于箱体外壁)。Arduino使用DallasTemperature与OneWire库读取,每秒通过I2C向Pi发送格式化字符串:

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

执行器控制

Azure IoT智能游泳池监控系统:温度感知与远程控制
Pi的3.3V GPIO控制IoT Power Relay,切断/接通水泵与盐水系统的110V供电。加热器自带流量开关,随水泵联动,故不另接继电器(220V/60A大电流难找合适继电器)。

未来计划:接入电量监测模块,分别统计110V与220V回路功耗。

Raspberry Pi边缘网关

运行IoTPoolRaspiBackgroundApp(C#无头后台应用,VS2015模板),功能:

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

设备在IoT Hub注册,连接字符串写入StartupTask.cs:

static string iotPoolConnString = "HostName=.azure-devices.net;DeviceId=iotpool;SharedAccessKey=";
static string deviceName = "iotpool";

Azure云端数据流

IoT Hub(免费版)

每日8000条/500B额度,本项目仅1440条/天,余量充足。用Device Explorer注册设备、获取连接串、监控D2C/C2D消息。

Stream Analytics作业

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

将每分钟一条的D2C消息写入Azure SQL Database表Pools。未来可加聚合告警(如平均水温>35℃报警)。

Azure SQL Database (S0 Standard, 10 DTU)

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)
);

REST API (ASP.NET Web API)

  • API Key认证(Header: api-key: {key}),定义于PoolControllers.cs
  • 支持:获取最新数据、开/关电源、历史查询
  • 未来可接入Azure API Management、Azure AD认证

Web App与移动端

  • Azure Web App:ASP.NET Web Forms,集成Azure AD强制登录,修改web.config中的ida:ClientId
  • Mobile App:Xamarin Forms(已编译WinPhone/Win10,可跨编译iOS/Android),修改Core.cs与DataService.cs中的API地址与Key

Power BI实时大屏

Azure IoT智能游泳池监控系统:温度感知与远程控制
Power BI Desktop直连SQL Database,发布至PowerBI.com,钉图到仪表盘,手机端亦可查看

代码与资源

D2C消息JSON格式

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

SQL建表脚本

CREATE TABLE [dbo].[Pools] ( ... ); -- 见上文完整定义

GitHub完整源码

https://github.com/khilscher/iotpool

原理图

Azure IoT智能游泳池监控系统:温度感知与远程控制
Pi与Arduino I2C连接,双DS18B20接线
Azure IoT智能游泳池监控系统:温度感知与远程控制
完整架构拓扑

制造工艺

  1. 地下与地上游泳池设计施工全攻略
  2. 构建 GPS 数据记录器:结合 Azure IoT Hub 实现空间分析
  3. 物联网 + AI 守护水生态:多参数水质监测系统
  4. 基于 Arduino 与 MAX30100 的实时物联网心率监测系统
  5. 基于 Arduino MKR1000 与 ThingSpeak 的远程 IoT 机械臂控制系统
  6. 智能物联网罐:ESP8266 + Arduino + 超声波传感器实时监测罐内物位
  7. 物联网双轴太阳能跟踪器:基于 Arduino 与 Cayenne 的智能能源管理
  8. 基于 Arduino、Yaler 与 IFTTT 构建 Web 化 IoT 仪表盘
  9. 通过 Arduino IoT Cloud 用 Alexa 控制电视:分步指南
  10. Arduino 发布 Portenta H7:CES 首秀工业级 IoT 开发板
  11. Azure RTOS扩展主流嵌入式平台,新增开发套件支持
  12. Azure对决AWS:哪个云平台更胜物联网?