Arduino MKR WiFi 1010 结合 ENV Shield 采集环境数据并上传 IoT Cloud 可视化
元件与物料
| 元件 | 数量 |
|---|---|
| Arduino MKR WiFi 1010 | 1 |
| Arduino MKR ENV Shield | 1 |
软件与在线服务
- Arduino IoT Cloud
项目简介
项目背景
通过本项目,你将学习如何读取 MKR ENV Shield 上的各类环境传感器数据,并利用 Arduino IoT Cloud 的仪表盘组件实现数据可视化。
硬件准备
- Arduino MKR WiFi 1010:核心主板,搭载 SAMD21 单片机与 NINA-W10 模块,支持 WiFi 与 BLE。
- 电池组:接入 MKR WiFi 1010 专用接口,提供移动供电。
- MKR ENV Shield:集成温度、湿度、气压、光照、UVA/UVB/UV 指数传感器。
- WiFi 凭据 (SSID 与密码)。



代码结构
代码分两部分:
- Arduino IoT Cloud 自动生成的框架 (`thingProperties.h`),处理 WiFi 连接、云端通信与属性同步。
Arduino_MKRENV库,驱动 ENV Shield 所有传感器。
Thing 属性配置:创建 6 个只读属性,分别对应湿度、光照、气压、温度、UVA、UVB、UV 指数 (共 7 个测量值,温度可能重复)。
核心代码片段
#include "thingProperties.h"
#include
void setup() {
Serial.begin(9600);
delay(1500);
initProperties(); // 来自 thingProperties.h
ArduinoCloud.begin(ArduinoIoTPreferredConnection);
setDebugMessageLevel(2);
ArduinoCloud.printDebugInfo();
if (!ENV.begin()) {
Serial.println("Failed to initialize MKR ENV shield!");
while (1);
}
}
void loop() {
ArduinoCloud.update();
humidity = int(ENV.readHumidity());
lux = int(ENV.readIlluminance());
pressure = int(ENV.readPressure());
temperature = int(ENV.readTemperature());
uva = int(ENV.readUVA());
uvb = int(ENV.readUVB());
uvi = int(ENV.readUVIndex());
delay(1000);
}
云端配置步骤
- 登录 Arduino IoT Cloud,创建 Thing,按表格添加属性 (区分大小写)。
- 每个属性添加对应仪表盘组件。
- 点击“编辑代码”,在 Web Editor 中替换主草图为完整代码 (见下方完整代码)。
- 上传固件,设备上线后数据自动同步至仪表盘。



完整草图 (含自动生成的回调函数)
/* Sketch generated by the Arduino IoT Cloud Thing "env_shield" */
#include "thingProperties.h"
#include
void setup() {
Serial.begin(9600);
delay(1500);
initProperties();
ArduinoCloud.begin(ArduinoIoTPreferredConnection);
setDebugMessageLevel(4);
ArduinoCloud.printDebugInfo();
if (!ENV.begin()) {
Serial.println("Failed to initialize MKR ENV shield!");
while(1);
}
}
void loop() {
ArduinoCloud.update();
humidity = int(ENV.readHumidity());
lux = int(ENV.readIlluminance());
pressure = int(ENV.readPressure());
temperature = int(ENV.readTemperature());
uva = int(ENV.readUVA());
uvb = int(ENV.readUVB());
uvi = int(ENV.readUVIndex());
delay(1000);
}
void onHumidityChange() { }
void onLuxChange() { }
void onPressureChange() { }
void onTemperatureChange(){ }
void onUvaChange() { }
void onUvbChange() { }
void onUviChange() { }
上传后,打开 Thing 的仪表盘即可实时查看环境数据图表。
制造工艺