SmartAgro:基于 Arduino MKR GSM 的精准农业物联网方案 — 从田间到云端仪表盘
元器件清单
| 元件 | 数量 | 备注 |
|---|---|---|
| Arduino MKR GSM 1400 | 1 | 主控+蜂窝通信 |
| SORACOM Air 全球物联网 SIM | 1 | 数据传输 |
| MKR MEM Shield | 1 | MicroSD + Flash 存储 |
| GY-21 (SHT21) 温湿度传感器 | 1 | I2C,大气温湿度 |
| SI1145 UV/可见光/红外传感器 | 1 | I2C,光照指数 |
| SparkFun 土壤湿度传感器 | 1 | 模拟量,电容式 |
| DS18B20 防水温度探头 | 1 | OneWire,土壤温度 |
| 2×AA 电池盒或锂电池 | 1 | 供电 |
| MicroSD 卡 | 1 | 本地 CSV 日志 |
| 跳线、焊接工具 | 若干 |
系统架构
前端(田间节点):MKR GSM + 传感器阵列 → 定时采集 → 写 SD 卡 CSV → 经 Soracom Air 发 JSON 到云端 → 深度睡眠省电。
后端(Soracom 平台):Air 接收 → Harvest 存储 → Lagoon 仪表盘可视化 → 邮件告警(UV 指数/土壤湿度异常)。
数据载荷示例
{
"Latitude":53.3570404,
"Longitude":-6.2609935,
"soilTemp":20.56,
"soilHumidity":40,
"atmoTemp":22.12,
"atmoHumidity":62,
"uvLight":0.00,
"irLight":257,
"deviceName":"device1"
}
关键软件模块
checkFile()/createFile():启动时检测/创建datalog.csv并写表头collectData():轮询 6 个传感器,串口打印调试信息burnData():追加写入 SD 卡parseData():HTTP POST 到harvest.soracom.io,打印响应ArduinoLowPower.sleep():采集间隔睡眠(可配置sleepTime)
用户可配置变量
deviceName:设备标识,便于舰队管理sleepTime:采集间隔(毫秒)proDebug:true调试需串口监视;false现场部署
SD 卡准备
FAT32 格式化,插入 MEM Shield,无需预建文件,固件自动创建/追加。
Soracom 后端搭建(图文 30+ 步)
- 注册 Soracom 账号,激活 SIM,建立群组
- 启用 Harvest 数据收集,配置 Lagoon 仪表盘
- 添加图表:时序折线(温湿度/光照/土壤)、地图定位、UV 告警阈值
- 配置邮件通知:土壤湿度 < 30% 或 UV 指数 > 8 触发
文中提供全程截图(共 30+ 张),手把手演示控制台操作。
外壳设计
作者设计 3D 打印外壳,顶部透明窗口供 SI1145 接光,底部防水接头引出土壤探头。STL 文件随项目开源。
成本与优势
- 单节点 BOM < $50,远低于商业方案
- 可无限扩展节点数,适配小农场到大农场
- 本地 SD 卡兜底,断网不丢数据
- 开源硬件固件,避免厂商锁定
项目源码与原理图
GitHub:SmartAgro 完整代码
Fritzing 原理图:schematics_rrBJ3HiIfc.fzz
制造工艺
- 打造低成本家庭无线传感器网络:Arduino + 树莓派 + Xively 物联网平台
- K30 CO₂ 传感器:室内空气质量实时监测
- DIY 数字身高仪:Arduino Nano + VL53L0X 激光测距 + OLED 显示
- 自制简易红外避障传感器:IR LED + 光电二极管 + Arduino
- DFRobot 电容指纹传感器 (ID809) 接入 Arduino/ESP8266 完整教程
- Arduino Cloud 传感器塔:温度、动作与气体监测
- 基于 Arduino Nano 的智能运动感应水枪
- 构建基于 PHP 的 Web 界面控制 Arduino Uno
- 紧凑型Arduino雷达系统:HC-SR04超声波传感器配1.8英寸显示屏
- Arduino 传感器数据上传 MySQL 数据库:PHPMyAdmin 完整指南
- Arduino 电容式触控开关:一枚硬币点亮 LED 的极简 DIY
- Arduino传感器:类型、应用与实战项目