PlatformIO IDE for VSCode

PlatformIO IDE is the next-generation integrated development environment for IoT.

  • Cross-platform build system without external dependencies to the OS software:

    • 400+ embedded boards
    • 20+ development platforms
    • 10+ frameworks
  • PIO Unified Debugger

  • PIO Remote™

  • PIO Unit Testing

  • C/C++ Intelligent Code Completion

  • C/C++ Smart Code Linter for rapid professional development

  • Library Manager for the hundreds popular libraries

  • Multi-projects workflow with multiple panes

  • Themes support with dark and light colors

  • Serial Port Monitor

  • Built-in Terminal with PlatformIO Core and CLI tool (pio, platformio)


Visual Studio Code is a lightweight but powerful source code editor which runs on your desktop and is available for Windows, macOS and Linux. It comes with built-in support for JavaScript, TypeScript and Node.js and has a rich ecosystem of extensions for other languages (such as C++, C#, Python, PHP, Go) and runtimes (such as .NET and Unity)

../_images/platformio-ide-vscode.png

Installation

Note

Please note that you do not need to install PlatformIO Core separately if you are going to use PlatformIO IDE for VSCode. PlatformIO Core is built into PlatformIO IDE and you will be able to use it within PlatformIO IDE Terminal.

  1. Download and install official Microsoft Visual Studio Code. PlatformIO IDE is built on top of it
  2. Open VSCode Package Manager
  3. Search for official platformio-ide extension
  4. Install PlatformIO IDE.
../_images/platformio-ide-vscode-pkg-installer.png

Quick Start

This tutorial introduces you to the basics of PlatformIO IDE workflow and shows you a creation process of a simple “Blink” example. After finishing you will have a general understanding of how to work with projects in the IDE.

Setting Up the Project

  1. Click on “PlatformIO Home” button on the bottom PlatformIO Toolbar
../_images/platformio-ide-vscode-welcome.png
  1. Click on “New Project”, select a board and create new PlatformIO Project
../_images/platformio-ide-vscode-new-project.png
  1. Open main.cpp file form src folder and replace its contents with the next:

Warning

The code below works only in pair with Arduino-based boards. Please follow to PlatformIO Project Examples repository for other pre-configured projects.

/**
 * Blink
 *
 * Turns on an LED on for one second,
 * then off for one second, repeatedly.
 */
#include "Arduino.h"

// Set LED_BUILTIN if it is not defined by Arduino framework
// #define LED_BUILTIN 13

void setup()
{
  // initialize LED digital pin as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop()
{
  // turn the LED on (HIGH is the voltage level)
  digitalWrite(LED_BUILTIN, HIGH);

  // wait for a second
  delay(1000);

  // turn the LED off by making the voltage LOW
  digitalWrite(LED_BUILTIN, LOW);

   // wait for a second
  delay(1000);
}
../_images/platformio-ide-vscode-blink-project.png
  1. Build your project with ctrl+alt+b hotkey (see all Key Bindings in “User Guide” section below) or using “Build” button on the PlatformIO Toolbar
../_images/platformio-ide-vscode-build-project.png

Learn more about PlatformIO Toolbar and other commands (Upload, Clean, Serial Monitor) below.

Happy coding with PlatformIO!

PlatformIO Toolbar

PlatformIO IDE Toolbar is located in VSCode Status Bar (left corner) and contains quick access buttons for the popular commands. Each button contains hint (delay mouse on it).

../_images/platformio-ide-vscode-toolbar.png
  • PlatformIO: Home (PIO Account, library and platform managers, board explorer, and many more...)
  • PlatformIO: Build
  • PlatformIO: Upload
  • PlatformIO: Clean
  • Run a task... (See “Task Runner” below)
  • Serial Port Monitor
  • PIO Terminal

Key Bindings

  • ctrl+alt+i Initialize or Update Project
  • ctrl+alt+b / cmd-shift-b / ctrl-shift-b Build Project
  • cmd-shift-d / ctrl-shift-d Debug project
  • ctrl+alt+u Upload Firmware
  • ctrl+alt+s Open Serial Port Monitor

Task Runner

PlatformIO IDE provides base tasks Menu > Tasks (Build, Upload, Clean, Monitor, etc) and custom tasks per Project Configuration File platformio.ini environment ([env:***]). A default behavior is to use Terminal Panel for presentation. Also, we use dedicated panel per unique task.

PlatformIO IDE provides own Problems Matcher named $platformio. You can use it later if decide to change base task settings.

You can override existing task with own presentation options. For example, let configure PlatformIO Task Runner to use NEW Terminal panel per each “Build” command:

  1. Please click on “gear” icon near “Build” task in Menu > Tasks
  2. Replace template in tasks.json with this code
{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "PlatformIO",
            "args": [
                "run"
            ],
            "problemMatcher": [
                "$platformio"
            ],
            "presentation": {
                "panel": "new"
            }
        }
    ]
}

See more options in official VSCode documentation.

Serial Port Monitor

You can customize Serial Port Monitor using Monitor options in Project Configuration File platformio.ini:

Example:

[env:esp32dev]
platform = espressif32
framework = arduino
board = esp32dev

; Custom Serial Monitor port
monitor_port = /dev/ttyUSB1

; Custom Serial Monitor baud rate
monitor_baud = 115200

Settings

How to configure VSCode settings?

platformio-ide.useBuiltinPIOCore

Use built-in PlatformIO Core, default configuration is true.

platformio-ide.useDevelopmentPIOCore

Use development version of PlatformIO Core, default configuration is false.

platformio-ide.autoRebuildAutocompleteIndex

Automatically rebuild C/C++ Project Index when Project Configuration File platformio.ini is changed or when new libraries are installed, default configuration is true.

platformio-ide.forceUploadAndMonitor

Force “Upload and Monitor” task for Upload (platformio-ide.upload) command, default configuration is false.

platformio-ide.customPATH

Custom PATH for platformio command. Paste here the result of echo $PATH (Unix) / echo %PATH% (Windows) command by typing into your system terminal if you prefer to use custom version of PlatformIO Core, default configuration is null.

Changelog

Please visit releases page.