Air Surfer:Arduino Mega 2560 空气质量监测站(CO₂/温湿度/室外温度)
项目动机
作为土木工程师,深知通风对室内空气质量的重要性。市面 CO₂ 监测仪功能单一且昂贵,遂自制「Air Surfer」:集成 CO₂、室内温湿度、室外温度、实时时钟,3.2″ TFT 彩屏显示,三色 LED 指示 CO₂ 等级,光敏电阻自动调节背光亮度,支撑 7-19V 宽电压供电。
硬件清单与选型理由
| 模块 | 型号 | 通讯 | 选型理由 |
|---|---|---|---|
| 主控 | Arduino Mega 2560 | - | IO 口多,硬件串口多,直插 TFT 免布线 |
| 显示 | 3.2″ TFT 480×320 (ILI9486) | 并口 | 直插 Mega,刷新快,色彩丰富 |
| CO₂ | MH-Z19B | UART (9600) | NDIR 非分光红外,自动校准,性价比高 |
| 温湿度 | Si7021 (HTU21D) | I2C | 工业级精度,无需校准,极其稳定 |
| 室外温度 | DS18B20 (不锈钢封装) | 1-Wire | 防水耐用,4.7k 上拉电阻必接 |
| RTC | DS1307 | I2C | 掉电走时,配合屏幕定时刷新防鬼影 |
| 电源 | LM2596 DC-DC 降压模块 | - | 将 12-19V 适配器降至 7V,降低 Mega 发热 |
软件架构亮点
多任务非阻塞设计
主循环按固定顺序轮询:CO₂ 串口读取 → 光敏采样 → 按键扫描 → 温湿度读取 → RTC 校时 → 绘图刷新。各模块封装为独立函数(co2()、th()、photosensor() 等),便于维护与扩展。
CO₂ 串口协议解析
byte cmd[9] = {0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79};
// 发送命令 → 读取 9 字节响应 → 校验 CRC → 解析 ppm = response[2]*256 + response[3]
自动校准原理:检测到长时间低于 400ppm(室外基准值)时自动修正零点,首次使用需通电放置 24h。
屏幕鬼影对策
廉价 TFT 易出现残影与色彩反转,代码采用双重对策:
- 每日 0:00 与 12:00 全屏填白复位(
screenreset()) - 关键数值区域重绘前先填背景色
交互设计
- 三颗不锈钢按键:时/分调整、文字配色切换(12 种预设色)
- 光敏电阻分压采样,5 档背光亮度自动适配环境光
- 三色 LED 直观指示 CO₂:绿 <800ppm、黄 800-1200、红 >1200
机箱制作实录
无 3D 打印机条件下,历经三代迭代:
- 聚合物粘土 → 形变开裂,烘烤失败
- 6mm 胶合板 → 切割困难,需电锯+雕刻机
- 3mm 胶合板 + 美工刀 + 砂纸 + 丙烯颜料 → 完美成型,成本最低
面板预留 TFT 窗口、传感器通气孔、航空插头座、DC 座、按键孔,内部热熔胶固定 PCB 与线材。
成本明细 (约 $55 / 315 元)
- Mega 2560:¥48 | TFT 屏:¥40 | MH-Z19B:¥116
- Si7021:¥12 | DS18B20:¥7 | DS1307:¥3
- LM2596、航空插头、按键、电阻、线材、木板等:¥120
总结与展望
Air Surfer 稳定运行半年余,数据与专业仪表吻合。下一步计划:加入 PM2.5 激光颗粒物传感器、ESP32 替代 Mega 实现 WiFi 上传 Home Assistant、设计参数化激光切割外壳开源图纸。
制造工艺