智能家居温室:基于 Arduino 的自动化气候控制系统
项目概述
温室环境条件持续变化,因此需要高效的监控系统。自动化系统带来诸多优势:减少人工劳动,用户可通过电脑或智能手机远程查看投资状况;数据可存入数据库,这对盈亏至关重要;实时控制能及时干预,预防作物问题。
温室自动监控系统由读取环境数据的传感器和执行器(称为“从机”)组成。它们通过无线方式与中央设备“主机”通信。主机向从机发送阈值变更等指令,并通过 WiFi 将数据上传至 Web 服务器。
系统工作原理
项目分为三大部分:
- 主机
- 从机
- Web 服务器
主机采用 Arduino MKR1000,从机采用 Arduino Uno。主机通过集成的 WINC1500 WiFi 模块与 Web 服务器通信;从机通过 DHT22 传感器采集温湿度,再经 WiFi Shield(WINC1500)发送给主机。
主机详解
主机工作在“接入点模式”,等待从机连接并接收温湿度数据,经处理后发送至 Web 服务器。主机检测数据可用性,创建包含新阈值和 CRC 校验的 UDP 数据包。CRC 由从机用于验证接收设置的有效性。完成接收后,主机退出 AP 模式,连接 WiFi 网络,将数据发送至 Web 服务器生成图表。

从机详解
从机每 5 分钟通过 DHT22 采集一次温湿度,创建 UDP 数据包连接主机发送数据。随后监听主机下发的新阈值。收到设置后,从机按 Dallas-Maxim 算法计算 CRC,与主机发送的 CRC 比对。若一致,则将新设置保存至 EEPROM。

Web 服务器与移动应用
Web 服务器存储所有数据供历史查询。使用 PHP 脚本连接数据库,以两种方式展示数据:
- 通过 PHP 脚本绘制图表
- 通过另一 PHP 脚本以 JSON 格式供 Android 应用调用

Android 应用允许用户查询数据库数据。首屏选择时间范围,点击“GRAPHIC”按钮调用 Web 服务获取数据并绘制图表。

核心代码模块
主机代码
基于 Arduino MKR1000,使用 WiFi101、RTCZero、WiFiUDP 等库。主循环包含:AP 模式下接收从机 UDP 数据、CRC 校验、阈值下发;切换至 Station 模式连接路由器,通过 HTTP GET 将数据上传至 Web 服务器。包含 CRC-8 校验算法(基于 Dallas/Maxim 公式)。
从机代码
基于 Arduino Uno + WiFi Shield,使用 DHT22、EEPROM、WiFiUDP 库。主循环:定时采集温湿度,连接主机 AP 发送 UDP 数据;监听主机下发的阈值包,CRC 校验通过后写入 EEPROM;根据阈值控制加热器、加湿器、风扇(无刷电机 PWM 调速)。包含 EEPROM 读写封装、CRC-8 算法、millis() 重置函数。
服务端脚本
- 图表生成:使用 JPGraph 从 MySQL 读取数据绘制双线图表
- 数据入库:接收 GET 参数写入 greenhouse 表
- 建表 SQL:创建 greenhouse 表(id, date, temp, umid)
- App 数据接口:按时间范围查询记录返回 JSON
硬件清单
| 组件 | 数量 |
|---|---|
| Arduino MKR1000 | 1 |
| Arduino UNO | 1 |
| DHT22 温湿度传感器 | 1 |
| Arduino WiFi Shield 101 | 1 |
| Android 设备 | 1 |
| DC 电机控制扩展板 (BTN8982) | 1 |
开发工具
- Arduino IDE
- Eclipse
制造工艺
- ILI9341 2.4 英寸 TFT 触摸屏扩展板位图动画专业指南
- 基于 Web 控制的 DMX 灯光系统 – Arduino 主控制器
- DIY 蓝牙控制 Arduino 间谍小车
- FlickMote:基于手势的智能家居红外遥控器
- DIY Arduino TV-B-Gone:万能关机遥控器
- 自制大尺寸LED主时钟带闹钟功能 — 12米外清晰可见
- HSV 时钟:为 Arduino 爱好者打造的绚丽可定制时钟
- Android 手势遥控车:Raspberry Pi + Arduino 101 + 电机扩展板,I2T 协同控制
- Find Me:基于 Arduino 与蓝牙的智能寻物器制作指南
- Arduino 项目优化供电方案:从按键开关到电池监测与数据记录
- 无线Arduino编程盾:HC-05蓝牙模块实现免USB线烧录
- Arduino Nano 专用 2.8 英寸 TFT 扩展板 – 320×240 SPI 显示屏