Arduino MKR1000 + Environment Click 实时环境监测上传 WolkAbout 云平台
硬件连接
- Arduino MKR1000 (内置 WiFi,SAMD21 内核)
- MikroE Environment Click (板载 BME680:温度、湿度、气压、气体电阻、海拔)
- I2C 接线:Click SDA→MKR1000 D11,SCL→D12,VCC→3V3,GND→GND
- Adafruit 母对母杜邦线若干
软件库 (均可在 IDE 库管理器安装)
- WiFi101
- Adafruit Unified Sensor Driver
- Adafruit BME680 Library
- RTCZero (SAMD21 硬件 RTC)
- FlashStorage (片上 Flash 模拟 EEPROM)
- WolkConnect-Arduino (MQTT 客户端 + WolkAbout 协议封装)
固件设计要点
循环缓冲 + Flash 持久化
定义 32 条消息的环形缓冲 Messages,通过 FlashStorage 断电保存。每分钟读取一次传感器 (readEvery=1),每 10 分钟发布一次 (publishEvery=10)。发布失败自动入缓冲,下周期重试,最大 96 条/天,远低于 Flash 10k 擦写寿命。
低功耗策略
- WiFi 低功耗模式
WiFi.lowPowerMode() - MKR1000 睡眠等待 RTC 唤醒
- BME680 默认睡眠,读取前主动唤醒
时间同步
启动连 WiFi 后,调用 wolk_update_epoch() 从平台获取 Unix 时间戳,写入 RTCZero,保证数据带准确时间戳。
云平台配置 (WolkAbout IoT Platform)
- 导入设备类型模板
Environment click-deviceType.json(含 5 个数值型 Feed:T/H/P/GR/A)。 - 创建设备,连接类型选 MQTT,勾选“Create Default Semantic”自动生成仪表盘组件。
- 记下
device_key与device_password写入代码。 - 在 Visualization 面板新建仪表盘,添加 Trending 图表 (Temperature/Pressure/Humidity) 与 Reading 卡片 (Altitude/Gas Resistance)。
核心代码结构
// 关键参数
const byte readEvery = 1; // 分钟
const byte publishEvery = 10; // 分钟
// RTC 中断标志位 read/publish
// loop() 中按标志位执行读传感器 / 连 WiFi 发布 / 存 Flash
// 中断服务程序 alarmMatch() 仅置位标志,保证极短执行时间
扩展建议
- 利用 WolkAbout 规则引擎设定阈值报警 (邮件/短信/Webhook)。
- 增加太阳能板+锂电池实现户外长期部署。
- 同一网关接入多个 Environment Click 监测不同区域。
原理图

开源资源
- 固件仓库:Wolk-Arduino-Environment-Monitoring
- 依赖库链接均在代码附件区。
制造工艺
- DIY 蓝牙控制 Arduino 间谍小车
- K30 CO₂ 传感器:室内空气质量实时监测
- FlickMote:基于手势的智能家居红外遥控器
- DIY Arduino TV-B-Gone:万能关机遥控器
- 自制大尺寸LED主时钟带闹钟功能 — 12米外清晰可见
- Find Me:基于 Arduino 与蓝牙的智能寻物器制作指南
- Arduino 项目优化供电方案:从按键开关到电池监测与数据记录
- Arduino 井字棋游戏:MAX7219 点阵屏 + 纸板外壳 DIY
- 从零构建智能 Arduino 四足机器人:完整指南
- 非接触体温筛查闸机:Arduino MKR1000 + 红外测温 + 舵机控制
- 实时森林火灾监测系统:短信报警方案
- DIY Arduino 手柄方向盘 - 游戏竞速模拟器自制指南