基于 Arduino Mega 与物联网传感器的高级家庭监控系统
硬件清单
| 组件 | 数量 | 备注 |
|---|---|---|
| Arduino Mega 2560 | 1 | 主控制器 |
| Arduino 以太网扩展板 | 1 | 提供有线网络连接 |
| 4×20 I²C LCD 显示屏 | 1 | 本地状态显示 |
| DHT22 温湿度传感器 | 1 | 环境监测 |
| DS3231 高精度 RTC 模块 | 1 | 实时时钟,带电池备份 |
| HC-SR04 超声波测距模块 | 1 | 集水坑水位监测 |
| OSH Park 定制 PCB | 1 | 接口板与指示板 |
系统架构
起因与目标
原使用 Ecobee 智能恒温器监控女儿家庭环境,因厂商停止服务,需自建替代方案。系统需监测:集水坑水位、洪水报警、市电断电、温湿度、多路干节点输入,并通过 PushingBox 实现远程推送通知,本地局域网网页实时看板。
硬件拓扑
- Mega 2560 + 以太网扩展板作为核心节点
- 定制接口板(OSH Park 制板)汇聚 7 路干接点、DHT22、DS3231、HC-SR04
- 定制指示板:8 个双色 LED(琥珀=报警中,绿=历史报警已清除,灭=复位)+ 复位按键 + 消息开关按键 + 状态指示 LED
- 4×20 LCD 显示时间、水位、温湿度
传感器映射表
| 通道 | 功能 | 输入引脚 | 红LED(报警) | 绿LED(清除) |
|---|---|---|---|---|
| 1 | 集水坑水位 | 超声波触发/回波 | 18 | 19 |
| 2 | 洪水报警 | 28 | 23 | 25 |
| 3 | 市电断电 | 30 | 27 | 29 |
| 4 | 温度 | DHT22 数据 | — | — |
| 5 | 湿度 | DHT22 数据 | — | — |
| 6-10 | 辅助输入 1-5 | 32/34/36/38/40 | 31/35/39/43/47 | 33/37/41/45/49 |
| — | 复位按键 | 42 | 清除所有绿 LED | |
| — | 消息开关 | 44 | 控制 PushingBox 推送启用 | |
软件架构
主循环任务
- 时间日期更新(DS3231)
- 超声波测距(中位值滤波 5 次)
- DHT22 读取温湿度(≥2 秒间隔)
- 报警指示灯状态机更新
- 以太网服务器响应 AJAX/JSONP 请求
- 报警条件判断 + PushingBox HTTP GET 发送通知(≥5 分钟间隔)
网页监控界面
- 仅局域网访问,避免路由器端口映射带来的安全风险
- 使用 jqPlot 绘制水位、温度历史曲线(最近 100 点)
- Canvas 仪表盘实时显示水位(0-50 in)与温度(0-100°F)
- 文本区实时刷新所有传感器状态、报警计时器、消息开关状态
- 前端每 3 秒轮询 Arduino JSONP 接口
关键代码片段
Arduino 端(C++)
- Ethernet + SD 卡加载 index.htm
- NewPing 库驱动 HC-SR04
- DHT 库读取 DHT22
- RTClib 驱动 DS3231
- LiquidCrystal_I2C 驱动 LCD
- PushingBox 通知通过 HTTP GET 发送,含 DevID 与自定义消息字段
网页端(JavaScript)
- jQuery + jqPlot + gauge.js 实现图表与仪表盘
- JSONP 跨域获取数据,更新图表、仪表盘、文本标签
- 本地时钟独立运行
项目亮点
- 模块化 PCB 设计,便于扩展
- 本地显示 + 远程推送双通道告警
- 纯局域网 Web 界面,无需云服务
- 开源硬件与代码,可二次开发
原理图与 PCB 文件
包含接口板、指示板的 Eagle 原理图与 OSH Park 生产文件。
制造工艺
- 血压计:设计原理、制造工艺与未来趋势
- 打造低成本家庭无线传感器网络:Arduino + 树莓派 + Xively 物联网平台
- 树莓派家庭温度监测仪表盘:实时图表展示
- 树莓派打造家庭自动化系统:手机远程控制灯风扇大门
- 自制家用作业书写机:Arduino + GRBL 控制的笔绘仪
- 用 Arduino 打造绚丽显示器 Ambilight 系统
- 基于 Arduino 与 MAX30100 的实时物联网心率监测系统
- 热水器点火器监测器:Arduino Nano + 树莓派 Zero 监控热电偶电压,熄火即时推送
- 自主家庭助理机器人 O'nine - ROS + Alexa 语音控制 + 机械臂 + 麦克纳姆轮全向移动
- Alexa 语音控制 Arduino 智能家居中枢:基于 Yun + PubNub + AWS Lambda 全栈实现
- 基于 Arduino Nano 和 MAX30102 的心率监测仪(16x2 LCD 显示)
- 基于 Arduino UNO 构建可靠的智能能源监测仪——分步指南