Arduino IoT platform is great particularly if you want to avoid backend configuration, and management and want a nice mobile app UI. There are certain differences with self-hosted IoT solution and platforms such as IBM Watson IoT. As it is officially from the creators of Arduino, it is easy on certain parts of the work but it is obscured too. The documentation is not easy for everyone and that is the reason why you’ll find a lot of getting started guides by third parties.
You need a faster computer with a stable internet connection. Install the latest Arduino IDE and configure it for ESP32. Next, install Arduino Create Agent. Next, install the library for Arduino IoT :
1 | https://www.arduino.cc/reference/en/libraries/arduinoiotcloud/ |
Compiling the generated code on web IDE is easier but you can also compile and upload from your local computer. Now follow this guide :
---
1 | https://docs.arduino.cc/arduino-cloud/getting-started/esp-32-cloud |
While viewing the auto-generated sketch, click the “View in full editor” option. You’ll get the main code like below:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | #include "thingProperties.h" void setup() { // Initialize serial and wait for port to open: Serial.begin(9600); // This delay gives the chance to wait for a Serial Monitor without blocking if none is found delay(1500); // Defined in thingProperties.h initProperties(); // Connect to Arduino IoT Cloud ArduinoCloud.begin(ArduinoIoTPreferredConnection); setDebugMessageLevel(2); ArduinoCloud.printDebugInfo(); } void loop() { ArduinoCloud.update(); // Your code here } /* Since RandomValue is READ_WRITE variable, onRandomValueChange() is executed every time a new value is received from IoT Cloud. */ void onRandomValueChange() { // Add your code here to act upon RandomValue change } /* Since LedSwitch is READ_WRITE variable, onLedSwitchChange() is executed every time a new value is received from IoT Cloud. */ void onLedSwitchChange() { // Add your code here to act upon LedSwitch change } |
There will be another piece of code as a tab named thingProperties.h
. That will look like below:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #include <ArduinoIoTCloud.h> #include <Arduino_ConnectionHandler.h> const char DEVICE_LOGIN_NAME[] = "6c501054-5a72-8f96"; const char SSID[] = SECRET_SSID; // Network SSID (name) const char PASS[] = SECRET_OPTIONAL_PASS; // Network password (use for WPA, or use as key for WEP) const char DEVICE_KEY[] = SECRET_DEVICE_KEY; // Secret device password void onRandomValueChange(); void onLedSwitchChange(); int random_value; bool led_switch; void initProperties(){ ArduinoCloud.setBoardId(DEVICE_LOGIN_NAME); ArduinoCloud.setSecretDeviceKey(DEVICE_KEY); ArduinoCloud.addProperty(random_value, READWRITE, ON_CHANGE, onRandomValueChange); ArduinoCloud.addProperty(led_switch, READWRITE, ON_CHANGE, onLedSwitchChange); } WiFiConnectionHandler ArduinoIoTPreferredConnection(SSID, PASS); |
Notice these lines:
1 2 3 | const char SSID[] = SECRET_SSID; // Network SSID (name) const char PASS[] = SECRET_OPTIONAL_PASS; // Network password (use for WPA, or use as key for WEP) const char DEVICE_KEY[] = SECRET_DEVICE_KEY; // Secret device password |
If you want to compile them on your own computer, then you need to manually edit them or use arduino_secrets.h
file with the format of details:
1 2 3 | #define SECRET_SSID "MyNetwork" #define SECRET_PASS "12345678" #define SECRET_DEVICE_KEY "9W5XHKSF8YAAO3OMDLFS" |
Now upload your sketches to ESP32 and test them. If you can successfully connect, then install the mobile application.