The ArduinoIoTCloud
library is the central element of the firmware enabling certain Arduino boards to connect to the Arduino IoT Cloud. The following boards are supported:
- WiFi:
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
- GSM:
MKR GSM 1400
- 5G:
MKR NB 1500
- LoRa:
MKR WAN 1300/1310
- Ethernet:
Portenta H7
+Vision Shield Ethernet
,Max Carrier
,Breakout
,Portenta Machine Control
,OPTA WiFi
,OPTA RS485
,OPTA Lite
,Portenta C33
+Vision Shield Ethernet
- Notecard: Provides Cellular/LoRa/Satellite/Wi-Fi to any modern board/architecture
- Register your Arduino IoT Cloud capable board via Arduino IoT Cloud (Devices Section).
- Create a new logical representation known as a Thing.
-
Devices: Physical objects built around a board (e.g.
MKR WiFi 1010
). This is the hardware which runs the sketch, reads sensors, controls actuators and communicates with the Arduino IoT Cloud. -
Things: Logical representation of a connected object. They embody inherent properties of the object, with as little reference to the actual hardware or code used to implement them. Each Thing is represented by a collection of Properties (e.g., temperature, light, pressure...).
-
Properties: Qualities defining the characteristics of a system. A Property can be defined as read-only (
READ
) to indicate that Arduino IoT Cloud can read the data, but cannot change the value of such Property. On the other end, it may be designated to be read-and-write (READWRITE
), allowing Arduino IoT Cloud to remotely change the property’s value and trigger an event notification on the device. It is also possible to mark properties as write-only (WRITE
) which means the cloud can write to this property but not read its value (this limits data transmission for properties which are used to trigger events only).
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);
}
The 1.0.0 release of this library adds watchdog functionality to all ATSAMD21G18 based cloud connected boards. A watchdog is simply an electronic timer counting down from a preset start value which, upon reaching zero, triggers a reset of the microcontroller. It can be used to automatically recover from temporary hardware faults or unrecoverable software errors. In order to avoid the watchdog from reaching zero the countdown timer needs to be regularly re-set to its start value. This is happening within ArduinoCloud.update()
which is periodically called at the start of the loop()
function. Although the watchdog is automatically enabled it can be disabled by setting the second parameter of ArduinoCloud.begin(...)
to false
:
ArduinoCloud.begin(ArduinoIoTPreferredConnection, false).
Whatchdog is enabled by default using the following boards: 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
In this case either the device has not been associated with the thing within the Arduino IoT Cloud GUI configuration or there's a typo in the thing ID.
OTA is supported by the following boards:
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
Boards can authenticate to the ArduinoIoTCloud servers using 3 methods:
-
DEVICE_LOGIN_NAME
andDEVICE_KEY
. This values are defined in thethingProperties.h
file and included in the Sketch. Boards that are using this method are:UNO R4 WiFi
,Nano ESP32
,ESP8266
,ESP32
-
DEVICE_CERTIFICATE
andPRIVATE_KEY
. This values are stored inside the board secure element during the device provisioning phase. Boards that are using this method are: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
andAPP_KEY
. This values are defined in thethingProperties.h
file and included in the Sketch. Boards that are using this method are:MKR WAN 1300/1310