Comment on page
Visual Studio Code
For advanced developers and more complex projects it can be interesting to have an advanced IDE with GIT control, code completion, and a bunch of useful extensions to streamline the development process. For this purpose, it is possible to combine two powerful tools: Visual Studio Code, and PlatformIO.
Visual Studio Code is a free distribution source-code editor developed by Microsoft for Windows, Linux and macOS. It can be extended via extensions, available through a central repository to add language support, new programming languages, themes, and debuggers, or perform static code analysis. It can be downloaded for free from the official website.

PlatformIO is a cross-platform, cross-architecture, multiple framework, professional tool for embedded systems engineers and for software developers who write applications for embedded products. PlatformIO can be installed as a Visual Studio extension. To install the extension, just navigate to Extensions in Visual Studio Code (
Ctrl
+ Shift
+ X
on Windows or Command
+ Shift
+ X
on Mac) in VS Code. Then, search forPlatformIO
, click on PlatformIO IDE
result, and click on Install button.
Once Visual Studio code with PlatformIO is installed, it is possible to create a new project for our specific board. For this purpose, we can access PIO Home, and click on the
New Project
button:
Create a new Project from PIO Home.
For this example, we will be using the ESP32 board, so, in the
Project Wizard
pop-up we enter a Project Name
, select the Espressif ESP32 Dev Module
, as a generic ESP32 board, and the Arduino
Framework. Once done, click on Finish
and wait PlatformIO to download the required toolchains for the device.
PlatformIO project Wizard
After the project initialization is done, PlatformIO generates a file structure like the following:

PlatformIO default project structure
As shown in the above picture, each PlatformIO project has a configuration file named
platformio.ini
in the root directory for the project. This is a INI-stylefile.platformio.ini
has sections (each denoted by a [header]
) and key / value pairs within the sections. Lines beginning with ;
are ignored and may be used to provide comments.In our default
ESP32
project looks like the following:[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
Now, to start working with Thinger.io, it is required to add the Thinger.io client library using the
lib_deps
property:[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
lib_deps = thinger.io
After this configuration is done, it is possible to start compiling for our device. A basic example for our ESP32 device will look like the following:
main.cpp
arduino_secrets.h
#define THINGER_SERIAL_DEBUG
#include <ThingerESP32.h>
#include "arduino_secrets.h"
ThingerESP32 thing(USERNAME, DEVICE_ID, DEVICE_CREDENTIAL);
void setup() {
// open serial for debugging
Serial.begin(115200);
pinMode(16, OUTPUT);
thing.add_wifi(SSID, SSID_PASSWORD);
// digital pin control example (i.e. turning on/off a light, a relay, configuring a parameter, etc)
thing["GPIO_16"] << digitalPin(16);
// resource output example (i.e. reading a sensor value)
thing["millis"] >> outputValue(millis());
// more details at http://docs.thinger.io/arduino/
}
void loop() {
thing.handle();
}
#define USERNAME "your_user_name"
#define DEVICE_ID "your_device_id"
#define DEVICE_CREDENTIAL "your_device_credential"
#define SSID "your_wifi_ssid"
#define SSID_PASSWORD "your_wifi_ssid_password"
Last modified 2yr ago