该ArduinoIoTCloud
库是固件的核心元素,使某些 Arduino 板能够连接到Arduino IoT 云。支持以下板:
- 无线上网:
MKR 1000
,MKR WiFi 1010
,Nano 33 IoT
,Portenta H7
,Nano RP2040 Connect
,Nicla Vision
,OPTA WiFi
,GIGA R1 WiFi
,Portenta C33
,UNO R4 WiFi
,Nano ESP32
,ESP8266
,ESP32
- 全球移动通信系统:
MKR GSM 1400
- 5G:
MKR NB 1500
- 洛拉:
MKR WAN 1300/1310
- 以太网:
Portenta H7
+Vision Shield Ethernet
,Max Carrier
,Breakout
,Portenta Machine Control
,OPTA WiFi
,OPTA RS485
,OPTA Lite
,Portenta C33
+Vision Shield Ethernet
- 通过 Arduino IoT Cloud (设备部分)注册支持 Arduino IoT Cloud 的板。
- 创建一个新的逻辑表示,称为Thing。
-
设备:围绕板构建的物理对象(例如
MKR WiFi 1010
)。这是运行草图、读取传感器、控制执行器并与 Arduino IoT 云通信的硬件。 -
事物:连接对象的逻辑表示。它们体现了对象的固有属性,几乎不涉及用于实现它们的实际硬件或代码。每个事物都由属性的集合表示(例如,温度、光、压力...)。
-
属性:定义系统特征的质量。可以将Property定义为只读( ),表示 Arduino IoT Cloud 可以读取数据,但不能更改该Property的值。另一方面,它可以被指定为读写(),允许 Arduino IoT Cloud 远程更改属性的值并在设备上触发事件通知。还可以将属性标记为只写( ),这意味着云可以写入此属性,但不能读取其值(这限制了仅用于触发事件的属性的数据传输)。
READ
READWRITE
WRITE
thingProperties.h
void onLedChange(); /* ... */ bool led; int seconds; /* ... */ void initProperties() { ArduinoCloud.setThingId("ARDUINO-THING-ID"); ArduinoCloud.addProperty(led, WRITE, ON_CHANGE, onLedChange); ArduinoCloud.addProperty(seconds, READ, ON_CHANGE); } /* ... */ WiFiConnectionHandler ArduinoIoTPreferredConnection("SECRET_SSID", "SECRET_PASS");
MyCloudApplication.ino
#include "thingProperties.h"void setup() { Serial.begin(9600); while(!Serial) { } pinMode(LED_BUILTIN, OUTPUT);
initProperties(); ArduinoCloud.begin(ArduinoIoTPreferredConnection); }
void loop() { ArduinoCloud.update(); seconds = millis() / 1000; }
void onLedChange() { digitalWrite(LED_BUILTIN, led); }
void setup() { Serial.begin(9600); while(!Serial) { } pinMode(LED_BUILTIN, OUTPUT);
initProperties(); ArduinoCloud.begin(ArduinoIoTPreferredConnection); }
void loop() { ArduinoCloud.update(); seconds = millis() / 1000; }
void onLedChange() { digitalWrite(LED_BUILTIN, led); }" tabindex="0" role="button">
该库的1.0.0版本为所有基于 ATSAMD21G18 的云连接板添加了看门狗功能。看门狗只是一个从预设起始值开始倒计时的电子计时器,当达到零时,会触发微控制器的重置。它可用于自动从临时硬件故障或不可恢复的软件错误中恢复。为了避免看门狗达到零,倒计时器需要定期重置为其起始值。这是ArduinoCloud.update()
在函数开始时定期调用的情况发生的loop()
。尽管看门狗是自动启用的,但可以通过将第二个参数设置为ArduinoCloud.begin(...)
来禁用它false
:
ArduinoCloud.begin(ArduinoIoTPreferredConnection, false).
默认情况下,使用以下板启用 Whatchdog:MKR 1000
, MKR WiFi 1010
, MKR GSM 1400
, MKR NB 1500
, MKR WAN 1300/1310
, Nano 33 IoT
, Portenta H7
, , Nano RP2040 Connect
, Nicla Vision
, OPTA WiFi
, OPTA RS485
,OPTA Lite
GIGA R1 WiFi
ArduinoIoTCloudTCP::handle_SubscribeMqttTopics could not subscribe to /a/t/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/e/i
在这种情况下,设备尚未与 Arduino IoT Cloud GUI 配置中的事物关联,或者事物 ID 中有拼写错误。
以下板卡支持 OTA:
MKR WiFi 1010
, Nano 33 IoT
, Portenta H7
, Nano RP2040 Connect
, Nicla Vision
, OPTA WiFi
, OPTA RS485
, OPTA Lite
, GIGA R1 WiFi
, Nano ESP32
,ESP32
开发板可以使用 3 种方法向 ArduinoIoTCloud 服务器进行身份验证:
-
DEVICE_LOGIN_NAME
和DEVICE_KEY
。该值在文件中定义thingProperties.h
并包含在草图中。使用此方法的板有:UNO R4 WiFi
、Nano ESP32
、ESP8266
、ESP32
-
DEVICE_CERTIFICATE
和PRIVATE_KEY
。在设备配置阶段,该值存储在板安全元件内。使用此方法的板有:MKR 1000
,MKR WiFi 1010
,MKR GSM 1400
,MKR NB 1500
,Nano 33 IoT
,Portenta H7
,Nano RP2040 Connect
,Nicla Vision
,OPTA WiFi
,OPTA RS485
,OPTA Lite
,GIGA R1 WiFi
,Portenta C33
-
APP_EUI
和APP_KEY
。该值在文件中定义thingProperties.h
并包含在草图中。使用此方法的主板有:MKR WAN 1300/1310