PlatformIO Documentation
PlatformIO Documentation
Release 3.4.1
PlatformIO
Aug 02, 2017
Contents
1
Contents
1.1 What is PlatformIO? . . . . . . . . . . . . . .
1.2 PlatformIO IDE . . . . . . . . . . . . . . . .
1.3 PlatformIO Core . . . . . . . . . . . . . . . .
1.4 Tutorials and Examples . . . . . . . . . . . .
1.5 Project Configuration File platformio.ini
1.6 Environment variables . . . . . . . . . . . . .
1.7 Library Manager . . . . . . . . . . . . . . . .
1.8 Development Platforms . . . . . . . . . . . .
1.9 Frameworks . . . . . . . . . . . . . . . . . .
1.10 Embedded Boards . . . . . . . . . . . . . . .
1.11 Custom Platform & Board . . . . . . . . . . .
1.12 PIO Account . . . . . . . . . . . . . . . . . .
1.13 PIO Remote™ . . . . . . . . . . . . . . . . .
1.14 PIO Unified Debugger . . . . . . . . . . . . .
1.15 PIO Unit Testing . . . . . . . . . . . . . . . .
1.16 Cloud & Standalone IDE . . . . . . . . . . . .
1.17 Continuous Integration . . . . . . . . . . . . .
1.18 Articles about us . . . . . . . . . . . . . . . .
1.19 Frequently Asked Questions . . . . . . . . . .
1.20 Release Notes . . . . . . . . . . . . . . . . .
1.21 Migrating from 2.x to 3.0 . . . . . . . . . . .
Bibliography
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3
3
5
7
114
137
162
165
183
254
311
343
349
350
355
375
381
481
496
500
506
527
531
i
ii
PlatformIO Documentation, Release 3.4.1
Cross-platform IDE and unified debugger. Remote unit testing and firmware updates.
Social: Twitter | Facebook | Hackaday | Bintray | Community
Contents
1
PlatformIO Documentation, Release 3.4.1
2
Contents
CHAPTER
1
Contents
What is PlatformIO?
Contents
• Press about PlatformIO
• Awards
• Problematic
• Overview
• User SHOULD have a choice
• How does it work?
Press about PlatformIO
“Different microcontrollers normally have different developing tools . For instance Arduino rely on Arduino IDE. Few
more advanced users set up different graphical interfaces like Eclipse for better project management. Sometimes it may
be hard to keep up with different microcontrollers and tools. You probably thought that single unified development
tool could be great. Well this is what PlatformIO open source ecosystem is for.
This is cross platform code builder and library manager with platforms like Arduino or MBED support. They took
care of toolchains, debuggers, frameworks that work on most popular platforms like Windows, Mac and Linux. It
supports more than 200 development boards along with more than 15 development platforms and 10 frameworks. So
most of popular boards are covered. They’ve done hard work in organizing and managing hundreds of libraries that
can be included in to your project. Also lots of examples allow you to start developing quickly. PlatformIO initially
was developed with Command line philosophy. It’s been successfully used with other IDE’s like Eclipse or Visual
Studio. Recently they’ve released a version with built in IDE based on Atom text editor”, - [Embedds].
3
PlatformIO Documentation, Release 3.4.1
Awards
PlatformIO was nominated for the year’s best Software and Tools in the 2015/16 IoT Awards.
Problematic
• The main problem which repulses people from embedded world is a complicated process to setup development
software for a specific MCU/board: toolchains, proprietary vendor’s IDE (which sometimes isn’t free) and what
is more, to get a computer with OS where that software is supported.
• Multiple hardware platforms (MCUs, boards) require different toolchains, IDEs, etc, and, respectively, spending
time on learning new development environments.
• Finding proper libraries and code samples showing how to use popular sensors, actuators, etc.
• Sharing embedded projects between team members, regardless of operating system they prefer to work with.
Overview
PlatformIO is independent from the platform, in which it is running. In fact, the only requirement is Python, which
exists pretty much everywhere. What this means is that PlatformIO projects can be easily moved from one computer
to another, as well as that PlatformIO allows for the easy sharing of projects between team members, regardless
of operating system they prefer to work with. Beyond that, PlatformIO can be run not only on commonly used
desktops/laptops but also on the servers without X Window System. While PlatformIO itself is a console application,
it can be used in combination with one’s favorite Cloud & Standalone IDE or text editor such as PlatformIO IDE for
Atom, CLion, Eclipse, Emacs, NetBeans, Qt Creator, Sublime Text, VIM, Visual Studio, PlatformIO IDE for VScode,
etc.
Alright, so PlatformIO can run on different operating systems. But more importantly, from development perspective at
least, is a list of supported boards and MCUs. To keep things short: PlatformIO supports approximately 200 Embedded
Boards and all major Development Platforms.
User SHOULD have a choice
• Decide which operation system they want to run development process on. You can even use one OS at home
and another at work.
• Choose which editor to use for writing the code. It can be pretty simple editor or powerful favorite Cloud &
Standalone IDE.
• Focus on the code development, significantly simplifying support for the Development Platforms and MCUs.
How does it work?
Without going too deep into PlatformIO implementation details, work cycle of the project developed using PlatformIO
is as follows:
• Users choose board(s) interested in Project Configuration File platformio.ini
• Based on this list of boards, PlatformIO downloads required toolchains and installs them automatically.
• Users develop code and PlatformIO makes sure that it is compiled, prepared and uploaded to all the boards of
interest.
4
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
PlatformIO IDE
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)
We provide official packages (plugins, extensions) for the most popular IDEs and text editors.
Atom
Atom is a text editor that’s modern, approachable, yet hackable to the core—a tool you can customize to do anything
but also use productively without ever touching a config file.
1.2. PlatformIO IDE
5
PlatformIO Documentation, Release 3.4.1
Install PlatformIO IDE for Atom
VSCode
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)
6
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Install PlatformIO IDE for VSCode
PlatformIO Core
PlatformIO Core is a heart of whole PlatformIO ecosystem and consists of
• Multi-platform Build System
• Development platform and package managers
• Library Manager
• Library Dependency Finder (LDF)
• Serial Port Monitor
• Integration components (Cloud & Standalone IDE and Continuous Integration).
PlatformIO Core is written in Python 2.7 and works on Windows, macOS, Linux, FreeBSD and ARM-based creditcard sized computers (Raspberry Pi, BeagleBone, CubieBoard, Samsung ARTIK, etc.).
1.3. PlatformIO Core
7
PlatformIO Documentation, Release 3.4.1
PlatformIO Core provides a rich and documented Command Line Interface (CLI). The other PlatformIO-based software and IDEs are based on PlatformIO Core CLI, such as PlatformIO IDE. In other words, they wrap PlatformIO
Core with own GUI.
Note: Please note that you do not need to install PlatformIO Core if you are going to use PlatformIO IDE. PlatformIO Core is built into PlatformIO IDE and you will be able to use it within PlatformIO IDE Terminal.
Also, PlatformIO IDE allows to install PlatformIO Core Shell Commands (pio, platformio) globally to your
system via Menu: PlatformIO > Install Shell Commands.
Demo
Contents
• “Blink Project”
– Used in demo
• Platform Manager
– Used in demo
• Library Manager
– Used in demo
• Over-the-Air update for ESP8266
– Used in demo
“Blink Project”
Used in demo
1. Source code of Wiring Blink Example
2. platformio run command
3. platformio run -t upload command.
Platform Manager
Used in demo
1. Platform Manager
2. platformio platform list command
8
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
3. platformio platform search avr command
4. platformio platform show teensy command
5. platformio platform update command.
Library Manager
Used in demo
1. Library Manager
2. platformio lib search 1-wire command
3. platformio lib install 54 command
4. platformio lib search -f mbed command
5. platformio lib search -k rf command
6. platformio lib search radiohead command
7. platformio lib install 124 –version “1.40” command
8. platformio lib show 124 command
9. platformio lib update command.
Over-the-Air update for ESP8266
1.3. PlatformIO Core
9
PlatformIO Documentation, Release 3.4.1
Used in demo
1. platformio run command
2. platformio run -t upload command.
Installation
Note: Please note that you do not need to install PlatformIO Core if you are going to use PlatformIO IDE. PlatformIO Core is built into PlatformIO IDE and you will be able to use it within PlatformIO IDE Terminal.
Also, PlatformIO IDE allows to install PlatformIO Core Shell Commands (pio, platformio) globally to your
system via Menu: PlatformIO > Install Shell Commands.
PlatformIO Core is written in Python 2.7 and works on Windows, macOS, Linux, FreeBSD and ARM-based creditcard sized computers (Raspberry Pi, BeagleBone, CubieBoard, Samsung ARTIK, etc.).
• System requirements
• Installation Methods
– Python Package Manager
– Installer Script
* Super-Quick (Mac / Linux)
* Local Download (Mac / Linux / Windows)
– macOS Homebrew
– Full Guide
• Development Version
• Uninstall PIO Core and dependent packages
• Troubleshooting
System requirements
Operating System Windows, macOS, Linux, FreeBSD, Linux ARMv6+
Python Interpreter Python 2.7 is required. PlatformIO does not support Python 3.
Attention: Windows Users: Please Download the latest Python 2.7 and install it. DON’T
FORGET to select Add python.exe to Path feature on the “Customize” stage, otherwise Python Package Manager pip command will not be available.
10
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Terminal Application All commands below should be executed in Command-line application (Terminal). For macOS and Linux OS - Terminal application, for Windows OS – cmd.exe application.
Access to Serial Ports (USB/UART) Windows Users: Please check that you have correctly installed
USB driver from board manufacturer
Linux Users:
• Ubuntu/Debian users may need to add own “username” to the “dialout” group if they are not
“root”, doing this issuing a sudo usermod -a -G dialout yourusername.
• Install “udev” rules file 99-platformio-udev.rules (an instruction is located in the file).
• Raspberry Pi users, please read this article Enable serial port on Raspberry Pi.
Installation Methods
Please choose ONE of the following methods:
• Python Package Manager
• Installer Script
– Super-Quick (Mac / Linux)
– Local Download (Mac / Linux / Windows)
• macOS Homebrew
• Full Guide
1.3. PlatformIO Core
11
PlatformIO Documentation, Release 3.4.1
Python Package Manager
The latest stable version of PlatformIO may be installed or upgraded via Python Package Manager (pip) as follows:
pip install -U platformio
If pip command is not available run easy_install pip or use Installer Script which will install pip and
platformio automatically.
Note that you may run into permissions issues running these commands. You have a few options here:
• Run with sudo to install PlatformIO and dependencies globally
• Specify the pip install –user option to install local to your user
• Run the command in a virtualenv local to a specific project working set.
Installer Script
Super-Quick (Mac / Linux)
To install or upgrade PlatformIO paste that at a Terminal prompt (MAY require administrator access sudo):
python -c "$(curl -fsSL https://raw.githubusercontent.com/platformio/platformio/
˓→master/scripts/get-platformio.py)"
Local Download (Mac / Linux / Windows)
To install or upgrade PlatformIO, download (save as...) get-platformio.py script. Then run the following (MAY
require administrator access sudo):
# change directory to folder where is located downloaded "get-platformio.py"
cd /path/to/dir/where/is/located/get-platformio.py/script
# run it
python get-platformio.py
On Windows OS it may look like:
# change directory to folder where is located downloaded "get-platformio.py"
cd C:\path\to\dir\where\is\located\get-platformio.py\script
# run it
C:\Python27\python.exe get-platformio.py
macOS Homebrew
The latest stable version of PlatformIO may be installed or upgraded via macOS Homebrew Packages Manager (brew)
as follows:
brew install platformio
12
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Full Guide
1. Check a python version (only Python 2.7 is supported):
python --version
Windows Users only:
• Download Python 2.7 and install it.
• Add to PATH system variable ;C:\Python27;C:\Python27\Scripts; and reopen Command Prompt
(cmd.exe) application. Please read this article How to set the path and environment variables in Windows.
2. Install a platformio and related packages:
pip install -U platformio
If your computer does not recognize pip command, try to install it first using these instructions.
For upgrading platformio to the latest version:
pip install -U platformio
Development Version
Warning: If you use PlatformIO IDE, please enable development version:
• Atom: “Menu PlatformIO: Settings > PlatformIO IDE > Use development version of PlatformIO Core”
• VSCode: Set `platformio-ide.useDevelopmentPIOCore to true in Settings.
Install the latest PlatformIO from the develop branch:
# uninstall existing version
pip uninstall platformio
# install the latest development version of PlatformIO
pip install -U https://github.com/platformio/platformio-core/archive/develop.zip
If you want to be up-to-date with the latest develop version of PlatformIO, then you need to re-install PlatformIO
each time if you see the new commits in PlatformIO GitHub repository (branch: develop).
To revert to the latest stable version
pip uninstall platformio
pip install -U platformio
Uninstall PIO Core and dependent packages
• Uninstall PIO Core tool
# uninstall standalone PIO Core installed via `pip`
pip uninstall platformio
1.3. PlatformIO Core
13
PlatformIO Documentation, Release 3.4.1
# uninstall Homebrew's PIO Core (only macOS users if you installed it via
˓→Homebrew before)
brew uninstall platformio
• Dependent packages, global libraries are installed to $HOME/.platformio folder (in user’s HOME directory). Just remove it.
Troubleshooting
Note: Linux OS: Don’t forget to install “udev” rules file 99-platformio-udev.rules (an instruction is located in the
file).
Windows OS: Please check that you have correctly installed USB driver from board manufacturer
For further details, frequently questions, known issues, please refer to Frequently Asked Questions.
Quick Start
This tutorial introduces you to the basics of PlatformIO Core Command Line Interface (CLI) workflow and shows you
a creation process of a simple cross-platform “Blink” Project. After finishing you will have a general understanding
of how to work with the multiple development platforms and embedded boards.
Setting Up the Project
PlatformIO Core provides special platformio init command for configuring your projects. It allows to initialize new
empty project or update existing with the new data.
What is more, platformio init can be used for Cloud & Standalone IDE. It means that you will be able to import pregenerated PlatformIO project using favorite IDE and extend it with the professional instruments for IoT development.
This tutorial is based on the next popular embedded boards and development platforms using Arduino Wiring-based
Framework:
Platform
Atmel AVR
Espressif
Teensy
Board
Arduino Uno (8-bit ATmega328P)
NodeMCU 1.0 (32-bit ESP8266)
Teensy 3.1 (32-bit ARM MK20DX256)
Framework
Arduino Wiring-based Framework
Arduino Wiring-based Framework
Arduino Wiring-based Framework
Board Identifier
platformio init command requires to specify board identifier (ID/TYPE). It can be found using Embedded Boards
Explorer or platformio boards command. For example, using platformio boards let’s try to find Teensy boards:
> platformio boards teensy
Platform: teensy
--------------------------------------------------------------------------Type
MCU
Frequency Flash
RAM
Name
--------------------------------------------------------------------------teensy20
atmega32u4
16Mhz
31kB
2.5kB Teensy 2.0
teensy30
mk20dx128
48Mhz
128kB
16kB
Teensy 3.0
teensy31
mk20dx256
72Mhz
256kB
64kB
Teensy 3.1 / 3.2
14
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
teensylc
teensy20pp
mkl26z64
at90usb1286
48Mhz
16Mhz
62kB
127kB
8kB
8kB
Teensy LC
Teensy++ 2.0
According to the table above the ID/TYPE for Teensy 3.1 is teensy31. Also, the ID for Arduino UNO is uno and
for NodeMCU 1.0 (ESP-12E Module) is nodemcuv2.
Initialize Project
PlatformIO ecosystem contains big database with pre-configured settings for the most popular embedded boards.
It helps you to forget about installing toolchains, writing build scripts or configuring uploading process. Just tell
PlatformIO the Board ID and you will receive full working project with pre-installed instruments for the professional
development.
1. Create empty folder where you are going to initialize new PlatformIO project. Then open system Terminal and
change directory to it:
# create new direcotry
> mkdir path_to_the_new_directory
# go to it
> cd path_to_the_new_directory
2. Initialize project for the boards mentioned above (you can specify more than one board at time):
> platformio init --board uno --board nodemcuv2 --board teensy31
The current working directory *** will be used for the new project.
You can specify another project directory via
`platformio init -d %PATH_TO_THE_PROJECT_DIR%` command.
The next files/directories will be created in ***
platformio.ini - Project Configuration File. |-> PLEASE EDIT ME <-|
src - Put your source files here
lib - Put here project specific (private) libraries
Do you want to continue? [y/N]: y
Project has been successfully initialized!
Useful commands:
`platformio run` - process/build project from the current directory
`platformio run --target upload` or `platformio run -t upload` - upload firmware
˓→to embedded board
`platformio run --target clean` - clean project (remove compiled files)
Congrats! You have just created the first PlatformIO based Project with the next structure:
• Project Configuration File platformio.ini
• src directory where you should place source code (*.h, *.c, *.cpp, *.S, *.ino, etc.)
• lib directory can be used for the project specific (private) libraries. More details are located in lib/readme.
txt file.
• Miscellaneous files for VCS and Continuous Integration support.
Note: If you need to add new board to the existing project please use platformio init again.
The result of just generated platformio.ini:
1.3. PlatformIO Core
15
PlatformIO Documentation, Release 3.4.1
; PlatformIO Project Configuration File
;
;
Build options: build flags, source filter, extra scripting
;
Upload options: custom port, speed and extra flags
;
Library options: dependencies, extra library storages
;
; Please visit documentation for the other options and examples
; http://docs.platformio.org/page/projectconf.html
[env:uno]
platform = atmelavr
framework = arduino
board = uno
[env:nodemcuv2]
platform = espressif8266
framework = arduino
board = nodemcuv2
[env:teensy31]
platform = teensy
framework = arduino
board = teensy31
Now, we need to create main.cpp file and place it to src folder of our newly created project. The contents of
src/main.cpp:
/**
* Blink
*
* Turns on an LED on for one second,
* then off for one second, repeatedly.
*/
#include "Arduino.h"
#ifndef LED_BUILTIN
#define LED_BUILTIN 13
#endif
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);
16
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
}
The final Project structure:
project_dir
- lib
|
- readme.txt
- platformio.ini
- src
- main.cpp
Process Project
PlatformIO Core provides special platformio run command to process project. If you call it without any arguments,
PlatformIO Build System will process all project environments (which were created per each board specified above).
Here are a few useful commands:
• platformio run. Process (build) all environments specified in Project Configuration File platformio.ini
• platformio run --target upload. Build project and upload firmware to the all devices specified in
Project Configuration File platformio.ini
• platformio run --target clean. Clean project (delete compiled objects)
• platformio run -e uno. Process only uno environment
• platformio run -e uno -t upload. Build project only for uno and upload firmware.
Please follow to platformio run --target documentation for the other targets.
Finally, demo which demonstrates building project and uploading firmware to Arduino Uno:
Further Reading
• Project examples
• User Guide for PlatformIO Core commands
User Guide
Contents
• User Guide
– Usage
– Options
– Commands
1.3. PlatformIO Core
17
PlatformIO Documentation, Release 3.4.1
Usage
pio [OPTIONS] COMMAND
platformio [OPTIONS] COMMAND
# "pio" is the alias of "platformio" command
Options
--force, -f
Force to accept any confirmation prompts and disable progress bars.
--version
Show the version of PlatformIO
--help, -h
Show help for the available options and commands
$ platformio --help
$ platformio COMMAND --help
Commands
platformio account
Helper command for PIO Account.
# Create PIO Account
pio account register
# Login with credentials (will be sent to your e-mail)
pio account login
# Change temporary password (from e-mail) to permanent
pio account password
To print all available commands and options use:
pio account --help
platformio account --help
platformio account COMMAND --help
platformio account forgot
Contents
• platformio account forgot
– Usage
18
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
– Description
* Options
Usage
platformio account forgot [OPTIONS]
pio account forgot [OPTIONS]
Description
Allows you to reset password for PIO Account using E-Mail that was specified for registration.
Options
--username, -u
User name (E-Mail). You can omit this option and enter E-Mail in Forgot Wizard later.
platformio account login
Contents
• platformio account login
– Usage
– Description
* Options
Usage
platformio account login [OPTIONS]
pio account login [OPTIONS]
Description
Log in to PIO Account. If you are not able to provide authentication credentials manually you can use
PLATFORMIO_AUTH_TOKEN . This is very useful for Continuous Integration systems and PIO Remote™ operations .
1.3. PlatformIO Core
19
PlatformIO Documentation, Release 3.4.1
Options
--username, -u
User name (E-Mail). You can omit this option and enter E-Mail in Login Wizard later.
--password, -p
You can omit this option and enter securely password in Login Wizard later.
platformio account logout
Contents
• platformio account logout
– Usage
– Description
Usage
platformio account logout
pio account logout
Description
Log out of PIO Account.
platformio account password
Contents
• platformio account password
– Usage
– Description
Usage
platformio account password
pio account password
20
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Description
Change password for PIO Account.
platformio account register
Contents
• platformio account register
– Usage
– Description
* Options
Usage
platformio account register [OPTIONS]
pio account register [OPTIONS]
Description
Create a new PIO Account. A registration is FREE.
Options
--username, -u
User name (E-Mail). You can omit this option and enter E-Mail in Register Wizard later.
platformio account show
Contents
• platformio account show
– Usage
– Description
* Options
1.3. PlatformIO Core
21
PlatformIO Documentation, Release 3.4.1
Usage
platformio account show
pio account show
Description
Show detailed information about PIO Account:
• Active groups and expiration
• Group permissions
Options
--json-output
Return the output in JSON format
platformio account token
Contents
• platformio account token
– Usage
– Description
* Options
Usage
platformio account token
pio account token
Description
Get or regenerate Personal Authentication Token. It is very useful for Continuous Integration systems, PIO Remote™
operations where you are not able to authorize manually.
PlatformIO handles Personal Authentication Token from environment variable PLATFORMIO_AUTH_TOKEN .
Options
--regenerate
If this option is specified a new authentication token will be generated.
22
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
--json-output
Return the output in JSON format
platformio boards
Contents
• platformio boards
– Usage
– Description
* Options
– Examples
Usage
platformio boards [OPTIONS] [FILTER]
pio boards [OPTIONS] [FILTER]
Description
List pre-configured Embedded Boards
Options
--installed
List boards only from the installed platforms
--json-output
Return the output in JSON format
Examples
1. Show all available pre-configured embedded boards
$ platformio boards
Platform: atmelavr
--------------------------------------------------------------------------Type
MCU
Frequency Flash
RAM
Name
--------------------------------------------------------------------------btatmega168
atmega168
16Mhz
14Kb
1Kb
Arduino BT ATmega168
btatmega328
atmega328p
16Mhz
28Kb
2Kb
Arduino BT ATmega328
diecimilaatmega168
atmega168
16Mhz
14Kb
1Kb
Arduino Duemilanove or
˓→Diecimila ATmega168
1.3. PlatformIO Core
23
PlatformIO Documentation, Release 3.4.1
diecimilaatmega328
atmega328p
˓→Diecimila ATmega328
esplora
atmega32u4
ethernet
atmega328p
...
16Mhz
30Kb
2Kb
Arduino Duemilanove or
16Mhz
16Mhz
28Kb
31Kb
2Kb
2Kb
Arduino Esplora
Arduino Ethernet
2. Filter Arduino-based boards
$ platformio boards arduino
Platform: atmelavr
--------------------------------------------------------------------------Type
MCU
Frequency Flash
RAM
Name
--------------------------------------------------------------------------btatmega168
atmega168
16Mhz
14Kb
1Kb
Arduino BT ATmega168
btatmega328
atmega328p
16Mhz
28Kb
2Kb
Arduino BT ATmega328
diecimilaatmega168
atmega168
16Mhz
14Kb
1Kb
Arduino Duemilanove or
˓→Diecimila ATmega168
diecimilaatmega328
atmega328p
16Mhz
30Kb
2Kb
Arduino Duemilanove or
˓→Diecimila ATmega328
esplora
atmega32u4
16Mhz
28Kb
2Kb
Arduino Esplora
ethernet
atmega328p
16Mhz
31Kb
2Kb
Arduino Ethernet
...
3. Filter mbed-enabled boards
$ platformio boards mbed
Platform: freescalekinetis
--------------------------------------------------------------------------Type
MCU
Frequency Flash
RAM
Name
--------------------------------------------------------------------------frdm_k20d50m
mk20dx128vlh5 48Mhz
128Kb
16Kb
Freescale Kinetis FRDM˓→K20D50M
frdm_k22f
mk22fn512vlh12 120Mhz
512Kb
128Kb Freescale Kinetis FRDM˓→K22F
...
Platform: nordicnrf51
--------------------------------------------------------------------------Type
MCU
Frequency Flash
RAM
Name
--------------------------------------------------------------------------wallBotBLE
nrf51822
16Mhz
128Kb
16Kb
JKSoft Wallbot BLE
nrf51_dk
nrf51822
32Mhz
256Kb
32Kb
Nordic nRF51-DK
...
Platform: nxplpc
--------------------------------------------------------------------------Type
MCU
Frequency Flash
RAM
Name
--------------------------------------------------------------------------blueboard_lpc11u24
lpc11u24
48Mhz
32Kb
8Kb
BlueBoard-LPC11U24
dipcortexm0
lpc11u24
50Mhz
32Kb
8Kb
DipCortex M0
lpc11u35
lpc11u35
48Mhz
64Kb
10Kb
EA LPC11U35 QuickStart
˓→Board
...
Platform: ststm32
---------------------------------------------------------------------------
24
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Type
MCU
Frequency Flash
RAM
Name
--------------------------------------------------------------------------disco_f401vc
stm32f401vct6 84Mhz
256Kb
64Kb
32F401CDISCOVERY
nucleo_f030r8
stm32f030r8t6 48Mhz
64Kb
8Kb
ST Nucleo F030R8
...
4. Filter boards which are based on ATmega168 MCU
$ platformio boards atmega168
Platform: atmelavr
--------------------------------------------------------------------------Type
MCU
Frequency Flash
RAM
Name
--------------------------------------------------------------------------btatmega168
atmega168
16Mhz
14Kb
1Kb
Arduino BT ATmega168
diecimilaatmega168
atmega168
16Mhz
14Kb
1Kb
Arduino Duemilanove or
˓→Diecimila ATmega168
miniatmega168
atmega168
16Mhz
14Kb
1Kb
Arduino Mini ATmega168
atmegangatmega168
atmega168
16Mhz
14Kb
1Kb
Arduino NG or older
˓→ATmega168
nanoatmega168
atmega168
16Mhz
14Kb
1Kb
Arduino Nano ATmega168
pro8MHzatmega168
atmega168
8Mhz
14Kb
1Kb
Arduino Pro or Pro Mini
˓→ATmega168 (3.3V, 8 MHz)
pro16MHzatmega168
atmega168
16Mhz
14Kb
1Kb
Arduino Pro or Pro Mini
˓→ATmega168 (5V, 16 MHz)
lilypadatmega168
atmega168
8Mhz
14Kb
1Kb
LilyPad Arduino ATmega168
168pa16m
atmega168p
16Mhz
15Kb
1Kb
Microduino Core
˓→([email protected],5V)
168pa8m
atmega168p
8Mhz
15Kb
1Kb
Microduino Core
˓→([email protected],3.3V)
5. Show boards by TI MSP430
$ platformio boards timsp430
Platform: timsp430
--------------------------------------------------------------------------Type
MCU
Frequency Flash
RAM
Name
--------------------------------------------------------------------------lpmsp430fr5739
msp430fr5739 16Mhz
15Kb
1Kb
FraunchPad w/
˓→msp430fr5739
lpmsp430f5529
msp430f5529
16Mhz
128Kb
1Kb
LaunchPad w/ msp430f5529
˓→(16MHz)
lpmsp430f5529_25
msp430f5529
25Mhz
128Kb
1Kb
LaunchPad w/ msp430f5529
˓→(25MHz)
lpmsp430fr5969
msp430fr5969 8Mhz
64Kb
1Kb
LaunchPad w/ msp430fr5969
lpmsp430g2231
msp430g2231
1Mhz
2Kb
128B
LaunchPad w/ msp430g2231
˓→(1MHz)
lpmsp430g2452
msp430g2452
16Mhz
8Kb
256B
LaunchPad w/ msp430g2452
˓→(16MHz)
lpmsp430g2553
msp430g2553
16Mhz
16Kb
512B
LaunchPad w/ msp430g2553
˓→(16MHz)
platformio ci
1.3. PlatformIO Core
25
PlatformIO Documentation, Release 3.4.1
Contents
• platformio ci
– Usage
– Description
– Options
– Examples
Usage
platformio ci [OPTIONS] [SRC]
pio ci [OPTIONS] [SRC]
Description
platformio ci command is conceived of as “hot key” for building project with arbitrary source code structure.
In a nutshell, using SRC and platformio ci --lib contents PlatformIO initializes via platformio init new
project in platformio ci --build-dir with the build environments (using platformio ci --board
or platformio ci --project-conf) and processes them via platformio run command.
platformio ci command accepts multiple SRC arguments, platformio ci --lib and platformio ci
--exclude options which can be a path to directory, file or Glob Pattern. Also, you can omit SRC argument
and set path (multiple paths are allowed denoting with :) to PLATFORMIO_CI_SRC Environment variable
For more details as for integration with the popular Continuous Integration Systems please follow to Continuous
Integration page.
Note: platformio ci command is useful for library developers. It allows to build different examples without creating
own project per them. Also, is possible to upload firmware to the target device. In this case, you need to pass additional
option --project-option="targets=upload". What is more, you can specify custom upload port using
--project-option="upload_port=<port>" option. See platformio ci --project-option for
details.
Options
-l, --lib
Source code which will be copied to <BUILD_DIR>/lib directly.
If platformio ci --lib is a path to file (not to directory), then PlatformIO will create temporary directory
within <BUILD_DIR>/lib and copy the rest files into it.
--exclude
Exclude directories and/-or files from platformio ci --build-dir. The path must be relative to PlatformIO
project within platformio ci --build-dir.
For example, exclude from project src directory:
• examples folder
26
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
• *.h files from foo folder
platformio ci --exclude=src/examples --exclude=src/foo/*.h [SRC]
-b, --board
Build project with automatically pre-generated environments based on board settings.
For more details please look into platformio init --board.
--build-dir
Path to directory where PlatformIO will initialise new project. By default it’s temporary directory within your operation system.
Note: This directory will be removed at the end of build process. If you want to keep it, please use platformio
ci --keep-build-dir.
--keep-build-dir
Don’t remove platformio ci --build-dir after build process.
-P, --project-conf
Buid project using pre-configured Project Configuration File platformio.ini.
-O, --project-option
Pass additional options from Project Configuration File platformio.ini to platformio init command. Use multiple
--project-option options to pass multiple options to platformio init command. For example, automatically
install dependent libraries platformio ci --project-option="lib_deps=ArduinoJSON" or ignore
specific library platformio ci --project-option="lib_ignore=SomeLib".
-v, --verbose
Shows detailed information when processing environments.
This option can be set globally using
PLATFORMIO_SETTING_FORCE_VERBOSE.
force_verbose
setting
or
by
environment
variable
Examples
For the others examples please follow to Continuous Integration page.
platformio debug
Helper command for PIO Unified Debugger.
Contents
• platformio debug
– Usage
– Description
– Options
1.3. PlatformIO Core
27
PlatformIO Documentation, Release 3.4.1
– Examples
Usage
platformio debug [OPTIONS]
pio debug [OPTIONS]
# A binary shortcut for "platformio debug --interface=gdb" command
piodebuggdb [GDB OPTIONS]
Description
Prepare PlatformIO project for debugging or launch debug server.
Options
-e, --environment
Debug specified environments.
You can also specify which environments should be used for debugging by default using env_default option from
Project Configuration File platformio.ini.
-d, --project-dir
Specify the path to a project directory. By default, --project-dir is equal to a current working directory (CWD).
--interface
PIO Debugging Interface. Valid values:
• gdb - GDB: The GNU Project Debugger
-v, --verbose
Shows detailed information when processing environments.
This option can be set globally using
PLATFORMIO_SETTING_FORCE_VERBOSE.
force_verbose
setting
or
by
environment
variable
Examples
1. Prepare a project for debugging
> platformio debug
[Sun Apr 30 01:34:01 2017] Processing mzeropro (platform: atmelsam; debug_extra_cmds:
˓→b main.cpp:26; board: mzeropro; framework: arduino)
-------------------------------------------------------------------------------------˓→--------Verbose mode can be enabled via `-v, --verbose` option
Collected 26 compatible libraries
Looking for dependencies...
Project does not have dependencies
28
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Compiling .pioenvs/mzeropro/src/main.o
Compiling .pioenvs/mzeropro/FrameworkArduinoVariant/variant.o
Compiling .pioenvs/mzeropro/FrameworkArduino/IPAddress.o
Compiling .pioenvs/mzeropro/FrameworkArduino/Print.o
Archiving .pioenvs/mzeropro/libFrameworkArduinoVariant.a
Indexing .pioenvs/mzeropro/libFrameworkArduinoVariant.a
...
Compiling .pioenvs/mzeropro/FrameworkArduino/wiring_analog.o
Compiling .pioenvs/mzeropro/FrameworkArduino/wiring_digital.o
Compiling .pioenvs/mzeropro/FrameworkArduino/wiring_private.o
Compiling .pioenvs/mzeropro/FrameworkArduino/wiring_shift.o
Archiving .pioenvs/mzeropro/libFrameworkArduino.a
Indexing .pioenvs/mzeropro/libFrameworkArduino.a
Linking .pioenvs/mzeropro/firmware.elf
Calculating size .pioenvs/mzeropro/firmware.elf
Building .pioenvs/mzeropro/firmware.bin
text
data
bss
dec
hex filename
11512
256
1788
13556
34f4 .pioenvs/mzeropro/firmware.elf
=========================== [SUCCESS] Took 7.82 seconds ===========================
2. Launch GDB instance and load initial configuration per a project
> platformio debug --interface=gdb -x .pioinit
PlatformIO Plus (https://pioplus.com) v0.8.2
...
Loading section .text, size 0x2c98 lma 0x4000
Loading section .ramfunc, size 0x60 lma 0x6c98
Loading section .data, size 0x100 lma 0x6cf8
Start address 0x47b0, load size 11768
Transfer rate: 4 KB/sec, 3922 bytes/write.
target halted due to debug-request, current mode: Thread
xPSR: 0x81000000 pc: 0x000028f4 msp: 0x20002c00
target halted due to debug-request, current mode: Thread
xPSR: 0x81000000 pc: 0x000028f4 msp: 0x20002c00
Breakpoint 2 at 0x413a: file src/main.cpp, line 26.
platformio device
Contents
• platformio device
– platformio device list
* Usage
* Description
* Options
* Examples
– platformio device monitor
* Usage
1.3. PlatformIO Core
29
PlatformIO Documentation, Release 3.4.1
* Description
* Options
* Examples
platformio device list
Usage
platformio device list [OPTIONS]
pio device list [OPTIONS]
Description
List available Serial Ports
Options
--json-output
Return the output in JSON format
Examples
1. Unix OS
$ platformio device list
/dev/cu.SLAB_USBtoUART
---------Hardware ID: USB VID:PID=10c4:ea60 SNR=0001
Description: CP2102 USB to UART Bridge Controller
/dev/cu.uart-1CFF4676258F4543
---------Hardware ID: USB VID:PID=451:f432 SNR=1CFF4676258F4543
Description: Texas Instruments MSP-FET430UIF
2. Windows OS
$ platformio device list
COM4
---------Hardware ID: USB VID:PID=0451:F432
Description: MSP430 Application UART (COM4)
COM3
---------Hardware ID: USB VID:PID=10C4:EA60 SNR=0001
Description: Silicon Labs CP210x USB to UART Bridge (COM3)
30
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
platformio device monitor
Usage
platformio device monitor [OPTIONS]
Description
This is a console application that provides a small terminal application. It is based on Miniterm and itself does not
implement any terminal features such as VT102 compatibility. However it inherits these features from the terminal
it is run. For example on GNU/Linux running from an xterm it will support the escape sequences of the xterm. On
Windows the typical console window is dumb and does not support any escapes. When ANSI.sys is loaded it supports
some escapes.
To control monitor please use these “hot keys”:
• Ctrl+C Quit
• Ctrl+T Menu
• Ctrl+T followed by Ctrl+H Help
Options
-p, --port
Port, a number or a device name.
Could be customized in Project Configuration File platformio.ini using monitor_port option.
-b, --baud
Set baud rate, default 9600.
Could be customized in Project Configuration File platformio.ini using monitor_baud option.
--parity
Set parity (None, Even, Odd, Space, Mark), one of [N, E, O, S, M], default N
--rtscts
Enable RTS/CTS flow control, default Off
--xonxoff
Enable software flow control, default Off
--rts
Set initial RTS line state (0 or 1).
Could be customized in Project Configuration File platformio.ini using monitor_rts option.
--dtr
Set initial DTR line state (0 or 1).
Could be customized in Project Configuration File platformio.ini using monitor_dtr option.
--echo
1.3. PlatformIO Core
31
PlatformIO Documentation, Release 3.4.1
Enable local echo, default Off
--encoding
Set the encoding for the serial port (e.g. hexlify, Latin1, UTF-8), default UTF-8.
-f, --filter
Add text transformation. Available filters:
• colorize Apply different colors for received and echo
• debug Print what is sent and received
• default Remove typical terminal control codes from input
• direct Do-nothing: forward all data unchanged
• nocontrol Remove all control codes, incl. CR+LF
• printable Show decimal code for all non-ASCII characters and replace most control codes
--eol
End of line mode (CR, LF or CRLF), default CRLF
NEW: Available in Miniterm/PySerial 3.0
--raw
Do not apply any encodings/transformations
--exit-char
ASCII code of special character that is used to exit the application, default 3 (DEC, Ctrl+C).
For example, to use Ctrl+] run platformio device monitor --exit-char 29.
--menu-char
ASCII code of special character that is used to control miniterm (menu), default 20 (DEC)
---quiet
Diagnostics: suppress non-error messages, default Off
Examples
1. Show available options for monitor
$ platformio device monitor --help
Usage: platformio device monitor [OPTIONS]
Options:
-p, --port TEXT
-b, --baud INTEGER
--parity [N|E|O|S|M]
--rtscts
--xonxoff
--rts [0|1]
--dtr [0|1]
--echo
--encoding TEXT
-f, --filter TEXT
32
Port, a number or a device name
Set baud rate, default=9600
Set parity, default=N
Enable RTS/CTS flow control, default=Off
Enable software flow control, default=Off
Set initial RTS line state, default=0
Set initial DTR line state, default=0
Enable local echo, default=Off
Set the encoding for the serial port (e.g. hexlify,
Latin1, UTF-8), default: UTF-8
Add text transformation
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
--eol [CR|LF|CRLF]
--raw
--exit-char INTEGER
--menu-char INTEGER
--quiet
-h, --help
End of line mode, default=CRLF
Do not apply any encodings/transformations
ASCII code of special character that is used to exit
the application, default=29 (DEC)
ASCII code of special character that is used to
control miniterm (menu), default=20 (DEC)
Diagnostics: suppress non-error messages, default=Off
Show this message and exit.
2. Communicate with serial device and print help inside terminal
$ platformio device monitor
--- Available ports:
--- /dev/cu.Bluetooth-Incoming-Port n/a
--- /dev/cu.Bluetooth-Modem n/a
--- /dev/cu.SLAB_USBtoUART CP2102 USB to UART Bridge Controller
--- /dev/cu.obd2ecu-SPPDev n/a
Enter port name:/dev/cu.SLAB_USBtoUART
--- Miniterm on /dev/cu.SLAB_USBtoUART: 9600,8,N,1 ----- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H --Hello PlatformIO!
----- Ctrl+]
Exit program
--- Ctrl+T
Menu escape key, followed by:
--- Menu keys:
--Ctrl+T Send the menu character itself to remote
--Ctrl+] Send the exit character itself to remote
--Ctrl+I Show info
--Ctrl+U Upload file (prompt will be shown)
--- Toggles:
--Ctrl+R RTS
Ctrl+E local echo
--Ctrl+D DTR
Ctrl+B BREAK
--Ctrl+L line feed
Ctrl+A Cycle repr mode
----- Port settings (Ctrl+T followed by the following):
--p
change port
--7 8
set data bits
--n e o s m change parity (None, Even, Odd, Space, Mark)
--1 2 3
set stop bits (1, 2, 1.5)
--b
change baud rate
--x X
disable/enable software flow control
--r R
disable/enable hardware flow control
--- exit ---
platformio init
Contents
• platformio init
– Usage
– Description
1.3. PlatformIO Core
33
PlatformIO Documentation, Release 3.4.1
– Options
– Examples
Usage
platformio init [OPTIONS]
pio init [OPTIONS]
Description
Initialize new PlatformIO based project or update existing with new data.
This command will create:
• Project Configuration File platformio.ini
• src directory where you should place source code (*.h, *.c, *.cpp, *.S, *.ino, etc.)
• lib directory can be used for the project specific (private) libraries. More details are located in lib/readme.
txt file.
• Miscellaneous files for VCS and Continuous Integration support.
Options
-d, --project-dir
A path to a directory where PlatformIO will initialize new project.
-b, --board
If you specify board ID (you can pass multiple --board options), then PlatformIO will automatically generate
environment for Project Configuration File platformio.ini and pre-fill these data:
• platform
• framework
• board
The full list with pre-configured boards is available here Development Platforms.
--ide
Initialize PlatformIO project for the specified IDE which can be imported later via “Import Project” functionality.
A list with supported IDE is available within platformio init --help command. Also, please take a look at
Cloud & Standalone IDE page.
-O, --project-option
Initialize project with additional options from Project Configuration File platformio.ini. For example, platformio
init --project-option="lib_deps=ArduinoJSON". Multiple options are allowed.
--env-prefix
An environment prefix which will be used with pair in board type. For example, the default environment name for
teensy_31 board will be [env:teensy_31].
34
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
-s, --silent
Suppress progress reporting
Examples
1. Initialize new project in a current working directory
> platformio init
The current working directory *** will be used for the new project.
You can specify another project directory via
`platformio init -d %PATH_TO_THE_PROJECT_DIR%` command.
The next files/directories will be created in ***
platformio.ini - Project Configuration File. |-> PLEASE EDIT ME <-|
src - Put your source files here
lib - Put here project specific (private) libraries
Project has been successfully initialized!
Useful commands:
`platformio run` - process/build project from the current directory
`platformio run --target upload` or `platformio run -t upload` - upload firmware to
˓→embedded board
`platformio run --target clean` - clean project (remove compiled files)
2. Initialize new project in a specified directory
> platformio init -d %PATH_TO_DIR%
The next files/directories will be created in ***
platformio.ini - Project Configuration File. |-> PLEASE EDIT ME <-|
...
3. Initialize project for Arduino Uno
> platformio init --board uno
The current working directory *** will be used for the new project.
You can specify another project directory via
`platformio init -d %PATH_TO_THE_PROJECT_DIR%` command.
...
4. Initialize project for Teensy 3.1 board with custom mbed
> platformio init --board teensy31 --project-option "framework=mbed"
The current working directory *** will be used for the new project.
You can specify another project directory via
`platformio init -d %PATH_TO_THE_PROJECT_DIR%` command.
...
Library Manager
1.3. PlatformIO Core
35
PlatformIO Documentation, Release 3.4.1
Usage
platformio lib [OPTIONS] COMMAND
# To print all available commands and options use
platformio lib --help
platformio lib COMMAND --help
Options
-g, --global
New in version 3.0.
Manage global PlatformIO’s library storage ( “home_dir/lib”) where Library Dependency Finder (LDF) will look for
dependencies by default.
-d, --storage-dir
New in version 3.0.
Manage custom library storage. It can be used later for the lib_extra_dirs option from Project Configuration File
platformio.ini.
Demo
Commands
platformio lib builtin
Contents
• platformio lib builtin
– Usage
– Description
– Options
– Examples
Usage
platformio lib builtin [OPTIONS]
pio lib builtin [OPTIONS]
36
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Description
List built-in libraries based on installed Development Platforms and their frameworks, SDKs, etc.
Options
--storage
List libraries from specified storages. For example, framework-arduinoavr.
--json-output
Return the output in JSON format
Examples
> platformio lib builtin
framework-arduinoavr
********************
Bridge
======
Enables the communication between the Linux processor and the microcontroller. For
˓→Arduino/Genuino Yún, Yún Shield and TRE only.
Version: 1.6.1
Homepage: http://www.arduino.cc/en/Reference/YunBridgeLibrary
Keywords: communication
Compatible frameworks: arduino
Compatible platforms: *
Authors: Arduino
EEPROM
======
Enables reading and writing to the permanent board storage.
Version: 2.0
Homepage: http://www.arduino.cc/en/Reference/EEPROM
Keywords: data, storage
Compatible frameworks: arduino
Compatible platforms: atmelavr
Authors: Arduino, Christopher Andrews
...
framework-arduinosam
********************
Audio
=====
Allows playing audio files from an SD card. For Arduino DUE only.
Version: 1.0
Homepage: http://arduino.cc/en/Reference/Audio
1.3. PlatformIO Core
37
PlatformIO Documentation, Release 3.4.1
Keywords: signal, input, output
Compatible frameworks: arduino
Compatible platforms: atmelsam
Authors: Arduino
...
framework-arduinoespressif32
****************************
SPI
===
Enables the communication with devices that use the Serial Peripheral Interface (SPI)
˓→Bus. For all Arduino boards, BUT Arduino DUE.
Version: 1.0
Homepage: http://arduino.cc/en/Reference/SPI
Keywords: signal, input, output
Compatible frameworks: arduino
Compatible platforms:
Authors: Hristo Gochkov
...
framework-arduinoespressif8266
******************************
ArduinoOTA
==========
Enables Over The Air upgrades, via wifi and espota.py UDP request/TCP download.
Version: 1.0
Keywords: communication
Compatible frameworks: arduino
Compatible platforms: espressif8266
Authors: Ivan Grokhotkov and Miguel Angel Ajo
DNSServer
=========
A simple DNS server for ESP8266.
Version: 1.1.0
Keywords: communication
Compatible frameworks: arduino
Compatible platforms: espressif8266
Authors: Kristijan Novoselić
...
framework-arduinointel
**********************
Adafruit NeoPixel
=================
Arduino library for controlling single-wire-based LED pixels and strip.
Version: 1.0.3
38
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Homepage: https://github.com/adafruit/Adafruit_NeoPixel
Keywords: display
Compatible frameworks: arduino
Compatible platforms: *
Authors: Adafruit
CurieBLE
========
Library to manage the Bluetooth Low Energy module with Curie Core boards.
Version: 1.0
Keywords: communication
Compatible frameworks: arduino
Compatible platforms: intel_arc32
Authors: Emutex
CurieEEPROM
===========
Enables reading and writing to OTP flash area of Curie
Version: 1.0
Homepage: http://www.arduino.cc/en/Reference/EEPROM
Keywords: data, storage
Compatible frameworks: arduino
Compatible platforms: intel_arc32
Authors: Intel
...
framework-arduinomicrochippic32
*******************************
Firmata
=======
Enables the communication with computer apps using a standard serial protocol. For
˓→all Arduino boards.
Version: 2.4.4
Homepage: https://github.com/firmata/arduino
Keywords: device, control
Compatible frameworks: arduino
Compatible platforms: *
Authors: Firmata Developers
framework-arduinoteensy
***********************
Adafruit CC3000 Library
=======================
Library code for Adafruit's CC3000 WiFi breakouts.
Version: 1.0.1
Homepage: https://github.com/adafruit/Adafruit_CC3000_Library
Keywords: communication
Compatible frameworks: arduino
Compatible platforms: *
Authors: Adafruit
1.3. PlatformIO Core
39
PlatformIO Documentation, Release 3.4.1
...
framework-energiamsp430
***********************
AIR430BoostEuropeETSI
=====================
Library for the CC110L Sub-1GHz radio BoosterPack for use in Europe
Version: 1.0.0
Homepage: http://energia.nu/reference/libraries/
Keywords: communication
Compatible frameworks: arduino
Compatible platforms:
Authors: Energia
...
framework-energiativa
*********************
aJson
=====
An Arduino library to enable JSON processing with Arduino
Keywords: json, rest, http, web
Compatible frameworks: arduino
Compatible platforms: atmelavr
platformio lib install
Contents
• platformio lib install
– Usage
– Description
– Storage Options
– Options
– Version control
* Git
* Mercurial
* Subversion
– Examples
40
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Usage
platformio lib [STORAGE_OPTIONS] install [OPTIONS] [LIBRARY...]
pio lib [STORAGE_OPTIONS] install [OPTIONS] [LIBRARY...]
# install project dependent library
# (run it from a project root where is located "platformio.ini")
platformio lib install [OPTIONS] [LIBRARY...]
# install to global storage
platformio lib --global install [OPTIONS] [LIBRARY...]
platformio lib -g install [OPTIONS] [LIBRARY...]
# install to custom storage
platformio lib --storage-dir /path/to/dir install [OPTIONS] [LIBRARY...]
platformio lib -d /path/to/dir install [OPTIONS] [LIBRARY...]
# [LIBRARY...] forms
platformio lib [STORAGE_OPTIONS]
platformio lib [STORAGE_OPTIONS]
platformio lib [STORAGE_OPTIONS]
platformio lib [STORAGE_OPTIONS]
platformio lib [STORAGE_OPTIONS]
platformio lib [STORAGE_OPTIONS]
platformio lib [STORAGE_OPTIONS]
platformio lib [STORAGE_OPTIONS]
platformio lib [STORAGE_OPTIONS]
platformio lib [STORAGE_OPTIONS]
platformio lib [STORAGE_OPTIONS]
platformio lib [STORAGE_OPTIONS]
platformio lib [STORAGE_OPTIONS]
˓→locally)
platformio lib [STORAGE_OPTIONS]
˓→branch or tag)
install
install
install
install
install
install
install
install
install
install
install
install
install
(with no args, project dependencies)
<id>
id=<id>
<id>@<version>
<id>@<version range>
<name>
<name>@<version>
<name>@<version range>
<zip or tarball url>
file://<zip or tarball file>
file://<folder>
<repository>
<name>=<repository> (name it should have
install <repository#tag> ("tag" can be commit,
Warning: If some libraries are not visible in PlatformIO IDE and Code Completion or Code Linting does not
work properly, please perform
• Atom: “Menu: PlatformIO > Rebuild C/C++ Project Index (Autocomplete, Linter)”
• VSCode: “Menu: View > Command Palette... > PlatformIO: Rebuild C/C++ Project Index”
Description
Install a library, and any libraries that it depends on using:
1. Library id or name from PlatformIO Library Registry
2. Custom folder, repository or archive.
The version supports Semantic Versioning ( <major>.<minor>.<patch>) and can take any of the following
forms:
• 0.1.2 - an exact version number. Use only this exact version
• ^0.1.2 - any compatible version (exact version for 0.x.x versions
1.3. PlatformIO Core
41
PlatformIO Documentation, Release 3.4.1
• ~0.1.2 - any version with the same major and minor versions, and an equal or greater patch version
• >0.1.2 - any version greater than 0.1.2. >=, <, and <= are also possible
• >0.1.0,!=0.2.0,<0.3.0 - any version greater than 0.1.0, not equal to 0.2.0 and less than 0.3.0
PlatformIO supports installing from local directory or archive. Need to use file:// prefix before local path. Also,
directory or archive should contain .library.json manifest (see library.json).
• file:///local/path/to/the/platform/dir
• file:///local/path/to/the/platform.zip
• file:///local/path/to/the/platform.tar.gz
Storage Options
See base options for Library Manager.
Options
-s, --silent
Suppress progress reporting
--interactive
Allow to make a choice for all prompts
Version control
PlatformIO supports installing from Git, Mercurial and Subversion, and detects the type of VCS using url prefixes:
“git+”, “hg+”, or “svn+”.
Note: PlatformIO requires a working VCS command on your path: git, hg or svn.
Git
The supported schemes are: git, git+https and git+ssh. Here are the supported forms:
• user/library (short version for GitHub repository)
• https://github.com/user/library.git
• git+git://git.server.org/my-library
• git+https://git.server.org/my-library
• git+ssh://git.server.org/my-library
Passing branch names, a commit hash or a tag name is possible like so:
• https://github.com/user/library.git#master
• git+git://git.server.org/my-library#master
• git+https://git.server.org/my-library#v1.0
42
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
• git+ssh://git.server.org/my-library#7846d8ad52f983f2f2887bdc0f073fe9755a806d
Mercurial
The supported schemes are: hg+http, hg+https and hg+ssh. Here are the supported forms:
• https://developer.mbed.org/users/user/code/library/ (install ARM mbed library)
• hg+hg://hg.server.org/my-library
• hg+https://hg.server.org/my-library
• hg+ssh://hg.server.org/my-library
Passing branch names, a commit hash or a tag name is possible like so:
• hg+hg://hg.server.org/my-library#master
• hg+https://hg.server.org/my-library#v1.0
• hg+ssh://hg.server.org/my-library#4cfe2fa00668
Subversion
The supported schemes are: svn, svn+svn, svn+http, svn+https and svn+ssh. Here are the supported
forms:
• svn+svn://svn.server.org/my-library
• svn+https://svn.server.org/my-library
• svn+ssh://svn.server.org/my-library
You can also give specific revisions to an SVN URL, like so:
• svn+svn://svn.server.org/my-library#13
Examples
1. Install the latest version of library to a global storage using ID or NAME
> platformio lib -g install 4
Library Storage: /storage/dir/...
LibraryManager: Installing id=4
Downloading [####################################] 100%
Unpacking [####################################] 100%
IRremote @ 2.2.1 has been successfully installed!
# repeat command with name
> platformio lib -g install IRRemote
Library Storage: /storage/dir/...
Looking for IRRemote library in registry
Found: http://platformio.org/lib/show/4/IRremote
LibraryManager: Installing id=4
IRremote @ 2.2.1 is already installed
2. Install specified version of a library to a global storage
1.3. PlatformIO Core
43
PlatformIO Documentation, Release 3.4.1
> platformio lib -g install [email protected]
Library Storage: /storage/dir/...
Looking for ArduinoJson library in registry
Found: http://platformio.org/lib/show/64/ArduinoJson
LibraryManager: Installing id=64 @ 5.6.7
Downloading [####################################] 100%
Unpacking [####################################] 100%
ArduinoJson @ 5.6.7 has been successfully installed!
3. Install library with dependencies to custom storage
> platformio lib --storage-dir /my/storage/dir install DallasTemperature
Library Storage: /my/storage/dir
Looking for DallasTemperature library in registry
Found: http://platformio.org/lib/show/54/DallasTemperature
LibraryManager: Installing id=54
Downloading [####################################] 100%
Unpacking [####################################] 100%
DallasTemperature @ 3.7.7 has been successfully installed!
Installing dependencies
Looking for OneWire library in registry
Found: http://platformio.org/lib/show/1/OneWire
LibraryManager: Installing id=1
Downloading [####################################] 100%
Unpacking [####################################] 100%
OneWire @ 8fd2ebfec7 has been successfully installed!
4. Install ARM mbed library to the global storage
> platformio lib -g install https://developer.mbed.org/users/simon/code/TextLCD/
Library Storage: /storage/dir/...
LibraryManager: Installing TextLCD
Mercurial Distributed SCM (version 3.8.4)
(see https://mercurial-scm.org for more information)
Copyright (C) 2005-2016 Matt Mackall and others
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
requesting all changes
adding changesets
adding manifests
adding file changes
added 9 changesets with 18 changes to 6 files
updating to branch default
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
TextLCD @ 308d188a2d3a has been successfully installed!
5. Install from archive using URL
> platformio lib -g install
˓→master.zip
https://github.com/adafruit/DHT-sensor-library/archive/
Library Storage: /storage/dir/...
LibraryManager: Installing master
Downloading [####################################]
44
100%
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Unpacking [####################################] 100%
DHT sensor library @ 1.2.3 has been successfully installed!
platformio lib list
Contents
• platformio lib list
– Usage
– Description
– Storage Options
– Options
– Examples
Usage
platformio lib [STORAGE_OPTIONS] list [OPTIONS]
pio lib [STORAGE_OPTIONS] list [OPTIONS]
# list project dependent libraries
# (run it from a project root where is located "platformio.ini")
platformio lib list [OPTIONS]
# list libraries from global storage
platformio lib --global list [OPTIONS]
platformio lib -g list [OPTIONS]
# list libraries from custom storage
platformio lib --storage-dir /path/to/dir list [OPTIONS]
platformio lib -d /path/to/dir list [OPTIONS]
Description
List installed libraries
Storage Options
See base options for Library Manager.
Options
--json-output
Return the output in JSON format
1.3. PlatformIO Core
45
PlatformIO Documentation, Release 3.4.1
Examples
> platformio lib -g list
Library Storage: /storage/dir/...
Adafruit Unified Sensor
=======================
#ID: 31
Required for all Adafruit Unified Sensor based libraries.
Version: 1.0.2
Keywords: sensors
Compatible frameworks: arduino
Compatible platforms: atmelavr, atmelsam, espressif8266, intel_arc32, microchippic32,
˓→nordicnrf51, teensy, timsp430
Authors: Adafruit
ArduinoJson
===========
#ID: 64
An elegant and efficient JSON library for embedded systems
Version: 5.8.0
Keywords: web, json, http, rest
Compatible frameworks: arduino
Compatible platforms: atmelavr, atmelsam, espressif8266, intel_arc32, microchippic32,
˓→nordicnrf51, teensy, timsp430
Authors: Benoit Blanchon
ArduinoJson
===========
#ID: 64
An elegant and efficient JSON library for embedded systems
Version: 5.6.7
Keywords: web, json, http, rest
Compatible frameworks: arduino
Compatible platforms: atmelavr, atmelsam, espressif8266, intel_arc32, microchippic32,
˓→nordicnrf51, teensy, timsp430
Authors: Benoit Blanchon
ArduinoJson
===========
#ID: 64
An elegant and efficient JSON library for embedded systems
Version: 5.7.2
Keywords: web, json, http, rest
Compatible frameworks: arduino
Compatible platforms: atmelavr, atmelsam, espressif8266, intel_arc32, microchippic32,
˓→nordicnrf51, teensy, timsp430
Authors: Benoit Blanchon
Blynk
=====
#ID: 415
Build a smartphone app for your project in minutes. Blynk allows creating IoT
˓→solutions easily. It supports
WiFi, BLE, Bluetooth, Ethernet, GSM, USB, Serial.
˓→Works with many boards like ESP8266, ESP32, Arduino UNO, Nano, Due, Mega, Zero,
˓→MKR100, Yun, Raspberry Pi, Particle, Energia, ARM mbed, Intel Edison/Galileo/Joule,
46
Chapter 1. Contents
˓→BBC micro:bit, DFRobot, RedBearLab, Microduino, LinkIt ONE ...
PlatformIO Documentation, Release 3.4.1
Version: 0.4.3
Homepage: http://blynk.cc
Keywords: control, gprs, protocol, communication, app, bluetooth, serial, cloud, web,
˓→usb, m2m, ble, 3g, smartphone, http, iot, device, sensors, data, esp8266, mobile,
˓→wifi, ethernet, gsm
Compatible frameworks: energia, wiringpi, arduino
Compatible platforms: atmelavr, atmelsam, espressif8266, intel_arc32, linux_arm,
˓→microchippic32, nordicnrf51, teensy, timsp430, titiva
Authors: Volodymyr Shymanskyy
Bounce2
=======
#ID: 1106
Debouncing library for Arduino or Wiring
Version: 2.1
Keywords: input, signal, ouput, bounce
Compatible frameworks: arduino
Compatible platforms: atmelavr, atmelsam, espressif8266, intel_arc32, microchippic32,
˓→nordicnrf51, teensy, timsp430
Authors: Thomas O Fredericks
Homie
=====
#ID: 555
ESP8266 framework for Homie, a lightweight MQTT convention for the IoT
Version: 1.5.0
Keywords: home, mqtt, iot, esp8266, automation
Compatible frameworks: arduino
Compatible platforms: espressif8266
Authors: Marvin Roger
JustWifi
========
#ID: 1282
Wifi Manager for ESP8266 that supports multiple wifi networks and scan for strongest
˓→signal
Version: 1.1.1
License: GPL-3.0
Keywords: manager, wifi, scan
Compatible frameworks: arduino
Compatible platforms: espressif8266
Authors: Xose Perez
LiquidCrystal
=============
#ID: 136
LiquidCrystal Library is faster and extensable, compatible with the original
˓→LiquidCrystal library
Version: 1.3.4
Keywords: lcd, hd44780
Compatible frameworks: arduino
Compatible platforms: atmelavr
Authors: F Malpartida
1.3. PlatformIO Core
47
PlatformIO Documentation, Release 3.4.1
TextLCD
=======
hg+https://developer.mbed.org/users/simon/code/TextLCD/
Version: 308d188a2d3a
Keywords: uncategorized
Time
====
#ID: 44
Time keeping library
Version: 1.5
Homepage: http://playground.arduino.cc/Code/Time
Keywords: week, rtc, hour, year, month, second, time, date, day, minute
Compatible frameworks: arduino
Compatible platforms:
Authors: Michael Margolis, Paul Stoffregen
Timezone
========
#ID: 76
Arduino library to facilitate time zone conversions and automatic daylight saving
˓→(summer) time adjustments
Version: 510ae2f6b6
Keywords: zone, time
Compatible frameworks: arduino
Compatible platforms: atmelavr
Authors: Jack Christensen
U8g2
====
#ID: 942
Monochrome LCD, OLED and eInk Library. Display controller: SSD1305, SSD1306, SSD1322,
˓→SSD1325, SSD1327, SSD1606, SH1106, T6963, RA8835, LC7981, PCD8544, PCF8812, UC1604,
˓→UC1608, UC1610, UC1611, UC1701, ST7565, ST7567, NT7534, ST7920, LD7032, KS0108.
˓→Interfaces: I2C, SPI, Parallel.
Version: 2.11.4
Homepage: https://github.com/olikraus/u8g2
Keywords: display
Compatible frameworks: arduino
Compatible platforms: atmelavr, atmelsam, espressif8266, intel_arc32, microchippic32,
˓→nordicnrf51, teensy, timsp430
Authors: oliver
USB-Host-Shield-20
==================
#ID: 59
Revision 2.0 of MAX3421E-based USB Host Shield Library
Version: 1.2.1
License: GPL-2.0
Keywords: usb, spp, mass storage, pl2303, acm, ftdi, xbox, host, hid, wii, buzz, ps3,
˓→bluetooth, adk, ps4
Compatible frameworks: spl, arduino
48
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Compatible platforms: atmelavr, atmelsam, teensy, nordicnrf51, ststm32
Authors: Oleg Mazurov, Alexei Glushchenko, Kristian Lauszus, Andrew Kroll
platformio lib register
Contents
• platformio lib register
– Usage
– Description
– Examples
Usage
platformio lib register [MANIFEST_URL]
pio lib register [MANIFEST_URL]
Description
Register new library in PlatformIO Library Registry.
PlatformIO Library Registry supports the next library manifests:
• PlatformIO library.json
• Arduino library.properties
• ARM mbed yotta module.json.
Examples
platformio lib register https://raw.githubusercontent.com/bblanchon/ArduinoJson/
˓→master/library.json
platformio lib register https://raw.githubusercontent.com/adafruit/DHT-sensor-library/
˓→master/library.properties
platformio lib register https://raw.githubusercontent.com/ARMmbed/ble/master/module.
˓→json
platformio lib search
Contents
• platformio lib search
1.3. PlatformIO Core
49
PlatformIO Documentation, Release 3.4.1
– Usage
– Description
– Options
– Examples
Usage
platformio lib search [OPTIONS] [QUERY]
pio lib search [OPTIONS] [QUERY]
Description
Search for library in PlatformIO Library Registry by library.json fields in the boolean mode.
The boolean search capability supports the following operators:
Operator
+
Description
A leading or trailing plus sign indicates that this word must be present in library fields (see above)
that is returned.
A leading or trailing minus sign indicates that this word must not be present in any of the libraries
that are returned.
(no
By default (when neither + nor - is specified), the word is optional, but the libraries that contain it
operator) are rated higher.
> <
These two operators are used to change a word’s contribution to the relevance value that is assigned
to a library. The > operator increases the contribution and the < operator decreases it.
( )
Parentheses group words into subexpressions. Parenthesized groups can be nested.
~
A leading tilde acts as a negation operator, causing the word’s contribution to the library’s relevance
to be negative. This is useful for marking “noise” words. A library containing such a word is rated
lower than others, but is not excluded altogether, as it would be with the - operator.
The asterisk serves as the truncation (or wildcard) operator. Unlike the other operators, it is
*
appended to the word to be affected. Words match if they begin with the word preceding the *
operator.
"
A phrase that is enclosed within double quote (") characters matches only libraries that contain the
phrase literally, as it was typed.
For more detail information please go to MySQL Boolean Full-Text Searches.
Options
-n, --name
Filter libraries by specified name (strict search)
-a, --author
Filter libraries by specified author
-k, --keyword
Filter libraries by specified keyword
-f, --framework
50
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Filter libraries by specified framework
-p, --platform
Filter libraries by specified keyword
-i, --header
Filter libraries by header file (include)
For example, platformio lib search --header "OneWire.h"
--json-output
Return the output in JSON format
--page
Manually paginate through search results. This option is useful in pair with --json-output.
Examples
1. List all libraries
> platformio lib search
Found N libraries:
ArduinoJson
===========
#ID: 64
An elegant and efficient JSON library for embedded systems
Keywords: web, json, http, rest
Compatible frameworks: Arduino
Compatible platforms: Atmel AVR, Atmel SAM, Espressif 8266, Intel ARC32, Microchip
˓→PIC32, Nordic nRF51, Teensy, TI MSP430
Authors: Benoit Blanchon
DHT sensor library
==================
#ID: 19
Arduino library for DHT11, DHT22, etc Temp & Humidity Sensors
Keywords: unified, dht, sensor, temperature, humidity
Compatible frameworks: Arduino
Compatible platforms: Atmel AVR
Authors: Adafruit Industries
PubSubClient
============
#ID: 89
A client library for MQTT messaging. MQTT is a lightweight messaging protocol ideal
˓→for small devices. This library allows you to send and receive MQTT messages. It
˓→supports the latest MQTT 3.1.1 protocol and can be configured to use the older MQTT
˓→3.1...
Keywords: ethernet, mqtt, iot, m2m
Compatible frameworks: Arduino
Compatible platforms: Atmel AVR, Atmel SAM, Espressif 8266, Intel ARC32, Microchip
˓→PIC32, Nordic nRF51, Teensy, TI MSP430
1.3. PlatformIO Core
51
PlatformIO Documentation, Release 3.4.1
Authors: Nick O'Leary
...
ESPAsyncWebServer
=================
#ID: 306
Asynchronous HTTP and WebSocket Server Library for ESP8266 and ESP32
Keywords: async, websocket, http, webserver
Compatible frameworks: Arduino
Compatible platforms: Espressif 8266
Authors: Hristo Gochkov
Show next libraries? [y/N]:
...
2. Search for 1-Wire libraries
> platformio lib search "1-wire"
Found N libraries:
DS1820
======
#ID: 196
Dallas / Maxim DS1820 1-Wire library. For communication with multiple DS1820 on a
˓→single 1-Wire bus. Also supports DS18S20 and DS18B20.
Keywords: ds18s20, 1-wire, ds1820, ds18b20
Compatible frameworks: mbed
Compatible platforms: Freescale Kinetis, Nordic nRF51, NXP LPC, ST STM32, Teensy
Authors: Michael Hagberg
OneWire
=======
#ID: 1
Control 1-Wire protocol (DS18S20, DS18B20, DS2408 and etc)
Keywords: onewire, temperature, bus, 1-wire, ibutton, sensor
Compatible frameworks: Arduino
Compatible platforms:
Authors: Paul Stoffregen, Jim Studt, Tom Pollard, Derek Yerger, Josh Larios, Robin
˓→James, Glenn Trewitt, Jason Dangel, Guillermo Lovato, Ken Butcher, Mark Tillotson,
˓→Bertrik Sikken, Scott Roberts
Show next libraries? [y/N]:
...
3. Search for Arduino-based “I2C” libraries
> platformio lib search "i2c" --framework="arduino"
Found N libraries:
I2Cdevlib-AK8975
================
#ID: 10
52
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
AK8975 is 3-axis electronic compass IC with high sensitive Hall sensor technology
Keywords: i2c, i2cdevlib, sensor, compass
Compatible frameworks: Arduino
Compatible platforms: Atmel AVR
Authors: Jeff Rowberg
I2Cdevlib-Core
==============
#ID: 11
The I2C Device Library (I2Cdevlib) is a collection of uniform and well-documented
˓→classes to provide simple and intuitive interfaces to I2C devices.
Keywords: i2cdevlib, i2c
Compatible frameworks: Arduino
Compatible platforms: Atmel AVR
Authors: Jeff Rowberg
Adafruit 9DOF Library
=====================
#ID: 14
Unified sensor driver for the Adafruit 9DOF Breakout (L3GD20 / LSM303)
Keywords: magnetometer, unified, accelerometer, spi, compass, i2c, sensor, gyroscope
Compatible frameworks: Arduino
Compatible platforms: Atmel AVR
Authors: Adafruit Industries
Show next libraries? [y/N]:
...
4. Search for libraries by “web” and “http” keywords.
> platformio lib search --keyword="web" --keyword="http"
Found N libraries:
ArduinoJson
===========
#ID: 64
An elegant and efficient JSON library for embedded systems
Keywords: web, json, http, rest
Compatible frameworks: Arduino
Compatible platforms: Atmel AVR, Atmel SAM, Espressif 8266, Intel ARC32, Microchip
˓→PIC32, Nordic nRF51, Teensy, TI MSP430
Authors: Benoit Blanchon
ESPAsyncWebServer
=================
#ID: 306
Asynchronous HTTP and WebSocket Server Library for ESP8266 and ESP32
Keywords: async, websocket, http, webserver
Compatible frameworks: Arduino
Compatible platforms: Espressif 8266
Authors: Hristo Gochkov
1.3. PlatformIO Core
53
PlatformIO Documentation, Release 3.4.1
ESP8266wifi
===========
#ID: 1101
ESP8266 Arduino library with built in reconnect functionality
Keywords: web, http, wifi, server, client, wi-fi
Compatible frameworks: Arduino
Compatible platforms: Atmel AVR
Authors: Jonas Ekstrand
Blynk
=====
#ID: 415
Build a smartphone app for your project in minutes. Blynk allows creating IoT
˓→solutions easily. It supports
WiFi, BLE, Bluetooth, Ethernet, GSM, USB, Serial.
˓→Works with many boards like ESP8266, ESP32, Arduino UNO, Nano, Due, Mega, Zero,
˓→MKR100, Yun,...
Keywords: control, gprs, protocol, communication, app, bluetooth, serial, cloud, web,
˓→usb, m2m, ble, 3g, smartphone, http, iot, device, sensors, data, esp8266, mobile,
˓→wifi, ethernet, gsm
Compatible frameworks: Arduino, Energia, WiringPi
Compatible platforms: Atmel AVR, Atmel SAM, Espressif 8266, Intel ARC32, Linux ARM,
˓→Microchip PIC32, Nordic nRF51, Teensy, TI MSP430, TI Tiva
Authors: Volodymyr Shymanskyy
Show next libraries? [y/N]:
...
5. Search for libraries by “Adafruit Industries” author
> platformio lib search --author="Adafruit Industries"
Found N libraries:
DHT sensor library
==================
#ID: 19
Arduino library for DHT11, DHT22, etc Temp & Humidity Sensors
Keywords: unified, dht, sensor, temperature, humidity
Compatible frameworks: Arduino
Compatible platforms: Atmel AVR
Authors: Adafruit Industries
Adafruit DHT Unified
====================
#ID: 18
Unified sensor library for DHT (DHT11, DHT22 and etc) temperature and humidity sensors
Keywords: unified, dht, sensor, temperature, humidity
Compatible frameworks: Arduino
Compatible platforms: Atmel AVR
Authors: Adafruit Industries
Show next libraries? [y/N]:
...
54
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
6. Search for libraries which are compatible with Dallas temperature sensors like DS18B20, DS18S20 and etc.
> platformio lib search "DS*"
Found N libraries:
DS1820
======
#ID: 196
Dallas / Maxim DS1820 1-Wire library. For communication with multiple DS1820 on a
˓→single 1-Wire bus. Also supports DS18S20 and DS18B20.
Keywords: ds18s20, 1-wire, ds1820, ds18b20
Compatible frameworks: mbed
Compatible platforms: Freescale Kinetis, Nordic nRF51, NXP LPC, ST STM32, Teensy
Authors: Michael Hagberg
I2Cdevlib-DS1307
================
#ID: 99
The DS1307 serial real-time clock (RTC) is a low-power, full binary-coded decimal
˓→(BCD) clock/calendar plus 56 bytes of NV SRAM
Keywords: i2cdevlib, clock, i2c, rtc, time
Compatible frameworks: Arduino
Compatible platforms: Atmel AVR
Authors: Jeff Rowberg
Show next libraries? [y/N]:
...
7. Search for Energia-based *nRF24* or *HttpClient* libraries. The search query that is described below can be
interpreted like energia nRF24 OR energia HttpClient
> platformio lib search "+(nRF24 HttpClient)" --framework="energia"
Found N libraries:
nRF24
=====
#ID: 43
The nRF24L01 is a low-cost 2.4GHz ISM transceiver module. It supports a number of
˓→channel frequencies in the 2.4GHz band and a range of data rates.
Keywords: wireless, spi, rf, radio
Compatible frameworks: Energia
Compatible platforms: TI MSP430
Authors: Eric
HttpClient
==========
#ID: 46
HttpClient is a library to make it easier to interact with web servers
Keywords: web, client, http, ethernet
Compatible frameworks: Energia
Compatible platforms: TI MSP430, TI Tiva
Authors: Zack Lalanne
1.3. PlatformIO Core
55
PlatformIO Documentation, Release 3.4.1
RadioHead
=========
#ID: 124
The RadioHead Packet Radio library which provides a complete object-oriented library
˓→for sending and receiving packetized messages via RF22/24/26/27/69, Si4460/4461/
˓→4463/4464, nRF24/nRF905, SX1276/77/78, RFM95/96/97/98 and etc.
Keywords: wireless, rf, radio
Compatible frameworks: Arduino, Energia
Compatible platforms: Atmel AVR, Atmel SAM, Espressif 8266, Intel ARC32, Microchip
˓→PIC32, Nordic nRF51, Teensy, TI MSP430, TI Tiva
Authors: Mike McCauley
Show next libraries? [y/N]:
...
8. Search for the all sensor libraries excluding temperature.
> platformio lib search "sensor -temperature"
Found N libraries:
SparkFun VL6180 Sensor
======================
#ID: 407
The VL6180 combines an IR emitter, a range sensor, and an ambient light sensor
˓→together for you to easily use and communicate with via an I2C interface.
Keywords: sensors
Compatible frameworks: Arduino
Compatible platforms: Atmel AVR, Atmel SAM, Espressif 8266, Intel ARC32, Microchip
˓→PIC32, Nordic nRF51, Teensy, TI MSP430
Authors: Casey [email protected], SparkFun Electronics
I2Cdevlib-AK8975
================
#ID: 10
AK8975 is 3-axis electronic compass IC with high sensitive Hall sensor technology
Keywords: i2c, i2cdevlib, sensor, compass
Compatible frameworks: Arduino
Compatible platforms: Atmel AVR
Authors: Jeff Rowberg
Adafruit 9DOF Library
=====================
#ID: 14
Unified sensor driver for the Adafruit 9DOF Breakout (L3GD20 / LSM303)
Keywords: magnetometer, unified, accelerometer, spi, compass, i2c, sensor, gyroscope
Compatible frameworks: Arduino
Compatible platforms: Atmel AVR
Authors: Adafruit Industries
Show next libraries? [y/N]:
...
56
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
platformio lib show
Contents
• platformio lib show
– Usage
– Description
– Options
– Examples
Usage
platformio lib show [LIBRARY]
pio lib show [LIBRARY]
Description
Show detailed info about a library using PlatformIO Library Registry.
The possible values for [LIBRARY]:
• Library ID from Registry (preferred)
• Library Name
Options
--json-output
Return the output in JSON format
Examples
> platformio lib show OneWire
PubSubClient
============
#ID: 89
A client library for MQTT messaging. MQTT is a lightweight messaging protocol ideal
˓→for small devices. This library allows you to send and receive MQTT messages. It
˓→supports the latest MQTT 3.1.1 protocol and can be configured to use the older MQTT
˓→3.1...
Version: 2.6, released 10 months ago
Manifest: https://raw.githubusercontent.com/ivankravets/pubsubclient/patch-2/library.
˓→json
Homepage: http://pubsubclient.knolleary.net
Repository: https://github.com/knolleary/pubsubclient.git
1.3. PlatformIO Core
57
PlatformIO Documentation, Release 3.4.1
Authors
------Nick O'Leary https://github.com/knolleary
Keywords
-------ethernet
mqtt
iot
m2m
Compatible frameworks
--------------------Arduino
Compatible platforms
-------------------Atmel AVR
Atmel SAM
Espressif 8266
Intel ARC32
Microchip PIC32
Nordic nRF51
Teensy
TI MSP430
Headers
------PubSubClient.h
Examples
-------http://dl.platformio.org/libraries/examples/0/89/mqtt_auth.ino
http://dl.platformio.org/libraries/examples/0/89/mqtt_basic.ino
http://dl.platformio.org/libraries/examples/0/89/mqtt_esp8266.ino
http://dl.platformio.org/libraries/examples/0/89/mqtt_publish_in_callback.ino
http://dl.platformio.org/libraries/examples/0/89/mqtt_reconnect_nonblocking.ino
http://dl.platformio.org/libraries/examples/0/89/mqtt_stream.ino
Versions
-------2.6, released 10 months ago
Unique Downloads
---------------Today: 25
Week: 120
Month: 462
platformio lib stats
Contents
58
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
• platformio lib stats
– Usage
– Description
– Options
– Examples
Usage
platformio lib stats
pio lib stats
Description
Show PlatformIO Library Registry statistics:
• Recently updated
• Recently added
• Recent keywords
• Popular keywords
• Featured: Today
• Featured: Week
• Featured: Month
This information is the same that is shown on this page:
• http://platformio.org/lib
Options
--json-output
Return the output in JSON format
Examples
RECENTLY UPDATED
****************
Name
Date
Url
-------------------------------------------------------------------------------------˓→-----------------------------------------------------------------------------------˓→-----------------------------------GroveEncoder
12 hours ago
http://platformio.org/lib/show/1382/
˓→GroveEncoder
RF24G
12 hours ago
http://platformio.org/lib/show/1381/
˓→RF24G
Sim800L Library Revised 12 hours ago
http://platformio.org/lib/show/1380/
˓→Sim800L%20Library%20Revised
1.3. PlatformIO Core
59
PlatformIO Documentation, Release 3.4.1
ArduinoSTL
˓→ArduinoSTL
hd44780
˓→hd44780
12 hours ago
http://platformio.org/lib/show/750/
13 hours ago
http://platformio.org/lib/show/738/
RECENTLY ADDED
**************
Name
Date
Url
-------------------------------------------------------------------------------------˓→-----------------------------------------------------------------------------------˓→-----------------------------------GroveEncoder
12 hours ago
http://platformio.org/lib/show/1382/
˓→GroveEncoder
RF24G
12 hours ago
http://platformio.org/lib/show/1381/
˓→RF24G
Sim800L Library Revised 12 hours ago
http://platformio.org/lib/show/1380/
˓→Sim800L%20Library%20Revised
DS3231
a day ago
http://platformio.org/lib/show/1379/
˓→DS3231
ArduboyPlaytune
4 days ago
http://platformio.org/lib/show/1378/
˓→ArduboyPlaytune
RECENT KEYWORDS
***************
Name
Url
-------------------------------------------------------------------------------------˓→-----------------------------------------------------------------------------------˓→-----------------------------------cobs
http://platformio.org/lib/search?query=keyword%3Acobs
packet
http://platformio.org/lib/search?query=keyword%3Apacket
framing
http://platformio.org/lib/search?query=keyword%3Aframing
3g
http://platformio.org/lib/search?query=keyword%3A3g
tdd
http://platformio.org/lib/search?query=keyword%3Atdd
POPULAR KEYWORDS
****************
Name
Url
-------------------------------------------------------------------------------------˓→-----------------------------------------------------------------------------------˓→-----------------------------------display
http://platformio.org/lib/search?query=keyword%3Adisplay
lcd
http://platformio.org/lib/search?query=keyword%3Alcd
sensors
http://platformio.org/lib/search?query=keyword%3Asensors
graphics
http://platformio.org/lib/search?query=keyword%3Agraphics
communication
http://platformio.org/lib/search?query=keyword
˓→%3Acommunication
oled
http://platformio.org/lib/search?query=keyword%3Aoled
tft
http://platformio.org/lib/search?query=keyword%3Atft
control
http://platformio.org/lib/search?query=keyword%3Acontrol
device
http://platformio.org/lib/search?query=keyword%3Adevice
glcd
http://platformio.org/lib/search?query=keyword%3Aglcd
displaycore
http://platformio.org/lib/search?query=keyword%3Adisplaycore
font
http://platformio.org/lib/search?query=keyword%3Afont
other
http://platformio.org/lib/search?query=keyword%3Aother
i2c
http://platformio.org/lib/search?query=keyword%3Ai2c
input
http://platformio.org/lib/search?query=keyword%3Ainput
signal
http://platformio.org/lib/search?query=keyword%3Asignal
sensor
http://platformio.org/lib/search?query=keyword%3Asensor
60
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
output
spi
data
timing
serial
temperature
http
wifi
rf
i2cdevlib
processing
storage
radio
web
accelerometer
˓→%3Aaccelerometer
wireless
protocol
server
wi-fi
ethernet
mbed
openag
led
esp8266
humidity
time
iot
json
timer
client
driver
button
mbed-official
˓→official
http://platformio.org/lib/search?query=keyword%3Aoutput
http://platformio.org/lib/search?query=keyword%3Aspi
http://platformio.org/lib/search?query=keyword%3Adata
http://platformio.org/lib/search?query=keyword%3Atiming
http://platformio.org/lib/search?query=keyword%3Aserial
http://platformio.org/lib/search?query=keyword%3Atemperature
http://platformio.org/lib/search?query=keyword%3Ahttp
http://platformio.org/lib/search?query=keyword%3Awifi
http://platformio.org/lib/search?query=keyword%3Arf
http://platformio.org/lib/search?query=keyword%3Ai2cdevlib
http://platformio.org/lib/search?query=keyword%3Aprocessing
http://platformio.org/lib/search?query=keyword%3Astorage
http://platformio.org/lib/search?query=keyword%3Aradio
http://platformio.org/lib/search?query=keyword%3Aweb
http://platformio.org/lib/search?query=keyword
http://platformio.org/lib/search?query=keyword%3Awireless
http://platformio.org/lib/search?query=keyword%3Aprotocol
http://platformio.org/lib/search?query=keyword%3Aserver
http://platformio.org/lib/search?query=keyword%3Awi-fi
http://platformio.org/lib/search?query=keyword%3Aethernet
http://platformio.org/lib/search?query=keyword%3Ambed
http://platformio.org/lib/search?query=keyword%3Aopenag
http://platformio.org/lib/search?query=keyword%3Aled
http://platformio.org/lib/search?query=keyword%3Aesp8266
http://platformio.org/lib/search?query=keyword%3Ahumidity
http://platformio.org/lib/search?query=keyword%3Atime
http://platformio.org/lib/search?query=keyword%3Aiot
http://platformio.org/lib/search?query=keyword%3Ajson
http://platformio.org/lib/search?query=keyword%3Atimer
http://platformio.org/lib/search?query=keyword%3Aclient
http://platformio.org/lib/search?query=keyword%3Adriver
http://platformio.org/lib/search?query=keyword%3Abutton
http://platformio.org/lib/search?query=keyword%3Ambed-
FEATURED: TODAY
***************
Name
Url
-------------------------------------------------------------------------------------˓→-----------------------------------------------------------------------------------˓→-----------------------------------PubSubClient
http://platformio.org/lib/show/89/PubSubClient
Adafruit Unified Sensor http://platformio.org/lib/show/31/Adafruit%20Unified%20Sensor
DHT sensor library
http://platformio.org/lib/show/19/DHT%20sensor%20library
ESPAsyncUDP
http://platformio.org/lib/show/359/ESPAsyncUDP
NtpClientLib
http://platformio.org/lib/show/727/NtpClientLib
Embedis
http://platformio.org/lib/show/408/Embedis
Blynk
http://platformio.org/lib/show/415/Blynk
SimpleTimer
http://platformio.org/lib/show/419/SimpleTimer
Adafruit DHT Unified
http://platformio.org/lib/show/18/Adafruit%20DHT%20Unified
RTClib
http://platformio.org/lib/show/83/RTClib
FEATURED: WEEK
**************
Name
Url
-------------------------------------------------------------------------------------˓→-----------------------------------------------------------------------------------˓→------------------------------------
1.3. PlatformIO Core
61
PlatformIO Documentation, Release 3.4.1
DHT sensor library
Adafruit Unified Sensor
Blynk
ESPAsyncWebServer
Adafruit GFX Library
I2Cdevlib-Core
TimeAlarms
PubSubClient
Timer
esp8266_mdns
http://platformio.org/lib/show/19/DHT%20sensor%20library
http://platformio.org/lib/show/31/Adafruit%20Unified%20Sensor
http://platformio.org/lib/show/415/Blynk
http://platformio.org/lib/show/306/ESPAsyncWebServer
http://platformio.org/lib/show/13/Adafruit%20GFX%20Library
http://platformio.org/lib/show/11/I2Cdevlib-Core
http://platformio.org/lib/show/68/TimeAlarms
http://platformio.org/lib/show/89/PubSubClient
http://platformio.org/lib/show/75/Timer
http://platformio.org/lib/show/1091/esp8266_mdns
FEATURED: MONTH
***************
Name
Url
-------------------------------------------------------------------------------------˓→-----------------------------------------------------------------------------------˓→-----------------------------------ArduinoJson
http://platformio.org/lib/show/64/ArduinoJson
DHT sensor library
http://platformio.org/lib/show/19/DHT%20sensor%20library
Adafruit Unified Sensor http://platformio.org/lib/show/31/Adafruit%20Unified%20Sensor
PubSubClient
http://platformio.org/lib/show/89/PubSubClient
OneWire
http://platformio.org/lib/show/1/OneWire
ESPAsyncTCP
http://platformio.org/lib/show/305/ESPAsyncTCP
Time
http://platformio.org/lib/show/44/Time
DallasTemperature
http://platformio.org/lib/show/54/DallasTemperature
ESPAsyncWebServer
http://platformio.org/lib/show/306/ESPAsyncWebServer
WifiManager
http://platformio.org/lib/show/567/WifiManager
platformio lib uninstall
Contents
• platformio lib uninstall
– Usage
– Description
– Storage Options
– Examples
Usage
platformio lib [STORAGE_OPTIONS] uninstall [LIBRARY...]
pio lib [STORAGE_OPTIONS] uninstall [LIBRARY...]
# uninstall project dependent library
# (run it from a project root where is located "platformio.ini")
platformio lib uninstall [LIBRARY...]
# uninstall library from global storage
platformio lib --global uninstall [LIBRARY...]
62
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
platformio lib -g uninstall [LIBRARY...]
# uninstall library from custom storage
platformio lib --storage-dir /path/to/dir uninstall [LIBRARY...]
platformio lib -d /path/to/dir uninstall [LIBRARY...]
# [LIBRARY...]
platformio lib
platformio lib
platformio lib
platformio lib
platformio lib
platformio lib
forms
[STORAGE_OPTIONS]
[STORAGE_OPTIONS]
[STORAGE_OPTIONS]
[STORAGE_OPTIONS]
[STORAGE_OPTIONS]
[STORAGE_OPTIONS]
uninstall
uninstall
uninstall
uninstall
uninstall
uninstall
<id>
<id>@<version>
<id>@<version range>
<name>
<name>@<version>
<name>@<version range>
Description
Uninstall specified library
The version supports Semantic Versioning ( <major>.<minor>.<patch>) and can take any of the following
forms:
• 0.1.2 - an exact version number. Use only this exact version
• ^0.1.2 - any compatible version (exact version for 0.x.x versions
• ~0.1.2 - any version with the same major and minor versions, and an equal or greater patch version
• >0.1.2 - any version greater than 0.1.2. >=, <, and <= are also possible
• >0.1.0,!=0.2.0,<0.3.0 - any version greater than 0.1.0, not equal to 0.2.0 and less than 0.3.0
Storage Options
See base options for Library Manager.
Examples
> platformio lib -g uninstall AsyncMqttClient
Library Storage: /storage/dir/...
Uninstalling AsyncMqttClient @ 0.2.0:
[OK]
platformio lib update
Contents
• platformio lib update
– Usage
– Description
1.3. PlatformIO Core
63
PlatformIO Documentation, Release 3.4.1
– Storage Options
– Options
– Examples
Usage
platformio lib [STORAGE_OPTIONS] update [OPTIONS]
pio lib [STORAGE_OPTIONS] update [OPTIONS]
# update all project libraries
# (run it from a project root where is located "platformio.ini")
platformio lib update [OPTIONS]
# update project dependent library
platformio lib [STORAGE_OPTIONS] update [OPTIONS] [LIBRARY...]
# update library in global storage
platformio lib --global update [OPTIONS] [LIBRARY...]
platformio lib -g update [OPTIONS] [LIBRARY...]
# update library in custom storage
platformio lib --storage-dir /path/to/dir update [OPTIONS] [LIBRARY...]
platformio lib -d /path/to/dir update [OPTIONS] [LIBRARY...]
# [LIBRARY...]
platformio lib
platformio lib
platformio lib
platformio lib
platformio lib
platformio lib
forms
[STORAGE_OPTIONS]
[STORAGE_OPTIONS]
[STORAGE_OPTIONS]
[STORAGE_OPTIONS]
[STORAGE_OPTIONS]
[STORAGE_OPTIONS]
update
update
update
update
update
update
<id>
<id>@<version>
<id>@<version range>
<name>
<name>@<version>
<name>@<version range>
Description
Check or update installed libraries.
The version supports Semantic Versioning ( <major>.<minor>.<patch>) and can take any of the following
forms:
• 0.1.2 - an exact version number. Use only this exact version
• ^0.1.2 - any compatible version (exact version for 0.x.x versions
• ~0.1.2 - any version with the same major and minor versions, and an equal or greater patch version
• >0.1.2 - any version greater than 0.1.2. >=, <, and <= are also possible
• >0.1.0,!=0.2.0,<0.3.0 - any version greater than 0.1.0, not equal to 0.2.0 and less than 0.3.0
Storage Options
See base options for Library Manager.
64
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Options
-c, --only-check
Do not update, only check for new version
--json-output
Return the output in JSON format
Examples
1. Update all installed libraries in global storage
> platformio lib -g update
Library Storage: /storage/dir/...
Updating ESP8266_SSD1306 @ 3.2.3:
[Up-to-date]
Updating EngduinoMagnetometer @ 3.1.0: [Up-to-date]
Updating IRremote @ 2.2.1: [Up-to-date]
Updating Json @ 5.4.0: [Out-of-date]
LibraryManager: Installing id=64 @ 5.6.4
Downloading [####################################] 100%
Unpacking [####################################] 100%
Json @ 5.6.4 has been successfully installed!
Updating PJON @ 1fb26fd:
[Checking]
git version 2.7.4 (Apple Git-66)
Already up-to-date.
Updating TextLCD @ 308d188a2d3a:
[Checking]
Mercurial Distributed SCM (version 3.8.4)
(see https://mercurial-scm.org for more information)
Copyright (C) 2005-2016 Matt Mackall and others
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
pulling from https://developer.mbed.org/users/simon/code/TextLCD/
searching for changes
no changes found
2. Update specified libraries in global storage
> platformio lib -g update Json 4
Library Storage: /storage/dir/...
Updating Json @ 5.6.4: [Up-to-date]
Updating IRremote @ 2.2.1: [Up-to-date]
Platform Manager
To print all available commands and options use:
platformio platform --help
platformio platform COMMAND --help
1.3. PlatformIO Core
65
PlatformIO Documentation, Release 3.4.1
platformio platform frameworks
Contents
• platformio platform frameworks
– Usage
– Description
* Options
– Examples
Usage
platformio platform frameworks QUERY [OPTIONS]
pio platform frameworks QUERY [OPTIONS]
Description
List supported Frameworks (SDKs, etc).
Options
--json-output
Return the output in JSON format
Examples
Print all supported frameworks, SDKs, etc.
> platformio platform frameworks
arduino ~ Arduino
=================
Arduino Wiring-based Framework allows writing cross-platform software to control
˓→devices attached to a wide range of Arduino boards to create all kinds of creative
˓→coding, interactive objects, spaces or physical experiences.
Home: http://platformio.org/frameworks/arduino
artik-sdk ~ ARTIK SDK
=====================
ARTIK SDK is a C/C++ SDK targeting Samsung ARTIK platforms. It exposes a set of APIs
˓→to ease up development of applications. These APIs cover hardware buses such as
˓→GPIO, SPI, I2C, UART, connectivity links like Wi-Fi, Bluetooth, Zigbee, and network
˓→protocols such as HTTP, Websockets, MQTT, and others.
Home: http://platformio.org/frameworks/artik-sdk
66
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
cmsis ~ CMSIS
=============
The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor˓→independent hardware abstraction layer for the Cortex-M processor series and
˓→specifies debugger interfaces. The CMSIS enables consistent and simple software
˓→interfaces to the processor for interface peripherals, real-time operating systems,
˓→and middleware. It simplifies software re-use, reducing the learning curve for new
˓→microcontroller developers and cutting the time-to-market for devices.
Home: http://platformio.org/frameworks/cmsis
energia ~ Energia
=================
Energia Wiring-based framework enables pretty much anyone to start easily creating
˓→microcontroller-based projects and applications. Its easy-to-use libraries and
˓→functions provide developers of all experience levels to start blinking LEDs,
˓→buzzing buzzers and sensing sensors more quickly than ever before.
Home: http://platformio.org/frameworks/energia
espidf ~ ESP-IDF
================
Espressif IoT Development Framework. Official development framework for ESP32.
Home: http://platformio.org/frameworks/espidf
libopencm3 ~ libOpenCM3
=======================
The libOpenCM3 framework aims to create a free/libre/open-source firmware library for
˓→various ARM Cortex-M0(+)/M3/M4 microcontrollers, including ST STM32, Ti Tiva and
˓→Stellaris, NXP LPC 11xx, 13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and
˓→others.
Home: http://platformio.org/frameworks/libopencm3
mbed ~ mbed
===========
The mbed framework The mbed SDK has been designed to provide enough hardware
˓→abstraction to be intuitive and concise, yet powerful enough to build complex
˓→projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to
˓→the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook
˓→of hundreds of reusable peripheral and module libraries have been built on top of
˓→the SDK by the mbed Developer Community.
Home: http://platformio.org/frameworks/mbed
pumbaa ~ Pumbaa
===============
Pumbaa is Python on top of Simba. The implementation is a port of MicroPython,
˓→designed for embedded devices with limited amount of RAM and code memory.
Home: http://platformio.org/frameworks/pumbaa
simba ~ Simba
=============
Simba is an RTOS and build framework. It aims to make embedded programming easy and
˓→portable.
1.3. PlatformIO Core
67
PlatformIO Documentation, Release 3.4.1
Home: http://platformio.org/frameworks/simba
spl ~ SPL
=========
The ST Standard Peripheral Library provides a set of functions for handling the
˓→peripherals on the STM32 Cortex-M3 family. The idea is to save the user (the new
˓→user, in particular) having to deal directly with the registers.
Home: http://platformio.org/frameworks/spl
wiringpi ~ WiringPi
===================
WiringPi is a GPIO access library written in C for the BCM2835 used in the Raspberry
˓→Pi. It's designed to be familiar to people who have used the Arduino "wiring"
˓→system.
Home: http://platformio.org/frameworks/wiringpi
platformio platform install
Contents
• platformio platform install
– Usage
– Description
– Options
– Version control
* Git
* Mercurial
* Subversion
– Examples
Usage
platformio platform install [OPTIONS] [PLATFORM...]
pio platform install [OPTIONS] [PLATFORM...]
# [PLATFORM...] forms
platformio platform install
platformio platform install
platformio platform install
platformio platform install
platformio platform install
platformio platform install
platformio platform install
68
<name>
<name>@<version>
<name>@<version range>
<zip or tarball url>
file://<zip or tarball file>
file://<folder>
<repository>
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
platformio platform install <name=repository> (name it should have locally)
platformio platform install <repository#tag> ("tag" can be commit, branch or tag)
Description
Install Development Platforms and dependent packages.
The version supports Semantic Versioning ( <major>.<minor>.<patch>) and can take any of the following
forms:
• 0.1.2 - an exact version number. Use only this exact version
• ^0.1.2 - any compatible version (exact version for 0.x.x versions
• ~0.1.2 - any version with the same major and minor versions, and an equal or greater patch version
• >0.1.2 - any version greater than 0.1.2. >=, <, and <= are also possible
• >0.1.0,!=0.2.0,<0.3.0 - any version greater than 0.1.0, not equal to 0.2.0 and less than 0.3.0
Also, PlatformIO supports installing from local directory or archive. Need to use file:// prefix before local path.
Also, directory or archive should contain platform.json manifest.
• file:///local/path/to/the/platform/dir
• file:///local/path/to/the/platform.zip
• file:///local/path/to/the/platform.tar.gz
Options
--with-package
Install specified package (or alias)
--without-package
Do not install specified package (or alias)
--skip-default
Skip default packages
Version control
PlatformIO supports installing from Git, Mercurial and Subversion, and detects the type of VCS using url prefixes:
“git+”, “hg+”, or “svn+”.
Note: PlatformIO requires a working VCS command on your path: git, hg or svn.
Git
The supported schemes are: git, git+https and git+ssh. Here are the supported forms:
• platformio/platform-NAME (short version for GitHub repository)
1.3. PlatformIO Core
69
PlatformIO Documentation, Release 3.4.1
• https://github.com/platformio/platform-NAME.git
• git+git://git.server.org/my-platform
• git+https://git.server.org/my-platform
• git+ssh://git.server.org/my-platform
Passing branch names, a commit hash or a tag name is possible like so:
• https://github.com/platformio/platform-name.git#master
• git+git://git.server.org/my-platform#master
• git+https://git.server.org/my-platform#v1.0
• git+ssh://git.server.org/my-platform#7846d8ad52f983f2f2887bdc0f073fe9755a806d
Mercurial
The supported schemes are: hg+http, hg+https and hg+ssh. Here are the supported forms:
• hg+hg://hg.server.org/my-platform
• hg+https://hg.server.org/my-platform
• hg+ssh://hg.server.org/my-platform
Passing branch names, a commit hash or a tag name is possible like so:
• hg+hg://hg.server.org/my-platform#master
• hg+https://hg.server.org/my-platform#v1.0
• hg+ssh://hg.server.org/my-platform#4cfe2fa00668
Subversion
The supported schemes are: svn, svn+svn, svn+http, svn+https and svn+ssh. Here are the supported
forms:
• svn+svn://svn.server.org/my-platform
• svn+https://svn.server.org/my-platform
• svn+ssh://svn.server.org/my-platform
You can also give specific revisions to an SVN URL, like so:
• svn+svn://svn.server.org/my-platform#13
Examples
1. Install Atmel AVR with default packages
> platformio platform install atmelavr
PlatformManager: Installing atmelavr
Downloading...
Unpacking [####################################]
atmelavr @ 0.0.0 has been successfully installed!
70
100%
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
PackageManager: Installing tool-scons @ >=2.3.0,<2.6.0
Downloading [####################################] 100%
Unpacking [####################################] 100%
tool-scons @ 2.4.1 has been successfully installed!
PackageManager: Installing toolchain-atmelavr @ ~1.40801.0
Downloading [####################################] 100%
Unpacking [####################################] 100%
toolchain-atmelavr @ 1.40801.0 has been successfully installed!
The platform 'atmelavr' has been successfully installed!
The rest of packages will be installed automatically depending on your build
˓→environment.
2. Install Atmel AVR with uploader utility only and skip default packages
> platformio platform install atmelavr --skip-default-package --with-package=uploader
PlatformManager: Installing atmelavr
Downloading [####################################] 100%
Unpacking [####################################] 100%
atmelavr @ 0.0.0 has been successfully installed!
PackageManager: Installing tool-micronucleus @ ~1.200.0
Downloading [####################################] 100%
Unpacking [####################################] 100%
tool-micronucleus @ 1.200.0 has been successfully installed!
PackageManager: Installing tool-avrdude @ ~1.60001.0
Downloading [####################################] 100%
Unpacking [####################################] 100%
tool-avrdude @ 1.60001.1 has been successfully installed!
The platform 'atmelavr' has been successfully installed!
The rest of packages will be installed automatically depending on your build
˓→environment.
3. Install the latest development Atmel AVR from Git repository
> platformio platform install https://github.com/platformio/platform-atmelavr.git
PlatformManager: Installing platform-atmelavr
git version 2.7.4 (Apple Git-66)
Cloning into '/Volumes/MEDIA/tmp/pio3_test_projects/arduino-digihead-master/home_dir/
˓→platforms/installing-U3ucN0-package'...
remote: Counting objects: 176, done.
remote: Compressing objects: 100% (55/55), done.
remote: Total 176 (delta 114), reused 164 (delta 109), pack-reused 0
Receiving objects: 100% (176/176), 38.86 KiB | 0 bytes/s, done.
Resolving deltas: 100% (114/114), done.
Checking connectivity... done.
Submodule 'examples/arduino-external-libs/lib/OneWire' (https://github.com/
˓→PaulStoffregen/OneWire.git) registered for path 'examples/arduino-external-libs/lib/
˓→OneWire'
Cloning into 'examples/arduino-external-libs/lib/OneWire'...
remote: Counting objects: 91, done.
remote: Total 91 (delta 0), reused 0 (delta 0), pack-reused 91
Unpacking objects: 100% (91/91), done.
Checking connectivity... done.
Submodule path 'examples/arduino-external-libs/lib/OneWire': checked out
˓→'57c18c6de80c13429275f70875c7c341f1719201'
atmelavr @ 0.0.0 has been successfully installed!
PackageManager: Installing tool-scons @ >=2.3.0,<2.6.0
1.3. PlatformIO Core
71
PlatformIO Documentation, Release 3.4.1
Downloading [####################################] 100%
Unpacking [####################################] 100%
tool-scons @ 2.4.1 has been successfully installed!
PackageManager: Installing toolchain-atmelavr @ ~1.40801.0
Downloading [####################################] 100%
Unpacking [####################################] 100%
toolchain-atmelavr @ 1.40801.0 has been successfully installed!
The platform 'https://github.com/platformio/platform-atmelavr.git' has been
˓→successfully installed!
The rest of packages will be installed automatically depending on your build
˓→environment.
platformio platform list
Contents
• platformio platform list
– Usage
– Description
* Options
– Examples
Usage
platformio platform list [OPTIONS]
pio platform list [OPTIONS]
Description
List installed Development Platforms
Options
--json-output
Return the output in JSON format
Examples
> platformio platform list
atmelavr ~ Atmel AVR
====================
Atmel AVR 8- and 32-bit MCUs deliver a unique combination of performance, power
˓→efficiency and design flexibility. Optimized to speed time to market-and easily
˓→adapt to new ones-they are based on the industrys most code-efficient architecture
˓→for C and assembly programming.
72
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Home: http://platformio.org/platforms/atmelavr
Packages: toolchain-atmelavr, framework-simba
Version: 0.0.0
atmelsam ~ Atmel SAM
====================
Atmel | SMART offers Flash- based ARM products based on the ARM Cortex-M0+, Cortex-M3
˓→and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich
˓→peripheral and feature mix.
Home: http://platformio.org/platforms/atmelsam
Packages: framework-arduinosam, framework-mbed, framework-simba, toolchain˓→gccarmnoneeabi, tool-bossac
Version: 0.0.0
espressif8266 ~ Espressif 8266
==============================
Espressif Systems is a privately held fabless semiconductor company. They provide
˓→wireless communications and Wi-Fi chips which are widely used in mobile devices and
˓→the Internet of Things applications.
Home: http://platformio.org/platforms/espressif8266
Packages: framework-simba, tool-esptool, framework-arduinoespressif8266, sdk-esp8266,
˓→toolchain-xtensa
Version: 0.0.0
...
platformio platform search
Contents
• platformio platform search
– Usage
– Description
* Options
– Examples
Usage
platformio platform search QUERY [OPTIONS]
pio platform search QUERY [OPTIONS]
Description
Search for development Development Platforms
1.3. PlatformIO Core
73
PlatformIO Documentation, Release 3.4.1
Options
--json-output
Return the output in JSON format
Examples
1. Print all available development platforms
> platformio platform search
atmelavr ~ Atmel AVR
====================
Atmel AVR 8- and 32-bit MCUs deliver a unique combination of performance, power
˓→efficiency and design flexibility. Optimized to speed time to market-and easily
˓→adapt to new ones-they are based on the industrys most code-efficient architecture
˓→for C and assembly programming.
Home: http://platformio.org/platforms/atmelavr
Packages: toolchain-atmelavr, framework-arduinoavr, framework-simba, tool-avrdude,
˓→tool-micronucleus
atmelsam ~ Atmel SAM
====================
Atmel | SMART offers Flash- based ARM products based on the ARM Cortex-M0+, Cortex-M3
˓→and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich
˓→peripheral and feature mix.
Home: http://platformio.org/platforms/atmelsam
Packages: toolchain-gccarmnoneeabi, framework-arduinosam, framework-simba, tool˓→openocd, framework-mbed, tool-avrdude, tool-bossac
espressif32 ~ Espressif 32
==========================
Espressif Systems is a privately held fabless semiconductor company. They provide
˓→wireless communications and Wi-Fi chips which are widely used in mobile devices and
˓→the Internet of Things applications.
Home: http://platformio.org/platforms/espressif32
Packages: toolchain-xtensa32, framework-simba, framework-arduinoespressif32,
˓→framework-pumbaa, framework-espidf, tool-esptoolpy
espressif8266 ~ Espressif 8266
==============================
Espressif Systems is a privately held fabless semiconductor company. They provide
˓→wireless communications and Wi-Fi chips which are widely used in mobile devices and
˓→the Internet of Things applications.
Home: http://platformio.org/platforms/espressif8266
Packages: toolchain-xtensa, framework-simba, tool-esptool, tool-mkspiffs, tool˓→espotapy, framework-arduinoespressif8266, sdk-esp8266
freescalekinetis ~ Freescale Kinetis
====================================
Freescale Kinetis Microcontrollers is family of multiple hardware- and software˓→compatible ARM Cortex-M0+, Cortex-M4 and Cortex-M7-based MCU series. Kinetis MCUs
˓→offer exceptional low-power performance, scalability and feature integration.
74
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
...
2. Search for TI development platforms
> platformio platform search texas
timsp430 ~ TI MSP430
====================
MSP430 microcontrollers (MCUs) from Texas Instruments (TI) are 16-bit, RISC-based,
˓→mixed-signal processors designed for ultra-low power. These MCUs offer the lowest
˓→power consumption and the perfect mix of integrated peripherals for thousands of
˓→applications.
Home: http://platformio.org/platforms/timsp430
Packages: toolchain-timsp430, tool-mspdebug, framework-energiamsp430, framework˓→arduinomsp430
titiva ~ TI TIVA
================
Texas Instruments TM4C12x MCUs offer the industrys most popular ARM Cortex-M4 core
˓→with scalable memory and package options, unparalleled connectivity peripherals,
˓→advanced application functions, industry-leading analog integration, and extensive
˓→software solutions.
Home: http://platformio.org/platforms/titiva
Packages: ldscripts, framework-libopencm3, toolchain-gccarmnoneeabi, tool-lm4flash,
˓→framework-energiativa
> platformio platform search framework-mbed
atmelsam ~ Atmel SAM
====================
Atmel | SMART offers Flash- based ARM products based on the ARM Cortex-M0+, Cortex-M3
˓→and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich
˓→peripheral and feature mix.
Home: http://platformio.org/platforms/atmelsam
Packages: toolchain-gccarmnoneeabi, framework-arduinosam, framework-simba, tool˓→openocd, framework-mbed, ldscripts, tool-bossac
freescalekinetis ~ Freescale Kinetis
====================================
Freescale Kinetis Microcontrollers is family of multiple hardware- and software˓→compatible ARM Cortex-M0+, Cortex-M4 and Cortex-M7-based MCU series. Kinetis MCUs
˓→offer exceptional low-power performance, scalability and feature integration.
Home: http://platformio.org/platforms/freescalekinetis
Packages: framework-mbed, toolchain-gccarmnoneeabi
nordicnrf51 ~ Nordic nRF51
==========================
The Nordic nRF51 Series is a family of highly flexible, multi-protocol, system-on˓→chip (SoC) devices for ultra-low power wireless applications. nRF51 Series devices
˓→support a range of protocol stacks including Bluetooth Smart (previously called
˓→Bluetooth low energy), ANT and proprietary 2.4GHz protocols such as Gazell.
Home: http://platformio.org/platforms/nordicnrf51
Packages: framework-mbed, tool-rfdloader, toolchain-gccarmnoneeabi, framework˓→arduinonordicnrf51
1.3. PlatformIO Core
75
PlatformIO Documentation, Release 3.4.1
nxplpc ~ NXP LPC
================
The NXP LPC is a family of 32-bit microcontroller integrated circuits by NXP
˓→Semiconductors. The LPC chips are grouped into related series that are based around
˓→the same 32-bit ARM processor core, such as the Cortex-M4F, Cortex-M3, Cortex-M0+,
˓→or Cortex-M0. Internally, each microcontroller consists of the processor core,
˓→static RAM memory, flash memory, debugging interface, and various peripherals.
Home: http://platformio.org/platforms/nxplpc
Packages: framework-mbed, toolchain-gccarmnoneeabi
siliconlabsefm32 ~ Silicon Labs EFM32
=====================================
Silicon Labs EFM32 Gecko 32-bit microcontroller (MCU) family includes devices that
˓→offer flash memory configurations up to 256 kB, 32 kB of RAM and CPU speeds up to
˓→48 MHz. Based on the powerful ARM Cortex-M core, the Gecko family features
˓→innovative low energy techniques, short wake-up time from energy saving modes and a
˓→wide selection of peripherals, making it ideal for battery operated applications
˓→and other systems requiring high performance and low-energy consumption.
Home: http://platformio.org/platforms/siliconlabsefm32
Packages: framework-mbed, toolchain-gccarmnoneeabi
ststm32 ~ ST STM32
==================
The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed
˓→to offer new degrees of freedom to MCU users. It offers a 32-bit product range that
˓→combines very high performance, real-time capabilities, digital signal processing,
˓→and low-power, low-voltage operation, while maintaining full integration and ease
˓→of development.
Home: http://platformio.org/platforms/ststm32
Packages: framework-libopencm3, toolchain-gccarmnoneeabi, tool-stlink, framework-spl,
˓→framework-cmsis, framework-mbed, ldscripts
teensy ~ Teensy
===============
Teensy is a complete USB-based microcontroller development system, in a very small
˓→footprint, capable of implementing many types of projects. All programming is done
˓→via the USB port. No special programmer is needed, only a standard USB cable and a
˓→PC or Macintosh with a USB port.
Home: http://platformio.org/platforms/teensy
Packages: framework-arduinoteensy, tool-teensy, toolchain-gccarmnoneeabi, framework˓→mbed, toolchain-atmelavr, ldscripts
...
platformio platform show
Contents
• platformio platform show
– Usage
76
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
– Description
– Examples
Usage
platformio platform show PLATFORM
pio platform show PLATFORM
Description
Show details about Development Platforms
Examples
> platformio platform show atmelavr
atmelavr ~ Atmel AVR
====================
Atmel AVR 8- and 32-bit MCUs deliver a unique combination of performance, power
˓→efficiency and design flexibility. Optimized to speed time to market-and easily
˓→adapt to new ones-they are based on the industrys most code-efficient architecture
˓→for C and assembly programming.
Version: 1.2.1
Home: http://platformio.org/platforms/atmelavr
License: Apache-2.0
Frameworks: simba, arduino
Package toolchain-atmelavr
-------------------------Type: toolchain
Requirements: ~1.40902.0
Installed: Yes
Description: avr-gcc
Url: http://www.atmel.com/products/microcontrollers/avr/32-bitavruc3.aspx?tab=tools
Version: 1.40902.0 (4.9.2)
Package framework-arduinoavr
---------------------------Type: framework
Requirements: ~1.10612.1
Installed: Yes
Url: https://www.arduino.cc/en/Main/Software
Version: 1.10612.1 (1.6.12)
Description: Arduino Wiring-based Framework (AVR Core, 1.6)
Package framework-simba
----------------------Type: framework
Requirements: >=7.0.0
Installed: Yes
1.3. PlatformIO Core
77
PlatformIO Documentation, Release 3.4.1
Url: https://github.com/eerimoq/simba
Version: 11.0.0
Description: Simba Embedded Programming Platform
Package tool-avrdude
-------------------Type: uploader
Requirements: ~1.60300.0
Installed: Yes
Description: AVRDUDE
Url: http://www.nongnu.org/avrdude/
Version: 1.60300.0 (6.3.0)
Package tool-micronucleus
------------------------Type: uploader
Requirements: ~1.200.0
Installed: No (optional)
platformio platform uninstall
Contents
• platformio platform uninstall
– Usage
– Description
– Examples
Usage
platformio platform uninstall [PLATFORM...]
pio platform uninstall [PLATFORM...]
# uninstall specific platform version using Semantic Versioning
platformio platform uninstall [email protected]
Description
Uninstall specified Development Platforms
Examples
> platformio
Uninstalling
Uninstalling
Uninstalling
The platform
78
platform uninstall atmelavr
platform atmelavr @ 0.0.0:
[OK]
package tool-scons @ 2.4.1:
[OK]
package toolchain-atmelavr @ 1.40801.0:
[OK]
'atmelavr' has been successfully uninstalled!
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
platformio platform update
Contents
• platformio platform update
– Usage
– Description
– Options
– Examples
Usage
platformio platform update [OPTIONS] [PLATFORM...]
pio platform update [OPTIONS] [PLATFORM...]
# update specific platform version using Semantic Versioning
platformio platform update [email protected]
Description
Check or update installed Development Platforms
Options
-p, --only-packages
Update only the platform related packages. Do not update development platform build scripts, board configs and etc.
-c, --only-check
Do not update, only check for a new version
--json-output
Return the output in JSON format
Examples
> platformio platform update
Platform
-------Updating
Updating
Updating
atmelavr
atmelavr @ 0.0.0: [Up-to-date]
framework-arduinoavr @ 1.10608.1: [Up-to-date]
tool-avrdude @ 1.60001.1: [Up-to-date]
1.3. PlatformIO Core
79
PlatformIO Documentation, Release 3.4.1
Updating toolchain-atmelavr @ 1.40801.0:
[Up-to-date]
Updating tool-scons @ 2.4.1:
[Up-to-date]
Platform
-------Updating
Updating
Updating
Updating
Updating
Updating
Updating
espressif8266
Platform
-------Updating
Updating
Updating
Updating
Updating
Updating
Updating
teensy
espressif @ 0.0.0:
[Up-to-date]
tool-scons @ 2.4.1:
[Up-to-date]
toolchain-xtensa @ 1.40802.0: [Up-to-date]
tool-esptool @ 1.409.0:
[Up-to-date]
tool-mkspiffs @ 1.102.0:
[Up-to-date]
framework-arduinoespressif8266 @ 1.20300.0:
sdk-esp8266 @ 1.10502.0:
[Up-to-date]
[Up-to-date]
teensy @ 0.0.0:
[Up-to-date]
framework-arduinoteensy @ 1.128.0:
[Up-to-date]
tool-teensy @ 1.1.0:
[Up-to-date]
framework-mbed @ 1.121.0: [Up-to-date]
tool-scons @ 2.4.1:
[Up-to-date]
toolchain-atmelavr @ 1.40801.0:
[Up-to-date]
toolchain-gccarmnoneeabi @ 1.40804.0: [Up-to-date]
...
platformio remote
Helper command for PIO Remote™.
To print all available commands and options use:
pio remote --help
platformio remote --help
platformio remote COMMAND --help
# run command on the specified PIO Remote Agents
platformio remote --agent NAME_1 --agent NAME_N COMMAND
PIO Remote™ Agent
Start PIO Remote™ Agent on a host machine and work remotely with your devices WITHOUT extra software,
services, SSH, VPN, tunneling or opening incoming network ports.
PIO Remote™ supports wired and wireless devices. Wired devices should be connected physically to host machine
where PIO Remote™ Agent is started, where wireless devices should be visible for PIO Remote™ Agent to provide
network operations Over-The-Air (OTA).
Contents
• PIO Remote™ Agent
– platformio remote agent list
* Usage
80
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
* Description
* Example
– platformio remote agent start
* Usage
* Description
* Options
– platformio remote agent reload
* Usage
* Description
* Example
platformio remote agent list
Usage
platformio remote agent list
pio remote agent list
Description
List active PIO Remote™ Agent s started using own PIO Account or shared with you by other PlatformIO developers.
Example
> platformio remote agent list
PlatformIO Plus (https://pioplus.com)
innomac.local
------------ID: 98853d930......788d77375e7
Started: 2016-10-26 16:32:56
platformio remote agent start
Usage
platformio remote agent start [OPTIONS]
pio remote agent start [OPTIONS]
1.3. PlatformIO Core
81
PlatformIO Documentation, Release 3.4.1
Description
Start PIO Remote™ Agent and work remotely with your devices from anywhere in the world. This command can be
run as daemon or added to autostart list of your OS.
Options
-n, --name
Agent name/alias. By default, machine’s hostname will be used. You can use this name later for platformio remote
device and platformio remote run commands. Good names are home, office, lab or etc.
-s, --share
Share your agent/devices with other PlatformIO developers who have PIO Account: friends, co-workers, team, etc.
The valid value for --share option is E-Mail address that was used for platformio account register command.
-d, --working-dir
A working directory where PIO Remote™ Agent stores projects data for incremental synchronization and embedded
programs for PIO Process Supervisor.
platformio remote agent reload
Usage
platformio remote agent reload
pio remote agent reload
# reload specified PIO Remote Agents
platformio remote --agent NAME reload
Description
Allows gracefully reload one or more PIO Remote™ Agent ‘s.
Example
> platformio remote agent list
PlatformIO Plus (https://pioplus.com)
innomac.local
------------ID: 98853d93.....77375e7
Reloaded: 2016-11-11 23:33:32
82
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
platformio remote device
Remote Device: monitor remote device or list existing.
Contents
• platformio remote device
– platformio remote device list
* Usage
* Description
* Options
* Example
– platformio remote device monitor
* Usage
* Description
* Options
* Examples
platformio remote device list
Usage
platformio remote device list [OPTIONS]
pio remote device list [OPTIONS]
# List devices from the specified agents. Multiple agents are allowed.
platformio remote --agent NAME device list [OPTIONS]
Description
List Serial Ports on remote machines where PIO Remote™ Agent is started.
You can list devices from the specified remote machines using --agent NAME option between “remote” & “device” sub-commands. For example, you have run platformio remote agent start --name command
with “home” and “office” options:
• platformio remote agent start --name home
• platformio remote agent start --name office
Now, to list devices from office machine please use platformio remote --agent office device list.
Multiple agents are allowed ( platformio remote --agent lab1 --agent lab3 device ...).
1.3. PlatformIO Core
83
PlatformIO Documentation, Release 3.4.1
Options
--json-output
Return the output in JSON format
Example
> platformio remote device list
PlatformIO Plus (https://pioplus.com)
Agent innomac.local
===================
/dev/cu.Bluetooth-Incoming-Port
------------------------------Hardware ID: n/a
Description: n/a
/dev/cu.obd2ecu-SPPDev
---------------------Hardware ID: n/a
Description: n/a
/dev/cu.usbmodemFA1431
---------------------Hardware ID: USB VID:PID=2A03:0043 SER=75435353038351015271 LOCATION=250-1.4.3
Description: Arduino Uno
/dev/cu.usbserial-A6004003
-------------------------Hardware ID: USB VID:PID=0403:6001 SER=A6004003 LOCATION=253-1.3.1
Description: FT232R USB UART - FT232R USB UART
/dev/cu.SLAB_USBtoUART
---------------------Hardware ID: USB VID:PID=10C4:EA60 SER=0001 LOCATION=253-1.3.2
Description: CP2102 USB to UART Bridge Controller - CP2102 USB to UART Bridge
˓→Controller
/dev/cu.usbmodem589561
---------------------Hardware ID: USB VID:PID=16C0:0483 SER=589560 LOCATION=250-1.4.1
Description: USB Serial
platformio remote device monitor
Remote Serial Port Monitor
Usage
platformio remote device monitor [OPTIONS]
pio remote device monitor [OPTIONS]
# Connect to a specified agent
platformio remote --agent NAME device monitor [OPTIONS]
platformio remote -a NAME device monitor [OPTIONS]
84
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Description
Connect to Serial Port of remote device and receive or send data in real time. PIO Remote™ Agent should be started
before on a remote machine.
To control monitor please use these “hot keys”:
• Ctrl+C Quit
• Ctrl+T Menu
• Ctrl+T followed by Ctrl+H Help
Options
-p, --port
Port, a number or a device name
-b, --baud
Set baud rate, default 9600
--parity
Set parity (None, Even, Odd, Space, Mark), one of [N, E, O, S, M], default N
--rtscts
Enable RTS/CTS flow control, default Off
--xonxoff
Enable software flow control, default Off
--rts
Set initial RTS line state, default 0
--dtr
Set initial DTR line state, default 0
--echo
Enable local echo, default Off
--encoding
Set the encoding for the serial port (e.g. hexlify, Latin1, UTF-8), default UTF-8.
-f, --filter
Add text transformation. Available filters:
• colorize Apply different colors for received and echo
• debug Print what is sent and received
• default Remove typical terminal control codes from input
• direct Do-nothing: forward all data unchanged
• nocontrol Remove all control codes, incl. CR+LF
• printable Show decimal code for all non-ASCII characters and replace most control codes
--eol
1.3. PlatformIO Core
85
PlatformIO Documentation, Release 3.4.1
End of line mode (CR, LF or CRLF), default CRLF
--raw
Do not apply any encodings/transformations
--exit-char
ASCII code of special character that is used to exit the application, default 3 (DEC, Ctrl+C).
For example, to use Ctrl+] run platformio remote device monitor --exit-char 29.
--menu-char
ASCII code of special character that is used to control miniterm (menu), default 20 (DEC)
---quiet
Diagnostics: suppress non-error messages, default Off
Examples
1. Show available options for monitor
> platformio remote device monitor --help
Usage: platformio remote device monitor [OPTIONS]
Options:
-p, --port TEXT
-b, --baud INTEGER
--parity [N|E|O|S|M]
--rtscts
--xonxoff
--rts [0|1]
--dtr [0|1]
--echo
--encoding TEXT
-f, --filter TEXT
--eol [CR|LF|CRLF]
--raw
--exit-char INTEGER
--menu-char INTEGER
--quiet
-h, --help
Port, a number or a device name
Set baud rate, default=9600
Set parity, default=N
Enable RTS/CTS flow control, default=Off
Enable software flow control, default=Off
Set initial RTS line state, default=0
Set initial DTR line state, default=0
Enable local echo, default=Off
Set the encoding for the serial port (e.g. hexlify,
Latin1, UTF-8), default: UTF-8
Add text transformation
End of line mode, default=CRLF
Do not apply any encodings/transformations
ASCII code of special character that is used to exit
the application, default=29 (DEC)
ASCII code of special character that is used to
control miniterm (menu), default=20 (DEC)
Diagnostics: suppress non-error messages, default=Off
Show this message and exit.
2. Communicate with serial device and print help inside terminal
> platformio remote device monitor
--- Available ports:
--- /dev/cu.Bluetooth-Incoming-Port n/a
--- /dev/cu.Bluetooth-Modem n/a
--- /dev/cu.SLAB_USBtoUART CP2102 USB to UART Bridge Controller
--- /dev/cu.obd2ecu-SPPDev n/a
Enter port name:/dev/cu.SLAB_USBtoUART
--- Miniterm on /dev/cu.SLAB_USBtoUART: 9600,8,N,1 ---
86
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
--- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H --Hello PlatformIO!
----- Ctrl+]
Exit program
--- Ctrl+T
Menu escape key, followed by:
--- Menu keys:
--Ctrl+T Send the menu character itself to remote
--Ctrl+] Send the exit character itself to remote
--Ctrl+I Show info
--Ctrl+U Upload file (prompt will be shown)
--- Toggles:
--Ctrl+R RTS
Ctrl+E local echo
--Ctrl+D DTR
Ctrl+B BREAK
--Ctrl+L line feed
Ctrl+A Cycle repr mode
----- Port settings (Ctrl+T followed by the following):
--p
change port
--7 8
set data bits
--n e o s m change parity (None, Even, Odd, Space, Mark)
--1 2 3
set stop bits (1, 2, 1.5)
--b
change baud rate
--x X
disable/enable software flow control
--r R
disable/enable hardware flow control
--- exit ---
platformio remote run
Remote Firmware Updates
Contents
• platformio remote run
– Usage
– Description
– Options
– Example
Usage
platformio remote run [OPTIONS]
pio remote run [OPTIONS]
# process environments using specified PIO Remote Agent
platformio remote --agent NAME run [OPTIONS]
1.3. PlatformIO Core
87
PlatformIO Documentation, Release 3.4.1
Description
Process remotely environments which are defined in Project Configuration File platformio.ini file. By default, PIO
Remote™ builds project on a host machine and deploy final firmware (program) to a remote device (embedded board).
If you need to process project on a remote machine, please use platformio remote run --force-remote
option. In this case, PIO Remote™ will automatically synchronize your project with remote machine, install required
toolchains, frameworks, SDKs, etc., and process project.
Options
-e, --environment
Process specified environments.
You can also specify which environments should be processed by default using env_default option from Project Configuration File platformio.ini.
-t, --target
Process specified targets.
Built-in targets:
• clean delete compiled object files, libraries and firmware/program binaries
• upload firmware “auto-uploading” for embedded platforms
• program firmware “auto-uploading” for embedded platforms using external programmer (available only for
Atmel AVR)
• buildfs Uploading files to file system SPIFFS
• uploadfs Uploading files to file system SPIFFS
• envdump dump current build environment
• size print the size of the sections in a firmware/program
--upload-port
Custom upload port of embedded board. To print all available ports use platformio remote device command.
If upload port is not specified, PlatformIO will try to detect it automatically.
-d, --project-dir
Specify the path to project directory. By default, --project-dir is equal to current working directory (CWD).
-v, --verbose
Shows detailed information when processing environments.
This option can be set globally using
PLATFORMIO_SETTING_FORCE_VERBOSE.
force_verbose
setting
or
by
environment
variable
--disable-auto-clean
Disable auto-clean of envs_dir when Project Configuration File platformio.ini or src_dir (project structure) have been
modified.
-r, --force-remote
88
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
By default, PIO Remote™ builds project on a host machine and deploy final firmware (program) to remote device
(embedded board).
If you need to process project on remote machine, please use platformio remote run --force-remote
option. In this case, PIO Remote™ will automatically synchronize your project with remote machine, install required
toolchains, frameworks, SDKs, etc., and process project.
Example
> platformio remote run --environment uno --target upload
PlatformIO Plus (https://pioplus.com)
Building project locally
[Wed Oct 26 16:35:09 2016] Processing uno (platform: atmelavr, board: uno, framework:
˓→arduino)
-------------------------------------------------------------------------------Verbose mode can be enabled via `-v, --verbose` option
Collected 25 compatible libraries
Looking for dependencies...
Project does not have dependencies
Compiling .pioenvs/uno/src/main.o
Archiving .pioenvs/uno/libFrameworkArduinoVariant.a
Indexing .pioenvs/uno/libFrameworkArduinoVariant.a
Compiling .pioenvs/uno/FrameworkArduino/CDC.o
Compiling .pioenvs/uno/FrameworkArduino/HardwareSerial.o
Compiling .pioenvs/uno/FrameworkArduino/HardwareSerial0.o
Compiling .pioenvs/uno/FrameworkArduino/HardwareSerial1.o
Compiling .pioenvs/uno/FrameworkArduino/HardwareSerial2.o
Compiling .pioenvs/uno/FrameworkArduino/HardwareSerial3.o
Compiling .pioenvs/uno/FrameworkArduino/IPAddress.o
Compiling .pioenvs/uno/FrameworkArduino/PluggableUSB.o
Compiling .pioenvs/uno/FrameworkArduino/Print.o
Compiling .pioenvs/uno/FrameworkArduino/Stream.o
Compiling .pioenvs/uno/FrameworkArduino/Tone.o
Compiling .pioenvs/uno/FrameworkArduino/USBCore.o
Compiling .pioenvs/uno/FrameworkArduino/WInterrupts.o
Compiling .pioenvs/uno/FrameworkArduino/WMath.o
Compiling .pioenvs/uno/FrameworkArduino/WString.o
Compiling .pioenvs/uno/FrameworkArduino/_wiring_pulse.o
Compiling .pioenvs/uno/FrameworkArduino/abi.o
Compiling .pioenvs/uno/FrameworkArduino/hooks.o
Compiling .pioenvs/uno/FrameworkArduino/main.o
Compiling .pioenvs/uno/FrameworkArduino/new.o
Compiling .pioenvs/uno/FrameworkArduino/wiring.o
Compiling .pioenvs/uno/FrameworkArduino/wiring_analog.o
Compiling .pioenvs/uno/FrameworkArduino/wiring_digital.o
Compiling .pioenvs/uno/FrameworkArduino/wiring_pulse.o
Compiling .pioenvs/uno/FrameworkArduino/wiring_shift.o
Archiving .pioenvs/uno/libFrameworkArduino.a
Indexing .pioenvs/uno/libFrameworkArduino.a
Linking .pioenvs/uno/firmware.elf
Checking program size
Building .pioenvs/uno/firmware.hex
text
data
bss
dec
hex filename
2574
48
168
2790
ae6 .pioenvs/uno/firmware.elf
========================= [SUCCESS] Took 10.01 seconds =======================
================================== [SUMMARY] =================================
1.3. PlatformIO Core
89
PlatformIO Documentation, Release 3.4.1
Environment nodemcuv2
[SKIP]
Environment uno_pic32
[SKIP]
Environment teensy31
[SKIP]
Environment uno
[SUCCESS]
========================= [SUCCESS] Took 10.01 seconds ========================
Uploading firmware remotely
[Wed Oct 26 19:35:20 2016] Processing uno (platform: atmelavr, board: uno, framework:
˓→arduino)
-------------------------------------------------------------------------------------˓→-------Verbose mode can be enabled via `-v, --verbose` option
Looking for upload port...
Auto-detected: /dev/cu.usbmodemFA1431
Uploading .pioenvs/uno/firmware.hex
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude: Device signature = 0x1e950f
avrdude: reading input file ".pioenvs/uno/firmware.hex"
avrdude: writing flash (2622 bytes):
Writing | ################################################## | 100% 0.43s
avrdude: 2622 bytes of flash written
avrdude: verifying flash memory against .pioenvs/uno/firmware.hex:
avrdude: load data flash data from input file .pioenvs/uno/firmware.hex:
avrdude: input file .pioenvs/uno/firmware.hex contains 2622 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 0.34s
avrdude: verifying ...
avrdude: 2622 bytes of flash verified
avrdude done. Thank you.
========================= [SUCCESS] Took 3.04 seconds =======================
========================= [SUMMARY] =========================================
Environment nodemcuv2
[SKIP]
Environment uno_pic32
[SKIP]
Environment teensy31
[SKIP]
Environment uno
[SUCCESS]
========================= [SUCCESS] Took 3.04 seconds ========================
platformio remote test
Helper command for remote PIO Unit Testing.
Contents
• platformio remote test
– Usage
– Description
– Options
– Examples
90
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Usage
platformio remote test [OPTIONS]
pio remote test [OPTIONS]
# run tests on specified PIO Remote Agent
platformio remote --agent NAME test [OPTIONS]
Description
Run remotely tests from PlatformIO based project. More details about PlatformIO PIO Unit Testing.
This command allows you to apply the tests for the environments specified in Project Configuration File platformio.ini.
Options
-e, --environment
Process specified environments. More details platformio run --environment
-i, --ignore
Ignore tests where the name matches specified patterns. More than one pattern is allowed. If you need to ignore
some tests for the specific environment, please take a look at test_ignore option from Project Configuration File
platformio.ini.
Pattern
*
?
[seq]
[!seq]
Meaning
matches everything
matches any single character
matches any character in seq
matches any character not in seq
For example, platformio remote test --ignore "mytest*" -i "test[13]"
--upload-port
A port that is intended for firmware uploading. To list available ports please use platformio device list command.
If upload port is not specified, PlatformIO will try to detect it automatically.
--test-port
A Serial/UART port that PlatformIO uses as communication interface between PlatformIO Unit Test Engine and target
device. To list available ports please use platformio device list command.
If test port is not specified, PlatformIO will try to detect it automatically.
-d, --project-dir
Specify the path to project directory. By default, --project-dir is equal to current working directory (CWD).
-r, --force-remote
By default, PIO Remote™ processes project on a host machine and deploy final testing firmware (program) to remote
device (embedded board).
If you need to process project on remote machine, please use platformio remote test --force-remote
option. In this case, PIO Remote™ will automatically synchronize your project with remote machine, install required
toolchains, frameworks, SDKs, etc., and process project.
1.3. PlatformIO Core
91
PlatformIO Documentation, Release 3.4.1
--without-building
Skip building stage.
--without-uploading
Skip uploading stage
-v, --verbose
Shows detailed information when processing environments.
This option can be set globally using
PLATFORMIO_SETTING_FORCE_VERBOSE.
force_verbose
setting
or
by
environment
variable
Examples
For the examples please follow to PIO Unit Testing page.
platformio remote update
Contents
• platformio remote update
– Usage
– Description
– Options
– Examples
Usage
platformio remote update [OPTIONS]
pio remote update [OPTIONS]
# start update process on the specified agents/machines
platformio remote --agent NAME update [OPTIONS]
Description
Check or update installed Development Platforms and global Libraries on the remote machine.
Options
-c, --only-check
Do not update, only check for new version
92
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Examples
> platformio remote update
PlatformIO Plus (https://pioplus.com)
Platform Manager
================
Platform timsp430
-------Updating timsp430 @ 0.0.0: [Up-to-date]
Updating toolchain-timsp430 @ 1.40603.0:
[Up-to-date]
Updating framework-energiamsp430 @ 1.17.0: [Up-to-date]
Updating framework-arduinomsp430 @ 1.10601.0:
[Up-to-date]
Updating tool-scons @ 2.4.1:
[Up-to-date]
Platform
-------Updating
Updating
Updating
Updating
freescalekinetis
Platform
-------Updating
Updating
Updating
Updating
Updating
Updating
Updating
Updating
ststm32
Platform
-------Updating
Updating
Updating
lattice_ice40
Platform
-------Updating
Updating
Updating
Updating
Updating
atmelavr
Platform
-------Updating
Updating
Updating
Updating
Updating
Updating
Updating
espressif8266
freescalekinetis @ 0.0.0: [Up-to-date]
framework-mbed @ 1.121.1: [Up-to-date]
toolchain-gccarmnoneeabi @ 1.40804.0: [Up-to-date]
tool-scons @ 2.4.1:
[Up-to-date]
ststm32 @ 0.0.0:
[Up-to-date]
framework-libopencm3 @ 1.1.0: [Up-to-date]
toolchain-gccarmnoneeabi @ 1.40804.0: [Up-to-date]
tool-stlink @ 1.10200.0:
[Up-to-date]
framework-spl @ 1.10201.0:
[Up-to-date]
framework-cmsis @ 1.40300.0:
[Up-to-date]
framework-mbed @ 1.121.1: [Up-to-date]
tool-scons @ 2.4.1:
[Up-to-date]
lattice_ice40 @ 0.0.0:
[Up-to-date]
toolchain-icestorm @ 1.7.0:
[Up-to-date]
tool-scons @ 2.4.1:
[Up-to-date]
atmelavr @ 0.0.0: [Up-to-date]
framework-arduinoavr @ 1.10608.1: [Up-to-date]
tool-avrdude @ 1.60001.1: [Up-to-date]
toolchain-atmelavr @ 1.40801.0:
[Up-to-date]
tool-scons @ 2.4.1:
[Up-to-date]
espressif8266 @ 0.0.0:
[Up-to-date]
tool-scons @ 2.4.1:
[Up-to-date]
toolchain-xtensa @ 1.40802.0: [Up-to-date]
tool-esptool @ 1.409.0:
[Up-to-date]
tool-mkspiffs @ 1.102.0:
[Up-to-date]
framework-arduinoespressif8266 @ 1.20300.0:
sdk-esp8266 @ 1.10502.0:
[Up-to-date]
1.3. PlatformIO Core
[Up-to-date]
93
PlatformIO Documentation, Release 3.4.1
Platform
-------Updating
Updating
Updating
linux_x86_64
Platform
-------Updating
Updating
Updating
windows_x86
Platform
-------Updating
Updating
Updating
Updating
Updating
Updating
Updating
teensy
Platform
-------Updating
Updating
Updating
Updating
Updating
nordicnrf51
Platform
-------Updating
Updating
Updating
Updating
Updating
titiva
Platform
-------Updating
Updating
Updating
Updating
Updating
Updating
Updating
atmelsam
Platform
-------Updating
Updating
Updating
Updating
siliconlabsefm32
linux_x86_64 @ 0.0.0: [Up-to-date]
toolchain-gcclinux64 @ 1.40801.0: [Up-to-date]
tool-scons @ 2.4.1:
[Up-to-date]
windows_x86 @ 0.0.0:
[Up-to-date]
toolchain-gccmingw32 @ 1.40800.0: [Up-to-date]
tool-scons @ 2.4.1:
[Up-to-date]
teensy @ 0.0.0:
[Up-to-date]
framework-arduinoteensy @ 1.128.0:
[Up-to-date]
tool-teensy @ 1.1.0:
[Up-to-date]
framework-mbed @ 1.121.1: [Up-to-date]
tool-scons @ 2.4.1:
[Up-to-date]
toolchain-atmelavr @ 1.40801.0:
[Up-to-date]
toolchain-gccarmnoneeabi @ 1.40804.0: [Up-to-date]
nordicnrf51 @ 0.0.0:
[Up-to-date]
toolchain-gccarmnoneeabi @ 1.40804.0: [Up-to-date]
framework-arduinonordicnrf51 @ 1.20302.0: [Up-to-date]
framework-mbed @ 1.121.1: [Up-to-date]
tool-scons @ 2.4.1:
[Up-to-date]
titiva @ 0.0.0:
[Up-to-date]
framework-libopencm3 @ 1.1.0: [Up-to-date]
toolchain-gccarmnoneeabi @ 1.40804.0: [Up-to-date]
framework-energiativa @ 1.17.0:
[Up-to-date]
tool-scons @ 2.4.1:
[Up-to-date]
atmelsam @ 0.0.0: [Up-to-date]
toolchain-gccarmnoneeabi @ 1.40804.0: [Up-to-date]
tool-openocd @ 1.900.0:
[Up-to-date]
framework-mbed @ 1.121.1: [Up-to-date]
tool-scons @ 2.4.1:
[Up-to-date]
tool-avrdude @ 1.60001.1: [Up-to-date]
tool-bossac @ 1.10601.0:
[Up-to-date]
siliconlabsefm32 @ 0.0.0: [Up-to-date]
framework-mbed @ 1.121.1: [Up-to-date]
toolchain-gccarmnoneeabi @ 1.40804.0: [Up-to-date]
tool-scons @ 2.4.1:
[Up-to-date]
Platform microchippic32
-------Updating microchippic32 @ 0.0.0:
94
[Up-to-date]
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Updating
Updating
Updating
Updating
framework-arduinomicrochippic32 @ 1.10201.0:
[Up-to-date]
toolchain-microchippic32 @ 1.40803.0: [Up-to-date]
tool-pic32prog @ 1.200200.0:
[Up-to-date]
tool-scons @ 2.4.1:
[Up-to-date]
Platform
-------Updating
Updating
Updating
linux_i686
Platform
-------Updating
Updating
Updating
Updating
Updating
intel_arc32
Platform
-------Updating
Updating
Updating
Updating
nxplpc
Platform
-------Updating
Updating
Updating
linux_arm
linux_i686 @ 0.0.0:
[Up-to-date]
toolchain-gcclinux32 @ 1.40801.0: [Up-to-date]
tool-scons @ 2.4.1:
[Up-to-date]
intel_arc32 @ 0.0.0:
[Up-to-date]
framework-arduinointel @ 1.10006.0:
[Up-to-date]
tool-arduino101load @ 1.124.0:
[Up-to-date]
toolchain-intelarc32 @ 1.40805.0: [Up-to-date]
tool-scons @ 2.4.1:
[Up-to-date]
nxplpc @ 0.0.0:
[Up-to-date]
framework-mbed @ 1.121.1: [Up-to-date]
toolchain-gccarmnoneeabi @ 1.40804.0: [Up-to-date]
tool-scons @ 2.4.1:
[Up-to-date]
linux_arm @ 0.0.0:
[Up-to-date]
toolchain-gccarmlinuxgnueabi @ 1.40802.0:
tool-scons @ 2.4.1:
[Up-to-date]
[Up-to-date]
Platform native
-------Updating native @ 0.0.0:
[Up-to-date]
Updating tool-scons @ 2.4.1:
[Up-to-date]
Library Manager
===============
Updating Adafruit-GFX @ 334e815bc1:
[Up-to-date]
Updating Adafruit-ST7735 @ d53d4bf03a: [Up-to-date]
Updating Adafruit-DHT @ 09344416d2:
[Up-to-date]
Updating Adafruit-Unified-Sensor @ f2af6f4efc: [Up-to-date]
Updating ESP8266_SSD1306 @ 3.2.3:
[Up-to-date]
Updating EngduinoMagnetometer @ 3.1.0: [Up-to-date]
Updating IRremote @ 2.2.1: [Up-to-date]
Updating Json @ 5.6.4: [Up-to-date]
Updating MODSERIAL @ d8422efe47:
[Up-to-date]
Updating PJON @ 1fb26fd:
[Checking]
git version 2.7.4 (Apple Git-66)
Already up-to-date.
Updating Servo @ 36b69a7ced07: [Checking]
Mercurial Distributed SCM (version 3.8.4)
(see https://mercurial-scm.org for more information)
Copyright (C) 2005-2016 Matt Mackall and others
This is free software; see the source for copying conditions. There is NO
1.3. PlatformIO Core
95
PlatformIO Documentation, Release 3.4.1
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
pulling from https://developer.mbed.org/users/simon/code/Servo/
searching for changes
no changes found
Updating TextLCD @ 308d188a2d3a:
[Checking]
Mercurial Distributed SCM (version 3.8.4)
(see https://mercurial-scm.org for more information)
Copyright (C) 2005-2016 Matt Mackall and others
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
pulling from https://developer.mbed.org/users/simon/code/TextLCD/
searching for changes
no changes found
platformio run
Contents
• platformio run
– Usage
– Description
– Options
– Examples
Usage
platformio run [OPTIONS]
pio run [OPTIONS]
Description
Process environments which are defined in Project Configuration File platformio.ini file
Options
-e, --environment
Process specified environments.
You can also specify which environments should be processed by default using env_default option from Project Configuration File platformio.ini.
-t, --target
Process specified targets.
96
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Note: You can configure default targets per project environment using targets option in Project Configuration File
platformio.ini.
Built-in targets:
• Processing
– clean delete compiled object files, libraries and firmware/program binaries
– upload firmware “auto-uploading” for embedded platforms
– program firmware “auto-uploading” for embedded platforms using external programmer (available only
for Atmel AVR)
– fuses set fuse bits (available only for Atmel AVR)
– buildfs Uploading files to file system SPIFFS
– uploadfs Uploading files to file system SPIFFS
– size print the size of the sections in a firmware/program
• Device
– monitor automatically start platformio device monitor after success build operation. You can configure
monitor using Monitor options.
• Service
– envdump dump current build environment
– idedata export build environment for IDE (defines, build flags, CPPPATH, etc.)
--upload-port
Custom upload port of embedded board. To print all available ports use platformio device command.
If upload port is not specified, PlatformIO will try to detect it automatically.
-d, --project-dir
Specify the path to project directory. By default, --project-dir is equal to current working directory (CWD).
-s, --silent
Suppress progress reporting
-v, --verbose
Shows detailed information when processing environments.
This option can be set globally using
PLATFORMIO_SETTING_FORCE_VERBOSE.
force_verbose
setting
or
by
environment
variable
--disable-auto-clean
Disable auto-clean of envs_dir when Project Configuration File platformio.ini or src_dir (project structure) have been
modified.
Examples
1. Process Wiring Blink Example
1.3. PlatformIO Core
97
PlatformIO Documentation, Release 3.4.1
> platformio run
[Wed Sep 7 15:48:58 2016] Processing uno (platform: atmelavr, board: uno, framework:
˓→arduino)
-------------------------------------------------------------------------------------˓→--------Verbose mode can be enabled via `-v, --verbose` option
Collected 36 compatible libraries
Looking for dependencies...
Project does not have dependencies
Compiling .pioenvs/uno/src/main.o
Archiving .pioenvs/uno/libFrameworkArduinoVariant.a
Indexing .pioenvs/uno/libFrameworkArduinoVariant.a
Compiling .pioenvs/uno/FrameworkArduino/CDC.o
...
Compiling .pioenvs/uno/FrameworkArduino/wiring_shift.o
Archiving .pioenvs/uno/libFrameworkArduino.a
Indexing .pioenvs/uno/libFrameworkArduino.a
Linking .pioenvs/uno/firmware.elf
Building .pioenvs/uno/firmware.hex
Calculating size .pioenvs/uno/firmware.elf
AVR Memory Usage
---------------Device: atmega328p
Program:
1034 bytes (3.2% Full)
(.text + .data + .bootloader)
Data:
9 bytes (0.4% Full)
(.data + .bss + .noinit)
=========================== [SUCCESS] Took 2.47 seconds ===========================
[Wed Sep 7 15:49:01 2016] Processing nodemcu (platform: espressif8266, board:
˓→nodemcu, framework: arduino)
-------------------------------------------------------------------------------------˓→--------Verbose mode can be enabled via `-v, --verbose` option
Collected 34 compatible libraries
Looking for dependencies...
Project does not have dependencies
Compiling .pioenvs/nodemcu/src/main.o
Archiving .pioenvs/nodemcu/libFrameworkArduinoVariant.a
Indexing .pioenvs/nodemcu/libFrameworkArduinoVariant.a
Compiling .pioenvs/nodemcu/FrameworkArduino/Esp.o
Compiling .pioenvs/nodemcu/FrameworkArduino/FS.o
Compiling .pioenvs/nodemcu/FrameworkArduino/HardwareSerial.o
...
Archiving .pioenvs/nodemcu/libFrameworkArduino.a
Indexing .pioenvs/nodemcu/libFrameworkArduino.a
Linking .pioenvs/nodemcu/firmware.elf
Calculating size .pioenvs/nodemcu/firmware.elf
text
data
bss
dec
hex filename
221240
888
29400 251528
3d688 .pioenvs/nodemcu/firmware.elf
Building .pioenvs/nodemcu/firmware.bin
=========================== [SUCCESS] Took 6.43 seconds ===========================
98
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
[Wed Sep 7 15:49:07 2016] Processing teensy31 (platform: teensy, board: teensy31,
˓→framework: arduino)
-------------------------------------------------------------------------------------˓→--------Verbose mode can be enabled via `-v, --verbose` option
Collected 96 compatible libraries
Looking for dependencies...
Project does not have dependencies
Compiling .pioenvs/teensy31/src/main.o
Compiling .pioenvs/teensy31/FrameworkArduino/AudioStream.o
Compiling .pioenvs/teensy31/FrameworkArduino/DMAChannel.o
...
Compiling .pioenvs/teensy31/FrameworkArduino/yield.o
Archiving .pioenvs/teensy31/libFrameworkArduino.a
Indexing .pioenvs/teensy31/libFrameworkArduino.a
Linking .pioenvs/teensy31/firmware.elf
Calculating size .pioenvs/teensy31/firmware.elf
text
data
bss
dec
hex filename
11288
168
2288
13744
35b0 .pioenvs/teensy31/firmware.elf
Building .pioenvs/teensy31/firmware.hex
=========================== [SUCCESS] Took 5.36 seconds ===========================
[Wed Sep 7 15:49:12 2016] Processing lpmsp430g2553 (platform: timsp430, build_flags:
˓→-D LED_BUILTIN=RED_LED, board: lpmsp430g2553, framework: energia)
-------------------------------------------------------------------------------------˓→--------Verbose mode can be enabled via `-v, --verbose` option
Collected 29 compatible libraries
Looking for dependencies...
Project does not have dependencies
Compiling .pioenvs/lpmsp430g2553/src/main.o
Compiling .pioenvs/lpmsp430g2553/FrameworkEnergia/HardwareSerial.o
Compiling .pioenvs/lpmsp430g2553/FrameworkEnergia/IPAddress.o
...
Compiling .pioenvs/lpmsp430g2553/FrameworkEnergia/wiring_digital.o
Compiling .pioenvs/lpmsp430g2553/FrameworkEnergia/wiring_pulse.o
Compiling .pioenvs/lpmsp430g2553/FrameworkEnergia/wiring_shift.o
Archiving .pioenvs/lpmsp430g2553/libFrameworkEnergia.a
Indexing .pioenvs/lpmsp430g2553/libFrameworkEnergia.a
Linking .pioenvs/lpmsp430g2553/firmware.elf
Calculating size .pioenvs/lpmsp430g2553/firmware.elf
text
data
bss
dec
hex filename
820
0
20
840
348 .pioenvs/lpmsp430g2553/firmware.elf
Building .pioenvs/lpmsp430g2553/firmware.hex
=========================== [SUCCESS] Took 2.34 seconds ===========================
2. Process specific environment
> platformio run -e nodemcu -e teensy31
[Wed Sep 7 15:49:01 2016] Processing nodemcu (platform: espressif8266, board:
˓→nodemcu, framework: arduino)
-------------------------------------------------------------------------------------˓→--------Verbose mode can be enabled via `-v, --verbose` option
Collected 34 compatible libraries
Looking for dependencies...
Project does not have dependencies
1.3. PlatformIO Core
99
PlatformIO Documentation, Release 3.4.1
Compiling .pioenvs/nodemcu/src/main.o
Archiving .pioenvs/nodemcu/libFrameworkArduinoVariant.a
Indexing .pioenvs/nodemcu/libFrameworkArduinoVariant.a
Compiling .pioenvs/nodemcu/FrameworkArduino/Esp.o
Compiling .pioenvs/nodemcu/FrameworkArduino/FS.o
Compiling .pioenvs/nodemcu/FrameworkArduino/HardwareSerial.o
...
Archiving .pioenvs/nodemcu/libFrameworkArduino.a
Indexing .pioenvs/nodemcu/libFrameworkArduino.a
Linking .pioenvs/nodemcu/firmware.elf
Calculating size .pioenvs/nodemcu/firmware.elf
text
data
bss
dec
hex filename
221240
888
29400 251528
3d688 .pioenvs/nodemcu/firmware.elf
Building .pioenvs/nodemcu/firmware.bin
=========================== [SUCCESS] Took 6.43 seconds ===========================
[Wed Sep 7 15:49:07 2016] Processing teensy31 (platform: teensy, board: teensy31,
˓→framework: arduino)
-------------------------------------------------------------------------------------˓→--------Verbose mode can be enabled via `-v, --verbose` option
Collected 96 compatible libraries
Looking for dependencies...
Project does not have dependencies
Compiling .pioenvs/teensy31/src/main.o
Compiling .pioenvs/teensy31/FrameworkArduino/AudioStream.o
Compiling .pioenvs/teensy31/FrameworkArduino/DMAChannel.o
...
Compiling .pioenvs/teensy31/FrameworkArduino/yield.o
Archiving .pioenvs/teensy31/libFrameworkArduino.a
Indexing .pioenvs/teensy31/libFrameworkArduino.a
Linking .pioenvs/teensy31/firmware.elf
Calculating size .pioenvs/teensy31/firmware.elf
text
data
bss
dec
hex filename
11288
168
2288
13744
35b0 .pioenvs/teensy31/firmware.elf
Building .pioenvs/teensy31/firmware.hex
=========================== [SUCCESS] Took 5.36 seconds ===========================
3. Process specific target (clean project)
> platformio run -t clean
[Wed Sep 7 15:53:26 2016] Processing uno (platform: atmelavr, board: uno, framework:
˓→arduino)
-------------------------------------------------------------------------------------˓→--------------Removed .pioenvs/uno/firmware.elf
Removed .pioenvs/uno/firmware.hex
Removed .pioenvs/uno/libFrameworkArduino.a
Removed .pioenvs/uno/libFrameworkArduinoVariant.a
Removed .pioenvs/uno/FrameworkArduino/_wiring_pulse.o
Removed .pioenvs/uno/FrameworkArduino/abi.o
Removed .pioenvs/uno/FrameworkArduino/CDC.o
Removed .pioenvs/uno/FrameworkArduino/HardwareSerial.o
Removed .pioenvs/uno/FrameworkArduino/HardwareSerial0.o
Removed .pioenvs/uno/FrameworkArduino/HardwareSerial1.o
Removed .pioenvs/uno/FrameworkArduino/HardwareSerial2.o
Removed .pioenvs/uno/FrameworkArduino/HardwareSerial3.o
Removed .pioenvs/uno/FrameworkArduino/hooks.o
100
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Removed .pioenvs/uno/FrameworkArduino/IPAddress.o
Removed .pioenvs/uno/FrameworkArduino/main.o
Removed .pioenvs/uno/FrameworkArduino/new.o
Removed .pioenvs/uno/FrameworkArduino/PluggableUSB.o
Removed .pioenvs/uno/FrameworkArduino/Print.o
Removed .pioenvs/uno/FrameworkArduino/Stream.o
Removed .pioenvs/uno/FrameworkArduino/Tone.o
Removed .pioenvs/uno/FrameworkArduino/USBCore.o
Removed .pioenvs/uno/FrameworkArduino/WInterrupts.o
Removed .pioenvs/uno/FrameworkArduino/wiring.o
Removed .pioenvs/uno/FrameworkArduino/wiring_analog.o
Removed .pioenvs/uno/FrameworkArduino/wiring_digital.o
Removed .pioenvs/uno/FrameworkArduino/wiring_pulse.o
Removed .pioenvs/uno/FrameworkArduino/wiring_shift.o
Removed .pioenvs/uno/FrameworkArduino/WMath.o
Removed .pioenvs/uno/FrameworkArduino/WString.o
Removed .pioenvs/uno/src/main.o
Done cleaning
======================= [SUCCESS] Took 0.49 seconds =======================
[Wed Sep 7 15:53:27 2016] Processing nodemcu (platform: espressif8266, board:
˓→nodemcu, framework: arduino)
-------------------------------------------------------------------------------------˓→--------------Removed .pioenvs/nodemcu/firmware.bin
Removed .pioenvs/nodemcu/firmware.elf
Removed .pioenvs/nodemcu/libFrameworkArduino.a
Removed .pioenvs/nodemcu/libFrameworkArduinoVariant.a
...
Removed .pioenvs/nodemcu/FrameworkArduino/spiffs/spiffs_nucleus.o
Removed .pioenvs/nodemcu/FrameworkArduino/umm_malloc/umm_malloc.o
Removed .pioenvs/nodemcu/src/main.o
Done cleaning
======================= [SUCCESS] Took 0.50 seconds =======================
[Wed Sep 7 15:53:27 2016] Processing teensy31 (platform: teensy, board: teensy31,
˓→framework: arduino)
-------------------------------------------------------------------------------------˓→--------------Removed .pioenvs/teensy31/firmware.elf
Removed .pioenvs/teensy31/firmware.hex
Removed .pioenvs/teensy31/libFrameworkArduino.a
Removed .pioenvs/teensy31/FrameworkArduino/analog.o
Removed .pioenvs/teensy31/FrameworkArduino/AudioStream.o
...
Removed .pioenvs/teensy31/FrameworkArduino/WString.o
Removed .pioenvs/teensy31/FrameworkArduino/yield.o
Removed .pioenvs/teensy31/src/main.o
Done cleaning
======================= [SUCCESS] Took 0.50 seconds =======================
[Wed Sep 7 15:53:28 2016] Processing lpmsp430g2553 (platform: timsp430, build_flags:
˓→-D LED_BUILTIN=RED_LED, board: lpmsp430g2553, framework: energia)
-------------------------------------------------------------------------------------˓→--------------Removed .pioenvs/lpmsp430g2553/firmware.elf
Removed .pioenvs/lpmsp430g2553/firmware.hex
Removed .pioenvs/lpmsp430g2553/libFrameworkEnergia.a
1.3. PlatformIO Core
101
PlatformIO Documentation, Release 3.4.1
Removed .pioenvs/lpmsp430g2553/FrameworkEnergia/atof.o
...
Removed .pioenvs/lpmsp430g2553/FrameworkEnergia/avr/dtostrf.o
Removed .pioenvs/lpmsp430g2553/src/main.o
Done cleaning
======================= [SUCCESS] Took 0.49 seconds =======================
4. Mix environments and targets
> platformio run -e uno -t upload
[Wed Sep 7 15:55:11 2016] Processing uno (platform: atmelavr, board: uno, framework:
˓→arduino)
-------------------------------------------------------------------------------------˓→-----------Verbose mode can be enabled via `-v, --verbose` option
Collected 36 compatible libraries
Looking for dependencies...
Project does not have dependencies
Compiling .pioenvs/uno/src/main.o
Archiving .pioenvs/uno/libFrameworkArduinoVariant.a
Indexing .pioenvs/uno/libFrameworkArduinoVariant.a
Compiling .pioenvs/uno/FrameworkArduino/CDC.o
...
Compiling .pioenvs/uno/FrameworkArduino/wiring_shift.o
Archiving .pioenvs/uno/libFrameworkArduino.a
Indexing .pioenvs/uno/libFrameworkArduino.a
Linking .pioenvs/uno/firmware.elf
Checking program size .pioenvs/uno/firmware.elf
text
data
bss
dec
hex filename
1034
0
9
1043
413 .pioenvs/uno/firmware.elf
Building .pioenvs/uno/firmware.hex
Looking for upload port...
Auto-detected: /dev/cu.usbmodemFA141
Uploading .pioenvs/uno/firmware.hex
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.01s
avrdude: Device signature = 0x1e950f
avrdude: reading input file ".pioenvs/uno/firmware.hex"
avrdude: writing flash (1034 bytes):
Writing | ################################################## | 100% 0.18s
avrdude:
avrdude:
avrdude:
avrdude:
avrdude:
1034 bytes of flash written
verifying flash memory against .pioenvs/uno/firmware.hex:
load data flash data from input file .pioenvs/uno/firmware.hex:
input file .pioenvs/uno/firmware.hex contains 1034 bytes
reading on-chip flash data:
Reading | ################################################## | 100% 0.15s
avrdude: verifying ...
avrdude: 1034 bytes of flash verified
avrdude: safemode: Fuses OK (H:00, E:00, L:00)
102
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
avrdude done.
Thank you.
======================== [SUCCESS] Took 4.14 seconds ========================
platformio settings
Manage PlatformIO settings
Contents
• platformio settings
– platformio settings get
* Usage
* Description
* Settings
· auto_update_libraries
· auto_update_platforms
· check_libraries_interval
· check_platformio_interval
· check_platforms_interval
· enable_ssl
· enable_cache
· force_verbose
· enable_telemetry
* Examples
– platformio settings set
* Usage
* Description
* Examples
– platformio settings reset
* Usage
* Description
* Examples
platformio settings get
1.3. PlatformIO Core
103
PlatformIO Documentation, Release 3.4.1
Usage
platformio settings get [NAME]
pio settings get [NAME]
Description
Get/List existing settings
Settings
auto_update_libraries
Default No
Values Yes/No
Automatically update libraries.
auto_update_platforms
Default No
Values Yes/No
Automatically update platforms.
check_libraries_interval
Default 7
Values Days (Number)
Check for the library updates interval.
check_platformio_interval
Default 3
Values Days (Number)
Check for the new PlatformIO interval.
check_platforms_interval
Default 7
Values Days (Number)
Check for the platform updates interval.
104
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
enable_ssl
Default No
Values Yes/No
Enable SSL for PlatformIO Services
enable_cache
Default Yes
Values Yes/No
Enable caching for API requests and Library Manager
force_verbose
Default No
Values Yes/No
Force verbose output when processing environments. This setting overrides
• platformio run --verbose
• platformio ci --verbose
• platformio test --verbose
enable_telemetry
Default Yes
Values Yes/No
Share diagnostics and usage information to help us make PlatformIO better:
• PlatformIO errors/exceptions
• The name of used platforms, boards, frameworks (for example, “espressif”, “arduino”, “uno”, etc.)
• The name of commands (for example, “run”, “lib list”, etc.)
• The type of IDE (for example, “atom”, “eclipse”, etc.)
This gives us a sense of what parts of the PlatformIO is most important.
The source code of telemetry service is open source. You can make sure that we DO NOT share PRIVATE information
or source code of your project. All information shares anonymously.
Thanks a lot that keep this setting enabled.
Note:
• The Yes value is equl to: True, Y, 1. The value is not case sensetive.
• You can override these settings using Environment variables.
1.3. PlatformIO Core
105
PlatformIO Documentation, Release 3.4.1
Examples
1. List all settings and theirs current values
> platformio settings get
Name
Value [Default]
Description
-------------------------------------------------------------------------------------˓→---auto_update_libraries
No
Automatically update libraries (Yes/
˓→No)
auto_update_platforms
No
Automatically update platforms (Yes/
˓→No)
check_libraries_interval
7
Check for the library updates
˓→interval (days)
check_platformio_interval
3
Check for the new PlatformIO
˓→interval (days)
check_platforms_interval
7
Check for the platform updates
˓→interval (days)
enable_cache
Yes
Enable caching for API requests and
˓→Library Manager
enable_ssl
No
Enable SSL for PlatformIO Services
enable_telemetry
Yes
Telemetry service (Yes/No)
force_verbose
No
Force verbose output when
˓→processing environments
2. Show specified setting
$ platformio settings get auto_update_platforms
Name
Value [Default]
Description
-------------------------------------------------------------------------------------˓→---auto_update_platforms
Yes
Automatically update platforms (Yes/
˓→No)
platformio settings set
Usage
platformio settings set NAME VALUE
Description
Set new value for the setting
Examples
Change to check for the new PlatformIO each day
$ platformio settings set check_platformio_interval 1
The new value for the setting has been set!
Name
Value [Default]
Description
106
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
-------------------------------------------------------------------------------------˓→---check_platformio_interval
1 [3]
Check for the new PlatformIO
˓→interval (days)
platformio settings reset
Usage
platformio settings reset
Description
Reset settings to default
Examples
$ platformio settings reset
The settings have been reseted!
Name
Value [Default]
Description
-------------------------------------------------------------------------------------˓→---auto_update_libraries
No
Automatically update libraries (Yes/
˓→No)
auto_update_platforms
No
Automatically update platforms (Yes/
˓→No)
check_libraries_interval
7
Check for the library updates
˓→interval (days)
check_platformio_interval
3
Check for the new PlatformIO
˓→interval (days)
check_platforms_interval
7
Check for the platform updates
˓→interval (days)
enable_cache
Yes
Enable caching for API requests and
˓→Library Manager
enable_ssl
No
Enable SSL for PlatformIO Services
enable_telemetry
Yes
Telemetry service (Yes/No)
force_verbose
No
Force verbose output when
˓→processing environments
platformio test
Helper command for local PIO Unit Testing.
Contents
• platformio test
1.3. PlatformIO Core
107
PlatformIO Documentation, Release 3.4.1
– Usage
– Description
– Options
– Examples
Usage
platformio test [OPTIONS]
pio test [OPTIONS]
Description
Run locally tests from PlatformIO based project. More details about PlatformIO PIO Unit Testing.
This command allows you to apply the tests for the environments specified in Project Configuration File platformio.ini.
Options
-e, --environment
Process specified environments. More details platformio run --environment
-f, --filter
Process only the tests where the name matches specified patterns. More than one pattern is allowed. If you need to
filter some tests for a specific environment, please take a look at test_filter option from Project Configuration File
platformio.ini.
Pattern
*
?
[seq]
[!seq]
Meaning
matches everything
matches any single character
matches any character in seq
matches any character not in seq
For example, platformio test --filter "mytest*" -i "test[13]"
-i, --ignore
Ignore tests where the name matches specified patterns. More than one pattern is allowed. If you need to ignore some
tests for a specific environment, please take a look at test_ignore option from Project Configuration File platformio.ini.
Pattern
*
?
[seq]
[!seq]
Meaning
matches everything
matches any single character
matches any character in seq
matches any character not in seq
For example, platformio test --ignore "mytest*" -i "test[13]"
--upload-port
A port that is intended for firmware uploading. To list available ports please use platformio device list command.
If upload port is not specified, PlatformIO will try to detect it automatically.
108
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
--test-port
A Serial/UART port that PlatformIO uses as communication interface between PlatformIO Unit Test Engine and target
device. To list available ports please use platformio device list command.
If test port is not specified, PlatformIO will try to detect it automatically.
-d, --project-dir
Specify the path to project directory. By default, --project-dir is equal to current working directory (CWD).
--without-building
Skip building stage.
--without-uploading
Skip uploading stage
--no-reset
Disable software reset via Serial.DTR/RST before test running. In this case, need to press “reset” button manually
after firmware uploading.
Warning: If board does not support software reset via Serial.DTR/RTS you should add >2 seconds delay
before UNITY_BEGIN()`. We need that time to establish a ``Serial communication between host machine and target device. See PIO Unit Testing.
--monitor-rts
Set initial RTS line state for Serial Monitor (0 or 1), default 1. We use it to gather test results via Serial connection.
--monitor-dtr
Set initial DTR line state for Serial Monitor (0 or 1), default 1. We use it to gather test results via Serial connection.
-v, --verbose
Shows detailed information when processing environments.
This option can be set globally using
PLATFORMIO_SETTING_FORCE_VERBOSE.
force_verbose
setting
or
by
environment
variable
Examples
For the examples please follow to PIO Unit Testing page.
platformio update
Contents
• platformio update
– Usage
– Description
– Options
1.3. PlatformIO Core
109
PlatformIO Documentation, Release 3.4.1
– Examples
Usage
platformio update [OPTIONS]
pio update [OPTIONS]
Description
Check or update installed PIO Core packages, Development Platforms and global Libraries. This command is combination of 2 sub-commands:
• platformio platform update
• platformio lib update
Options
--core-packages
Update only the core packages
-c, --only-check
Do not update, only check for new version
Examples
> platformio update
Platform Manager
================
Platform timsp430
-------Updating timsp430 @ 0.0.0: [Up-to-date]
Updating toolchain-timsp430 @ 1.40603.0:
[Up-to-date]
Updating framework-energiamsp430 @ 1.17.0: [Up-to-date]
Updating framework-arduinomsp430 @ 1.10601.0:
[Up-to-date]
Updating tool-scons @ 2.4.1:
[Up-to-date]
Platform
-------Updating
Updating
Updating
Updating
freescalekinetis
Platform
-------Updating
Updating
Updating
ststm32
110
freescalekinetis @ 0.0.0: [Up-to-date]
framework-mbed @ 1.121.1: [Up-to-date]
toolchain-gccarmnoneeabi @ 1.40804.0: [Up-to-date]
tool-scons @ 2.4.1:
[Up-to-date]
ststm32 @ 0.0.0:
[Up-to-date]
framework-libopencm3 @ 1.1.0: [Up-to-date]
toolchain-gccarmnoneeabi @ 1.40804.0: [Up-to-date]
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Updating
Updating
Updating
Updating
Updating
tool-stlink @ 1.10200.0:
[Up-to-date]
framework-spl @ 1.10201.0:
[Up-to-date]
framework-cmsis @ 1.40300.0:
[Up-to-date]
framework-mbed @ 1.121.1: [Up-to-date]
tool-scons @ 2.4.1:
[Up-to-date]
Platform
-------Updating
Updating
Updating
lattice_ice40
Platform
-------Updating
Updating
Updating
Updating
Updating
atmelavr
Platform
-------Updating
Updating
Updating
Updating
Updating
Updating
Updating
espressif8266
Platform
-------Updating
Updating
Updating
linux_x86_64
Platform
-------Updating
Updating
Updating
windows_x86
Platform
-------Updating
Updating
Updating
Updating
Updating
Updating
Updating
teensy
Platform
-------Updating
Updating
Updating
Updating
nordicnrf51
lattice_ice40 @ 0.0.0:
[Up-to-date]
toolchain-icestorm @ 1.7.0:
[Up-to-date]
tool-scons @ 2.4.1:
[Up-to-date]
atmelavr @ 0.0.0: [Up-to-date]
framework-arduinoavr @ 1.10608.1: [Up-to-date]
tool-avrdude @ 1.60001.1: [Up-to-date]
toolchain-atmelavr @ 1.40801.0:
[Up-to-date]
tool-scons @ 2.4.1:
[Up-to-date]
espressif8266 @ 0.0.0:
[Up-to-date]
tool-scons @ 2.4.1:
[Up-to-date]
toolchain-xtensa @ 1.40802.0: [Up-to-date]
tool-esptool @ 1.409.0:
[Up-to-date]
tool-mkspiffs @ 1.102.0:
[Up-to-date]
framework-arduinoespressif8266 @ 1.20300.0:
sdk-esp8266 @ 1.10502.0:
[Up-to-date]
[Up-to-date]
linux_x86_64 @ 0.0.0: [Up-to-date]
toolchain-gcclinux64 @ 1.40801.0: [Up-to-date]
tool-scons @ 2.4.1:
[Up-to-date]
windows_x86 @ 0.0.0:
[Up-to-date]
toolchain-gccmingw32 @ 1.40800.0: [Up-to-date]
tool-scons @ 2.4.1:
[Up-to-date]
teensy @ 0.0.0:
[Up-to-date]
framework-arduinoteensy @ 1.128.0:
[Up-to-date]
tool-teensy @ 1.1.0:
[Up-to-date]
framework-mbed @ 1.121.1: [Up-to-date]
tool-scons @ 2.4.1:
[Up-to-date]
toolchain-atmelavr @ 1.40801.0:
[Up-to-date]
toolchain-gccarmnoneeabi @ 1.40804.0: [Up-to-date]
nordicnrf51 @ 0.0.0:
[Up-to-date]
toolchain-gccarmnoneeabi @ 1.40804.0: [Up-to-date]
framework-arduinonordicnrf51 @ 1.20302.0: [Up-to-date]
framework-mbed @ 1.121.1: [Up-to-date]
1.3. PlatformIO Core
111
PlatformIO Documentation, Release 3.4.1
Updating tool-scons @ 2.4.1:
Platform
-------Updating
Updating
Updating
Updating
Updating
titiva
Platform
-------Updating
Updating
Updating
Updating
Updating
Updating
Updating
atmelsam
Platform
-------Updating
Updating
Updating
Updating
siliconlabsefm32
Platform
-------Updating
Updating
Updating
Updating
Updating
microchippic32
Platform
-------Updating
Updating
Updating
linux_i686
Platform
-------Updating
Updating
Updating
Updating
Updating
intel_arc32
Platform
-------Updating
Updating
Updating
Updating
nxplpc
[Up-to-date]
titiva @ 0.0.0:
[Up-to-date]
framework-libopencm3 @ 1.1.0: [Up-to-date]
toolchain-gccarmnoneeabi @ 1.40804.0: [Up-to-date]
framework-energiativa @ 1.17.0:
[Up-to-date]
tool-scons @ 2.4.1:
[Up-to-date]
atmelsam @ 0.0.0: [Up-to-date]
toolchain-gccarmnoneeabi @ 1.40804.0: [Up-to-date]
tool-openocd @ 1.900.0:
[Up-to-date]
framework-mbed @ 1.121.1: [Up-to-date]
tool-scons @ 2.4.1:
[Up-to-date]
tool-avrdude @ 1.60001.1: [Up-to-date]
tool-bossac @ 1.10601.0:
[Up-to-date]
siliconlabsefm32 @ 0.0.0: [Up-to-date]
framework-mbed @ 1.121.1: [Up-to-date]
toolchain-gccarmnoneeabi @ 1.40804.0: [Up-to-date]
tool-scons @ 2.4.1:
[Up-to-date]
microchippic32 @ 0.0.0:
[Up-to-date]
framework-arduinomicrochippic32 @ 1.10201.0:
[Up-to-date]
toolchain-microchippic32 @ 1.40803.0: [Up-to-date]
tool-pic32prog @ 1.200200.0:
[Up-to-date]
tool-scons @ 2.4.1:
[Up-to-date]
linux_i686 @ 0.0.0:
[Up-to-date]
toolchain-gcclinux32 @ 1.40801.0: [Up-to-date]
tool-scons @ 2.4.1:
[Up-to-date]
intel_arc32 @ 0.0.0:
[Up-to-date]
framework-arduinointel @ 1.10006.0:
[Up-to-date]
tool-arduino101load @ 1.124.0:
[Up-to-date]
toolchain-intelarc32 @ 1.40805.0: [Up-to-date]
tool-scons @ 2.4.1:
[Up-to-date]
nxplpc @ 0.0.0:
[Up-to-date]
framework-mbed @ 1.121.1: [Up-to-date]
toolchain-gccarmnoneeabi @ 1.40804.0: [Up-to-date]
tool-scons @ 2.4.1:
[Up-to-date]
Platform linux_arm
--------
112
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Updating linux_arm @ 0.0.0:
[Up-to-date]
Updating toolchain-gccarmlinuxgnueabi @ 1.40802.0:
Updating tool-scons @ 2.4.1:
[Up-to-date]
[Up-to-date]
Platform native
-------Updating native @ 0.0.0:
[Up-to-date]
Updating tool-scons @ 2.4.1:
[Up-to-date]
Library Manager
===============
Updating Adafruit-GFX @ 334e815bc1:
[Up-to-date]
Updating Adafruit-ST7735 @ d53d4bf03a: [Up-to-date]
Updating Adafruit-DHT @ 09344416d2:
[Up-to-date]
Updating Adafruit-Unified-Sensor @ f2af6f4efc: [Up-to-date]
Updating ESP8266_SSD1306 @ 3.2.3:
[Up-to-date]
Updating EngduinoMagnetometer @ 3.1.0: [Up-to-date]
Updating IRremote @ 2.2.1: [Up-to-date]
Updating Json @ 5.6.4: [Up-to-date]
Updating MODSERIAL @ d8422efe47:
[Up-to-date]
Updating PJON @ 1fb26fd:
[Checking]
git version 2.7.4 (Apple Git-66)
Already up-to-date.
Updating Servo @ 36b69a7ced07: [Checking]
Mercurial Distributed SCM (version 3.8.4)
(see https://mercurial-scm.org for more information)
Copyright (C) 2005-2016 Matt Mackall and others
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
pulling from https://developer.mbed.org/users/simon/code/Servo/
searching for changes
no changes found
Updating TextLCD @ 308d188a2d3a:
[Checking]
Mercurial Distributed SCM (version 3.8.4)
(see https://mercurial-scm.org for more information)
Copyright (C) 2005-2016 Matt Mackall and others
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
pulling from https://developer.mbed.org/users/simon/code/TextLCD/
searching for changes
no changes found
platformio upgrade
Contents
• platformio upgrade
– Usage
– Description
1.3. PlatformIO Core
113
PlatformIO Documentation, Release 3.4.1
– Examples
Usage
platformio upgrade
pio upgrade
Description
Check or upgrade PlatformIO to the latest version
Examples
> platformio upgrade
You are up-to-date!
PlatformIO x.x.x is currently the newest version available.
# If you have problem with permissions try:
> sudo platformio upgrade
Tutorials and Examples
Tutorials
Get started with Unit Testing of “Blink” Project
The goal of this tutorial is to demonstrate how is simple to use PIO Unit Testing.
• Level: Beginner
• Platforms: Windows, Mac OS X, Linux
Contents
• Setting Up the Project
• Project structure
• Source files
• Test results
Setting Up the Project
1. Please navigate to Quick Start section and create the “Blink Project”. According to the Unit Testing Design it is
the Main program.
114
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
2. Create a test directory in the project (on the same level as src) and place test_main.cpp file in it (the
source code is located below).
3. Wrap setup() and loop() methods of the main program in a UNIT_TEST guard.
4. Run tests using platformio test command.
Project structure
project_dir
- lib
|
- readme.txt
- platformio.ini
- src
|
- main.cpp
- test
- test_main.cpp
Source files
• platformio.ini
; PlatformIO Project Configuration File
;
;
Build options: build flags, source filter, extra scripting
;
Upload options: custom port, speed and extra flags
;
Library options: dependencies, extra library storages
;
; Please visit documentation for the other options and examples
; http://docs.platformio.org/page/projectconf.html
[env:uno]
platform = atmelavr
framework = arduino
board = uno
[env:nodemcu]
platform = espressif8266
framework = arduino
board = nodemcu
[env:teensy31]
platform = teensy
framework = arduino
board = teensy31
• src/main.cpp
/*
* Blink
* Turns on an LED on for one second,
* then off for one second, repeatedly.
*/
#include "Arduino.h"
1.4. Tutorials and Examples
115
PlatformIO Documentation, Release 3.4.1
#ifndef UNIT_TEST
// IMPORTANT LINE!
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);
}
#endif
// IMPORTANT LINE!
• test/test_main.cpp
#include <Arduino.h>
#include <unity.h>
#ifdef UNIT_TEST
// void setUp(void) {
// // set stuff up here
// }
// void tearDown(void) {
// // clean stuff up here
// }
void test_led_builtin_pin_number(void) {
TEST_ASSERT_EQUAL(LED_BUILTIN, 13);
}
void test_led_state_high(void) {
digitalWrite(LED_BUILTIN, HIGH);
TEST_ASSERT_EQUAL(digitalRead(LED_BUILTIN), HIGH);
}
void test_led_state_low(void) {
digitalWrite(LED_BUILTIN, LOW);
TEST_ASSERT_EQUAL(digitalRead(LED_BUILTIN), LOW);
}
void setup() {
// NOTE!!! Wait for >2 secs
// if board doesn't support software reset via Serial.DTR/RTS
delay(2000);
UNITY_BEGIN();
116
// IMPORTANT LINE!
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
RUN_TEST(test_led_builtin_pin_number);
pinMode(LED_BUILTIN, OUTPUT);
}
uint8_t i = 0;
uint8_t max_blinks = 5;
void loop() {
if (i < max_blinks)
{
RUN_TEST(test_led_state_high);
delay(500);
RUN_TEST(test_led_state_low);
delay(500);
i++;
}
else if (i == max_blinks) {
UNITY_END(); // stop unit testing
}
}
#endif
Test results
> platformio test -e nodemcu --verbose
PlatformIO Plus (https://pioplus.com) v0.1.0
Verbose mode can be enabled via `-v, --verbose` option
Collected 1 items
============================== [test::*] Building... (1/3)
˓→==============================
[Wed Sep 7 15:16:55 2016] Processing nodemcu (platform: espressif8266, board:
˓→nodemcu, framework: arduino)
-------------------------------------------------------------------------------------˓→-------------------------------------------------------------------------Verbose mode can be enabled via `-v, --verbose` option
Collected 34 compatible libraries
Looking for dependencies...
Project does not have dependencies
Compiling .pioenvs/nodemcu/src/main.o
Compiling .pioenvs/nodemcu/test/output_export.o
Compiling .pioenvs/nodemcu/test/test_main.o
Compiling .pioenvs/nodemcu/UnityTestLib/unity.o
Archiving .pioenvs/nodemcu/libFrameworkArduinoVariant.a
Indexing .pioenvs/nodemcu/libFrameworkArduinoVariant.a
Compiling .pioenvs/nodemcu/FrameworkArduino/Esp.o
Compiling .pioenvs/nodemcu/FrameworkArduino/FS.o
Compiling .pioenvs/nodemcu/FrameworkArduino/HardwareSerial.o
Compiling .pioenvs/nodemcu/FrameworkArduino/IPAddress.o
Archiving .pioenvs/nodemcu/libUnityTestLib.a
Indexing .pioenvs/nodemcu/libUnityTestLib.a
Compiling .pioenvs/nodemcu/FrameworkArduino/MD5Builder.o
...
1.4. Tutorials and Examples
117
PlatformIO Documentation, Release 3.4.1
Compiling .pioenvs/nodemcu/FrameworkArduino/umm_malloc/umm_malloc.o
Archiving .pioenvs/nodemcu/libFrameworkArduino.a
Indexing .pioenvs/nodemcu/libFrameworkArduino.a
Linking .pioenvs/nodemcu/firmware.elf
Calculating size .pioenvs/nodemcu/firmware.elf
text
data
bss
dec
hex filename
223500
2408
29536 255444
3e5d4 .pioenvs/nodemcu/firmware.elf
Building .pioenvs/nodemcu/firmware.bin
============================== [test::*] Uploading... (2/3)
˓→==============================
[Wed Sep 7 15:17:01 2016] Processing nodemcu (platform: espressif8266, board:
˓→nodemcu, framework: arduino)
-------------------------------------------------------------------------------------˓→-------------------------------------------------------------------------Verbose mode can be enabled via `-v, --verbose` option
Collected 34 compatible libraries
Looking for dependencies...
Project does not have dependencies
Linking .pioenvs/nodemcu/firmware.elf
Checking program size .pioenvs/nodemcu/firmware.elf
text
data
bss
dec
hex filename
223500
2408
29536 255444
3e5d4 .pioenvs/nodemcu/firmware.elf
Calculating size .pioenvs/nodemcu/firmware.elf
text
data
bss
dec
hex filename
223500
2408
29536 255444
3e5d4 .pioenvs/nodemcu/firmware.elf
Looking for upload port...
Auto-detected: /dev/cu.SLAB_USBtoUART
Uploading .pioenvs/nodemcu/firmware.bin
Uploading 230064 bytes from .pioenvs/nodemcu/firmware.bin to flash at 0x00000000
................................................................................ [ 35
˓→% ]
................................................................................ [ 71
˓→% ]
.................................................................
[ 100
˓→% ]
=============================== [test::*] Testing... (3/3)
˓→===============================
If you don't see any output for the first 10 secs, please reset board (press reset
˓→button)
test/test_main.cpp:41:test_led_state_high
test/test_main.cpp:43:test_led_state_low
test/test_main.cpp:41:test_led_state_high
test/test_main.cpp:43:test_led_state_low
test/test_main.cpp:41:test_led_state_high
test/test_main.cpp:43:test_led_state_low
test/test_main.cpp:41:test_led_state_high
test/test_main.cpp:43:test_led_state_low
----------------------11 Tests 1 Failures 0 Ignored
[PASSED]
[PASSED]
[PASSED]
[PASSED]
[PASSED]
[PASSED]
[PASSED]
[PASSED]
===================================== [TEST SUMMARY]
˓→=====================================
test:*/env:nodemcu
[PASSED]
================================ [PASSED] Took 38.15 seconds
˓→================================
118
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Get started with STM32Cube HAL and Nucleo-F401RE: debugging and unit testing
The goal of this tutorial is to demonstrate how simple it is to use PlatformIO IDE for Atom to develop, run and debug
a basic blink project with STM32Cube framework for STM32 Nucleo-F401RE board.
• Level: Intermediate
• Platforms: Windows, Mac OS X, Linux
Requirements:
• Downloaded and installed PlatformIO IDE for Atom
• Nucleo-F401RE development board
Contents
• Setting Up the Project
• Adding Code to the Generated Project
• Compiling and Uploading the Firmware
• Debugging the Firmware
• Writing Unit Tests
• Conclusion
• Project Source Code
Setting Up the Project
There are two ways how to create a new project in PlatformIO IDE: using “New Project” button menu on Home Page
or using Menu: PlatformIO > Initialize or Update PlatformIO Project:
1.4. Tutorials and Examples
119
PlatformIO Documentation, Release 3.4.1
On the next step we choose the desired board (in our case it’s ST Nucleo-F401RE) and also select a directory for
our project:
120
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
After processing the selected options (PlatformIO IDE will download and install all required packages, thus the first
installation may take some amount of time), we should now have the new project created with the following folder
structure:
1.4. Tutorials and Examples
121
PlatformIO Documentation, Release 3.4.1
The default framework used with ST Nucleo-F401RE board is mbed, but since we decided to use STM32Cube we
need to change the framework parameter in Project Configuration File platformio.ini to the next one:
[env:nucleo_f401re]
platform = ststm32
board = nucleo_f401re
framework = stm32cube
After these steps, we have a fully configured project that is ready for developing code with STM32Cube framework.
Adding Code to the Generated Project
Let’s add some actual code to the project. Firstly, we create two main files main.c and main.h in the src_dir folder.
Right click on the src in the project window:
122
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Add next content to main.h:
#ifndef MAIN_H
#define MAIN_H
#include "stm32f4xx_hal.h"
#define LED_PIN
#define LED_GPIO_PORT
#define LED_GPIO_CLK_ENABLE()
GPIO_PIN_5
GPIOA
__HAL_RCC_GPIOA_CLK_ENABLE()
#endif // MAIN_H
Add this code to main.c:
#include "main.h"
void LED_Init();
int main(void) {
HAL_Init();
LED_Init();
1.4. Tutorials and Examples
123
PlatformIO Documentation, Release 3.4.1
while (1)
{
HAL_GPIO_TogglePin(LED_GPIO_PORT, LED_PIN);
HAL_Delay(1000);
}
}
void LED_Init() {
LED_GPIO_CLK_ENABLE();
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.Pin = LED_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
HAL_GPIO_Init(LED_GPIO_PORT, &GPIO_InitStruct);
}
void SysTick_Handler(void) {
HAL_IncTick();
}
After this step, we created a basic blink project that is ready for compiling and uploading.
Compiling and Uploading the Firmware
Now we can build the project. To compile firmware we can use three options: Using Build button on PlatformIO
Toolbar, using Menu: PlatformIO > Build option from top menu, using targets list in bottom left corner or
via hotkeys cmd-alt-b / ctrl-alt-b / f9:
124
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
If everything went well, we should see successful result in the terminal window:
1.4. Tutorials and Examples
125
PlatformIO Documentation, Release 3.4.1
Now we can upload firmware to the board: Using Build button on PlatformIO Toolbar, using Menu: PlatformIO
> Upload from top menu, using targets list in bottom left corner or via hotkeys cmd-alt-u / ctrl-alt-u
126
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
After successful uploading, the green LED2 should start blinking.
Debugging the Firmware
PIO Unified Debugger offers the easiest way to debug your board. Just click Debug button on PlatformIO Toolbar or
use Menu: PlatformIO > Debug > Start new debug session:
1.4. Tutorials and Examples
127
PlatformIO Documentation, Release 3.4.1
We need to wait some time while PlatformIO is initializing debug session and when the first line after the main function
is highlighted we are ready to debug:
128
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
We can walk through the code using control buttons, set breakpoints, add variables to Watch window:
1.4. Tutorials and Examples
129
PlatformIO Documentation, Release 3.4.1
Writing Unit Tests
Now let’s write some tests using PIO Unit Testing feature that can help us test code directly on the target board. PIO
Unit Testing engine by default supports only three frameworks: Arduino, Energia and mbed. Since we decided to use
STM32Cube we need to implement a custom test_transport to print testing results and specify that condition in Project
Configuration File platformio.ini:
[env:nucleo_f401re]
platform = ststm32
board = nucleo_f401re
framework = stm32cube
test_transport = custom
130
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
We will use USART2 on ST Nucleo-F401RE board because it’s directly connected to the STLink debug interface
and in OS it can be visible as a Virtual Com Port, so we don’t need any additional USB-UART converter. To implement
the custom test_transport we need to create two files unittest_transport.h and unittest_transport.c
and put them in the test_dir in the root folder of our project. In these files we need to implement next four functions:
void
void
void
void
unittest_uart_begin();
unittest_uart_putchar(char c);
unittest_uart_flush();
unittest_uart_end();
Implementation of unittest_transport.h:
#ifndef UNITEST_TRANSPORT_H
#define UNITEST_TRANSPORT_H
#ifdef __cplusplus
extern "C" {
#endif
void
void
void
void
unittest_uart_begin();
unittest_uart_putchar(char c);
unittest_uart_flush();
unittest_uart_end();
1.4. Tutorials and Examples
131
PlatformIO Documentation, Release 3.4.1
#ifdef __cplusplus
}
#endif
#endif // UNITEST_TRANSPORT_H
Implementation of unittest_transport.c:
#include "unittest_transport.h"
#include "stm32f4xx_hal.h"
#define
#define
#define
#define
#define
#define
#define
USARTx
USARTx_CLK_ENABLE()
USARTx_CLK_DISABLE()
USARTx_RX_GPIO_CLK_ENABLE()
USARTx_TX_GPIO_CLK_ENABLE()
USARTx_RX_GPIO_CLK_DISABLE()
USARTx_TX_GPIO_CLK_DISABLE()
USART2
__HAL_RCC_USART2_CLK_ENABLE()
__HAL_RCC_USART2_CLK_DISABLE()
__HAL_RCC_GPIOA_CLK_ENABLE()
__HAL_RCC_GPIOA_CLK_ENABLE()
__HAL_RCC_GPIOA_CLK_DISABLE()
__HAL_RCC_GPIOA_CLK_DISABLE()
#define USARTx_FORCE_RESET()
#define USARTx_RELEASE_RESET()
__HAL_RCC_USART2_FORCE_RESET()
__HAL_RCC_USART2_RELEASE_RESET()
#define
#define
#define
#define
#define
#define
GPIO_PIN_2
GPIOA
GPIO_AF7_USART2
GPIO_PIN_3
GPIOA
GPIO_AF7_USART2
USARTx_TX_PIN
USARTx_TX_GPIO_PORT
USARTx_TX_AF
USARTx_RX_PIN
USARTx_RX_GPIO_PORT
USARTx_RX_AF
static UART_HandleTypeDef UartHandle;
void unittest_uart_begin()
{
GPIO_InitTypeDef GPIO_InitStruct;
USARTx_TX_GPIO_CLK_ENABLE();
USARTx_RX_GPIO_CLK_ENABLE();
USARTx_CLK_ENABLE();
GPIO_InitStruct.Pin
GPIO_InitStruct.Mode
GPIO_InitStruct.Pull
GPIO_InitStruct.Speed
GPIO_InitStruct.Alternate
=
=
=
=
=
USARTx_TX_PIN;
GPIO_MODE_AF_PP;
GPIO_PULLUP;
GPIO_SPEED_FAST;
USARTx_TX_AF;
HAL_GPIO_Init(USARTx_TX_GPIO_PORT, &GPIO_InitStruct);
GPIO_InitStruct.Pin = USARTx_RX_PIN;
GPIO_InitStruct.Alternate = USARTx_RX_AF;
HAL_GPIO_Init(USARTx_RX_GPIO_PORT, &GPIO_InitStruct);
UartHandle.Instance
= USARTx;
UartHandle.Init.BaudRate
UartHandle.Init.WordLength
UartHandle.Init.StopBits
132
= 9600;
= UART_WORDLENGTH_8B;
= UART_STOPBITS_1;
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
UartHandle.Init.Parity
UartHandle.Init.HwFlowCtl
UartHandle.Init.Mode
UartHandle.Init.OverSampling
=
=
=
=
UART_PARITY_NONE;
UART_HWCONTROL_NONE;
UART_MODE_TX_RX;
UART_OVERSAMPLING_16;
if(HAL_UART_Init(&UartHandle) != HAL_OK) {
while(1){}
}
}
void unittest_uart_putchar(char c)
{
HAL_UART_Transmit(&UartHandle, (uint8_t*)(&c), 1, 1000);
}
void unittest_uart_flush(){}
void unittest_uart_end() {
USARTx_CLK_DISABLE();
USARTx_RX_GPIO_CLK_DISABLE();
USARTx_TX_GPIO_CLK_DISABLE();
}
Now we need to add some test cases. Tests can be added to a single C file that may include multiple tests. First of
all, in this file we need to add three default functions: setUp, tearDown and main. setUp and tearDown are
used to initialize and finalize test conditions. Implementations of these functions are not required for running tests but
if you need to initialize some variables before you run a test, you use the setUp function and if you need to clean
up variables you use tearDown function. In our example we will use these functions to accordingly initialize and
deinitialize LED. main function acts as a simple program where we describe our test plan.
Let’s implement some basic tests for blinking routine:
#include <main.h>
#include <unity.h>
#ifdef UNIT_TEST
void setUp(void) {
HAL_Init();
LED_GPIO_CLK_ENABLE();
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.Pin = LED_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
HAL_GPIO_Init(LED_GPIO_PORT, &GPIO_InitStruct);
}
void tearDown(void) {
HAL_GPIO_DeInit(LED_GPIO_PORT, LED_PIN);
}
void test_led_builtin_pin_number(void) {
TEST_ASSERT_EQUAL(LED_PIN, GPIO_PIN_5);
}
1.4. Tutorials and Examples
133
PlatformIO Documentation, Release 3.4.1
void test_led_state_high(void) {
HAL_GPIO_WritePin(LED_GPIO_PORT, LED_PIN, GPIO_PIN_SET);
TEST_ASSERT_EQUAL(HAL_GPIO_ReadPin(LED_GPIO_PORT, LED_PIN), GPIO_PIN_SET);
}
void test_led_state_low(void) {
HAL_GPIO_WritePin(LED_GPIO_PORT, LED_PIN, GPIO_PIN_RESET);
TEST_ASSERT_EQUAL(HAL_GPIO_ReadPin(LED_GPIO_PORT, LED_PIN), GPIO_PIN_RESET);
}
int main() {
UNITY_BEGIN();
RUN_TEST(test_led_builtin_pin_number);
for (unsigned int i = 0; i < 5; i++)
{
RUN_TEST(test_led_state_high);
HAL_Delay(500);
RUN_TEST(test_led_state_low);
HAL_Delay(500);
}
UNITY_END(); // stop unit testing
while(1){}
}
#endif
Also, we need to wrap the main function in our application:
#ifndef UNIT_TEST
int main(void)
#else
int app_main(void)
#endif
{
HAL_Init();
LED_Init();
while (1)
{
HAL_GPIO_TogglePin(LED_GPIO_PORT, LED_PIN);
HAL_Delay(1000);
}
}
Now we are ready to upload tests to the board. To do this we can use Menu:
Testing) from top menu or targets list in bottom left corner:
134
PlatformIO > Test (Unit
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
After processing we should see a detailed report about testing results:
1.4. Tutorials and Examples
135
PlatformIO Documentation, Release 3.4.1
Congratulations! As we can see from the report, all our tests went successfully!
Conclusion
Now we have a decent template that we can improve for our next more complex projects.
Project Source Code
The source code of this tutorial is available at https://github.com/platformio/platformio-examples/tree/develop/
unit-testing/stm32cube
Project Examples
Pre-configured projects with source code are located in PlatformIO Examples repository.
136
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Project Configuration File platformio.ini
The Project configuration file is named platformio.ini. This is a INI-style file.
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.
Multi-values option could be specified in 2 ways:
1. Split values with ”, ” (comma + space)
2. Use multi-line format, where each new line should start with 2 spaces (minimum)
Example
[platformio]
env_default = nodemcuv2
; You MUST inject these options into [env:] section
; using ${common_env_data.***} (see below)
[common_env_data]
build_flags =
-D VERSION=1.2.3
-D DEBUG=1
lib_deps_builtin =
SPI
Wire
lib_deps_external =
[email protected]~5.6,!=5.4
https://github.com/gioblu/PJON.git#v2.0
https://github.com/adafruit/DHT-sensor-library/archive/master.zip
[env:nodemcuv2]
platform = espressif8266
framework = arduino
board = nodemcuv2
; Build options
build_flags =
${common_env_data.build_flags}
-DSSID_NAME=HELLO
-DSSID_PASWORD=WORLD
; Library options
lib_deps =
${common_env_data.lib_deps_builtin}
${common_env_data.lib_deps_external}
https://github.com/me-no-dev/ESPAsyncTCP.git
[email protected]
OneWire
; Serial Monitor options
monitor_baud = 115200
; Unit Testing options
test_ignore = test_desktop
[env:bluepill_f103c8]
platform = ststm32
1.5. Project Configuration File platformio.ini
137
PlatformIO Documentation, Release 3.4.1
framework = arduino
board = bluepill_f103c8
; Build options
build_flags = ${common_env_data.build_flags}
; Library options
lib_deps =
${common.lib_deps_external}
; Debug options
debug_tool = custom
debug_server =
JLinkGDBServer
-singlerun
-if
SWD
-select
USB
-port
2331
-device
STM32F103C8
; Unit Testing options
test_ignore = test_desktop
There are 2 system reserved sections:
• PlatformIO Core settings: Section [platformio]
• Environment settings: Section [env:NAME]
The other sections can be used by users, for example, for Dynamic variables. The sections and their allowable values
are described below.
Section [platformio]
• Options
– env_default
– home_dir
– lib_dir
– libdeps_dir
– lib_extra_dirs
– src_dir
– envs_dir
– data_dir
– test_dir
– boards_dir
138
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
A platformio section is used for overriding default configuration options for PlatformIO Core.
Note: Relative path is allowed for directory option:
• ~ will be expanded to user’s home directory
• ../ or ..\ go up to one folder
Options
env_default
platformio run command processes all environments [env:***] by default if platformio run
--environment option is not specified. env_default allows to define environments which should be processed
by default.
Multiple environments are allowed if they are separated with ”, ” (comma+space). For example.
[platformio]
env_default = uno, nodemcu
[env:uno]
platform = atmelavr
framework = arduino
board = uno
[env:nodemcu]
platform = espressif8266
framework = arduino
board = nodemcu
[env:teensy31]
platform = teensy
framework = arduino
board = teensy31
[env:lpmsp430g2553]
platform = timsp430
framework = energia
board = lpmsp430g2553
build_flags = -D LED_BUILTIN=RED_LED
home_dir
Is used to store platform toolchains, frameworks, global libraries for :ref: ldf, service data and etc. The size of this
folder will depend on number of installed development platforms.
A default value is User’s home directory:
• Unix ~/.platformio
• Windows %HOMEPATH%\.platformio
This option can be overridden by global environment variable PLATFORMIO_HOME_DIR.
Example:
1.5. Project Configuration File platformio.ini
139
PlatformIO Documentation, Release 3.4.1
[platformio]
home_dir = /path/to/custom/pio/storage
lib_dir
You can put here your own/private libraries. The source code of each library should be placed in separate directory,
like lib/private_lib/[here are source files]. This directory has the highest priority for Library
Dependency Finder (LDF).
A default value is lib that means that folder is located in the root of project.
This option can be overridden by global environment variable PLATFORMIO_LIB_DIR.
For example, see how can be organized Foo and Bar libraries:
|--lib
| |--Bar
| | |--docs
| | |--examples
| | |--src
| |
|- Bar.c
| |
|- Bar.h
| |--Foo
| | |- Foo.c
| | |- Foo.h
|- platformio.ini
|--src
|- main.c
Then in src/main.c you should use:
#include <Foo.h>
#include <Bar.h>
// rest H/C/CPP code
PlatformIO will find your libraries automatically, configure preprocessor’s include paths and build them.
libdeps_dir
Internal storage where Library Manager will install project dependencies (lib_deps).
piolibdeps that means that folder is located in the root of project.
A default value is .
This option can be overridden by global environment variable PLATFORMIO_LIBDEPS_DIR.
lib_extra_dirs
New in version 3.2.
A list with global extra directories for a project where Library Dependency Finder (LDF) will look for libraries.
This option has the same behavior as lib_extra_dirs option for a specific build environment defined in [env:] section.
The main difference is that the option that is defined in [platofrmio] section will be applied automatically for all
[env:] sections.
For the possible values and examples please follow to lib_extra_dirs.
140
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
src_dir
A path to project’s source directory. PlatformIO uses it for platformio run command. A default value is src that
means that folder is located in the root of project.
This option can be overridden by global environment variable PLATFORMIO_SRC_DIR.
Note: This option is useful for people who migrate from Arduino/Energia IDEs where source directory should have
the same name like the main source file. See example project with own source directory.
envs_dir
Warning: PLEASE DO NOT EDIT FILES IN THIS FOLDER. PlatformIO will overwrite your changes on
the next build. THIS IS A CACHE DIRECTORY.
PlatformIO Build System uses this folder for project environments to store compiled object files, static libraries,
firmwares and other cached information. It allows PlatformIO to build source code extremely fast!
You can delete this folder without any risk! If you modify Project Configuration File platformio.ini, then PlatformIO
will remove this folder automatically. It will be created on the next build operation.
A default value is .pioenvs that means that folder is located in the root of project.
This option can be overridden by global environment variable PLATFORMIO_ENVS_DIR.
Note: If you have any problems with building your Project environments which are defined in Project Configuration
File platformio.ini, then TRY TO DELETE this folder. In this situation you will remove all cached files without any
risk.
data_dir
Data directory to store contents and Uploading files to file system SPIFFS. A default value is data that means that
folder is located in the root of project.
This option can be overridden by global environment variable PLATFORMIO_DATA_DIR.
test_dir
Directory where PIO Unit Testing engine will look for the tests. A default value is test that means that folder is
located in the root of project.
This option can be overridden by global environment variable PLATFORMIO_TEST_DIR.
boards_dir
Custom board settings per project. You can change this path with your own. A default value is boards that means
that folder is located in the root of project.
By default, PlatformIO looks for boards in this order:
1.5. Project Configuration File platformio.ini
141
PlatformIO Documentation, Release 3.4.1
1. Project boards_dir
2. Global home_dir/boards
3. Development platform home_dir/platforms/*/boards.
This option can be overridden by global environment variable PLATFORMIO_BOARDS_DIR.
Section [env:NAME]
A section with env: prefix is used to define virtual environment with specific options that will be processed with
platformio run command. You can define unlimited numbers of environments.
Each environment must have unique NAME. The valid chars for NAME are
• letters a-z
• numbers 0-9
• special char _ (underscore)
For example, [env:hello_world].
General options
• platform
• framework
• board
• targets
platform
Development Platforms name.
PlatformIO allows to use specific version of platform using Semantic Versioning (X.Y.Z=MAJOR.MINOR.PATCH).
Version specifications can take any of the following forms:
• 0.1.2: an exact version number. Use only this exact version
• ^0.1.2: any compatible version (exact version for 0.x.x versions
• ~0.1.2: any version with the same major and minor versions, and an equal or greater patch version
• >0.1.2: any version greater than 0.1.2. >=, <, and <= are also possible
• >0.1.0,!=0.2.0,<0.3.0: any version greater than 0.1.0, not equal to 0.2.0 and less than 0.3.0
Examples:
[env:the_latest_version]
platform = atmelavr
[env:specific_major_version]
platform = [email protected]^0.1.2
142
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
[env:specific_major_and_minor_version]
platform = [email protected]~0.1.2
framework
Frameworks name.
The multiple frameworks are allowed, split them with comma+space ”, “.
board
PlatformIO has pre-configured settings for the most popular boards. You don’t need to specify board_mcu,
board_f_cpu, upload_protocol or upload_speed options. Just define a board type and PlatformIO
will pre-fill options described above with appropriate values.
You can find the board type in Boards section of each Development Platforms or using PlatformIO Embedded Boards
Explorer.
targets
A list with targets which will be processed by platformio run command by default. You can enter more than one target,
please split them with comma+space ”, “.
The list with available targets is located in platformio run --target.
Example: build a project, upload firmware and start Serial Monitor automatically.
[env:upload_and_monitor]
targets = upload, monitor
Tip! You can use these targets like an option to platformio run --target command. For example:
# clean project
platformio run -t clean
# dump current build environment
platformio run --target envdump
When no targets are defined, PlatformIO will build only sources by default.
Board options
• board_mcu
• board_f_cpu
• board_f_flash
• board_flash_mode
1.5. Project Configuration File platformio.ini
143
PlatformIO Documentation, Release 3.4.1
board_mcu
board_mcu is a microcontroller(MCU) type that is used by compiler to recognize MCU architecture. The correct
type of board_mcu depends on platform library. For example, the list of board_mcu for “megaAVR Devices” is
described here.
The full list of board_mcu for the popular embedded platforms you can find in Boards section of Development
Platforms. See “Microcontroller” column.
board_f_cpu
An option board_f_cpu is used to define MCU frequency (Hertz, Clock). A format of this option is C-like long
integer value with L suffix. The 1 Hertz is equal to 1L, then 16 Mhz (Mega Hertz) is equal to 16000000L.
The full list of board_f_cpu for the popular embedded platforms you can find in Boards section of Development
Platforms. See “Frequency” column. You can overclock a board by specifying a board_f_cpu value other than the
default.
board_f_flash
An option board_f_flash is used to define FLASH chip frequency (Hertz, Clock). A format of this option is
C-like long integer value with L suffix. The 1 Hertz is equal to 1L, then 40 Mhz (Mega Hertz) is equal to
40000000L.
This option isn’t available for the all development platforms. The only Espressif 8266 supports it.
board_flash_mode
Flash chip interface mode. This option isn’t available for the all development platforms. The only Espressif 8266
supports it.
Build options
• build_flags
– Dynamic build flags
• src_build_flags
• build_unflags
• src_filter
build_flags
These flags/options control preprocessing, compilation, assembly and linking processes:
144
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Format
-D name
Scope
CPPDEFINES
-D
CPPDEname=definition
FINES
-U name
CPPDEFINES
-Wp,option
CPPFLAGS
-Wall
-Werror
CCFLAGS
CCFLAGS
-w
-include
file
-Idir
-Wa,option
CCFLAGS
CCFLAGS
-Wl,option
CPPPATH
ASFLAGS,
CCFLAGS
LINKFLAGS
-llibrary
-Ldir
LIBS
LIBPATH
Description
Predefine name as a macro, with definition 1.
The contents of definition are tokenized and processed as if they appeared
during translation phase three in a #define directive.
Cancel any previous definition of name, either built in or provided with a -D
option.
Bypass the compiler driver and pass option directly through to the
preprocessor
Turns on all optional warnings which are desirable for normal code.
Make all warnings into hard errors. Source code which triggers warnings will
be rejected.
Suppress all warnings, including those which GNU CPP issues by default.
Process file as if #include "file" appeared as the first line of the
primary source file.
Add the directory dir to the list of directories to be searched for header files.
Pass option as an option to the assembler. If option contains commas, it is
split into multiple options at the commas.
Pass option as an option to the linker. If option contains commas, it is split
into multiple options at the commas.
Search the library named library when linking
Add directory dir to the list of directories to be searched for -l.
This option can be set by global environment variable PLATFORMIO_BUILD_FLAGS.
Example:
[env:specific_defines]
build_flags = -DFOO -DBAR=1 -DFLOAT_VALUE=1.23457e+07
[env:string_defines]
build_flags = '-DHELLO="World!"' '-DWIFI_PASS="My password"'
[env:specific_inclibs]
build_flags = -I/opt/include -L/opt/lib -lfoo
[env:specific_ld_script]
build_flags = -Wl,-T/path/to/ld_script.ld
Dynamic build flags
PlatformIO Core allows to run external command/script which outputs build flags. PIO will automatically parse the
output and append flags to a build environment. You can use any shell or programming language.
This external command will be called on each platformio run command before building/uploading process.
Use Cases:
• Macro with the latest VCS revision/tag “on-the-fly”
• Generate dynamic headers (*.h)
• Process media content before generating SPIFFS image
• Make some changes to source code or related libraries
1.5. Project Configuration File platformio.ini
145
PlatformIO Documentation, Release 3.4.1
Note: If you need more advanced control and would like to apply changes to PIO Build System environment, please
refer to Advanced options and use Pre/Post Extra Scripts.
Example:
[env:generate_flags_with_external_command]
build_flags = !cmd_or_path_to_script
Use Case: Get the latest GIT revision “on-the-fly”
Unix
[env:git_revision_macro]
build_flags = !echo "-DPIO_SRC_REV="$(git rev-parse HEAD)
Windows
You need to create a separate file named print_git_rev.bat and place it near platformio.ini.
platformio.ini:
[env:git_revision_macro]
build_flags = !print_git_rev.bat
print_git_rev.bat:
@echo off
FOR /F "tokens=1 delims=" %%A in ('git rev-parse HEAD') do echo -DPIO_SRC_REV=%%A
For more detailed information about available flags/options go to:
• Options to Request or Suppress Warnings
• Options for Debugging Your Program
• Options That Control Optimization
• Options Controlling the Preprocessor
• Passing Options to the Assembler
• Options for Linking
• Options for Directory Search
src_build_flags
An option src_build_flags has the same behavior like build_flags but will be applied only for the project
source code from src_dir directory.
This option can be set by global environment variable PLATFORMIO_SRC_BUILD_FLAGS.
build_unflags
Remove base/initial flags which were set by development platform.
146
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
[env:unflags]
build_unflags = -Os -std=gnu++11
build_flags = -O2
src_filter
This option allows to specify which source files should be included/excluded from build process. Filter supports 2
templates:
• +<PATH> include template
• -<PATH> exclude template
PATH MAST BE related from src_dir. All patterns will be applied in theirs order. GLOB Patterns are allowed.
By default, src_filter is predefined to +<*> -<.git/> -<svn/> -<example/> -<examples/>
-<test/> -<tests/>, that means “includes ALL files, then exclude .git and svn repository folders,
example ... folder.
This option can be set by global environment variable PLATFORMIO_SRC_FILTER.
Upload options
• upload_port
• upload_protocol
• upload_speed
• upload_flags
• upload_resetmethod
upload_port
This option is used by “uploader” tool when sending firmware to board via upload_port. For example,
• /dev/ttyUSB0 - Serial port (Unix-based OS)
• COM3 - Serial port (Windows OS)
• 192.168.0.13 - IP address when using OTA
• /media/disk - physical path to media disk/flash drive (mbed enabled boards)
• D: - physical path to media disk/flash drive (Windows OS).
If upload_port isn’t specified, then PlatformIO will try to detect it automatically.
To print all available serial ports use platformio device list command.
This option can be set by global environment variable PLATFORMIO_UPLOAD_PORT.
Please note that you can use Unix shell-style wildcards:
1.5. Project Configuration File platformio.ini
147
PlatformIO Documentation, Release 3.4.1
Pattern
*
?
[seq]
[!seq]
Meaning
matches everything
matches any single character
matches any character in seq
matches any character not in seq
Example:
[env:uno]
platform = atmelavr
framework = arduino
; any port that stats with /dev/ttyUSB
upload_port = /dev/ttyUSB*
; COM1 or COM3
upload_port = COM[13]
upload_protocol
A protocol that “uploader” tool uses to talk to the board.
upload_speed
A connection speed (baud rate) which “uploader” tool uses when sending firmware to board.
upload_flags
Extra flags for uploader. Will be added to the end of uploader command. If you need to override uploader command
or base flags please use extra_scripts.
This option can be set by global environment variable PLATFORMIO_UPLOAD_FLAGS.
upload_resetmethod
Specify reset method for “uploader” tool. This option isn’t available for all development platforms. The only Espressif
8266 supports it.
Monitor options
• monitor_port
• monitor_baud
• monitor_rts
• monitor_dtr
Custom options for platformio device monitor command.
148
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
monitor_port
Port, a number or a device name. See platformio device monitor --port.
Example:
[env:custom_monitor_port]
...
; Unix
monitor_port = /dev/ttyUSB1
; Windows
monitor_port = COM3
monitor_baud
A monitor baud rate (speed). See platformio device monitor --baud.
Example:
[env:custom_monitor_baudrate]
...
monitor_baud = 115200
monitor_rts
A monitor initial RTS line state. See platformio device monitor --rts.
monitor_dtr
A monitor initial DTR line state. See platformio device monitor --dtr.
Library options
New in version 3.0.
See also:
Please make sure to read Library Dependency Finder (LDF) guide first.
• lib_deps
• lib_ignore
• lib_extra_dirs
• lib_ldf_mode
• lib_compat_mode
• lib_archive
1.5. Project Configuration File platformio.ini
149
PlatformIO Documentation, Release 3.4.1
lib_deps
See also:
Please make sure to read Library Dependency Finder (LDF) guide first.
Specify project dependencies that should be installed automatically to libdeps_dir before environment processing.
Multiple dependencies are allowed (multi-lines or separated with comma+space ”, “).
If you have multiple build environments that depend on the same libraries, you can use Dynamic variables to use
common configuration.
Valid forms
; one line definition (comma + space)
[env:myenv]
lib_deps = LIBRARY_1, LIBRARY_2, LIBRARY_N
; multi-line definition
[env:myenv2]
lib_deps =
LIBRARY_1
LIBRARY_2
LIBRARY_N
The each line with LIBRARY_1... LIBRARY_N will be passed automatically to platformio lib install command.
Please follow to platformio lib install for detailed documentation about possible values.
Example:
[env:myenv]
lib_deps =
13
PubSubClient
[email protected]~5.6,!=5.4
https://github.com/gioblu/PJON.git#v2.0
https://github.com/me-no-dev/ESPAsyncTCP.git
lib_ignore
See also:
Please make sure to read Library Dependency Finder (LDF) guide first.
Specify libraries which should be ignored by Library Dependency Finder.
The correct value for this option is library name (not folder name). In the most cases, library name is pre-defined
in manifest file (library.json, library.properties, module.json). The multiple library names are allowed,
split them with comma+space ”, “.
There is ability to ignore built-in mbed libraries: mbed-rtos, mbed-events, mbed-fs, mbed-net, mbed-rpc, mbed-dsp,
mbed-USBHost, mbed-USBDevice. See full list here.
Example:
[env:myenv]
lib_ignore = SPI, Ethernet, mbed-fs
150
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
lib_extra_dirs
See also:
Please make sure to read Library Dependency Finder (LDF) guide first.
A list with extra directories/storages where Library Dependency Finder (LDF) will look for dependencies. Multiple
paths are allowed. Please separate them using comma+space ”, “.
This option can be set by global environment variable PLATFORMIO_LIB_EXTRA_DIRS or using global
[platformio] section and lib_extra_dirs option.
Warning: This is a not direct path to library with source code. It should be the path to storage that contains libraries grouped by folders. For example, /extra/lib/storage/ but not /extra/lib/storage/
MyLibrary.
Example:
[env:myenv]
lib_extra_dirs = /path/to/private/dir1, /path/to/private/dir2
lib_ldf_mode
New in version 3.0.
See also:
Please make sure to read Library Dependency Finder (LDF) guide first.
This option specifies how does Library Dependency Finder should analyze dependencies (#include directives). See
Dependency Finder Mode for details.
Example:
[env:myenv]
lib_ldf_mode = chain
lib_compat_mode
See also:
Please make sure to read Library Dependency Finder (LDF) guide first.
Library compatibility mode allows to control strictness of Library Dependency Finder. More details Compatibility
Mode.
By default, this value is set to lib_compat_mode = 1 and means that LDF will check only for framework compatibility.
Example:
[env:myenv]
lib_compat_mode = 1
1.5. Project Configuration File platformio.ini
151
PlatformIO Documentation, Release 3.4.1
lib_archive
New in version 3.4.1.
Create an archive (*.a, static library) from the object files and link it into a firmware (program). This is default
behavior of PlatformIO Build System (lib_archive = true).
Setting lib_archive = false will instruct PIO Build System to link object files directly (in-line). This could
be useful if you need to override weak symbols defined in framework or other libraries.
You can disable library archiving per a custom library using libArchive field in library.json manifest.
Example:
[env:myenv]
lib_archive = false
Test options
New in version 3.0.
See also:
Please make sure to read PIO Unit Testing guide first.
• test_filter
• test_ignore
• test_port
• test_transport
– Examples
test_filter
Process only the PIO Unit Testing tests where the name matches specified patterns. Multiple names are allowed.
Please separate them using comma+space ”, “.
Also, you can filter some tests using platformio test --filter command.
Pattern
*
?
[seq]
[!seq]
Meaning
matches everything
matches any single character
matches any character in seq
matches any character not in seq
Example
[env:myenv]
test_filter = footest, bartest_*, test[13]
152
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
test_ignore
Ignore PIO Unit Testing tests where the name matches specified patterns. Multiple names are allowed. Please separate
them using comma+space ”, “.
Also, you can ignore some tests using platformio test --ignore command.
Pattern
*
?
[seq]
[!seq]
Meaning
matches everything
matches any single character
matches any character in seq
matches any character not in seq
Example
[env:myenv]
test_ignore = footest, bartest_*, test[13]
test_port
This option specifies communication interface (Serial/UART) between PlatformIO PIO Unit Testing Engine and target
device. For example,
• /dev/ttyUSB0 - Unix-based OS
• COM3 - Windows OS
If test_port isn’t specified, then PlatformIO will try to detect it automatically.
To print all available serial ports use platformio device list command.
test_transport
PIO Unit Testing engine uses different transports to communicate with a target device. By default, it uses Serial/
UART transport provided by a framework. For example, when “framework = arduino”, the first available Serial
will be used.
Baud rate should be set to 9600.
You can also define custom transport and implement its interface:
• unittest_uart_begin();
• unittest_uart_putchar(char c);
• unittest_uart_flush();
• unittest_uart_end();
Examples
1. Custom transport for Native platform
• Set test_transport = custom in Project Configuration File platformio.ini
1.5. Project Configuration File platformio.ini
153
PlatformIO Documentation, Release 3.4.1
[env:mycustomtransport]
platform = native
test_transport = custom
• Create unittest_transport.h file in project/test directory and implement prototypes
above
#ifndef UNITTEST_TRANSPORT_H
#define UNITTEST_TRANSPORT_H
#include <stdio.h>
void unittest_uart_begin() {
}
void unittest_uart_putchar(char c) {
putchar(c);
}
void unittest_uart_flush() {
fflush(stdout);
}
void unittest_uart_end() {
}
#endif
2. Get started with STM32Cube HAL and Nucleo-F401RE: debugging and unit testing
Debugging options
New in version 3.4.
See also:
Please make sure to read PIO Unified Debugger guide first.
debug_tool
A name of debugging tool. This option is useful when board supports more than one debugging tool (adapter, probe)
or you want to create Custom debugging configuration.
See available tools in Tools.
Example
[env:debug]
platform = ...
board = ...
debug_tool = custom
154
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
debug_init_break
An initial breakpoint that makes your program stop whenever a certain point in the program is reached. Default value
is tbreak main that means to create a temporary breakpoint at int main(...) function and automatically
delete it after the first time a program stops there.
• GDB Setting Breakpoints
• GDB Breakpoint Locations
Note: Please note that each debugging tool (adapter, probe) has limited number of hardware breakpoints.
If you need more Project Initial Breakpoints, please place them in debug_extra_cmds.
Examples
[env:debug]
platform = ...
board = ...
; Examples 1: disable initial breakpoint
debug_init_break =
; Examples 2: temporary stop at ``void loop()`` function
debug_init_break = tb loop
; Examples 3: stop in main.cpp at line 13
debug_init_break = break main.cpp:13
debug_init_cmds
Initial commands that will be passed to back-end debugger.
PlatformIO dynamically configures back-end debugger depending on a debug environment. Highly recommended to
DO NOT override this option.
For example, the custom initial commands for GDB:
[env:debug]
platform = ...
board = ...
debug_init_cmds =
target remote $DEBUG_PORT
file "$PROG_PATH"
load "$PROG_PATH"
monitor init
monitor reset halt
$INIT_BREAK
debug_extra_cmds
Extra commands that will be passed to back-end debugger after initialization. For example, add custom breakpoint
and load .gdbinit from a project directory for GDB:
1.5. Project Configuration File platformio.ini
155
PlatformIO Documentation, Release 3.4.1
[env:debug]
platform = ...
board = ...
debug_extra_cmds =
break main.cpp:13
break foo.cpp:100
source .gdbinit
Note: Initial Project Breakpoints: Use break path/to/file:LINE_NUMBER to define initial breakpoints
for debug environment. Multiple breakpoints are allowed.
To save session breakpoints, please use save breakpoints [filename] command in Debug Console. For example, save breakpoints .gdbinit. Later, this file could be loaded via source [filename] command.
See above.
debug_load_cmd
Specify a command which will be used to load program/firmware to a target device. Possible options:
• debug_load_cmd = command - pass any debugging client command (GDB, etc.)
• debug_load_cmd = load - is setup by default
• debug_load_cmd = load address - load program at specified address, where “address” should be a
valid number
• debug_load_cmd = preload - some embedded devices have locked Flash Memory (a few Freescale
Kinetis and NXP LPC boards). In this case, firmware loading using debugging client is disabled. preload
command instructs PlatformIO Core to load program/firmware using development platform “upload” method
(via bootloader, media disk, etc)
• debug_load_cmd = - (empty value), disables program loading at all.
debug_server
Allows to setup a custom debugging server. By default, boards are pre-configured with a debugging server that is
compatible with “on-board” debugging tool (adapter, probe). Also, this option is useful for a Custom debugging tool.
Option format (multi-line):
• First line is an executable path of debugging server
• 2-nd and the next lines are arguments for executable file
Example:
[env:debug]
platform = ...
board = ...
debug_server =
/path/to/debugging/server
arg1
arg2
...
argN
156
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
debug_port
A debugging port of a remote target. Could be a serial device or network address. PlatformIO detects it automatically
if is not specified.
For example:
• /dev/ttyUSB0 - Unix-based OS
• COM3 - Windows OS
• localhost:3333
Advanced options
New in version 3.4.1.
extra_scripts
Warning: This option is recommended for Advanced Users and requires Python language knowledge.
We highly recommend to take a look at Dynamic build flags option where you can use any programming language.
Also, this option is useful if you need to apply changes to the project before building/uploading process:
• Macro with the latest VCS revision/tag “on-the-fly”
• Generate dynamic headers (*.h)
• Process media content before generating SPIFFS image
• Make some changes to source code or related libraries
More details Dynamic build flags.
• Extra Linker Flags without -Wl, prefix
• Custom Uploader
• Before/Pre and After/Post actions
Allows to launch extra scripts (based on SCons software construction tool) while processing environment. For more
details please follow to “Construction Environments” section of SCons documentation.
Warning: You can not run/debug these scripts directly with Python interpreter. They will be loaded automatically
when processing project environment using platformio run command.
There 2 type of extra scripts:
1. PRE - executes before a main script of Development Platforms
2. POST - executes after a main script of Development Platforms
Multiple extra scripts are allowed. Please split them via ”, ” (comma + space) in the same line or use multi-line values.
For example,
1.5. Project Configuration File platformio.ini
157
PlatformIO Documentation, Release 3.4.1
[env:my_env_1]
platform = ...
; without prefix, POST script
extra_scripts = post_extra_script.py
[env:my_env_2]
platform = ...
extra_scripts = pre:pre_extra_script1.py, pre:pre_extra_script2.py
[env:my_env_3]
platform = ...
extra_scripts =
pre:pre_extra_script.py
post:post_extra_script1.py
post_extra_script2.py
This option can be set by global environment variable PLATFORMIO_EXTRA_SCRIPTS.
Take a look at the multiple snippets/answers for the user questions:
• #462 Split C/C++ build flags
• #365 Extra configuration for ESP8266 uploader
• #351 Specific reset method for ESP8266
• #247 Specific options for avrdude.
Extra Linker Flags without -Wl, prefix
Sometimes you need to pass extra flags to GCC linker without Wl,. You could use build_flags option but it will not
work. PlatformIO will not parse these flags to LINKFLAGS scope. In this case, simple extra script will help:
platformio.ini:
[env:env_extra_link_flags]
platform = windows_x86
extra_scripts = extra_script.py
extra_script.py (place it near platformio.ini):
Import('env')
env.Append(
LINKFLAGS=[
"-static",
"-static-libgcc",
"-static-libstdc++"
]
)
Custom Uploader
Example, specify own upload command for Atmel AVR:
platformio.ini:
158
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
[env:env_custom_uploader]
platform = atmelavr
extra_scripts = /path/to/extra_script.py
custom_option = hello
extra_script.py:
Import('env')
from base64 import b64decode
env.Replace(UPLOADHEXCMD='"$UPLOADER" ' + b64decode(ARGUMENTS.get("CUSTOM_OPTION")) +
˓→' --uploader --flags')
# uncomment line below to see environment variables
# print env.Dump()
# print ARGUMENTS
Before/Pre and After/Post actions
PlatformIO Build System has rich API that allows to attach different pre-/post actions (hooks) using
env.AddPreAction(target, callback)
or
env.AddPreAction(target, [callback1,
callback2, ...]) function. A first argument target can be a name of target that is passed using
platformio run --target command, a name of built-in targets (buildprog, size, upload, program, buildfs,
uploadfs, uploadfsota) or path to file which PlatformIO processes (ELF, HEX, BIN, OBJ, etc.).
Examples
extra_script.py file is located on the same level as platformio.ini.
platformio.ini:
[env:pre_and_post_hooks]
extra_scripts = extra_script.py
extra_script.py:
Import("env")
#
# Upload actions
#
def before_upload(source, target, env):
print "before_upload"
# do some actions
def after_upload(source, target, env):
print "after_upload"
# do some actions
print "Current build targets", map(str, BUILD_TARGETS)
env.AddPreAction("upload", before_upload)
env.AddPostAction("upload", after_upload)
#
1.5. Project Configuration File platformio.ini
159
PlatformIO Documentation, Release 3.4.1
# Custom actions when building program/firmware
#
env.AddPreAction("buildprog", callback...)
env.AddPostAction("buildprog", callback...)
#
# Custom actions for specific files/objects
#
env.AddPreAction("$BUILD_DIR/firmware.elf", [callback1, callback2,...])
env.AddPostAction("$BUILD_DIR/firmware.hex", callback...)
# custom action before building SPIFFS image. For example, compress HTML, etc.
env.AddPreAction("$BUILD_DIR/spiffs.bin", callback...)
# custom action for project's main.cpp
env.AddPostAction("$BUILD_DIR/src/main.cpp.o", callback...)
# Custom HEX from ELF
env.AddPostAction(
"$BUILD_DIR/firmware.elf",
env.VerboseAction(" ".join([
"$OBJCOPY", "-O", "ihex", "-R", ".eeprom",
"$BUILD_DIR/firmware.elf", "$BUILD_DIR/firmware.hex"
]), "Building $BUILD_DIR/firmware.hex")
)
Dynamic variables
New in version 3.1.
Dynamic variables/templates are useful when you have common configuration data between build environments. For
examples, common build_flags or project dependencies lib_deps.
Each variable should have a next format: ${<section>.<option>}, where <section> is a value from
[<section>] group, and <option> is a first item from pair <option> = value.
You can inject environment variable using env as a section. For example, ${env.HOME}, etc.
• Variable can be applied only for the option’s value
• Multiple variables are allowed
• The platformio and env sections are reserved and could not be used as custom section. Some good section
names might be common or global.
Example:
[platformio]
; Unix
lib_extra_dirs = ${env.HOME}/Documents/Arduino/libraries
; Windows
lib_extra_dirs = ${env.HOMEDRIVE}${env.HOMEPATH}\Documents\Arduino\libraries
; You MUST inject these options into [env:] section
; using ${common.***} (see below)
[common]
build_flags = -D VERSION=1.2.3 -D DEBUG=1
160
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
lib_deps_builtin =
SPI
Wire
lib_deps_external = [email protected]>5.6.0
[env:uno]
platform = atmelavr
framework = arduino
board = uno
build_flags = ${common.build_flags}
lib_deps =
${common.lib_deps_builtin}
${common.lib_deps_external}
[env:nodemcuv2]
platform = espressif8266
framework = arduino
board = nodemcuv2
build_flags = ${common.build_flags} -DSSID_NAME=HELLO -DSSID_PASWORD=WORLD
lib_deps =
${common.lib_deps_builtin}
${common.lib_deps_external}
[email protected]
OneWire
Examples
Note: A full list with project examples can be found in PlatformIO Repository.
1. Atmel AVR: Arduino UNO board with auto pre-configured board_* and upload_* options (use only board
option) and Arduino Wiring-based Framework
[env:atmelavr_arduino_uno_board]
platform = atmelavr
framework = arduino
board = uno
; enable auto-uploading
targets = upload
2. Atmel AVR: Embedded board that is based on ATmega168 MCU with “arduino” bootloader
[env:atmelavr_atmega168_board]
platform = atmelavr
board_mcu = atmega168
board_f_cpu = 16000000L
upload_port = /dev/ttyUSB0
; for Windows OS
; upload_port = COM3
upload_protocol = arduino
upload_speed = 19200
; enable auto-uploading
1.5. Project Configuration File platformio.ini
161
PlatformIO Documentation, Release 3.4.1
targets = upload
3. Upload firmware via USB programmer (USBasp) to Atmel AVR microcontrollers
[env:atmelavr_usbasp]
platform = atmelavr
framework = arduino
board = pro8MHzatmega328
upload_protocol = usbasp
upload_flags = -Pusb -B5
Then upload firmware using target program for platformio run --target. command. To use other programmers see Upload using Programmer.
4. ST STM32: Upload firmware using GDB script upload.gdb, issue #175
[env:st_via_gdb]
platform = ststm32
board = armstrap_eagle512
upload_protocol = gdb
Also, take a look at this article Armstrap Eagle and PlatformIO.
5. ST STM32: Upload firmware using ST-Link instead mbed’s media disk
[env:stlink_for_mbed]
platform = ststm32
board = disco_f100rb
upload_protocol = stlink
Environment variables
Environment variables are a set of dynamic named values that can affect the way running processes will behave on a
computer.
PlatformIO handles variables which start with PLATFORMIO_ prefix. They have the HIGHEST PRIORITY.
How to set environment variable?
# Windows
set VARIABLE_NAME=VALUE
# Unix (bash, zsh)
export VARIABLE_NAME=VALUE
# Unix (fish)
set -x VARIABLE_NAME VALUE
Contents
• General
• Building
• Uploading
162
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
• Settings
General
PlatformIO uses General environment variables for the common operations/commands.
CI
PlatformIO handles CI variable which is setup by Continuous Integration (Travis, Circle and etc.) systems.
PlatformIO uses it to disable prompts and progress bars. In other words, CI=true automatically setup
PLATFORMIO_DISABLE_PROGRESSBAR to true.
PLATFORMIO_AUTH_TOKEN
Allows to specify Personal Authentication Token that could be used for automatic login in to PIO Account. It is very
useful for Continuous Integration systems and PIO Remote™ operations where you are not able manually authorize.
You can get own Personal Authentication Token using platformio account token command.
PLATFORMIO_FORCE_COLOR
Force to output color ANSI-codes even if the output is a pipe (not a tty). The possible values are true and false.
Default is PLATFORMIO_FORCE_COLOR=false.
PLATFORMIO_DISABLE_PROGRESSBAR
Disable progress bar for package/library downloader and uploader. This is useful when calling PlatformIO
from subprocess and output is a pipe (not a tty). The possible values are true and false. Default is
PLATFORMIO_DISABLE_PROGRESSBAR=false.
PLATFORMIO_HOME_DIR
Allows to override Project Configuration File platformio.ini option home_dir.
PLATFORMIO_LIB_DIR
Allows to override Project Configuration File platformio.ini option lib_dir.
PLATFORMIO_LIBDEPS_DIR
Allows to override Project Configuration File platformio.ini option libdeps_dir.
PLATFORMIO_SRC_DIR
Allows to override Project Configuration File platformio.ini option src_dir.
PLATFORMIO_ENVS_DIR
Allows to override Project Configuration File platformio.ini option envs_dir.
PLATFORMIO_DATA_DIR
Allows to override Project Configuration File platformio.ini option data_dir.
PLATFORMIO_TEST_DIR
Allows to override Project Configuration File platformio.ini option test_dir.
PLATFORMIO_BOARDS_DIR
Allows to override Project Configuration File platformio.ini option boards_dir.
PLATFORMIO_REMOTE_AGENT_DIR
Allows to override platformio remote agent start --working-dir.
1.6. Environment variables
163
PlatformIO Documentation, Release 3.4.1
Building
PLATFORMIO_BUILD_FLAGS
Allows to set Project Configuration File platformio.ini option build_flags.
Examples:
# Unix:
export PLATFORMIO_BUILD_FLAGS=-DFOO
export PLATFORMIO_BUILD_FLAGS=-DFOO -DBAR=1 -DFLOAT_VALUE=1.23457e+07
export PLATFORMIO_BUILD_FLAGS='-DWIFI_PASS=\"My password\"' '-DWIFI_SSID=\"My ssid
˓→name\"'
# Windows:
SET PLATFORMIO_BUILD_FLAGS=-DFOO
SET PLATFORMIO_BUILD_FLAGS=-DFOO -DBAR=1 -DFLOAT_VALUE=1.23457e+07
SET PLATFORMIO_BUILD_FLAGS='-DWIFI_PASS="My password"' '-DWIFI_SSID="My ssid name"'
PLATFORMIO_SRC_BUILD_FLAGS
Allows to set Project Configuration File platformio.ini option src_build_flags.
PLATFORMIO_SRC_FILTER
Allows to set Project Configuration File platformio.ini option src_filter.
PLATFORMIO_EXTRA_SCRIPTS
Allows to set Project Configuration File platformio.ini option extra_scripts.
PLATFORMIO_LIB_EXTRA_DIRS
Allows to set Project Configuration File platformio.ini option lib_extra_dirs.
Uploading
PLATFORMIO_UPLOAD_PORT
Allows to set Project Configuration File platformio.ini option upload_port.
PLATFORMIO_UPLOAD_FLAGS
Allows to set Project Configuration File platformio.ini option upload_flags.
Settings
Allows to override PlatformIO settings. You can manage them via platformio settings command.
PLATFORMIO_SETTING_AUTO_UPDATE_LIBRARIES
Allows to override setting auto_update_libraries.
PLATFORMIO_SETTING_AUTO_UPDATE_PLATFORMS
Allows to override setting auto_update_platforms.
PLATFORMIO_SETTING_CHECK_LIBRARIES_INTERVAL
Allows to override setting check_libraries_interval.
PLATFORMIO_SETTING_CHECK_PLATFORMIO_INTERVAL
164
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Allows to override setting check_platformio_interval.
PLATFORMIO_SETTING_CHECK_PLATFORMS_INTERVAL
Allows to override setting check_platforms_interval.
PLATFORMIO_SETTING_ENABLE_TELEMETRY
Allows to override setting enable_telemetry.
PLATFORMIO_SETTING_FORCE_VERBOSE
Allows to override setting force_verbose.
PLATFORMIO_SETTING_ENABLE_SSL
Allows to override setting enable_ssl.
Library Manager
PlatformIO Library Manager is a tool for managing libraries of PlatformIO Registry and VCS repositories (Git, Hg,
SVN). It makes it exceedingly simple to find, install and keep libraries up-to-date. PlatformIO Library Manager
supports Semantic Versioning and its rules.
PlatformIO IDE for Atom has built-in Library Manager with a friendly GUI. It allows:
• Search for new libraries in PlatformIO Registry
• “1-click” library installation, per-project libraries, extra storages
• List installed libraries in multiple storages
• List built-in libraries (by frameworks)
• Updates for installed libraries
• Multiple examples, trending libraries, and more.
Quick Start
PlatformIO Library Manager is a tool for managing libraries of PlatformIO Registry and VCS repositories (Git, Hg,
SVN). It makes it exceedingly simple to find, install and keep libraries up-to-date. PlatformIO Library Manager
supports Semantic Versioning and its rules.
There are 3 options how to find a library:
1.7. Library Manager
165
PlatformIO Documentation, Release 3.4.1
• Using Library Manager in PlatformIO IDE for Atom
• Web Library Search
• Command Line Interface
You can manage different library storages using platformio lib --global or platformio lib
--storage-dir options. If you change current working directory in terminal to project folder, then platformio
lib command will manage automatically dependency storage in libdeps_dir.
Project dependencies
PlatformIO Library Manager allows to specify project dependencies (lib_deps) that will be installed automatically
per project before environment processing. You do not need to install libraries manually. The only one simple step is
to define dependencies in Project Configuration File platformio.ini. You can use library ID, Name or even repository
URL. For example,
[env:myenv]
platform = ...
framework = ...
board = ...
lib_deps =
13
PubSubClient
[email protected]~5.6,!=5.4
https://github.com/gioblu/PJON.git#v2.0
https://github.com/me-no-dev/ESPAsyncTCP.git
https://github.com/adafruit/DHT-sensor-library/archive/master.zip
Please follow to platformio lib install for detailed documentation about possible values.
Warning: If some libraries are not visible in PlatformIO IDE and Code Completion or Code Linting does not
work properly, please perform
• Atom: “Menu: PlatformIO > Rebuild C/C++ Project Index (Autocomplete, Linter)”
• VSCode: “Menu: View > Command Palette... > PlatformIO: Rebuild C/C++ Project Index”
PlatformIO IDE
PlatformIO IDE for Atom has built-in Library Manager with a friendly GUI. It allows:
• Search for new libraries in PlatformIO Registry
• “1-click” library installation, per-project libraries, extra storages
• List installed libraries in multiple storages
• List built-in libraries (by frameworks)
• Updates for installed libraries
• Multiple examples, trending libraries, and more.
166
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
PlatformIO Core
Library Dependency Finder (LDF)
New in version 3.0.
Library Dependency Finder is a core part of PlatformIO Build System that operates with the C/C++ source files and
looks for #include ... directives.
In spite of the fact that Library Dependency Finder is written in pure Python, it evaluates C/C++ Preprocessor conditional syntax (#ifdef, if, defined, else, and elif) without calling gcc -E. This approach allows significantly reduce total compilation time.
Library Dependency Finder has controls that can be set up in Project Configuration File platformio.ini:
•
•
•
•
•
•
lib_deps
lib_extra_dirs
lib_ignore
lib_compat_mode
lib_ldf_mode
lib_archive
Contents
• Library Dependency Finder (LDF)
– Storage
– Dependency Finder Mode
– Compatibility Mode
– C/C++ Preprocessor conditional syntax
Storage
There are different storages where Library Dependency Finder looks for libraries. These storages (folders) have
priority and LDF operates in the next order:
1.7. Library Manager
167
PlatformIO Documentation, Release 3.4.1
1. lib_extra_dirs - extra storages per build environment
2. lib_dir - own/private library storage per project
3. libdeps_dir - project dependency storage used by Library Manager
4. “home_dir/lib” - global storage per all projects.
5. Library storages built into frameworks, SDKs.
Dependency Finder Mode
Library Dependency Finder starts work from analyzing source files of the project (src_dir) and can work in the next
modes:
Mode
off
Description
“Manual mode”, does not process source files of a project and dependencies. Builds only the
libraries that are specified in manifests (library.json, module.json) or using lib_deps option.
Parses ALL C/C++ source code of the project and follows only by nested includes (#include
..., chain...) from the libraries. Does not evaluates C/C++ Preprocessor conditional syntax.
Parses ALL C/C++ source code of the project and parses ALL C/C++ source code of the each found
dependency (recursively). Does not process C/C++ Preprocessor conditional syntax.
The same behavior as for the chain but evaluates C/C++ Preprocessor conditional syntax.
The same behavior as for the deep but evaluates C/C++ Preprocessor conditional syntax.
chain
(default)
deep
chain+
deep+
The mode can be changed using lib_ldf_mode option in Project Configuration File platformio.ini.
Note: Usually, when the LDF appears to fail to identify a dependency of a library, it is because the dependency is only
referenced from the library source file, and not the library header file (see example below). In this case, it is necessary
to either explicitly reference the dependency from the project source or Project Configuration File platformio.ini
(lib_deps option), or change the LDF mode to “deep”(not generally recommended).
A difference between chain/chain+ and deep/deep+ modes. For example, there are 2 libraries:
• Library “Foo” with files:
– Foo/foo.h
– Foo/foo.cpp
• Library “Bar” with files:
– Bar/bar.h
– Bar/bar.cpp
Case 1
• lib_ldf_mode = chain
• Foo/foo.h depends on “Bar” library (contains #include <bar.h>)
• #include <foo.h> is located in one of the project source files
Here are nested includes (project file > foo.h > bar.h) and LDF will find both libraries “Foo” and “Bar”.
Case 2
• lib_ldf_mode = chain
• Foo/foo.cpp depends on “Bar” library (contains #include <bar.h>)
168
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
• #include <foo.h> is located in one of the project source files
In this case, LDF will not find “Bar” library because it doesn’t know about CPP file (Foo/foo.
cpp).
Case 3
• lib_ldf_mode = deep
• Foo/foo.cpp depends on “Bar” library (contains #include <bar.h>)
• #include <foo.h> is located in one of the project source files
Firstly, LDF finds “Foo” library, then it parses all sources from “Foo” library and finds Foo/foo.
cpp that depends on #include <bar.h>. Secondly, it will parse all sources from “Bar” library
and this operation continues until all dependencies will not be parsed.
Compatibility Mode
Compatibility mode allows to control strictness of Library Dependency Finder. If library contains one of manifest
file (library.json, library.properties, module.json), then LDF check compatibility of this library with real
build environment. Available compatibility modes:
• 0 - does not check for compatibility (is not recommended)
• 1 - default - checks for the compatibility with framework from build environment
• 2 - checks for the compatibility with framework and platform from build environment.
This mode can be changed using lib_compat_mode option in Project Configuration File platformio.ini.
C/C++ Preprocessor conditional syntax
In spite of the fact that Library Dependency Finder is written in pure Python, it evaluates C/C++ Preprocessor conditional syntax (#ifdef, if, defined, else, and elif) without calling gcc -E. For example,
platformio.ini
[env:myenv]
build_flags = -D MY_PROJECT_VERSION=13
mylib.h
#ifdef PROJECT_VERSION
// include common file for the project
#include "my_common.h"
#endif
#if PROJECT_VERSION < 10
// this include will be ignored because does not satisfy condition above
#include "my_old.h"
#endif
library.json
library.json is a manifest file of development library. It allows developers to keep project in own structure and
define:
• location of source code
1.7. Library Manager
169
PlatformIO Documentation, Release 3.4.1
• examples list
• compatible frameworks and platforms
• library dependencies
• advanced build settings
PlatformIO Library Crawler uses library.json manifest to extract source code from developer’s location and
keeps a cleaned library in own Library Registry.
A data in library.json should be represented in JSON-style via associative array (name/value pairs). An order
doesn’t matter. The allowable fields (names from pairs) are described below.
Fields
• name
• description
• keywords
• authors
• repository
• version
• license
• downloadUrl
• homepage
• export
– include
– exclude
• frameworks
• platforms
• dependencies
• examples
• build
– flags
– unflags
– srcFilter
– extraScript
– libArchive
– libLDFMode
• Examples
170
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
name
Required | Type: String | Max. Length: 50
A name of the library.
• Must be unique.
• Should be slug style for simplicity, consistency and compatibility. Example: Arduino-SPI
• Title Case, Aa-z, can contain digits and dashes (but not start/end with them).
• Consecutive dashes are not allowed.
description
Required | Type: String | Max. Length: 255
The field helps users to identify and search for your library with a brief description. Describe the hardware devices
(sensors, boards and etc.) which are suitable with it.
keywords
Required | Type: String | Max. Length: 255
Used for search by keyword. Helps to make your library easier to discover without people needing to know its name.
The keyword should be lowercased, can contain a-z, digits and dash (but not start/end with them). A list from the
keywords can be specified with separator ,
authors
Required if repository field is not defined | Type: Object or Array
An author contact information
• name Full name (Required)
• email
• url An author’s contact page
• maintainer Specify “maintainer” status
Examples:
"authors":
{
"name": "John Smith",
"email": "[email protected]",
"url": "http://www.john-smith/contact"
}
...
"authors":
[
{
"name": "John Smith",
"email": "[email protected]",
1.7. Library Manager
171
PlatformIO Documentation, Release 3.4.1
"url": "http://www.john-smith/contact"
},
{
"name": "Andrew Smith",
"email": "[email protected]",
"url": "http://www.andrew-smith/contact",
"maintainer": true
}
]
Note: You can omit authors field and define repository field. Only GitHub-based repository is supported now. In this
case PlatformIO Library Registry Crawler will use information from GitHub API Users.
repository
Required if downloadUrl field is not defined | Type: Object
The repository in which the source code can be found. The field consists of the next items:
• type the only “git”, “hg” or “svn” are supported
• url
• branch if is not specified, default branch will be used. This field will be ignored if tag/release exists with the
value of version.
Example:
"repository":
{
"type": "git",
"url": "https://github.com/foo/bar.git"
}
version
Required if repository field is not defined | Type: String | Max. Length: 20
A version of the current library source code. Can contain a-z, digits, dots or dash. Semantic Versioning IS RECOMMENDED.
Case 1 version and repository fields are defined. The repository is hosted on GitHub or Bitbucket.
PlatformIO Library Registry Crawler will lookup for release tag named as value of version or with
v prefix (you do not need to pass this v prefix to the version field).
Case 2 version and repository fields are defined and repository does not contain tag/release with value of
version.
PlatformIO Library Registry Crawler will use the latest source code from repository and link it with
specified version. If repository branch is not specified, then default branch will be used. Also, if
you push new commits to repository and do not update version field, the library will not be updated
until you change the version.
Case 3 version field is not defined and repository field is defined.
172
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
PlatformIO Library Registry Crawler will use the VCS revision from the latest commit as “current
version”. For example, 13 (SVN) or first 10 chars of SHA digest e4564b7da4 (Git). If repository
branch is not specified, then default branch will be used.
We recommend to use version field and specify the real release version and make appropriate tag
in the repository. In other case, users will receive updates for library with each new commit to
repository.
Note:
PlatformIO Library Registry Crawler updates library only if:
• the version is changed
• library.json is modified
Example:
"repository":
{
"type": "git",
"url": "https://github.com/foo/bar.git"
},
"version": "1.0.0"
license
Optional | Type: String
A license of the library. You can check the full list of SPDX license IDs. Ideally you should pick one that is OSI
approved.
"license": "Apache-2.0"
downloadUrl
Required if repository field is not defined | Type: String
It is the HTTP URL to the archived source code of library. It should end with the type of archive (.zip or .tar.gz).
Note: downloadUrl has higher priority than repository.
Example with fixed release/tag on GitHub:
"version": "1.0.0",
"downloadUrl": "https://github.com/foo/bar/archive/v1.0.0.tar.gz",
"include": "bar-1.0.0"
See more library.json Examples.
homepage
Optional | Type: String | Max. Length: 255
1.7. Library Manager
173
PlatformIO Documentation, Release 3.4.1
Home page of library (if is different from repository url).
export
Optional | Type: Object
Explain PlatformIO Library Crawler which content from the repository/archive should be exported as “source code”
of the library. This option is useful if need to exclude extra data (test code, docs, images, PDFs, etc). It allows to
reduce size of the final archive.
Possible options:
• include
• exclude
include
Optional | Type: String or Array | Glob Pattern
If include field is a type of String, then PlatformIO Library Registry Crawler will recognize it like a “relative
path inside repository/archive to library source code”. See example below where the only source code from the relative
directory LibrarySourceCodeHere will be included.
"include": "some/child/dir/LibrarySourceCodeHere"
If include field is a type of Array, then PlatformIO Library Registry Crawler firstly will apply exclude filter
and then include only directories/files which match with include patterns.
Example:
"export": {
"include":
[
"dir/*.[ch]pp",
"dir/examples/*",
"*/*/*.h"
]
}
Pattern Meaning
Pattern
*
?
[seq]
[!seq]
Meaning
matches everything
matches any single character
matches any character in seq
matches any character not in seq
See more library.json Examples.
exclude
Optional | Type: String or Array | Glob Pattern
Exclude the directories and files which match with exclude patterns.
174
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
frameworks
Optional | Type: String or Array
A list with compatible frameworks. The available framework types are defined in the Development Platforms section.
If the library is compatible with the all frameworks, then you can use * symbol:
"frameworks": "*"
platforms
Optional | Type: String or Array
A list with compatible platforms. The available platform types are defined in Development Platforms section.
If the library is compatible with the all platforms, then you can use * symbol:
"platforms": "*"
dependencies
Optional | Type: Array or Object
A list of dependent libraries. They will be installed automatically with platformio lib install command.
Allowed requirements for dependent library:
• name | Type: String
• version | Type: String
• authors | Type: String or Array
• frameworks | Type: String or Array
• platforms | Type: String or Array
The version supports Semantic Versioning ( <major>.<minor>.<patch>) and can take any of the following
forms:
• 0.1.2 - an exact version number. Use only this exact version
• ^0.1.2 - any compatible version (exact version for 0.x.x versions
• ~0.1.2 - any version with the same major and minor versions, and an equal or greater patch version
• >0.1.2 - any version greater than 0.1.2. >=, <, and <= are also possible
• >0.1.0,!=0.2.0,<0.3.0 - any version greater than 0.1.0, not equal to 0.2.0 and less than 0.3.0
The rest possible values including VCS repository URLs are documented in platformio lib install command.
Example:
"dependencies":
[
{
"name": "Library-Foo",
"authors":
[
"Jhon Smith",
1.7. Library Manager
175
PlatformIO Documentation, Release 3.4.1
"Andrew Smith"
]
},
{
"name": "Library-Bar",
"version": "~1.2.3"
},
{
"name": "lib-from-repo",
"version": "https://github.com/user/package.git#1.2.3"
}
]
A short definition of dependencies is allowed:
"dependencies": {
"mylib": "1.2.3",
"lib-from-repo": "githubuser/package"
}
See more library.json Examples.
examples
Optional | Type: String or Array | Glob Pattern
A list of example patterns. This field is predefined with default value:
"examples": [
"[Ee]xamples/*.c",
"[Ee]xamples/*.cpp",
"[Ee]xamples/*.ino",
"[Ee]xamples/*.pde",
"[Ee]xamples/*/*.c",
"[Ee]xamples/*/*.cpp",
"[Ee]xamples/*/*.ino",
"[Ee]xamples/*/*.pde",
"[Ee]xamples/*/*/*.c",
"[Ee]xamples/*/*/*.cpp",
"[Ee]xamples/*/*/*.ino",
"[Ee]xamples/*/*/*.pde"
]
build
Optional | Type: Object
Specify advanced settings, options and flags for the build system. Possible options:
• flags
• unflags
• srcFilter
176
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
• extraScript
• libArchive
• libLDFMode
flags
Optional | Type: String or Array
Extra flags to control preprocessing, compilation, assembly and linking processes. More details build_flags.
unflags
Optional | Type: String or Array
Remove base/initial flags which were set by development platform. More details build_unflags.
srcFilter
Optional | Type: String or Array
Specify which source files should be included/excluded from build process. The path in filter should be relative from
a root of library.
See syntax in src_filter.
Please note that you can generate source filter “on-the-fly” using extraScript (see below)
extraScript
Optional | Type: String
Launch extra script before build process. More details extra_scripts.
Example (HAL-based library)
This example demonstrates how to build HAL-dependent source files and exclude other source files from a build
process.
Project structure
- lib
|
- readme.txt
|
- SomeLib
|
- extra_script.py
|
- hal
|
|
- bar
|
|
|
- hal.c
|
|
|
- hal.h
|
|
- foo
|
|
- hal.c
|
|
- hal.h
|
- library.json
|
- SomeLib.c
|
- SomeLib.h
1.7. Library Manager
177
PlatformIO Documentation, Release 3.4.1
- platformio.ini
- src
- test.c
platformio.ini
[env:foo]
platform = native
build_flags = -DHAL=foo
[env:bar]
platform = native
build_flags = -DHAL=bar
library.json
{
"name": "SomeLib",
"version": "0.0.0",
"build": {
"extraScript": "extra_script.py"
}
}
extra_script.py
Import('env')
from os.path import join, realpath
for item in env.get("CPPDEFINES", []):
if isinstance(item, tuple) and item[0] == "HAL":
env.Append(CPPPATH=[realpath(join("hal", item[1]))])
env.Replace(SRC_FILTER=["+<*>", "-<hal>", "+<%s>" % join("hal", item[1])])
break
libArchive
Optional | Type: Boolean
Create an archive (*.a, static library) from the object files and link it into a firmware (program). This is default
behavior of PlatformIO Build System ("libArchive": true).
Setting "libArchive": false will instruct PIO Build System to link object files directly (in-line). This could
be useful if you need to override weak symbols defined in framework or other libraries.
You can disable library archiving globally using lib_archive option in Project Configuration File platformio.ini.
libLDFMode
Optional | Type: Integer
Specify Library Dependency Finder Mode. See Dependency Finder Mode for details.
178
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Examples
1. Custom macros/defines
"build": {
"flags": "-D MYLIB_REV=0.1.2 -DRELEASE"
}
2. Extra includes for C preprocessor
"build": {
"flags": [
"-I inc",
"-I inc/target_x13"
]
}
3. Force to use C99 standard instead of C11
"build": {
"unflags": "-std=gnu++11",
"flags": "-std=c99"
}
4. Build source files (c, cpp, h) at the top level of the library
"build": {
"srcFilter": [
"+<*.c>",
"+<*.cpp>",
"+<*.h>"
]
}
5. Extend PlatformIO Build System with own extra script
"build": {
"extraScript": "generate_headers.py"
}
generate_headers.py
Import('env')
# print env.Dump()
env.Append(
CPPDEFINES=["HELLO=WORLD", "TAG=1.2.3", "DEBUG"],
CPPPATH=["inc", "inc/devices"]
)
# some python code that generates header files "on-the-fly"
Creating Library
PlatformIO Library Manager doesn’t have any requirements to a library source code structure. The only one requirement is library’s manifest file - library.json. It can be located inside your library or in the another location where
PlatformIO Library Registry Crawler will have HTTP access.
1.7. Library Manager
179
PlatformIO Documentation, Release 3.4.1
Updates to existing libraries are done every 24 hours. In case a more urgent update is required, you can post a request
on PlatformIO community.
Contents
• Source Code Location
– At GitHub
– Under VCS (SVN/GIT)
– Self-hosted
• Register
• Examples
Source Code Location
There are a several ways how to share your library with the whole world (see examples).
You can hold a lot of libraries (split into separated folders) inside one of the repository/archive. In this case, you need
to specify include option of export field to relative path to your library’s source code.
At GitHub
Recommended
If a library source code is located at GitHub, then you need to specify only these fields in the library.json:
• name
• version (is not required, but highly recommended for new Library Manager)
• keywords
• description
• repository
PlatformIO Library Registry Crawler will populate the rest fields, like authors with an actual information from
GitHub.
Example, DallasTemperature:
{
"name": "DallasTemperature",
"keywords": "onewire, 1-wire, bus, sensor, temperature",
"description": "Arduino Library for Dallas Temperature ICs (DS18B20, DS18S20,
˓→DS1822, DS1820)",
"repository":
{
"type": "git",
"url": "https://github.com/milesburton/Arduino-Temperature-Control-Library.git"
},
"authors":
[
{
"name": "Miles Burton",
180
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
"email": "[email protected]",
"url": "http://www.milesburton.com",
"maintainer": true
},
{
"name": "Tim Newsome",
"email": "[email protected]"
},
{
"name": "Guil Barros",
"email": "[email protected]"
},
{
"name": "Rob Tillaart",
"email": "[email protected]"
}
],
"dependencies":
{
"name": "OneWire",
"authors": "Paul Stoffregen",
"frameworks": "arduino"
},
"version": "3.7.7",
"frameworks": "arduino",
"platforms": "*"
}
Under VCS (SVN/GIT)
PlatformIO Library Registry Crawler can operate with a library source code that is under VCS control. The list of
required fields in the library.json will look like:
• name
• keywords
• description
• authors
• repository
Example:
{
"name": "XBee",
"keywords": "xbee, protocol, radio",
"description": "Arduino library for communicating with XBees in API mode",
"authors":
{
"name": "Andrew Rapp",
"email": "[email protected]",
"url": "https://code.google.com/u/[email protected]/"
},
"repository":
{
"type": "git",
1.7. Library Manager
181
PlatformIO Documentation, Release 3.4.1
"url": "https://code.google.com/p/xbee-arduino/"
},
"frameworks": "arduino",
"platforms": "atmelavr"
}
Self-hosted
You can manually archive (Zip, Tar.Gz) your library source code and host it in the Internet. Then you should specify
the additional fields, like version and downloadUrl. The final list of required fields in the library.json will look like:
• name
• keywords
• description
• authors
• version
• downloadUrl
{
"name": "OneWire",
"keywords": "onewire, 1-wire, bus, sensor, temperature, ibutton",
"description": "Control devices (from Dallas Semiconductor) that use the One Wire
˓→protocol (DS18S20, DS18B20, DS2408 and etc)",
"authors":
{
"name": "Paul Stoffregen",
"url": "http://www.pjrc.com/teensy/td_libs_OneWire.html"
},
"version": "2.2",
"downloadUrl": "http://www.pjrc.com/teensy/arduino_libraries/OneWire.zip",
"export": {
"include": "OneWire"
},
"frameworks": "arduino",
"platforms": "atmelavr"
}
Register
The registration requirements:
• A library must adhere to the library.json specification.
• There must be public HTTP access to the library library.json file.
Now, you can register your library and allow others to install it.
Examples
Command:
182
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
$ platformio lib register http://my.example.com/library.json
• GitHub + fixed release
• Dependencies by author and framework
• Multiple libraries in the one repository
Development Platforms
PlatformIO ecosystem has decentralized architecture. Build scripts, toolchains, the pre-built tools for the popular OS
(Mac OS X, Linux (+ARM) and Windows) are organized into the multiple development platforms.
Each development platform contains:
• PlatformIO Build System based build scripts for the supported frameworks and SDKs
• Pre-configured presets for embedded boards
• Pre-compiled toolchains and relative tools for multiple architectures.
A platform name or its specific version could could be specified using platform option in Project Configuration File
platformio.ini.
Embedded
Atmel AVR
platform = atmelavr
Atmel AVR 8- and 32-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility.
Optimized to speed time to market-and easily adapt to new ones-they are based on the industrys most code-efficient
architecture for C and assembly programming.
For more detailed information please visit vendor site.
Contents
• Packages
• Frameworks
• Boards
– Adafruit
– Alorium Technolog
– Arduboy
– Arduino
– BQ
– BitWizard
– Controllino
– Digistump
1.8. Development Platforms
183
PlatformIO Documentation, Release 3.4.1
– Dwengo
– Engduino
– EnviroDIY
– Generic ATTiny
– LightUp
– Linino
– LowPowerLab
– Mcudude
– Microduino
– OpenEnergyMonitor
– PanStamp
– Pinoccio
– Pololu Corporation
– Punch Through
– Quirkbot
– RedBearLab
– RepRap
– SODAQ
– Sanguino
– SparkFun
– The Things Network
– TinyCircuits
– Wicked Device
– makerlab.mx
– nicai-systems
– ubIQio
• Upload using Programmer
• Upload EEPROM data
• Fuses
– Custom Fuses
• Articles
• Examples
184
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Packages
Name
framework-arduinoavr
framework-simba
tool-avrdude
tool-micronucleus
toolchain-atmelavr
Description
Arduino Wiring-based Framework (AVR Core, 1.6)
Simba Framework
AVRDUDE
Micronucleus
avr-gcc
Warning: Linux Users:
• Install “udev” rules file 99-platformio-udev.rules (an instruction is located inside a file).
• Raspberry Pi users, please read this article Enable serial port on Raspberry Pi.
Windows Users:
Please check that you have a correctly installed USB driver from board manufacturer
Frameworks
Name Description
ArArduino Wiring-based Framework allows writing cross-platform software to control devices attached to a
duino wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical
experiences.
Simba Simba is an RTOS and build framework. It aims to make embedded programming easy and portable.
Boards
Note:
• You can list pre-configured boards by platformio boards command or PlatformIO Boards Explorer
• For more detailed board information please scroll tables below by horizontal.
1.8. Development Platforms
185
PlatformIO Documentation, Release 3.4.1
Adafruit
ID
Name
bluefruitmicroAdafruit Bluefruit Micro
feather32u4
Adafruit Feather
flora8
Adafruit Flora
gemma
Adafruit Gemma
metro
Adafruit Metro
Adafruit Pro Trinket
3V/12MHz (USB)
protrinket3ftdi
Adafruit Pro Trinket
3V/12MHz (FTDI)
protrinket5 Adafruit Pro Trinket
5V/16MHz (USB)
protrinket5ftdi
Adafruit Pro Trinket
5V/16MHz (FTDI)
trinket3
Adafruit Trinket 3V/8MHz
protrinket3
trinket5
Adafruit Trinket 5V/16MHz
Platform
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Debug
Microcontroller
ATMEGA32U4
ATMEGA32U4
ATMEGA32U4
ATTINY85
Frequency
8 MHz
ATMEGA328P
ATMEGA328P
ATMEGA328P
ATMEGA328P
ATMEGA328P
ATTINY85
16 MHz
ATTINY85
16 MHz
Flash RAM
32
Kb
32
Kb
32
Kb
8
Kb
32
Kb
32
Kb
32
Kb
32
Kb
32
Kb
8
Kb
8
Kb
8 MHz
8 MHz
8 MHz
12 MHz
12 MHz
16 MHz
16 MHz
8 MHz
2.5
Kb
2.5
Kb
2.5
Kb
0.5
Kb
2 Kb
2 Kb
2 Kb
2 Kb
2 Kb
0.5
Kb
0.5
Kb
Alorium Technolog
ID
alorium_xlr8
Name
Alorium XLR8
Platform
Atmel AVR
Debug
Microcontroller
ATMEGA328P
Frequency
16 MHz
Flash
32 Kb
RAM
2 Kb
Debug
Microcontroller
ATMEGA32U4
ATMEGA32U4
Frequency
16 MHz
Flash
RAM
32
Kb
32
Kb
2.5
Kb
2.5
Kb
Arduboy
ID
Name
Platform
arduboy
Arduboy
Atmel
AVR
Atmel
AVR
arduboy_devkit Arduboy
DevKit
16 MHz
Arduino
ID
LilyPadUSB
atmega328pb
atmegangatmega168
atmegangatmega8
186
Name
Arduino LilyPad USB
Atmel ATmega328PB
Arduino NG or older ATmega168
Arduino NG or older ATmega8
Platform
Atmel AVR
Atmel AVR
Atmel AVR
Atmel AVR
Debug
Microcontroller
ATMEGA32U4
ATMEGA328PB
ATMEGA168
ATMEGA8
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
ID
btatmega168
btatmega328
chiwawa
diecimilaatmega168
diecimilaatmega328
esplora
ethernet
fio
leonardo
leonardoeth
lilypadatmega168
lilypadatmega328
megaADK
megaatmega1280
megaatmega2560
micro
miniatmega168
miniatmega328
nanoatmega168
nanoatmega328
pro16MHzatmega168
pro16MHzatmega328
pro8MHzatmega168
pro8MHzatmega328
robotControl
robotMotor
uno
yun
yunmini
Table 1.1 – continued from previous page
Name
Platform
Debug
Arduino BT ATmega168
Atmel AVR
Arduino BT ATmega328
Atmel AVR
Arduino Industrial 101
Atmel AVR
Arduino Duemilanove or Diecimila ATmega168
Atmel AVR
Arduino Duemilanove or Diecimila ATmega328
Atmel AVR
Arduino Esplora
Atmel AVR
Arduino Ethernet
Atmel AVR
Arduino Fio
Atmel AVR
Arduino Leonardo
Atmel AVR
Arduino Leonardo ETH
Atmel AVR
Arduino LilyPad ATmega168
Atmel AVR
Arduino LilyPad ATmega328
Atmel AVR
Arduino Mega ADK
Atmel AVR
Arduino Mega or Mega 2560 ATmega1280
Atmel AVR
Arduino Mega or Mega 2560 ATmega2560 (Mega 2560) Atmel AVR
Arduino Micro
Atmel AVR
Arduino Mini ATmega168
Atmel AVR
Arduino Mini ATmega328
Atmel AVR
Arduino Nano ATmega168
Atmel AVR
Arduino Nano ATmega328
Atmel AVR
Arduino Pro or Pro Mini ATmega168 (5V, 16 MHz)
Atmel AVR
Arduino Pro or Pro Mini ATmega328 (5V, 16 MHz)
Atmel AVR
Arduino Pro or Pro Mini ATmega168 (3.3V, 8 MHz)
Atmel AVR
Arduino Pro or Pro Mini ATmega328 (3.3V, 8 MHz)
Atmel AVR
Arduino Robot Control
Atmel AVR
Arduino Robot Motor
Atmel AVR
Arduino Uno
Atmel AVR
Arduino Yun
Atmel AVR
Arduino Yun Mini
Atmel AVR
Microcontroller
ATMEGA168
ATMEGA328P
ATMEGA32U4
ATMEGA168
ATMEGA328P
ATMEGA32U4
ATMEGA328P
ATMEGA328P
ATMEGA32U4
ATMEGA32U4
ATMEGA168
ATMEGA328P
ATMEGA2560
ATMEGA1280
ATMEGA2560
ATMEGA32U4
ATMEGA168
ATMEGA328P
ATMEGA168
ATMEGA328P
ATMEGA168
ATMEGA328P
ATMEGA168
ATMEGA328P
ATMEGA32U4
ATMEGA32U4
ATMEGA328P
ATMEGA32U4
ATMEGA32U4
BQ
ID
zumbt328
Name
BQ ZUM BT-328
Platform
Atmel AVR
Debug
Microcontroller
ATMEGA328P
Frequency
16 MHz
Flash
32 Kb
RAM
2 Kb
BitWizard
ID
Name
Platform
raspduino
BitWizard
Raspduino
Atmel
AVR
1.8. Development Platforms
Debug
Microcontroller
ATMEGA328P
Frequency
16 MHz
Flash
RAM
32 Kb
2 Kb
187
PlatformIO Documentation, Release 3.4.1
Controllino
ID
Name
controllino_maxi
Controllino Maxi
controllino_maxi_automation
Controllino Maxi
Automation
controllino_mega
Controllino Mega
controllino_mini
Controllino Mini
Platform
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Debug
Microcontroller
ATMEGA2560
ATMEGA2560
ATMEGA2560
ATMEGA328P
Frequency
16 MHz
Microcontroller
ATTINY167
ATTINY167
ATTINY167
ATTINY85
Frequency
16
MHz
16
MHz
16
MHz
16
MHz
Flash RAM
256
Kb
256
Kb
256
Kb
32
Kb
16 MHz
16 MHz
16 MHz
8
Kb
8
Kb
8
Kb
2
Kb
Digistump
ID
Name
digispark-proDigistump Digispark Pro (Default
16 MHz)
digispark-pro32
Digistump Digispark Pro (16 MHz)
(32 byte buffer)
digispark-pro64
Digistump Digispark Pro (16 MHz)
(64 byte buffer)
digispark-tiny
Digistump Digispark (Default - 16
MHz)
Platform
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Debug
Flash RAM
16
Kb
16
Kb
16
Kb
8
Kb
0.5
Kb
0.5
Kb
0.5
Kb
0.5
Kb
Dwengo
ID
dwenguino
Name
Dwenguino
Platform
Atmel AVR
Debug
Microcontroller
AT90USB646
Frequency
16 MHz
Flash
64 Kb
RAM
2 Kb
Engduino
ID
engduinov3
Name
Engduino 3
Platform
Atmel AVR
Debug
Microcontroller
ATMEGA32U4
Frequency
8 MHz
Flash
32 Kb
RAM
2.5 Kb
EnviroDIY
ID
mayfly
188
Name
EnviroDIY Mayfly
Platform
Atmel AVR
Debug
Microcontroller
ATMEGA1284P
Frequency
8 MHz
Flash
128 Kb
RAM
16 Kb
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Generic ATTiny
ID
Name
Platform
attiny13
Generic ATTiny13
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
attiny1634 Generic
ATTiny1634
attiny167 Generic
ATTiny167
attiny2313 Generic
ATTiny2313
attiny24
Generic ATTiny24
attiny25
Generic ATTiny25
Generic
ATTiny261
attiny4313 Generic
ATTiny4313
attiny44
Generic ATTiny44
attiny261
attiny441
attiny45
Generic
ATTiny441
Generic ATTiny45
attiny48
Generic
ATTiny461
Generic ATTiny48
attiny84
Generic ATTiny84
attiny841
Generic
ATTiny841
Generic ATTiny85
attiny461
attiny85
attiny87
Generic
ATTiny861
Generic ATTiny87
attiny88
Generic ATTiny88
attiny861
Debug
Microcontroller
ATTINY13
Frequency
9 MHz
Flash
RAM
1 Kb
ATTINY1634
8 MHz
ATTINY167
8 MHz
ATTINY2313
8 MHz
16
Kb
16
Kb
2 Kb
0.0625
Kb
1 Kb
ATTINY24
8 MHz
2 Kb
0.125 Kb
ATTINY25
8 MHz
2 Kb
0.125 Kb
ATTINY261
8 MHz
2 Kb
0.125 Kb
ATTINY4313
8 MHz
4 Kb
0.25 Kb
ATTINY44
8 MHz
4 Kb
0.25 Kb
ATTINY441
8 MHz
4 Kb
0.25 Kb
ATTINY45
8 MHz
4 Kb
0.25 Kb
ATTINY461
8 MHz
4 Kb
0.25 Kb
ATTINY48
8 MHz
4 Kb
0.25 Kb
ATTINY84
8 MHz
8 Kb
0.5 Kb
ATTINY841
8 MHz
8 Kb
0.5 Kb
ATTINY85
8 MHz
8 Kb
0.5 Kb
ATTINY861
8 MHz
8 Kb
0.5 Kb
ATTINY87
8 MHz
8 Kb
0.5 Kb
ATTINY88
8 MHz
8 Kb
0.5 Kb
0.5 Kb
0.125 Kb
LightUp
ID
lightup
Name
LightUp
Platform
Atmel AVR
1.8. Development Platforms
Debug
Microcontroller
ATMEGA32U4
Frequency
8 MHz
Flash
32 Kb
RAM
2.5 Kb
189
PlatformIO Documentation, Release 3.4.1
Linino
ID
one
Name
Linino One
Platform
Atmel AVR
Debug
Microcontroller
ATMEGA32U4
Frequency
16 MHz
Flash
32 Kb
RAM
2.5 Kb
LowPowerLab
ID
Name
moteino
LowPowerLab Moteino
moteinomega LowPowerLab
MoteinoMEGA
Platform
Atmel
AVR
Atmel
AVR
Debug
Platform
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Debug
Microcontroller
ATMEGA328P
ATMEGA1284P
Frequency
16 MHz
Flash
RAM
32 Kb
2 Kb
16 MHz
128
Kb
16
Kb
Microcontroller
ATMEGA1284P
ATMEGA16
Frequency
16 MHz
Flash
RAM
16 MHz
128
Kb
16 Kb
16
Kb
1 Kb
ATMEGA164P
ATMEGA32
16 MHz
16 Kb
1 Kb
16 MHz
32 Kb
2 Kb
ATMEGA324P
ATMEGA644P
ATMEGA16
16 MHz
32 Kb
2 Kb
16 MHz
64 Kb
4 Kb
16 MHz
8 Kb
0.5
Kb
Mcudude
ID
Name
mightycore1284MightyCore
ATmega1284
mightycore16 MightyCore
ATmega16
mightycore164 MightyCore
ATmega164
mightycore32 MightyCore
ATmega32
mightycore324 MightyCore
ATmega324
mightycore644 MightyCore
ATmega644
mightycore8535MightyCore
ATmega8535
190
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Microduino
ID
Name
Platform
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
1284p16mMicroduino Core+
([email protected],5V)
1284p8m Microduino Core+
([email protected],3.3V)
168pa16mMicroduino Core
([email protected],5V)
168pa8m Microduino Core
([email protected],3.3V)
328p16m Microduino Core
([email protected],5V)
328p8m Microduino Core
([email protected],3.3V)
32u416m Microduino Core USB
([email protected],5V)
644pa16mMicroduino Core+
([email protected],5V)
644pa8m Microduino Core+
([email protected],3.3V)
Debug
Microcontroller
ATMEGA1284P
ATMEGA1284P
ATMEGA168P
ATMEGA168P
ATMEGA328P
ATMEGA328P
ATMEGA32U4
ATMEGA644P
ATMEGA644P
Frequency
16 MHz
8 MHz
16 MHz
8 MHz
16 MHz
8 MHz
16 MHz
16 MHz
8 MHz
Flash
RAM
128
Kb
128
Kb
16
Kb
16
Kb
32
Kb
32
Kb
32
Kb
64
Kb
64
Kb
16
Kb
16
Kb
1 Kb
Flash
RAM
32
Kb
2 Kb
1 Kb
2 Kb
2 Kb
2.5
Kb
4 Kb
4 Kb
OpenEnergyMonitor
ID
Name
Platform
emonpi
OpenEnergyMonitor
emonPi
Atmel
AVR
Debug
Microcontroller
ATMEGA328P
Frequency
16 MHz
PanStamp
ID
panStampAVR
Name
PanStamp AVR
Platform
Atmel AVR
Debug
Microcontroller
ATMEGA328P
Frequency
8 MHz
Flash
32 Kb
RAM
2 Kb
Flash
256 Kb
RAM
32 Kb
Pinoccio
ID
pinoccio
Name
Pinoccio Scout
Platform
Atmel AVR
Debug
Microcontroller
ATMEGA256RFR2
Frequency
16 MHz
Pololu Corporation
ID
Name
Platform
a-star32U4
Pololu A-Star
32U4
Atmel
AVR
1.8. Development Platforms
Debug
Microcontroller
ATMEGA32U4
Frequency
16 MHz
Flash
RAM
32
Kb
2.5
Kb
191
PlatformIO Documentation, Release 3.4.1
Punch Through
ID
Name
Platform
LightBlue
Bean
lightblue-beanplus LightBlue
Bean+
Debug
Microcontroller
ATMEGA328P
ATMEGA328P
Atmel
AVR
Atmel
AVR
lightblue-bean
Frequency
8 MHz
16 MHz
Flash
RAM
32
Kb
32
Kb
2 Kb
2 Kb
Quirkbot
ID
quirkbot
Name
Quirkbot
Platform
Atmel AVR
Debug
Microcontroller
ATMEGA32U4
Frequency
8 MHz
Flash
32 Kb
RAM
2.5 Kb
RedBearLab
ID
Name
blend
RedBearLab Blend
blendmicro16
RedBearLab Blend Micro
3.3V/16MHz (overclock)
blendmicro8RedBearLab Blend Micro
3.3V/8MHz
Platform
Atmel
AVR
Atmel
AVR
Atmel
AVR
Debug
Microcontroller
ATMEGA32U4
ATMEGA32U4
ATMEGA32U4
Frequency
16 MHz
16 MHz
8 MHz
Flash RAM
32
Kb
32
Kb
32
Kb
2.5
Kb
2.5
Kb
2.5
Kb
RepRap
ID
Name
Platform
reprap_rambo
RepRap
RAMBo
Atmel
AVR
ID
Name
Platform
sodaq_galora
sodaq_mbili
SODAQ
GaLoRa
SODAQ Mbili
sodaq_moja
SODAQ Moja
sodaq_ndogo
SODAQ Ndogo
sodaq_tatu
SODAQ Tatu
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Debug
Microcontroller
ATMEGA2560
Frequency
16 MHz
Flash
RAM
256
Kb
8 Kb
Microcontroller
ATMEGA1284P
ATMEGA1284P
ATMEGA328P
Frequency
8 MHz
Flash
RAM
128
Kb
128
Kb
32 Kb
16
Kb
16
Kb
2 Kb
ATMEGA1284P
ATMEGA1284P
8 MHz
128
Kb
128
Kb
16
Kb
16
Kb
SODAQ
192
Debug
8 MHz
8 MHz
8 MHz
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Sanguino
ID
Name
sanguino_atmega1284_8m
Sanguino ATmega1284p (8MHz)
sanguino_atmega1284p
Sanguino ATmega1284p
(16MHz)
sanguino_atmega644
Sanguino ATmega644 or
ATmega644A (16 MHz)
sanguino_atmega644_8m
Sanguino ATmega644 or
ATmega644A (8 MHz)
sanguino_atmega644p
Sanguino ATmega644P or
ATmega644PA (16 MHz)
sanguino_atmega644p_8m
Sanguino ATmega644P or
ATmega644PA (8 MHz)
Platform
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Debug
MicroFrecontroller quency
AT8 MHz
MEGA1284P
AT16
MEGA1284PMHz
AT16
MEGA644 MHz
AT8 MHz
MEGA644
AT16
MEGA644P MHz
AT8 MHz
MEGA644P
Flash RAM
128
Kb
128
Kb
64
Kb
64
Kb
64
Kb
64
Kb
16
Kb
16
Kb
4
Kb
4
Kb
4
Kb
4
Kb
SparkFun
ID
Name
sparkfun_digitalsandbox
SparkFun Digital
Sandbox
sparkfun_fiov3
SparkFun Fio V3
3.3V/8MHz
sparkfun_makeymakey
SparkFun Makey Makey
sparkfun_megamini SparkFun Mega Pro Mini
3.3V
sparkfun_megapro16MHz
SparkFun Mega Pro
5V/16MHz
sparkfun_megapro8MHz
SparkFun Mega Pro
3.3V/8MHz
sparkfun_promicro16
SparkFun Pro Micro
5V/16MHz
sparkfun_promicro8SparkFun Pro Micro
3.3V/8MHz
sparkfun_qduinomini
SparkFun Qduino Mini
sparkfun_redboard SparkFun RedBoard
sparkfun_satmega128rfa1
SparkFun
ATmega128RFA1 Dev
Board
sparkfun_serial7seg
SparkFun Serial
7-Segment Display
uview
SparkFun MicroView
1.8. Development Platforms
Platform
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Debug
MicroconFretroller
quency
AT8 MHz
MEGA328P
AT8 MHz
MEGA32U4
AT16
MEGA32U4 MHz
AT8 MHz
MEGA2560
AT16
MEGA2560
MHz
AT8 MHz
MEGA2560
AT16
MEGA32U4 MHz
AT8 MHz
MEGA32U4
AT8 MHz
MEGA32U4
AT16
MEGA328P
MHz
AT16
MEGA128RFA1MHz
Flash RAM
32
Kb
32
Kb
32
Kb
256
Kb
256
Kb
256
Kb
32
Kb
32
Kb
32
Kb
32
Kb
16
Kb
2 Kb
ATMEGA328P
ATMEGA328P
32
Kb
32
Kb
2 Kb
8 MHz
16
MHz
2.5
Kb
2.5
Kb
8 Kb
8 Kb
8 Kb
2.5
Kb
2.5
Kb
2.5
Kb
2 Kb
124
Kb
2 Kb
193
PlatformIO Documentation, Release 3.4.1
The Things Network
ID
Name
Platform
the_things_uno The Things
Uno
Debug
Atmel
AVR
Microcontroller
ATMEGA32U4
Frequency
16 MHz
Flash
RAM
32
Kb
2.5
Kb
TinyCircuits
ID
Name
Platform
Atmel
AVR
Atmel
AVR
tinyduino TinyCircuits TinyDuino
Processor Board
tinylily TinyCircuits TinyLily Mini
Processor
Debug
Microcontroller
ATMEGA328P
ATMEGA328P
Frequency
8 MHz
Flash RAM
32
Kb
32
Kb
8 MHz
2
Kb
2
Kb
Wicked Device
ID
Name
Platform
wildfirev2 Wicked Device WildFire
V2
wildfirev3 Wicked Device WildFire
V3
Debug
Atmel
AVR
Atmel
AVR
Microcontroller
ATMEGA1284P
ATMEGA1284P
Frequency
16 MHz
16 MHz
Flash
RAM
128
Kb
128
Kb
16
Kb
16
Kb
makerlab.mx
ID
altair
Name
Altair
Platform
Atmel AVR
Debug
Microcontroller
ATMEGA256RFR2
Frequency
16 MHz
Flash
256 Kb
RAM
32 Kb
nicai-systems
ID
Name
bob3
nicai-systems BOB3 coding bot
nibo2
nicai-systems NIBO 2 robot
nibobee
nicai-systems NIBObee robot
nibobee_1284 nicai-systems NIBObee robot with
Tuning Kit
niboburger
nicai-systems NIBO burger robot
niboburger_1284
nicai-systems NIBO burger robot
with Tuning Kit
194
Platform
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Debug
Microcontroller
ATMEGA88
ATMEGA128
ATMEGA16
ATMEGA1284P
ATMEGA16
ATMEGA1284P
Frequency
8 MHz
Flash RAM
16
MHz
15
MHz
20
MHz
15
MHz
20
MHz
128
Kb
16
Kb
128
Kb
16
Kb
128
Kb
8 Kb
1
Kb
4
Kb
1
Kb
16
Kb
1
Kb
16
Kb
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
ubIQio
ID
ardhat
Name
ubIQio Ardhat
Platform
Atmel AVR
Debug
Microcontroller
ATMEGA328P
Frequency
16 MHz
Flash
32 Kb
RAM
2 Kb
Upload using Programmer
To upload firmware using programmer you need to use program target instead upload for platformio run
--target command. For example, platformio run -t program.
Configuration for the programmers:
• AVR ISP
[env:myenv]
platform = atmelavr
framework = arduino
upload_protocol = stk500v1
upload_flags = -P$UPLOAD_PORT
; edit this line with valid upload port
upload_port = SERIAL_PORT_HERE
• AVRISP mkII
[env:myenv]
platform = atmelavr
framework = arduino
upload_protocol = stk500v2
upload_flags = -Pusb
• USBtinyISP
[env:myenv]
platform = atmelavr
framework = arduino
upload_protocol = usbtiny
• ArduinoISP
[env:myenv]
platform = atmelavr
framework = arduino
upload_protocol = arduinoisp
• USBasp
[env:myenv]
platform = atmelavr
framework = arduino
upload_protocol = usbasp
upload_flags = -Pusb
• Parallel Programmer
1.8. Development Platforms
195
PlatformIO Documentation, Release 3.4.1
[env:myenv]
platform = atmelavr
framework = arduino
upload_protocol = dapa
upload_flags = -F
• Arduino as ISP
[env:myenv]
platform = atmelavr
framework = arduino
upload_protocol = stk500v1
upload_flags = -P$UPLOAD_PORT -b$UPLOAD_SPEED
; edit these lines
upload_port = SERIAL_PORT_HERE
upload_speed = 19200
Upload EEPROM data
To upload EEPROM data (from EEMEM directive) you need to use uploadeep target instead upload for
platformio run --target command. For example, platformio run -t uploadeep.
Fuses
PlatformIO has built-in target named fuses for setting fuse bits. The default fuse bits are predefined in board manifest
file in fuses section. For example, Arduino Uno Fuses.
To set fuse bits you need to use target fuses for platformio run --target command.
Custom Fuses
You can specify custom fuse bits. Please create custom extra_scripts and override default “fuses” command:
platformio.ini:
[env:custom_fuses]
platform = atmelavr
extra_scripts = extra_script.py
extra_script.py:
Import('env')
env.Replace(FUSESCMD="avrdude $UPLOADERFLAGS -e -Ulock:w:0x3F:m -Uhfuse:w:0xDE:m ˓→Uefuse:w:0x05:m -Ulfuse:w:0xFF:m")
Articles
• Dec 01, 2015 - Michał Seroczyński - Push Notification from Arduino Yún with motion sensor
• Nov 29, 2015 - Keith Hughes - Using PlatformIO for Embedded Projects
• Nov 22, 2015 - Michał Seroczyński - Using PlatformIO to get started with Arduino in CLion IDE
196
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
• Nov 09, 2015 - ÁLvaro García Gómez - Programar con Arduino “The good way” (Programming with Arduino
“The good way”, Spanish)
• Oct 18, 2015 - Nico Coetzee - First Arduino I2C Experience with PlatformIO
• Oct 10, 2015 - Floyd Hilton - Programming Arduino with Atom
• June 20, 2014 - Ivan Kravets, Ph.D. - Building and debugging Atmel AVR (Arduino-based) project using
Eclipse IDE+PlatformIO
See more Articles about us.
Examples
All project examples are located in PlatformIO repository Examples for Atmel AVR platform.
• Wiring Blink
• Arduino with external libraries
• Arduino with internal libraries
• Project uses source file name for “src” directory (Arduino project structure)
• Atmel AVR Native blink
• Digitstump Mouse
• Engduino magnetometer
• PanStamp blink
Atmel SAM
platform = atmelsam
Atmel | SMART offers Flash- based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4
architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix.
For more detailed information please visit vendor site.
Contents
• Packages
• Frameworks
• Boards
– Adafruit
– Arduino
– Atmel
– Digistump
– SODAQ
– SainSmart
– SparkFun
1.8. Development Platforms
197
PlatformIO Documentation, Release 3.4.1
Packages
Name
framework-arduinosam
framework-mbed
framework-simba
tool-avrdude
tool-bossac
tool-openocd
toolchain-gccarmnoneeabi
Description
Arduino Wiring-based Framework (SAM Core, 1.6)
mbed Framework
Simba Framework
AVRDUDE
BOSSA CLI
OpenOCD
gcc-arm-embedded
Warning: Linux Users:
• Install “udev” rules file 99-platformio-udev.rules (an instruction is located inside a file).
• Raspberry Pi users, please read this article Enable serial port on Raspberry Pi.
Windows Users:
Please check that you have a correctly installed USB driver from board manufacturer
Frameworks
Name Description
ArArduino Wiring-based Framework allows writing cross-platform software to control devices attached to a
duino wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical
experiences.
mbed The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be
intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM
CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and
Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built
on top of the SDK by the mbed Developer Community.
Simba Simba is an RTOS and build framework. It aims to make embedded programming easy and portable.
Boards
Note:
• You can list pre-configured boards by platformio boards command or PlatformIO Boards Explorer
• For more detailed board information please scroll tables below by horizontal.
198
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Adafruit
ID
Name
Platform
Atmel
SAM
Atmel
SAM
Atmel
SAM
Atmel
SAM
adafruit_circuitplayground_m0
Adafruit Circuit
Playground Express
adafruit_feather_m0 Adafruit Feather M0
adafruit_feather_m0_express
Adafruit Feather M0
Express
adafruit_metro_m0
Adafruit Metro M0
Expresss
Debug
Yes
Yes
Yes
MicroFrecontroller quency
SAMD21G18A
48
MHz
SAMD21G18A
48
MHz
SAMD21G18A
48
MHz
SAMD21G18A
48
MHz
Flash RAM
256
Kb
256
Kb
256
Kb
256
Kb
32
Kb
32
Kb
32
Kb
32
Kb
Flash
RAM
512
Kb
512
Kb
256
Kb
256
Kb
256
Kb
256
Kb
256
Kb
256
Kb
256
Kb
256
Kb
256
Kb
32
Kb
32
Kb
32
Kb
32
Kb
32
Kb
32
Kb
32
Kb
32
Kb
32
Kb
32
Kb
32
Kb
Arduino
ID
Name
due
Arduino Due (Programming Port)
dueUSB
Arduino Due (USB Native Port)
mkr1000USB Arduino MKR1000
mkrfox1200 Arduino MKRFox1200
mkrzero
Arduino MKRZero
mzeroUSB
Arduino M0
Arduino M0 Pro
(Programming/Debug Port)
mzeroproUSBArduino M0 Pro (Native USB
Port)
tian
Arduino Tian
mzeropro
zero
zeroUSB
Arduino Zero
(Programming/Debug Port)
Arduino Zero (USB Native Port)
1.8. Development Platforms
Platform
Atmel
SAM
Atmel
SAM
Atmel
SAM
Atmel
SAM
Atmel
SAM
Atmel
SAM
Atmel
SAM
Atmel
SAM
Atmel
SAM
Atmel
SAM
Atmel
SAM
Debug
MicroconFretroller
quency
AT91SAM3X8E84 MHz
AT91SAM3X8E84 MHz
Yes
SAMD21G18A48 MHz
SAMD21G18A48 MHz
SAMD21G18A48 MHz
Yes
SAMD21G18A48 MHz
Yes
SAMD21G18A48 MHz
SAMD21G18A48 MHz
SAMD21G18A48 MHz
Yes
SAMD21G18A48 MHz
SAMD21G18A48 MHz
199
PlatformIO Documentation, Release 3.4.1
Atmel
ID
Name
Platform
Atmel
SAMD21-XPRO
samd21g18a
Atmel
ATSAMW25-XPRO
saml21_xpro_bAtmel
SAML21-XPRO-B
samr21_xpro Atmel
ATSAMR21-XPRO
samd21_xpro
Debug
Yes
Atmel
SAM
Atmel
SAM
Atmel
SAM
Atmel
SAM
Microcontroller
ATSAMD21J18A
ATSAMD21G18A
ATSAML21J18B
ATSAMR21G18A
Yes
Yes
Yes
Frequency
48 MHz
48 MHz
48 MHz
48 MHz
Flash
RAM
256
Kb
256
Kb
256
Kb
256
Kb
32
Kb
32
Kb
32
Kb
32
Kb
Digistump
ID
digix
Name
Digistump DigiX
Platform
Atmel SAM
Debug
Microcontroller
AT91SAM3X8E
Frequency
84 MHz
Flash
512 Kb
RAM
28 Kb
SODAQ
ID
Name
sodaq_autonomo SODAQ
Autonomo
sodaq_explorer SODAQ
ExpLoRer
sodaq_one
SODAQ ONE
Platform
Debug
Atmel
SAM
Atmel
SAM
Atmel
SAM
Microcontroller
SAMD21J18A
Frequency
48 MHz
SAMD21J18A
48 MHz
SAMD21G18A 48 MHz
Flash
RAM
256
Kb
256
Kb
256
Kb
32
Kb
32
Kb
32
Kb
SainSmart
ID
Name
SainSmart Due
(Programming Port)
sainSmartDueUSB
SainSmart Due (USB
Native Port)
sainSmartDue
Platform
Atmel
SAM
Atmel
SAM
Debug
MicroconFretroller
quency
AT91SAM3X8E84 MHz
AT91SAM3X8E84 MHz
Flash
RAM
512
Kb
512
Kb
32
Kb
32
Kb
SparkFun
ID
Name
sparkfun_samd21_dev_usb
SparkFun SAMD21 Dev
Breakout
sparkfun_samd21_mini_usb
SparkFun SAMD21
Mini Breakout
200
Platform
Atmel
SAM
Atmel
SAM
Debug
Yes
Microcon- Fretroller
quency
SAMD21G18A48 MHz
Yes
SAMD21G18A48 MHz
Flash RAM
256
Kb
256
Kb
32
Kb
32
Kb
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Espressif 32
platform = espressif32
Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and
Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications.
For more detailed information please visit vendor site.
Contents
• Packages
• Frameworks
• Boards
– Adafruit
– Aiyarafun
– April Brother
– DFRobot
– DOIT
– ESP32vn
– Electronic SweetPeas
– Espressif
– Hornbill
– IntoRobot
– MakerAsia
– NodeMCU
– Noduino
– OLIMEX
– Onehorse
– SparkFun Electronics
– ThaiEasyElec
– WEMOS
– Widora
• Over-the-Air (OTA) update
– Authentication and upload options
• Using Arduino Framework with Staging version
• Examples
1.8. Development Platforms
201
PlatformIO Documentation, Release 3.4.1
Packages
Name
framework-arduinoespressif32
framework-espidf
framework-pumbaa
framework-simba
tool-espotapy
tool-esptoolpy
toolchain-xtensa32
Description
Arduino Wiring-based Framework (ESP32 Core)
Espressif IoT Development Framework
Pumbaa Framework
Simba Framework
ESP8266 OTA utility
Espressif ROM Bootloader utility
xtensa32-gcc
Warning: Linux Users:
• Install “udev” rules file 99-platformio-udev.rules (an instruction is located inside a file).
• Raspberry Pi users, please read this article Enable serial port on Raspberry Pi.
Windows Users:
Please check that you have a correctly installed USB driver from board manufacturer
Frameworks
Name Description
ArArduino Wiring-based Framework allows writing cross-platform software to control devices attached to a
duino wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or
physical experiences.
ESPEspressif IoT Development Framework. Official development framework for ESP32.
IDF
Pum- Pumbaa is Python on top of Simba. The implementation is a port of MicroPython, designed for
baa
embedded devices with limited amount of RAM and code memory.
Simba Simba is an RTOS and build framework. It aims to make embedded programming easy and portable.
Boards
Note:
• You can list pre-configured boards by platformio boards command or PlatformIO Boards Explorer
• For more detailed board information please scroll tables below by horizontal.
Adafruit
ID
Name
featheresp32 Adafruit ESP32
Feather
202
Platform
Espressif
32
Debug
Microcontroller
ESP32
Frequency
240 MHz
Flash
RAM
1280
Kb
288
Kb
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Aiyarafun
ID
node32s
Name
Node32s
Platform
Espressif 32
Debug
Microcontroller
ESP32
Frequency
240 MHz
Flash
1280 Kb
RAM
288 Kb
April Brother
ID
Name
Platform
espea32
April Brother
ESPea32
Espressif
32
Debug
Microcontroller
ESP32
Frequency
240 MHz
Flash
RAM
1280
Kb
288
Kb
Frequency
240 MHz
Flash
RAM
1280
Kb
288
Kb
DFRobot
ID
Name
firebeetle32 FireBeetleESP32
Platform
Debug
Espressif
32
Microcontroller
ESP32
DOIT
ID
Name
esp32doit-devkit-v1
DOIT ESP32
DEVKIT V1
Platform
Espressif
32
Debug
Microcontroller
ESP32
Frequency
240
MHz
Flash
RAM
1280
Kb
288
Kb
ESP32vn
ID
Name
esp32vn-iot-uno ESP32vn IoT
Uno
Platform
Debug
Espressif
32
Microcontroller
ESP32
Frequency
240 MHz
Flash
RAM
1024
Kb
288
Kb
Microcontroller
ESP32
Frequency
240 MHz
Flash
RAM
1280
Kb
288
Kb
Frequency
240 MHz
Flash
RAM
1280
Kb
288
Kb
Electronic SweetPeas
ID
Name
esp320 Electronic SweetPeas
ESP320
Platform
Debug
Espressif
32
Espressif
ID
Name
Platform
esp32dev Espressif ESP32 Dev
Module
Espressif
32
1.8. Development Platforms
Debug
Microcontroller
ESP32
203
PlatformIO Documentation, Release 3.4.1
Hornbill
ID
Name
Platform
Hornbill ESP32
Dev
hornbill32minimaHornbill ESP32
Minima
hornbill32dev
Debug
Espressif
32
Espressif
32
Microcontroller
ESP32
Frequency
240 MHz
ESP32
240 MHz
Flash
RAM
1280
Kb
1280
Kb
288
Kb
288
Kb
IntoRobot
ID
intorobot
Name
IntoRobot Fig
Platform
Espressif 32
Debug
Microcontroller
ESP32
Frequency
240 MHz
Flash
1280 Kb
RAM
288 Kb
MakerAsia
ID
nano32
Name
MakerAsia Nano32
Platform
Espressif 32
Debug
Microcontroller
ESP32
Frequency
240 MHz
Flash
1280 Kb
RAM
288 Kb
Frequency
240 MHz
Flash
RAM
1280
Kb
288
Kb
Flash
RAM
1280 Kb
288 Kb
Flash
RAM
1280
Kb
1280
Kb
288
Kb
288
Kb
NodeMCU
ID
Name
Platform
nodemcu-32s
NodeMCU32S
Espressif
32
Debug
Microcontroller
ESP32
Noduino
ID
Name
Platform
quantum
Noduino
Quantum
Espressif
32
Debug
Microcontroller
ESP32
Frequency
240 MHz
OLIMEX
ID
Name
Platform
esp32-evb
OLIMEX ESP32-EVB
Espressif
32
Espressif
32
esp32-gatewayOLIMEX
ESP32-GATEWAY
204
Debug
Microcontroller
ESP32
Frequency
240 MHz
ESP32
240 MHz
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Onehorse
ID
Name
Platform
onehorse32devOnehorse ESP32 Dev
Module
Debug
Espressif
32
Microcontroller
ESP32
Frequency
240 MHz
Flash
RAM
1280
Kb
288
Kb
SparkFun Electronics
ID
Name
Platform
esp32thing SparkFun ESP32
Thing
Debug
Microcontroller
ESP32
Espressif
32
Frequency
240 MHz
Flash
RAM
1280
Kb
288
Kb
ThaiEasyElec
ID
espino32
Name
ESPino32
Platform
Espressif 32
Debug
Microcontroller
ESP32
Frequency
240 MHz
Flash
1280 Kb
RAM
288 Kb
WEMOS
ID
Name
Platform
lolin32
WEMOS
LOLIN32
Espressif
32
Debug
Microcontroller
ESP32
Frequency
240 MHz
Flash
RAM
1280
Kb
288
Kb
Flash
1280 Kb
RAM
288 Kb
Widora
ID
widora-air
Name
Widora AIR
Platform
Espressif 32
Debug
Microcontroller
ESP32
Frequency
240 MHz
Over-the-Air (OTA) update
There are 2 options:
• Directly specify platformio run --upload-port in command line
platformio run --target upload --upload-port IP_ADDRESS_HERE or mDNS_NAME.local
• Specify upload_port option in Project Configuration File platformio.ini
[env:myenv]
upload_port = IP_ADDRESS_HERE or mDNS_NAME.local
For example,
• platformio run -t upload --upload-port 192.168.0.255
• platformio run -t upload --upload-port myesp8266.local
1.8. Development Platforms
205
PlatformIO Documentation, Release 3.4.1
Authentication and upload options
You can pass additional options/flags to OTA uploader using upload_flags option in Project Configuration File
platformio.ini
[env:myenv]
upload_flags = --port=8266
Available flags
• --port=ESP_PORT ESP8266 OTA Port. Default 8266
• --auth=AUTH Set authentication password
• --spiffs Use this option to transmit a SPIFFS image and do not flash the module
For the full list with available options please run
~/.platformio/packages/tool-espotapy/espota.py -h
Usage: espota.py [options]
Transmit image over the air to the esp8266 module with OTA support.
Options:
-h, --help
show this help message and exit
Destination:
-i ESP_IP, --ip=ESP_IP
ESP8266 IP Address.
-p ESP_PORT, --port=ESP_PORT
ESP8266 ota Port. Default 8266
Authentication:
-a AUTH, --auth=AUTH
Set authentication password.
Image:
-f FILE, --file=FILE
-s, --spiffs
Output:
-d, --debug
-r, --progress
Image file.
Use this option to transmit a SPIFFS image and do not
flash the module.
Show debug output. And override loglevel with debug.
Show progress output. Does not work for ArduinoIDE
Using Arduino Framework with Staging version
PlatformIO will install the latest Arduino Core for ESP32 from https://github.com/espressif/arduino-esp32. The Git
should be installed in a system. To update Arduino Core to the latest revision, please use platformio platform update
command.
1. Install Espressif 32 (Stage) development platform
platformio platform install https://github.com/platformio/platform˓→espressif32.git#feature/stage
206
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
2. Set platform to espressif32_stage in Project Configuration File platformio.ini. For example,
[env:esp32dev]
platform = espressif32_stage
board = esp32dev
framework = arduino
3. Try to build project
4. If you see build errors, then try to build this project using the same stage with Arduino IDE
5. If it works with Arduino IDE but doesn’t work with PlatformIO, then please file new issue with attached information:
• test project/files
• detailed log of build process from Arduino IDE (please copy it from console to http://pastebin.com)
• detailed log of build process from PlatformIO Build System ( please copy it from console to http://pastebin.
com)
Examples
All project examples are located in PlatformIO repository Examples for Espressif 32 platform.
• Arduino Blink
• Arduino WiFiScan
• ESP-IDF Hello World
• ESP-IDF HTTP Request
Espressif 8266
platform = espressif8266
Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and
Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications.
For more detailed information please visit vendor site.
Contents
• Packages
• Frameworks
• Boards
– Adafruit
– Doit
– DycodeX
– ESPert
– ESPino
– Espressif
1.8. Development Platforms
207
PlatformIO Documentation, Release 3.4.1
– NodeMCU
– Olimex
– SparkFun
– SweetPea
– ThaiEasyElec
– WEMOS
• Custom CPU Frequency
• Custom FLASH Frequency
• Custom FLASH Mode
• Custom Reset Method
• Custom Flash Size
• Custom Upload Speed
• Uploading files to file system SPIFFS
• Over-the-Air (OTA) update
– Authentication and upload options
– Demo
• Using Arduino Framework with Staging version
• Articles
• Examples
Packages
Name
framework-arduinoespressif8266
framework-esp8266-rtos-sdk
framework-simba
sdk-esp8266
tool-espotapy
tool-esptool
tool-mkspiffs
toolchain-xtensa
Description
Arduino Wiring-based Framework (ESP8266 Core)
ESP8266 SDK based on FreeRTOS
Simba Framework
ESP8266 SDK
ESP8266 OTA utility
esptool-ck
Tool to build and unpack SPIFFS images
xtensa-gcc
Warning: Linux Users:
• Install “udev” rules file 99-platformio-udev.rules (an instruction is located inside a file).
• Raspberry Pi users, please read this article Enable serial port on Raspberry Pi.
Windows Users:
Please check that you have a correctly installed USB driver from board manufacturer
208
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Frameworks
Name
Arduino
ESP8266
RTOS SDK
Simba
Description
Arduino Wiring-based Framework allows writing cross-platform software to control devices
attached to a wide range of Arduino boards to create all kinds of creative coding, interactive
objects, spaces or physical experiences.
ESP8266 SDK based on FreeRTOS, a truly free professional grade RTOS for microcontrollers
Simba is an RTOS and build framework. It aims to make embedded programming easy and
portable.
Boards
Note:
• You can list pre-configured boards by platformio boards command or PlatformIO Boards Explorer
• For more detailed board information please scroll tables below by horizontal.
Adafruit
ID
Name
Platform
huzzah Adafruit HUZZAH
ESP8266
Espressif
8266
Debug
Microcontroller
ESP8266
Frequency
80 MHz
Flash
RAM
4096
Kb
80
Kb
Microcontroller
ESP8266
Frequency
80 MHz
Flash
RAM
4096
Kb
80
Kb
Microcontroller
ESP8266
Frequency
80 MHz
Flash
4096 Kb
RAM
80 Kb
Doit
ID
Name
Platform
espduino ESPDuino (ESP-13
Module)
Espressif
8266
Debug
DycodeX
ID
espectro
Name
ESPectro Core
Platform
Espressif 8266
Debug
ESPert
ID
Name
espresso_lite_v1ESPresso Lite
1.0
espresso_lite_v2ESPresso Lite
2.0
1.8. Development Platforms
Platform
Espressif
8266
Espressif
8266
Debug
Microcontroller
ESP8266
Frequency
80 MHz
ESP8266
80 MHz
Flash
RAM
4096
Kb
4096
Kb
80
Kb
80
Kb
209
PlatformIO Documentation, Release 3.4.1
ESPino
ID
espino
Name
ESPino
Platform
Espressif 8266
Debug
Microcontroller
ESP8266
Frequency
80 MHz
Flash
4096 Kb
RAM
80 Kb
Espressif
ID
Name
Platform
esp01
esp12e
Espressif Generic ESP8266
ESP-01 512k
Espressif Generic ESP8266
ESP-01 1M
Espressif Generic ESP8266
ESP-07
Espressif ESP8266 ESP-12E
esp8285
Generic ESP8285 Module
Espressif
8266
Espressif
8266
Espressif
8266
Espressif
8266
Espressif
8266
Espressif
8266
Espressif
8266
Espressif
8266
Espressif
8266
esp01_1m
esp07
esp_wroom_02
ESP-WROOM-02
phoenix_v1 Phoenix 1.0
phoenix_v2 Phoenix 2.0
wifinfo
WifInfo
Debug
Microcontroller
ESP8266
Frequency
80 MHz
ESP8266
80 MHz
ESP8266
80 MHz
ESP8266
80 MHz
ESP8266
80 MHz
ESP8266
80 MHz
ESP8266
80 MHz
ESP8266
80 MHz
ESP8266
80 MHz
Flash
RAM
512
Kb
1024
Kb
4096
Kb
4096
Kb
448
Kb
4096
Kb
1024
Kb
1024
Kb
448
Kb
80
Kb
80
Kb
80
Kb
80
Kb
80
Kb
80
Kb
80
Kb
80
Kb
80
Kb
NodeMCU
ID
Name
NodeMCU 0.9 (ESP-12
Module)
nodemcuv2 NodeMCU 1.0 (ESP-12E
Module)
nodemcu
Platform
Debug
Espressif
8266
Espressif
8266
Microcontroller
ESP8266
Frequency
80 MHz
ESP8266
80 MHz
Microcontroller
ESP8266
Frequency
80 MHz
Flash
RAM
4096
Kb
4096
Kb
80
Kb
80
Kb
Flash
RAM
2048
Kb
80
Kb
Olimex
ID
Name
modwifi Olimex
MOD-WIFI-ESP8266(-DEV)
210
Platform
Espressif
8266
Debug
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
SparkFun
ID
Name
Platform
sparkfunBlynkSparkFun Blynk Board
SparkFun ESP8266
Thing
SparkFun ESP8266
Thing Dev
thing
thingdev
Debug
Espressif
8266
Espressif
8266
Espressif
8266
Microcontroller
ESP8266
Frequency
80 MHz
ESP8266
80 MHz
ESP8266
80 MHz
Flash
RAM
4096
Kb
512
Kb
512
Kb
80
Kb
80
Kb
80
Kb
SweetPea
ID
Name
Platform
esp210
SweetPea
ESP-210
Espressif
8266
Debug
Microcontroller
ESP8266
Frequency
80 MHz
Flash
RAM
4096
Kb
80 Kb
ThaiEasyElec
ID
Name
espinotee ThaiEasyElec
ESPino
Platform
Debug
Espressif
8266
Microcontroller
ESP8266
Frequency
80 MHz
Flash
RAM
4096
Kb
80
Kb
Flash
RAM
4096
Kb
4096
Kb
960 Kb
80
Kb
80
Kb
80
Kb
WEMOS
ID
Name
Platform
d1
WEMOS D1
(Retired)
WEMOS D1 mini
Espressif
8266
Espressif
8266
Espressif
8266
d1_mini
d1_mini_lite WEMOS D1 mini
Lite
Debug
Microcontroller
ESP8266
Frequency
80 MHz
ESP8266
80 MHz
ESP8266
80 MHz
Custom CPU Frequency
See board_f_cpu option from Project Configuration File platformio.ini
[env:myenv]
; set frequency to 160MHz
board_f_cpu = 160000000L
Custom FLASH Frequency
See board_f_flash option from Project Configuration File platformio.ini. Possible values:
1.8. Development Platforms
211
PlatformIO Documentation, Release 3.4.1
• 20000000L
• 26000000L
• 40000000L
• 80000000L
[env:myenv]
; set frequency to 80MHz
board_f_flash = 80000000L
Custom FLASH Mode
Flash chip interface mode. This parameter is stored in the binary image header, along with the flash size and flash
frequency. The ROM bootloader in the ESP chip uses the value of these parameters in order to know how to talk to
the flash chip.
See board_flash_mode option from Project Configuration File platformio.ini. Possible values:
• qio
• qout
• dio
• dout
[env:myenv]
board_flash_mode = qio
Custom Reset Method
You can set custom reset method using upload_resetmethod option from Project Configuration File platformio.ini.
The possible values are:
• ck - RTS controls RESET or CH_PD, DTR controls GPIO0
• wifio - TXD controls GPIO0 via PNP transistor and DTR controls RESET via a capacitor
• nodemcu - GPIO0 and RESET controlled using two NPN transistors as in NodeMCU devkit.
See default reset methods per board.
[env:myenv]
upload_resetmethod = ck
Custom Flash Size
Warning: Please make sure to read ESP8266 Flash layout information first.
The list with preconfigured LD scripts is located in public repository platformio-pkg-ldscripts.
• esp8266.flash.512k0.ld 512K (no SPIFFS)
212
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
• esp8266.flash.512k64.ld 512K (64K SPIFFS)
• esp8266.flash.1m64.ld 1M (64K SPIFFS)
• esp8266.flash.1m128.ld 1M (128K SPIFFS)
• esp8266.flash.1m256.ld 1M (256K SPIFFS)
• esp8266.flash.1m512.ld 1M (512K SPIFFS)
• esp8266.flash.2m.ld 2M (1M SPIFFS)
• esp8266.flash.4m1m.ld 4M (1M SPIFFS)
• esp8266.flash.4m.ld 4M (3M SPIFFS)
To override default LD script please use build_flags from Project Configuration File platformio.ini.
[env:myenv]
build_flags = -Wl,-Tesp8266.flash.4m.ld
Custom Upload Speed
You can set custom upload speed using upload_speed option from Project Configuration File platformio.ini
[env:myenv]
upload_speed = 9600
Uploading files to file system SPIFFS
Warning: Please make sure to read ESP8266 Flash layout information first.
1. Initialize project platformio init (if you have not initialized yet)
2. Create data folder (it should be on the same level as src folder) and put files here. Also, you can specify own
location for data_dir
3. Run buildfs or uploadfs target using platformio run --target command.
To upload SPIFFS image using OTA update please specify upload_port / --upload-port as IP address or
mDNS host name (ending with the *.local). For the details please follow to Over-the-Air (OTA) update.
By default, will be used default LD Script for the board where is specified SPIFFS offsets (start, end, page, block).
You can override it using Custom Flash Size.
Active discussion is located in issue #382.
Over-the-Air (OTA) update
Firstly, please read What is OTA? How to use it?
There are 2 options:
• Directly specify platformio run --upload-port in command line
1.8. Development Platforms
213
PlatformIO Documentation, Release 3.4.1
platformio run --target upload --upload-port IP_ADDRESS_HERE or mDNS_NAME.local
• Specify upload_port option in Project Configuration File platformio.ini
[env:myenv]
upload_port = IP_ADDRESS_HERE or mDNS_NAME.local
For example,
• platformio run -t upload --upload-port 192.168.0.255
• platformio run -t upload --upload-port myesp8266.local
Authentication and upload options
You can pass additional options/flags to OTA uploader using upload_flags option in Project Configuration File
platformio.ini
[env:myenv]
upload_flags = --port=8266
Available flags
• --port=ESP_PORT ESP8266 OTA Port. Default 8266
• --auth=AUTH Set authentication password
• --spiffs Use this option to transmit a SPIFFS image and do not flash the module
For the full list with available options please run
~/.platformio/packages/tool-espotapy/espota.py -h
Usage: espota.py [options]
Transmit image over the air to the esp8266 module with OTA support.
Options:
-h, --help
show this help message and exit
Destination:
-i ESP_IP, --ip=ESP_IP
ESP8266 IP Address.
-p ESP_PORT, --port=ESP_PORT
ESP8266 ota Port. Default 8266
Authentication:
-a AUTH, --auth=AUTH
Set authentication password.
Image:
-f FILE, --file=FILE
-s, --spiffs
Output:
-d, --debug
-r, --progress
214
Image file.
Use this option to transmit a SPIFFS image and do not
flash the module.
Show debug output. And override loglevel with debug.
Show progress output. Does not work for ArduinoIDE
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Demo
Using Arduino Framework with Staging version
PlatformIO will install the latest Arduino Core for ESP8266 from https://github.com/esp8266/Arduino. The Git should
be installed in a system. To update Arduino Core to the latest revision, please use platformio platform update command.
1. Install Espressif 8266 (Stage) development platform
platformio platform install https://github.com/platformio/platform-espressif8266.
˓→git#feature/stage
2. Set platform to espressif8266_stage in Project Configuration File platformio.ini. For example,
[env:nodemcuv2]
platform = espressif8266_stage
board = nodemcuv2
framework = arduino
3. Try to build project
4. If you see build errors, then try to build this project using the same stage with Arduino IDE
5. If it works with Arduino IDE but doesn’t work with PlatformIO, please file new issue with attached information:
• test project/files
• detailed log of build process from Arduino IDE (please copy it from console to http://pastebin.com)
1.8. Development Platforms
215
PlatformIO Documentation, Release 3.4.1
• detailed log of build process from PlatformIO Build System ( please copy it from console to http://pastebin.
com)
Articles
• Jun 23, 2017 - Naresh Krish - Home Automation Using Wiscore, OpenHab and PlatformIO
• Jan 12, 2017 - Tiest van Gool - OTA: PlatformIO and ESP8266
• Sep 12, 2016 - Pedro Minatel - OTA – Como programar o ESP8266 pelo WiFi no platformIO (OTA programming for ESP8266 via Wi-Fi using PlatformIO, Portuguese)
• Sep 2, 2016 - Tinkerman Optimizing files for SPIFFS with Gulp
• Jul 15, 2016 - Jaime - ESP8266 Mobile Rick Roll Captive Portal
• Jun 13, 2016 - Daniel Eichhorn - New Weather Station Demo on Github
• Jun 3, 2016 - Daniel Eichhorn - ESP8266: Continuous Delivery Pipeline – Push To Production
• May 29, 2016 - Chris Synan - Reverse Engineer RF Remote Controller for IoT!
• May 22, 2016 - Pedro Minatel - Estação meteorológica com ESP8266 (Weather station with ESP8266, Portuguese)
• May 16, 2016 - Pedro Minatel - Controle remoto WiFi com ESP8266 (WiFi remote control using ESP8266,
Portuguese)
• May 08, 2016 - Radoslaw Bob - Touch controlled buzzer (Nodemcu ESP8266)
• Mar 07, 2016 - Joran Jessurun - Nieuwe wereld met PlatformIO (New world with PlatformIO, Dutch)
• Feb 25, 2016 - NutDIY - PlatformIO Blink On Nodemcu Dev Kit V1.0 (ESP 12-E)
• Feb 23, 2016 - Ptarmigan Labs - ESP8266 Over The Air updating – what are the options?
• Jan 16, 2016 - Dani Eichhorn - ESP8266 Arduino IDE Alternative: PlatformIO
• Dec 22, 2015 - Jan Penninkhof - Over-the-Air ESP8266 programming using PlatformIO
• Dec 01, 2015 - Tateno Yuichi - ESP8266 CUI (Develop a ESP8266 in CUI, Japanese)
See more Articles about us.
Examples
All project examples are located in PlatformIO repository Examples for Espressif 8266 platform.
• Native SDK
• WebServer
• WiFiScan
Freescale Kinetis
platform = freescalekinetis
Freescale Kinetis Microcontrollers is family of multiple hardware- and software-compatible ARM Cortex-M0+,
Cortex-M4 and Cortex-M7-based MCU series. Kinetis MCUs offer exceptional low-power performance, scalability and feature integration.
216
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
For more detailed information please visit vendor site.
Contents
• Packages
• Frameworks
• Boards
– Freescale
– MikroElektronika
Packages
Name
framework-mbed
tool-openocd
toolchain-gccarmnoneeabi
Description
mbed Framework
OpenOCD
gcc-arm-embedded
Warning: Linux Users:
• Install “udev” rules file 99-platformio-udev.rules (an instruction is located inside a file).
• Raspberry Pi users, please read this article Enable serial port on Raspberry Pi.
Windows Users:
Please check that you have a correctly installed USB driver from board manufacturer
Frameworks
Name Description
mbed The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be
intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM
CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and
Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built
on top of the SDK by the mbed Developer Community.
Boards
Note:
• You can list pre-configured boards by platformio boards command or PlatformIO Boards Explorer
• For more detailed board information please scroll tables below by horizontal.
1.8. Development Platforms
217
PlatformIO Documentation, Release 3.4.1
Freescale
ID
Name
Platform
IBMEthernetKit
Ethernet IoT Starter Kit
Freescale
Kinetis
Freescale
Kinetis
Freescale
Kinetis
Freescale
Kinetis
Freescale
Kinetis
Freescale
Kinetis
Freescale
Kinetis
Freescale
Kinetis
Freescale
Kinetis
Freescale
Kinetis
Freescale
Kinetis
frdm_k20d50mFreescale Kinetis
FRDM-K20D50M
frdm_k22f
Freescale Kinetis
FRDM-K22F
frdm_k64f
Freescale Kinetis
FRDM-K64F
frdm_k66f
Freescale Kinetis
FRDM-K66F
frdm_kl05z Freescale Kinetis
FRDM-KL05Z
frdm_kl25z Freescale Kinetis
FRDM-KL25Z
frdm_kl26z Freescale Kinetis
FRDM-KL26Z
frdm_kl27z Freescale Kinetis
FRDM-KL27Z
frdm_kl43z Freescale Kinetis
FRDM-KL43Z
frdm_kl46z Freescale Kinetis
FRDM-KL46Z
Debug
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
MicroconFretroller
quency
MK64FN1M0VLL12
120
MHz
MK20DX128VLH5
48
MHz
MK22FN512VLH12
120
MHz
MK64FN1M0VLL12
120
MHz
MK66FN2M0VMD18
180
MHz
MKL05Z32VFM448
MHz
MKL25Z128VLK448
MHz
MKL26Z128VLH448
MHz
MKL27Z64VLH4 48
MHz
MKL43Z256VLH448
MHz
MKL46Z256VLL448
MHz
Flash
RAM
1024
Kb
128
Kb
512
Kb
1024
Kb
2048
Kb
32
Kb
128
Kb
128
Kb
64
Kb
256
Kb
256
Kb
256
Kb
16
Kb
128
Kb
256
Kb
256
Kb
4 Kb
16
Kb
16
Kb
16
Kb
32
Kb
32
Kb
MikroElektronika
ID
Name
Platform
hexiwear
Hexiwear
Freescale
Kinetis
Debug
Yes
Microcontroller
Frequency
MK64FN1M0VDC12 120 MHz
Flash
RAM
1024
Kb
256
Kb
Intel ARC32
platform = intel_arc32
ARC embedded processors are a family of 32-bit CPUs that are widely used in SoC devices for storage, home, mobile,
automotive, and Internet of Things applications.
For more detailed information please visit vendor site.
Contents
• Packages
• Frameworks
• Boards
– Intel
218
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Packages
Name
framework-arduinointel
tool-arduino101load
toolchain-intelarc32
Description
Arduino Wiring-based Framework (Intel ARC Core)
Genuino101 uploader
GCC for Intel ARC
Warning: Linux Users:
• Install “udev” rules file 99-platformio-udev.rules (an instruction is located inside a file).
• Raspberry Pi users, please read this article Enable serial port on Raspberry Pi.
Windows Users:
Please check that you have a correctly installed USB driver from board manufacturer
Frameworks
Name Description
ArArduino Wiring-based Framework allows writing cross-platform software to control devices attached to a
duino wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical
experiences.
Boards
Note:
• You can list pre-configured boards by platformio boards command or PlatformIO Boards Explorer
• For more detailed board information please scroll tables below by horizontal.
Intel
ID
Name
genuino101 Arduino/Genuino
101
Platform
Intel
ARC32
Debug
Microcontroller
ARCV2EM
Frequency
32 MHz
Flash
RAM
192
Kb
80
Kb
Lattice iCE40
platform = lattice_ice40
The iCE40 family of ultra-low power, non-volatile FPGAs has five devices with densities ranging from 384 to 7680
Look-Up Tables (LUTs). In addition to LUT-based,low-cost programmable logic, these devices feature Embedded
Block RAM (EBR), Non-volatile Configuration Memory (NVCM) and Phase Locked Loops (PLLs). These features
allow the devices to be used in low-cost, high-volume consumer and system applications.
For more detailed information please visit vendor site.
1.8. Development Platforms
219
PlatformIO Documentation, Release 3.4.1
Contents
• Packages
• Boards
– FPGAwars
– Lattice
Packages
Name
toolchain-icestorm
toolchain-iverilog
Description
Tools for analyzing and creating bitstream files for FPGA IceStorm
Verilog simulation and synthesis tool
Warning: Linux Users:
• Install “udev” rules file 99-platformio-udev.rules (an instruction is located inside a file).
• Raspberry Pi users, please read this article Enable serial port on Raspberry Pi.
Windows Users:
Please check that you have a correctly installed USB driver from board manufacturer
Boards
Note:
• You can list pre-configured boards by platformio boards command or PlatformIO Boards Explorer
• For more detailed board information please scroll tables below by horizontal.
FPGAwars
ID
Name
icezum IceZUM Alhambra
FPGA
Platform
Debug
Microcontroller
ICE40-HX1KTQ144
Lattice
iCE40
Frequency
12 MHz
Flash
RAM
32
Kb
32
Kb
Lattice
ID
Name
icestick Lattice iCEstick FPGA
Evaluation Kit
220
Platform
Lattice
iCE40
Debug
Microcontroller
ICE40-HX1KTQ144
Frequency
12 MHz
Flash RAM
32
Kb
32
Kb
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Maxim 32
platform = maxim32
Maxim’s microcontrollers provide low-power, efficient, and secure solutions for challenging embedded applications.
Maxim’s processors embed cutting-edge technologies to secure data and intellectual property, proven analog circuitry
for real-world applications, and battery-conserving low power operation.
For more detailed information please visit vendor site.
Contents
• Packages
• Frameworks
• Boards
– Maxim
Packages
Name
framework-mbed
tool-openocd
toolchain-gccarmnoneeabi
Description
mbed Framework
OpenOCD
gcc-arm-embedded
Warning: Linux Users:
• Install “udev” rules file 99-platformio-udev.rules (an instruction is located inside a file).
• Raspberry Pi users, please read this article Enable serial port on Raspberry Pi.
Windows Users:
Please check that you have a correctly installed USB driver from board manufacturer
Frameworks
Name Description
mbed The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be
intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM
CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and
Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built
on top of the SDK by the mbed Developer Community.
Boards
Note:
• You can list pre-configured boards by platformio boards command or PlatformIO Boards Explorer
1.8. Development Platforms
221
PlatformIO Documentation, Release 3.4.1
• For more detailed board information please scroll tables below by horizontal.
Maxim
ID
Name
max32600mbed
Maxim ARM mbed Enabled Development
Platform for MAX32600
max32620hsp
Maxim Health Sensor Platform
max32630fthr
Maxim MAX32630FTHR Application
Platform
maxwsnenv Maxim Wireless Sensor Node
Demonstrator
Platform
Maxim
32
Maxim
32
Maxim
32
Maxim
32
Debug
MicroFreconquency
troller
MAX32600 24
MHz
MAX32620 96
MHz
MAX32630 96
MHz
MAX32610 24
MHz
Flash RAM
256
Kb
2048
Kb
2048
Kb
256
Kb
32
Kb
256
Kb
512
Kb
32
Kb
Microchip PIC32
platform = microchippic32
Microchip’s 32-bit portfolio with the MIPS microAptiv or M4K core offer high performance microcontrollers, and
all the tools needed to develop your embedded projects. PIC32 MCUs gives your application the processing power,
memory and peripherals your design needs!
For more detailed information please visit vendor site.
Contents
• Packages
• Frameworks
• Boards
– 4DSystems
– Digilent
– Fubarino
– MikroElektronika
– Olimex
– OpenBCI
– PONTECH
– SeeedStudio
– UBW32
– chipKIT
– element14
222
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Packages
Name
framework-arduinomicrochippic32
tool-pic32prog
toolchain-microchippic32
Description
Arduino Wiring-based Framework (PIC32 Core)
pic32prog
GCC for Microchip PIC32
Warning: Linux Users:
• Install “udev” rules file 99-platformio-udev.rules (an instruction is located inside a file).
• Raspberry Pi users, please read this article Enable serial port on Raspberry Pi.
Windows Users:
Please check that you have a correctly installed USB driver from board manufacturer
Frameworks
Name Description
ArArduino Wiring-based Framework allows writing cross-platform software to control devices attached to a
duino wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical
experiences.
Boards
Note:
• You can list pre-configured boards by platformio boards command or PlatformIO Boards Explorer
• For more detailed board information please scroll tables below by horizontal.
4DSystems
ID
Name
picadillo_35t4DSystems
PICadillo 35T
1.8. Development Platforms
Platform
Microchip
PIC32
Debug
MicroconFretroller
quency
32MX795F512L80 MHz
Flash
RAM
512
Kb
128
Kb
223
PlatformIO Documentation, Release 3.4.1
Digilent
ID
Name
Platform
cerebot32mx4 Digilent Cerebot
32MX4
cerebot32mx7 Digilent Cerebot
32MX7
chipkit_cmod Digilent chipKIT
Cmod
chipkit_dp32 Digilent chipKIT
DP32
chipkit_mx3 Digilent chipKIT
MX3
chipkit_pro_mx4
Digilent chipKIT
Pro MX4
chipkit_pro_mx7
Digilent chipKIT
Pro MX7
chipkit_uc32 Digilent chipKIT
uC32
chipkit_wf32 Digilent chipKIT
WF32
chipkit_wifireDigilent chipKIT
WiFire
mega_pic32
Digilent chipKIT
MAX32
openscope
Digilent OpenScope
Digilent chipKIT
UNO32
uno_pic32
Debug
Microchip
PIC32
Microchip
PIC32
Microchip
PIC32
Microchip
PIC32
Microchip
PIC32
Microchip
PIC32
Microchip
PIC32
Microchip
PIC32
Microchip
PIC32
Microchip
PIC32
Microchip
PIC32
Microchip
PIC32
Microchip
PIC32
MicroconFretroller
quency
32MX460F512L 80 MHz
32MX795F512L 80 MHz
32MX150F128D 40 MHz
32MX250F128B 40 MHz
32MX320F128H 80 MHz
32MX460F512L 80 MHz
32MX795F512L 80 MHz
32MX340F512H 80 MHz
32MX695F512L 80 MHz
32MZ2048ECG100
200
MHz
32MX795F512L 80 MHz
32MZ2048EFG124
200
MHz
32MX320F128H 80 MHz
Flash
RAM
512
Kb
512
Kb
128
Kb
128
Kb
128
Kb
512
Kb
512
Kb
512
Kb
512
Kb
2048
Kb
512
Kb
2048
Kb
128
Kb
32
Kb
128
Kb
32
Kb
32
Kb
16
Kb
32
Kb
128
Kb
32
Kb
128
Kb
512
Kb
128
Kb
512
Kb
16
Kb
Flash
RAM
128
Kb
512
Kb
32 Kb
Fubarino
ID
Name
fubarino_mini Fubarino Mini
fubarino_sd
Fubarino SD
(1.5)
Platform
Debug
Microchip
PIC32
Microchip
PIC32
MicroconFretroller
quency
32MX250F128D 48 MHz
32MX795F512H 80 MHz
128
Kb
MikroElektronika
ID
Name
clicker2 MikroElektronika
Clicker 2
224
Platform
Microchip
PIC32
Debug
MicroconFretroller
quency
32MX460F512L 80 MHz
Flash
RAM
512
Kb
32
Kb
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Olimex
ID
Name
Platform
pinguino32 Olimex
PIC32-PINGUINO
Debug
Microchip
PIC32
MicroconFretroller
quency
32MX440F256H 80 MHz
Flash
RAM
256
Kb
32
Kb
OpenBCI
ID
Name
Platform
openbci
OpenBCI
32bit
Microchip
PIC32
Debug
Microcontroller
32MX250F128B
Frequency
40 MHz
Flash
RAM
128 Kb
32 Kb
Flash
RAM
512
Kb
512
Kb
128
Kb
32 Kb
Flash
RAM
512
Kb
128
Kb
Flash
RAM
512
Kb
512
Kb
32 Kb
PONTECH
ID
Name
Platform
quick240_usb PONTECH
quicK240
usbono_pic32 PONTECH
UAV100
Debug
Microchip
PIC32
Microchip
PIC32
MicroconFretroller
quency
32MX795F512L 80 MHz
32MX440F512H 80 MHz
SeeedStudio
ID
Name
Platform
cui32stem SeeedStudio
CUI32stem
Debug
Microchip
PIC32
MicroconFretroller
quency
32MX795F512H 80 MHz
UBW32
ID
Name
Platform
ubw32_mx460 UBW32
MX460
ubw32_mx795 UBW32
MX795
Debug
Microchip
PIC32
Microchip
PIC32
MicroconFretroller
quency
32MX460F512L 80 MHz
32MX795F512L 80 MHz
128
Kb
chipKIT
ID
lenny
Name
chipKIT Lenny
Platform
Microchip PIC32
1.8. Development Platforms
Debug
Microcontroller
32MX270F256D
Frequency
40 MHz
Flash
128 Kb
RAM
32 Kb
225
PlatformIO Documentation, Release 3.4.1
element14
ID
Name
Platform
chipkit_pi Element14 chipKIT
Pi
Microchip
PIC32
Debug
MicroconFretroller
quency
32MX250F128B 40 MHz
Flash
RAM
128
Kb
32
Kb
Nordic nRF51
platform = nordicnrf51
The Nordic nRF51 Series is a family of highly flexible, multi-protocol, system-on-chip (SoC) devices for ultra-low
power wireless applications. nRF51 Series devices support a range of protocol stacks including Bluetooth Smart
(previously called Bluetooth low energy), ANT and proprietary 2.4GHz protocols such as Gazell.
For more detailed information please visit vendor site.
Contents
• Packages
• Frameworks
• Boards
– BBC
– Delta
– JKSoft
– Nordic
– RFduino
– RedBearLab
– SeeedStudio
– Switch Science
– y5 design
• Articles
• Examples
Packages
Name
framework-arduinonordicnrf51
framework-mbed
tool-openocd
tool-rfdloader
tool-sreccat
toolchain-gccarmnoneeabi
226
Description
Arduino Wiring-based Framework (RFduino Core)
mbed Framework
OpenOCD
rfdloader
Merging tool
gcc-arm-embedded
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Warning: Linux Users:
• Install “udev” rules file 99-platformio-udev.rules (an instruction is located inside a file).
• Raspberry Pi users, please read this article Enable serial port on Raspberry Pi.
Windows Users:
Please check that you have a correctly installed USB driver from board manufacturer
Frameworks
Name Description
ArArduino Wiring-based Framework allows writing cross-platform software to control devices attached to a
duino wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical
experiences.
mbed The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be
intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM
CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and
Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built
on top of the SDK by the mbed Developer Community.
Boards
Note:
• You can list pre-configured boards by platformio boards command or PlatformIO Boards Explorer
• For more detailed board information please scroll tables below by horizontal.
BBC
ID
Name
Platform
bbcmicrobit
BBC micro:bit
Nordic
nRF51
Nordic
nRF51
bbcmicrobit_b BBC micro:bit
B(S130)
Debug
Microcontroller
NRF51822
Frequency
16 MHz
NRF51822
16 MHz
Flash
RAM
256
Kb
256
Kb
16
Kb
16
Kb
Delta
ID
Name
dfcm_nnn40 Delta
DFCM-NNN40
1.8. Development Platforms
Platform
Nordic
nRF51
Debug
Yes
Microcontroller
NRF51822
Frequency
32 MHz
Flash
RAM
256
Kb
32
Kb
227
PlatformIO Documentation, Release 3.4.1
JKSoft
ID
Name
Platform
wallbot_ble JKSoft Wallbot
BLE
Debug
Yes
Nordic
nRF51
Microcontroller
NRF51822
Frequency
16 MHz
Flash
RAM
128
Kb
16
Kb
Flash
RAM
256
Kb
256
Kb
128
Kb
32
Kb
32
Kb
16
Kb
Nordic
ID
Name
Platform
nrf51_dk
Nordic nRF51-DK
Nordic
nRF51
Nordic
nRF51
Nordic
nRF51
nrf51_dongle Nordic
nRF51-Dongle
nrf51_mkit
Nordic
nRF51822-mKIT
Debug
Yes
Microcontroller
NRF51822
Frequency
32 MHz
Yes
NRF51822
32 MHz
Yes
NRF51822
16 MHz
RFduino
ID
rfduino
Name
RFduino
Platform
Nordic nRF51
Debug
Microcontroller
NRF51822
Frequency
16 MHz
Flash
128 Kb
RAM
8 Kb
RedBearLab
ID
Name
Platform
RedBearLab
nRF51822
redBearLabBLENano
RedBearLab BLE
Nano
redBearLab
Nordic
nRF51
Nordic
nRF51
Debug
Yes
Microcontroller
NRF51822
Frequency
16 MHz
Yes
NRF51822
16 MHz
Flash
RAM
256
Kb
256
Kb
16
Kb
32
Kb
Flash
RAM
128
Kb
256
Kb
256
Kb
16
Kb
16
Kb
16
Kb
SeeedStudio
ID
Name
Seeed Arch
BLE
seeedArchLink Seeed Arch
Link
seeedTinyBLE Seeed Tiny
BLE
seeedArchBLE
228
Platform
Nordic
nRF51
Nordic
nRF51
Nordic
nRF51
Debug
Yes
Microcontroller
NRF51822
Frequency
16 MHz
Yes
NRF51822
16 MHz
Yes
NRF51822
16 MHz
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Switch Science
ID
Name
Platform
Switch Science mbed
HRM1017
ty51822r3 Switch Science mbed
TY51822r3
hrm1017
Nordic
nRF51
Nordic
nRF51
Debug
Yes
Microcontroller
NRF51822
Frequency
16 MHz
Yes
NRF51822
32 MHz
Flash
RAM
256
Kb
256
Kb
16
Kb
32
Kb
Flash
RAM
256
Kb
16
Kb
y5 design
ID
Name
nrf51822_y5_mbugy5 nRF51822
mbug
Platform
Nordic
nRF51
Debug
Yes
Microcontroller
NRF51822
Frequency
16 MHz
Articles
• Aug 28, 2016 - Tom Parker Using the BBC micro:bit with PlatformIO
Examples
All project examples are located in PlatformIO repository Examples for Nordic nRF51 platform.
• RFduino iBeacon
Nordic nRF52
platform = nordicnrf52
The nRF52 Series are built for speed to carry out increasingly complex tasks in the shortest possible time and return
to sleep, conserving precious battery power. They have a Cortex-M4F processor and are the most capable Bluetooth
Smart SoCs on the market.
For more detailed information please visit vendor site.
Contents
• Packages
• Frameworks
• Boards
– Delta
– Nordic
1.8. Development Platforms
229
PlatformIO Documentation, Release 3.4.1
Packages
Name
framework-mbed
tool-openocd
tool-sreccat
toolchain-gccarmnoneeabi
Description
mbed Framework
OpenOCD
Merging tool
gcc-arm-embedded
Warning: Linux Users:
• Install “udev” rules file 99-platformio-udev.rules (an instruction is located inside a file).
• Raspberry Pi users, please read this article Enable serial port on Raspberry Pi.
Windows Users:
Please check that you have a correctly installed USB driver from board manufacturer
Frameworks
Name Description
mbed The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be
intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM
CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and
Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built
on top of the SDK by the mbed Developer Community.
Boards
Note:
• You can list pre-configured boards by platformio boards command or PlatformIO Boards Explorer
• For more detailed board information please scroll tables below by horizontal.
Delta
ID
Name
Platform
delta_dfbm_nq620Delta
DFBM-NQ620
Nordic
nRF52
Debug
Yes
Microcontroller
NRF52832
Frequency
64 MHz
Flash
RAM
512
Kb
64
Kb
Flash
RAM
512
Kb
64
Kb
Nordic
ID
Name
Platform
nrf52_dk
Nordic
nRF52-DK
Nordic
nRF52
230
Debug
Yes
Microcontroller
NRF52832
Frequency
64 MHz
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
NXP LPC
platform = nxplpc
The NXP LPC is a family of 32-bit microcontroller integrated circuits by NXP Semiconductors. The LPC chips
are grouped into related series that are based around the same 32-bit ARM processor core, such as the Cortex-M4F,
Cortex-M3, Cortex-M0+, or Cortex-M0. Internally, each microcontroller consists of the processor core, static RAM
memory, flash memory, debugging interface, and various peripherals.
For more detailed information please visit vendor site.
Contents
• Packages
• Frameworks
• Boards
– CQ Publishing
– Elektor Labs
– Embedded Artists
– GHI Electronics
– Micromint
– NGX Technologies
– NXP
– Outrageous Circuits
– SeeedStudio
– Smeshlink
– Solder Splash Labs
– Switch Science
– u-blox
– y5 design
Packages
Name
framework-mbed
tool-openocd
toolchain-gccarmnoneeabi
Description
mbed Framework
OpenOCD
gcc-arm-embedded
Warning: Linux Users:
• Install “udev” rules file 99-platformio-udev.rules (an instruction is located inside a file).
• Raspberry Pi users, please read this article Enable serial port on Raspberry Pi.
1.8. Development Platforms
231
PlatformIO Documentation, Release 3.4.1
Windows Users:
Please check that you have a correctly installed USB driver from board manufacturer
Frameworks
Name Description
mbed The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be
intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM
CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and
Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built
on top of the SDK by the mbed Developer Community.
Boards
Note:
• You can list pre-configured boards by platformio boards command or PlatformIO Boards Explorer
• For more detailed board information please scroll tables below by horizontal.
CQ Publishing
ID
Name
Platform
NXP
LPC
lpc11u35_501CQ Publishing
TG-LPC11U35-501
Debug
Microcontroller
LPC11U35
Frequency
48 MHz
Flash RAM
64
Kb
10
Kb
Elektor Labs
ID
Name
Platform
elektor_cocorico
CoCo-riCo!
NXP
LPC
Debug
Yes
Microcontroller
LPC812
Frequency
30 MHz
Flash
RAM
16
Kb
4 Kb
Embedded Artists
ID
Name
lpc11u35
EA LPC11U35 QuickStart Board
Embedded Artists LPC4088
QuickStart Board
lpc4088_dmEmbedded Artists LPC4088
Display Module
lpc4088
232
Platform
NXP
LPC
NXP
LPC
NXP
LPC
Debug
Microcontroller
LPC11U35
Frequency
48 MHz
Yes
LPC4088
Yes
LPC4088
120
MHz
120
MHz
Flash
RAM
64
Kb
512
Kb
512
Kb
10
Kb
96
Kb
96
Kb
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
GHI Electronics
ID
oc_mbuino
Name
mBuino
Platform
NXP LPC
Debug
Microcontroller
LPC11U24
Frequency
50 MHz
Flash
32 Kb
RAM
10 Kb
Micromint
ID
Name
Platform
lpc4330_m4
Bambino-210E
lpc4337
LPCXpresso4337
NXP
LPC
NXP
LPC
Debug
Yes
Microcontroller
LPC4330
Frequency
204 MHz
LPC4337
204 MHz
Flash
RAM
8192
Kb
1024
Kb
264
Kb
136
Kb
NGX Technologies
ID
Name
blueboard_lpc11u24
NGX Technologies
BlueBoard-LPC11U24
1.8. Development Platforms
Platform
NXP
LPC
Debug
Microcontroller
LPC11U24
Frequency
48 MHz
Flash RAM
32
Kb
8
Kb
233
PlatformIO Documentation, Release 3.4.1
NXP
ID
Name
lpc11c24
NXP LPC11C24
lpc11u24
NXP mbed LPC11U24
Platform
NXP
LPC
NXP
LPC
NXP
LPC
NXP
LPC
NXP
LPC
NXP
LPC
NXP
LPC
NXP
LPC
NXP
LPC
NXP
LPC
NXP
LPC
NXP
LPC
NXP
LPC
lpc11u24_301 ARM mbed LPC11U24
(+CAN)
lpc11u34_421 NXP LPC11U34
lpc11u37_501 NXP LPC11U37
lpc11u68
LPCXpresso11U68
lpc1549
NXP LPCXpresso1549
lpc1768
NXP mbed LPC1768
lpc2368
NXP LPC2368
lpc2460
NXP LPC2460
lpc812
NXP LPC800-MAX
lpc824
LPCXpresso824-MAX
micronfcboardMicroNFCBoard
Debug
Microcontroller
LPC11C24
Frequency
48 MHz
Flash
RAM
32 Kb
8 Kb
Yes
LPC11U24
48 MHz
32 Kb
8 Kb
Yes
LPC11U24
48 MHz
32 Kb
8 Kb
LPC11U34
48 MHz
64 Kb
8 Kb
LPC11U37
48 MHz
LPC11U68
50 MHz
LPC1549
72 MHz
LPC1768
96 MHz
LPC2368
72 MHz
Yes
LPC2460
72 MHz
128
Kb
256
Kb
256
Kb
512
Kb
512
Kb
64 Kb
Yes
LPC812
30 MHz
16 Kb
10
Kb
36
Kb
36
Kb
64
Kb
58
Kb
16
Kb
4 Kb
Yes
LPC824
30 MHz
32 Kb
8 Kb
LPC11U34
48 MHz
64 Kb
10
Kb
Flash
RAM
32
Kb
8 Kb
Flash
RAM
128
Kb
512
Kb
64 Kb
10
Kb
64
Kb
10
Kb
Yes
Yes
Outrageous Circuits
ID
Name
Platform
mbuino
Outrageous Circuits
mBuino
NXP
LPC
Debug
Microcontroller
LPC11U24
Frequency
48 MHz
Microcontroller
LPC11U37
Frequency
48 MHz
LPC1768
96 MHz
LPC11U35
48 MHz
SeeedStudio
ID
Name
seeedArchGPRS Seeed Arch GPRS
V2
seeedArchPro Seeed Arch Pro
xadow_m0
234
Seeed Xadow M0
Platform
NXP
LPC
NXP
LPC
NXP
LPC
Debug
Yes
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Smeshlink
ID
Name
xbed_lpc1768 Smeshlink xbed
LPC1768
Platform
NXP
LPC
Debug
Microcontroller
LPC1768
Frequency
96 MHz
Flash
RAM
512
Kb
32
Kb
Solder Splash Labs
ID
Name
Platform
NXP
LPC
NXP
LPC
dipcortexm0 Solder Splash Labs
DipCortex M0
lpc1347
DipCortex M3
Debug
Microcontroller
LPC11U24
Frequency
50 MHz
LPC1347
72 MHz
Flash RAM
32
Kb
64
Kb
8 Kb
12
Kb
Switch Science
ID
Name
lpc1114fn28 Switch Science mbed
LPC1114FN28
ssci824
Switch Science mbed LPC824
Platform
NXP
LPC
NXP
LPC
Debug
Yes
MicroconFretroller
quency
LPC1114FN28 48 MHz
Yes
LPC824
30 MHz
Flash RAM
32
Kb
32
Kb
4
Kb
8
Kb
u-blox
ID
ubloxc027
Name
u-blox C027
Platform
NXP LPC
Debug
Yes
Microcontroller
LPC1768
Frequency
96 MHz
Flash
512 Kb
RAM
64 Kb
y5 design
ID
Name
lpc11u35_y5_mbug y5 LPC11U35
mbug
Platform
NXP
LPC
Debug
Microcontroller
LPC11U35
Frequency
48 MHz
Flash
RAM
64
Kb
10
Kb
Silicon Labs EFM32
platform = siliconlabsefm32
Silicon Labs EFM32 Gecko 32-bit microcontroller (MCU) family includes devices that offer flash memory configurations up to 256 kB, 32 kB of RAM and CPU speeds up to 48 MHz. Based on the powerful ARM Cortex-M core, the
Gecko family features innovative low energy techniques, short wake-up time from energy saving modes and a wide selection of peripherals, making it ideal for battery operated applications and other systems requiring high performance
and low-energy consumption.
For more detailed information please visit vendor site.
1.8. Development Platforms
235
PlatformIO Documentation, Release 3.4.1
Contents
• Packages
• Frameworks
• Boards
– Silicon Labs
Packages
Name
framework-mbed
tool-openocd
toolchain-gccarmnoneeabi
Description
mbed Framework
OpenOCD
gcc-arm-embedded
Warning: Linux Users:
• Install “udev” rules file 99-platformio-udev.rules (an instruction is located inside a file).
• Raspberry Pi users, please read this article Enable serial port on Raspberry Pi.
Windows Users:
Please check that you have a correctly installed USB driver from board manufacturer
Frameworks
Name Description
mbed The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be
intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM
CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and
Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built
on top of the SDK by the mbed Developer Community.
Boards
Note:
• You can list pre-configured boards by platformio boards command or PlatformIO Boards Explorer
• For more detailed board information please scroll tables below by horizontal.
236
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Silicon Labs
ID
Name
efm32gg_stk3700
Silicon Labs
EFM32GG-STK3700 (Giant
Gecko)
efm32hg_stk3400
Silicon Labs SLSTK3400A
USB-enabled (Happy Gecko)
efm32lg_stk3600
Silicon Labs
EFM32LG-STK3600 (Leopard
Gecko)
efm32pg_stk3401
Silicon Labs SLSTK3401A
(Pearl Gecko)
efm32wg_stk3800
Silicon Labs
EFM32WG-STK3800 (Wonder
Gecko)
efm32zg_stk3200
Silicon Labs
EFM32ZG-STK3200 (Zero
Gecko)
Platform
Silicon
Labs
EFM32
Silicon
Labs
EFM32
Silicon
Labs
EFM32
Silicon
Labs
EFM32
Silicon
Labs
EFM32
Silicon
Labs
EFM32
Debug
Yes
MicroconFreFlash RAM
troller
quency
EFM32GG990F1024
48
1024 128
MHz
Kb
Kb
Yes
EFM32HG322F64
24
MHz
64
Kb
8
Kb
Yes
EFM32LG990F256
48
MHz
256
Kb
32
Kb
Yes
EFM32PG1B200F256
40
MHz
256
Kb
32
Kb
Yes
EFM32WG990F256
48
MHz
256
Kb
32
Kb
Yes
EFM32ZG222F32
24
MHz
32
Kb
4
Kb
ST STM32
platform = ststm32
The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees
of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of
development.
For more detailed information please visit vendor site.
Contents
• Packages
• Frameworks
• Boards
– 96Boards
– Armstrap
– Espotel
– Generic
– LeafLabs
– MXChip
– MultiTech
– RushUp
1.8. Development Platforms
237
PlatformIO Documentation, Release 3.4.1
– ST
– SeeedStudio
– Semtech
– u-blox
• Articles
• Examples
Packages
Name
frameworkarduinostm32mxchip
framework-arduinoststm32
framework-cmsis
framework-libopencm3
framework-mbed
framework-spl
framework-stm32cube
tool-openocd
tool-stlink
tool-stm32duino
toolchain-gccarmnoneeabi
Description
Arduino Wiring-based Framework (ST STM32 MXChip Core)
Arduino Wiring-based Framework (STM32 Core)
Vendor-independent hardware abstraction layer for the Cortex-M processor
series
libOpenCM3 Framework
mbed Framework
Standard Peripheral Library for STM32 MCUs
STM32Cube embedded software libraries
OpenOCD
ST-Link
STM32Duino Tools
gcc-arm-embedded
Warning: Linux Users:
• Install “udev” rules file 99-platformio-udev.rules (an instruction is located inside a file).
• Raspberry Pi users, please read this article Enable serial port on Raspberry Pi.
Windows Users:
Please check that you have a correctly installed USB driver from board manufacturer
238
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Frameworks
Name
Arduino
Description
Arduino Wiring-based Framework allows writing cross-platform software to control devices attached
to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or
physical experiences.
CMSIS
The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent
hardware abstraction layer for the Cortex-M processor series and specifies debugger interfaces. The
CMSIS enables consistent and simple software interfaces to the processor for interface peripherals,
real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve
for new microcontroller developers and cutting the time-to-market for devices.
liThe libOpenCM3 framework aims to create a free/libre/open-source firmware library for various ARM
bOpenCM3Cortex-M0(+)/M3/M4 microcontrollers, including ST STM32, Ti Tiva and Stellaris, NXP LPC 11xx,
13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others.
mbed
The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be
intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM
CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and
Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been
built on top of the SDK by the mbed Developer Community.
SPL
The ST Standard Peripheral Library provides a set of functions for handling the peripherals on the
STM32 Cortex-M3 family. The idea is to save the user (the new user, in particular) having to deal
directly with the registers.
STM32Cube
STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling
portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a
light-weight, optimized, expert oriented set of APIs designed for both performance and runtime
efficiency.
Boards
Note:
• You can list pre-configured boards by platformio boards command or PlatformIO Boards Explorer
• For more detailed board information please scroll tables below by horizontal.
96Boards
ID
Name
b96b_f446ve 96Boards
B96B-F446VE
1.8. Development Platforms
Platform
ST
STM32
Debug
Yes
Microcontroller
Frequency
STM32F446VET6 168 MHz
Flash
RAM
512
Kb
128
Kb
239
PlatformIO Documentation, Release 3.4.1
Armstrap
ID
Name
Platform
ST
STM32
ST
STM32
ST
STM32
armstrap_eagle1024
Armstrap Eagle
1024
armstrap_eagle2048
Armstrap Eagle
2048
armstrap_eagle512Armstrap Eagle
512
Debug
Yes
MicroconFretroller
quency
STM32F417VGT6168 MHz
Yes
STM32F427VIT6 168 MHz
Yes
STM32F407VET6168 MHz
Flash
RAM
1024
Kb
2048
Kb
512
Kb
192
Kb
256
Kb
192
Kb
Flash
RAM
512
Kb
128
Kb
Espotel
ID
Name
elmo_f411re Espotel LoRa
Module
Platform
ST
STM32
Debug
Yes
Microcontroller
Frequency
STM32F411RET6 100 MHz
Generic
ID
Name
bluepill_f103c8BluePill F103C8
genericSTM32F103C8
STM32F103C8 (20k RAM.
64k Flash)
genericSTM32F103CB
STM32F103CB (20k RAM.
128k Flash)
genericSTM32F103R8
STM32F103R8 (20k RAM.
64 Flash)
genericSTM32F103RB
STM32F103RB (20k RAM.
128k Flash)
genericSTM32F103RC
STM32F103RC (48k RAM.
256k Flash)
genericSTM32F103RE
STM32F103RE (64k RAM.
512k Flash)
Platform
ST
STM32
ST
STM32
ST
STM32
ST
STM32
ST
STM32
ST
STM32
ST
STM32
Debug
Yes
MicroconFretroller
quency
STM32F103C8T6
72 MHz
Yes
STM32F103C8 72 MHz
Yes
STM32F103CB72 MHz
Yes
STM32F103R8 72 MHz
Yes
STM32F103RB72 MHz
Yes
STM32F103RC72 MHz
Yes
STM32F103RE 72 MHz
Flash RAM
64
Kb
64
Kb
128
Kb
64
Kb
128
Kb
256
Kb
512
Kb
20
Kb
20
Kb
20
Kb
20
Kb
20
Kb
48
Kb
64
Kb
Flash
RAM
128
Kb
128
Kb
128
Kb
17
Kb
20
Kb
17
Kb
LeafLabs
ID
Name
maple
Maple
Maple Mini
Bootloader 2.0
maple_mini_origin
Maple Mini Original
maple_mini_b20
240
Platform
ST
STM32
ST
STM32
ST
STM32
Debug
MicroconFretroller
quency
STM32F103RB 72 MHz
STM32F103CB 72 MHz
STM32F103CB 72 MHz
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
MXChip
ID
Name
Platform
ST
STM32
mxchip_az3166
Microsoft Azure IoT Development
Kit (MXChip AZ3166)
Debug
Yes
MicroconFretroller
quency
STM32F412ZGT6
100
MHz
Flash
RAM
1024
Kb
256
Kb
Flash
RAM
512
Kb
512
Kb
512
Kb
256
Kb
128
Kb
128
Kb
128
Kb
32
Kb
MultiTech
ID
Name
mts_dragonfly_f411re
MTS Dragonfly
mts_mdot_f405rg
MultiTech mDot
mts_mdot_f411re
MultiTech mDot
F411
MultiTech xDot
xdot_l151cc
Platform
ST
STM32
ST
STM32
ST
STM32
ST
STM32
Debug
Yes
Yes
Yes
MicroconFretroller
quency
STM32F411RET6100
MHz
STM32F411RET6100
MHz
STM32F411RET6100
MHz
STM32L151CCU632 MHz
RushUp
ID
Name
cloud_jam
RushUp Cloud-JAM
cloud_jam_l4 RushUp Cloud-JAM
L4
Platform
ST
STM32
ST
STM32
Debug
Yes
Microcontroller
Frequency
STM32F401RET6 84 MHz
Flash
RAM
512 Kb
96 Kb
Yes
STM32L476RGT6 80 MHz
1024
Kb
128
Kb
ST
ID
disco_f030r8
disco_f051r8
disco_f100rb
disco_f303vc
disco_f334c8
disco_f401vc
disco_f407vg
disco_f411ve
disco_f429zi
disco_f469ni
disco_f746ng
disco_f769ni
disco_l053c8
disco_l072cz_lrwan1
disco_l152rb
Name
ST STM32F0308DISCOVERY
ST STM32F0DISCOVERY
ST STM32VLDISCOVERY
ST STM32F3DISCOVERY
ST 32F3348DISCOVERY
ST 32F401CDISCOVERY
ST STM32F4DISCOVERY
ST 32F411EDISCOVERY
ST 32F429IDISCOVERY
ST 32F469IDISCOVERY
ST 32F746GDISCOVERY
ST 32F769IDISCOVERY
ST 32L0538DISCOVERY
ST DISCO-L072CZ-LRWAN1
ST STM32LDISCOVERY
1.8. Development Platforms
Platform
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
Debug
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Microcontroller
STM32F030R8T6
STM32F051R8T6
STM32F100RBT6
STM32F303VCT6
STM32F334C8T6
STM32F401VCT6
STM32F407VGT6
STM32F411VET6
STM32F429ZIT6
STM32F469NIH6
STM32F746NGH6
STM32F769NIH6
STM32L053C8T6
STM32L072CZ
STM32L152RBT6
Frequency Flash
48 MHz
64 Kb
48 MHz
64 Kb
24 MHz
128 Kb
72 MHz
256 Kb
72 MHz
64 Kb
84 MHz
256 Kb
168 MHz
1024 K
100 MHz
512 Kb
180 MHz
2048 K
180 MHz
1024 K
216 MHz
1024 K
80 MHz
1024 K
32 MHz
64 Kb
32 MHz
192 Kb
32 MHz
128 Kb
Continued on
241
PlatformIO Documentation, Release 3.4.1
ID
disco_l475vg_iot01a
disco_l476vg
nucleo_f030r8
nucleo_f031k6
nucleo_f042k6
nucleo_f070rb
nucleo_f072rb
nucleo_f091rc
nucleo_f103rb
nucleo_f207zg
nucleo_f302r8
nucleo_f303k8
nucleo_f303re
nucleo_f303ze
nucleo_f334r8
nucleo_f401re
nucleo_f410rb
nucleo_f411re
nucleo_f412zg
nucleo_f429zi
nucleo_f446re
nucleo_f446ze
nucleo_f746zg
nucleo_f767zi
nucleo_l011k4
nucleo_l031k6
nucleo_l053r8
nucleo_l073rz
nucleo_l152re
nucleo_l432kc
nucleo_l476rg
Table 1.2 – continued from previous page
Name
Platform
Debug Microcontroller
ST DISCO-L475VG-IOT01A
ST STM32 Yes
STM32L475VGT6
ST 32L476GDISCOVERY
ST STM32 Yes
STM32L476VGT6
ST Nucleo F030R8
ST STM32 Yes
STM32F030R8T6
ST Nucleo F031K6
ST STM32 Yes
STM32F031K6T6
ST Nucleo F042K6
ST STM32 Yes
STM32F042K6T6
ST Nucleo F070RB
ST STM32 Yes
STM32F070RBT6
ST Nucleo F072RB
ST STM32 Yes
STM32F072RBT6
ST Nucleo F091RC
ST STM32 Yes
STM32F091RCT6
ST Nucleo F103RB
ST STM32 Yes
STM32F103RBT6
ST Nucleo F207ZG
ST STM32 Yes
STM32F207ZGT6
ST Nucleo F302R8
ST STM32 Yes
STM32F302R8T6
ST Nucleo F303K8
ST STM32 Yes
STM32F303K8T6
ST Nucleo F303RE
ST STM32 Yes
STM32F303RET6
ST Nucleo F303ZE
ST STM32 Yes
STM32F303ZET6
ST Nucleo F334R8
ST STM32 Yes
STM32F334R8T6
ST Nucleo F401RE
ST STM32 Yes
STM32F401RET6
ST Nucleo F410RB
ST STM32 Yes
STM32F410RBT6
ST Nucleo F411RE
ST STM32 Yes
STM32F411RET6
ST Nucleo F412ZG
ST STM32 Yes
STM32F412ZGT6
ST Nucleo F429ZI
ST STM32 Yes
STM32F429ZIT6
ST Nucleo F446RE
ST STM32 Yes
STM32F446RET6
ST Nucleo F446ZE
ST STM32 Yes
STM32F446ZET6
ST Nucleo F746ZG
ST STM32 Yes
STM32F746ZGT6
ST Nucleo F767ZI
ST STM32 Yes
STM32F767ZIT6
ST Nucleo L011K4
ST STM32 Yes
STM32L011K4T6
ST Nucleo L031K6
ST STM32 Yes
STM32L031K6T6
ST Nucleo L053R8
ST STM32 Yes
STM32L053R8T6
ST Nucleo L073RZ
ST STM32 Yes
STM32L073RZ
ST Nucleo L152RE
ST STM32 Yes
STM32L152RET6
ST Nucleo L432KC
ST STM32 Yes
STM32L432KCU6
ST Nucleo L476RG
ST STM32 Yes
STM32L476RGT6
Frequency
80 MHz
80 MHz
48 MHz
48 MHz
48 MHz
48 MHz
48 MHz
48 MHz
72 MHz
120 MHz
72 MHz
72 MHz
72 MHz
72 MHz
72 MHz
84 MHz
100 MHz
100 MHz
100 MHz
180 MHz
180 MHz
180 MHz
216 MHz
216 MHz
32 MHz
32 MHz
48 MHz
32 MHz
32 MHz
80 MHz
80 MHz
SeeedStudio
ID
Name
seeedArchMax Seeed Arch
Max
Platform
ST
STM32
Debug
Yes
Microcontroller
Frequency
STM32F407VET6 168 MHz
Flash
RAM
512
Kb
192
Kb
Semtech
ID
mote_l152rc
242
Name
NAMote72
Platform
ST STM32
Debug
Yes
Microcontroller
STM32L152RC
Frequency
32 MHz
Flash
256 Kb
RAM
32 Kb
Chapter 1. Contents
Flash
1024 K
1024 K
64 Kb
32 Kb
32 Kb
128 Kb
128 Kb
256 Kb
128 Kb
1024 K
64 Kb
64 Kb
512 Kb
512 Kb
64 Kb
512 Kb
128 Kb
512 Kb
1024 K
2048 K
512 Kb
512 Kb
1024 K
2048 K
16 Kb
32 Kb
64 Kb
192 Kb
512 Kb
256 Kb
1024 K
PlatformIO Documentation, Release 3.4.1
u-blox
ID
Name
ublox_evk_odin_w2
u-blox
EVK-ODIN-W2
Platform
ST
STM32
Debug
Yes
MicroconFretroller
quency
STM32F439ZIY6168 MHz
Flash
RAM
2048
Kb
256
Kb
Articles
• Nov 06, 2015 - nocd5 - PlatformIOmbedSTM32 Nucleomruby (Use mruby in the offline build for STM32
Nucleo board with mbed and PlatformIO, Japanese)
• Oct 21, 2015 - Vittorio Zaccaria - Using a cheap STM32 Nucleo to teach remote sensor monitoring
• Aug 08, 2015 - Josh Glendenning - Armstrap Eagle and PlatformIO
See more Articles about us.
Examples
All project examples are located in PlatformIO repository Examples for ST STM32 platform.
• CMSIS Blink
• libOpenCM3 Blink
• SPL Blink
Teensy
platform = teensy
Teensy is a complete USB-based microcontroller development system, in a very small footprint, capable of implementing many types of projects. All programming is done via the USB port. No special programmer is needed, only
a standard USB cable and a PC or Macintosh with a USB port.
For more detailed information please visit vendor site.
Contents
• Packages
• Frameworks
• Boards
– Teensy
• USB Features
• Examples
1.8. Development Platforms
243
PlatformIO Documentation, Release 3.4.1
Packages
Name
framework-arduinoteensy
framework-mbed
tool-teensy
toolchain-atmelavr
toolchain-gccarmnoneeabi
Description
Arduino Wiring-based Framework
mbed Framework
Teensy Loader
avr-gcc
gcc-arm-embedded
Warning: Linux Users:
• Install “udev” rules file 99-platformio-udev.rules (an instruction is located inside a file).
• Raspberry Pi users, please read this article Enable serial port on Raspberry Pi.
Windows Users:
Teensy programming uses only Windows built-in HID drivers. When Teensy is programmed to act
as a USB Serial device, Windows XP, Vista, 7 and 8 require this serial driver is needed to access the
COM port your program uses. No special driver installation is necessary on Windows 10.
Frameworks
Name Description
ArArduino Wiring-based Framework allows writing cross-platform software to control devices attached to a
duino wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical
experiences.
mbed The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be
intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM
CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and
Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built
on top of the SDK by the mbed Developer Community.
Boards
Note:
• You can list pre-configured boards by platformio boards command or PlatformIO Boards Explorer
• For more detailed board information please scroll tables below by horizontal.
244
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Teensy
ID
teensy20
teensy20pp
teensy30
teensy31
teensy35
teensy36
teensylc
Name
Teensy 2.0
Teensy++ 2.0
Teensy 3.0
Teensy 3.1 / 3.2
Teensy 3.5
Teensy 3.6
Teensy LC
Platform
Teensy
Teensy
Teensy
Teensy
Teensy
Teensy
Teensy
Debug
Microcontroller
ATMEGA32U4
AT90USB1286
MK20DX128
MK20DX256
MK64FX512
MK66FX1M0
MKL26Z64
Frequency
16 MHz
16 MHz
48 MHz
72 MHz
120 MHz
180 MHz
48 MHz
Flash
32 Kb
128 Kb
128 Kb
256 Kb
512 Kb
1024 Kb
64 Kb
RAM
2.5 Kb
8 Kb
16 Kb
64 Kb
192 Kb
256 Kb
8 Kb
USB Features
If you want to use Teensy USB Features, you need to add special acros/define using build_flags:
• -D USB_AUDIO
• -D USB_HID
• -D USB_SERIAL_HID
• -D USB_DISK
• -D USB_DISK_SDFLASH
• -D USB_MIDI
• -D USB_RAWHID
• -D USB_FLIGHTSIM
• -D USB_DISABLED
Example:
[env:teensy_hid_device]
platform = teensy
framework = arduino
board = teensy20
build_flags = -D USB_RAWHID
See Teensy USB Examples.
Examples
All project examples are located in PlatformIO repository Examples for Teensy platform.
• Wiring Blink
• HID Mouse
• Chat Server
TI MSP430
platform = timsp430
1.8. Development Platforms
245
PlatformIO Documentation, Release 3.4.1
MSP430 microcontrollers (MCUs) from Texas Instruments (TI) are 16-bit, RISC-based, mixed-signal processors designed for ultra-low power. These MCUs offer the lowest power consumption and the perfect mix of integrated
peripherals for thousands of applications.
For more detailed information please visit vendor site.
Contents
• Packages
• Frameworks
• Boards
– PanStamp
– TI
• Articles
• Examples
Packages
Name
framework-arduinomsp430
framework-energiamsp430
tool-mspdebug
toolchain-timsp430
Description
Arduino Wiring-based Framework (MSP430 Core)
Energia Wiring-based Framework (MSP430 Core)
MSPDebug
msp-gcc
Warning: Linux Users:
• Install “udev” rules file 99-platformio-udev.rules (an instruction is located inside a file).
• Raspberry Pi users, please read this article Enable serial port on Raspberry Pi.
Windows Users:
Please check that you have a correctly installed USB driver from board manufacturer
Frameworks
Name Description
ArArduino Wiring-based Framework allows writing cross-platform software to control devices attached to a
duino wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical
experiences.
EnEnergia Wiring-based framework enables pretty much anyone to start easily creating
ermicrocontroller-based projects and applications. Its easy-to-use libraries and functions provide developers
gia
of all experience levels to start blinking LEDs, buzzing buzzers and sensing sensors more quickly than
ever before.
Boards
246
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Note:
• You can list pre-configured boards by platformio boards command or PlatformIO Boards Explorer
• For more detailed board information please scroll tables below by horizontal.
PanStamp
ID
Name
Platform
panStampNRG
PanStamp NRG
1.1
TI
MSP430
Debug
Microcontroller
CC430F5137
Frequency
12 MHz
Flash
RAM
32
Kb
4 Kb
TI
ID
Name
lpmsp430f5529TI LaunchPad
MSP-EXP430F5529LP
lpmsp430fr4133
TI LaunchPad
MSP-EXP430FR4133LP
lpmsp430fr5739
TI FraunchPad
MSP-EXP430FR5739LP
lpmsp430fr5969
TI LaunchPad
MSP-EXP430FR5969LP
lpmsp430fr6989
TI LaunchPad
MSP-EXP430FR6989LP
lpmsp430g2553TI LaunchPad
MSP-EXP430G2553LP
Platform
TI
MSP430
TI
MSP430
TI
MSP430
TI
MSP430
TI
MSP430
TI
MSP430
Debug
Yes
MicroconFretroller
quency
MSP430F5529 16 MHz
Yes
MSP430FR41338 MHz
Yes
MSP430FR573916 MHz
Yes
MSP430FR59698 MHz
Yes
MSP430FR69898 MHz
Yes
MSP430G255316 MHz
Flash
RAM
128
Kb
16
Kb
16
Kb
64
Kb
128
Kb
16
Kb
8 Kb
2 Kb
0.5
Kb
2 Kb
2 Kb
0.5
Kb
Articles
• Dec 08, 2015 - Piotr Król - Using PlatformIO with TI MSP430 LunchPads
See more Articles about us.
Examples
All project examples are located in PlatformIO repository Examples for TI MSP430 platform.
• Energia blink
• Native blink
• Wiring Blink
• PanStamp blink
1.8. Development Platforms
247
PlatformIO Documentation, Release 3.4.1
TI TIVA
platform = titiva
Texas Instruments TM4C12x MCUs offer the industrys most popular ARM Cortex-M4 core with scalable memory
and package options, unparalleled connectivity peripherals, advanced application functions, industry-leading analog
integration, and extensive software solutions.
For more detailed information please visit vendor site.
Contents
• Packages
• Frameworks
• Boards
– TI
• Articles
• Examples
Packages
Name
framework-energiativa
framework-libopencm3
tool-lm4flash
tool-openocd
toolchain-gccarmnoneeabi
Description
Energia Wiring-based Framework (LM4F Core)
libOpenCM3 Framework
Flash Programmer
OpenOCD
gcc-arm-embedded
Warning: Linux Users:
• Install “udev” rules file 99-platformio-udev.rules (an instruction is located inside a file).
• Raspberry Pi users, please read this article Enable serial port on Raspberry Pi.
Windows Users:
Please check that you have a correctly installed USB driver from board manufacturer
Frameworks
Name
Energia
Description
Energia Wiring-based framework enables pretty much anyone to start easily creating
microcontroller-based projects and applications. Its easy-to-use libraries and functions provide
developers of all experience levels to start blinking LEDs, buzzing buzzers and sensing sensors more
quickly than ever before.
liThe libOpenCM3 framework aims to create a free/libre/open-source firmware library for various ARM
bOpenCM3Cortex-M0(+)/M3/M4 microcontrollers, including ST STM32, Ti Tiva and Stellaris, NXP LPC 11xx,
13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others.
248
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Boards
Note:
• You can list pre-configured boards by platformio boards command or PlatformIO Boards Explorer
• For more detailed board information please scroll tables below by horizontal.
TI
ID
Name
lplm4f120h5qrTI LaunchPad (Stellaris) w/
lm4f120 (80MHz)
lptm4c1230c3pm
TI LaunchPad (Tiva C) w/
tm4c123 (80MHz)
lptm4c1294ncpdt
TI LaunchPad (Tiva C) w/
tm4c129 (120MHz)
Platform
TI
TIVA
TI
TIVA
TI
TIVA
Debug
Yes
Yes
Yes
MicroconFretroller
quency
LPLM4F120H5QR80
MHz
LPTM4C1230C3PM
80
MHz
LPTM4C1294NCPDT
120
MHz
Flash
RAM
256
Kb
256
Kb
1024
Kb
32
Kb
32
Kb
256
Kb
Articles
• Mar 12, 2016 - Richard Arthurs - Getting Started With PlatformIO
See more Articles about us.
Examples
All project examples are located in PlatformIO repository Examples for TI TIVA platform.
• Energia blink
• Native blink
• OpenCM3 Blink
WIZNet W7500
platform = wiznet7500
The IOP (Internet Offload Processor) W7500 is the one-chip solution which integrates an ARM Cortex-M0, 128KB
Flash and hardwired TCP/IP core for various embedded application platform especially requiring Internet of things
For more detailed information please visit vendor site.
Contents
• Packages
• Frameworks
• Boards
1.8. Development Platforms
249
PlatformIO Documentation, Release 3.4.1
– WIZNet
Packages
Name
framework-mbed
tool-openocd
toolchain-gccarmnoneeabi
Description
mbed Framework
OpenOCD
gcc-arm-embedded
Warning: Linux Users:
• Install “udev” rules file 99-platformio-udev.rules (an instruction is located inside a file).
• Raspberry Pi users, please read this article Enable serial port on Raspberry Pi.
Windows Users:
Please check that you have a correctly installed USB driver from board manufacturer
Frameworks
Name Description
mbed The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be
intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM
CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and
Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built
on top of the SDK by the mbed Developer Community.
Boards
Note:
• You can list pre-configured boards by platformio boards command or PlatformIO Boards Explorer
• For more detailed board information please scroll tables below by horizontal.
WIZNet
ID
Name
wizwiki_w7500 WIZNet
WIZwiki-W7500
wizwiki_w7500eco
WIZNet
WIZwiki-W7500ECO
wizwiki_w7500pWIZNet
WIZwiki-W7500P
250
Platform
WIZNet
W7500
WIZNet
W7500
WIZNet
W7500
Debug
Yes
Microcontroller
WIZNET7500
Frequency
48 MHz
Yes
WIZNET7500ECO
WIZNET7500P
48 MHz
Yes
48 MHz
Flash
RAM
128
Kb
128
Kb
128
Kb
48
Kb
48
Kb
48
Kb
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Desktop
Native
platform = native
Native development platform is intended to be used for desktop OS. This platform uses built-in toolchains (preferable
based on GCC), frameworks, libs from particular OS where it will be run.
For more detailed information please visit vendor site.
Linux ARM
platform = linux_arm
Linux ARM is a Unix-like and mostly POSIX-compliant computer operating system (OS) assembled under the model
of free and open-source software development and distribution. Using host OS (Mac OS X, Linux ARM) you can
build native application for Linux ARM platform.
For more detailed information please visit vendor site.
Contents
• Packages
• Frameworks
• Boards
– Raspberry Pi
– RushUp
– Samsung
Packages
Name
framework-artik-sdk
framework-wiringpi
toolchain-gccarmlinuxgnueabi
Description
ARTIK SDK is a C/C++ SDK targeting Samsung ARTIK platforms
GPIO Interface library for the Raspberry Pi
GCC for Linux ARM GNU EABI
Frameworks
Name
ARTIK
SDK
Description
ARTIK SDK is a C/C++ SDK targeting Samsung ARTIK platforms. It exposes a set of APIs to ease up
development of applications. These APIs cover hardware buses such as GPIO, SPI, I2C, UART,
connectivity links like Wi-Fi, Bluetooth, Zigbee, and network protocols such as HTTP, Websockets,
MQTT, and others.
WiringPi WiringPi is a GPIO access library written in C for the BCM2835 used in the Raspberry Pi. It’s
designed to be familiar to people who have used the Arduino “wiring” system.
1.8. Development Platforms
251
PlatformIO Documentation, Release 3.4.1
Boards
Note:
• You can list pre-configured boards by platformio boards command or PlatformIO Boards Explorer
• For more detailed board information please scroll tables below by horizontal.
Raspberry Pi
ID
Name
raspberrypi_1b Raspberry Pi 1
Model B
raspberrypi_2b Raspberry Pi 2
Model B
raspberrypi_3b Raspberry Pi 3
Model B
raspberrypi_zero
Raspberry Pi Zero
Platform
Linux
ARM
Linux
ARM
Linux
ARM
Linux
ARM
Debug
Microcontroller
BCM2835
BCM2836
BCM2837
BCM2835
Frequency
700
MHz
900
MHz
1200
MHz
1000
MHz
Flash
RAM
524288
Kb
1048576
Kb
1048576
Kb
524288
Kb
524288
Kb
1048576
Kb
1048576
Kb
524288
Kb
RushUp
ID
Name
kitra_520 RushUp Kitra
520
Platform
Debug
Linux
ARM
Microcontroller
EXYNOS3250
Frequency
1000
MHz
Flash
RAM
4194304
Kb
524288
Kb
MicroconFretroller
quency
EXYNOS5422 1500
MHz
EXYNOS3250 1000
MHz
S5P4418
1200
MHz
S5P6818
1400
MHz
Flash
RAM
16777216
Kb
4194304
Kb
4194304
Kb
4194304
Kb
2097152
Kb
524288
Kb
524288
Kb
1048576
Kb
Samsung
ID
Name
artik_1020 Samsung ARTIK
1020
artik_520 Samsung ARTIK
520
artik_530 Samsung ARTIK
530
artik_710 Samsung ARTIK
710
Platform
Linux
ARM
Linux
ARM
Linux
ARM
Linux
ARM
Debug
Linux i686
platform = linux_i686
Linux i686 (32-bit) is a Unix-like and mostly POSIX-compliant computer operating system (OS) assembled under the
model of free and open-source software development and distribution. Using host OS (Mac OS X or Linux 32-bit)
you can build native application for Linux i686 platform.
252
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
For more detailed information please visit vendor site.
Contents
• Packages
Packages
Name
toolchain-gcclinux32
Description
GCC for Linux i686
Linux x86_64
platform = linux_x86_64
Linux x86_64 (64-bit) is a Unix-like and mostly POSIX-compliant computer operating system (OS) assembled under
the model of free and open-source software development and distribution. Using host OS (Mac OS X or Linux 64-bit)
you can build native application for Linux x86_64 platform.
For more detailed information please visit vendor site.
Contents
• Packages
Packages
Name
toolchain-gcclinux64
Description
GCC for Linux x86_64
Windows x86
platform = windows_x86
Windows x86 (32-bit) is a metafamily of graphical operating systems developed and marketed by Microsoft. Using
host OS (Windows, Linux 32/64 or Mac OS X) you can build native application for Windows x86 platform.
For more detailed information please visit vendor site.
Contents
• Packages
Packages
Name
toolchain-gccmingw32
Description
MinGW
1.8. Development Platforms
253
PlatformIO Documentation, Release 3.4.1
Frameworks
Arduino
framework = arduino
Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range
of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.
For more detailed information please visit vendor site.
Contents
• Platforms
• Boards
– 4DSystems
– Adafruit
– Aiyarafun
– Alorium Technolog
– April Brother
– Arduboy
– Arduino
– BQ
– BitWizard
– Controllino
– DFRobot
– DOIT
– Digilent
– Digistump
– Doit
– Dwengo
– DycodeX
– ESP32vn
– ESPert
– ESPino
– Electronic SweetPeas
– Engduino
– EnviroDIY
– Espressif
– Fubarino
254
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
– Generic
– Generic ATTiny
– Hornbill
– Intel
– IntoRobot
– LeafLabs
– LightUp
– Linino
– LowPowerLab
– MXChip
– MakerAsia
– Mcudude
– Microduino
– MikroElektronika
– NodeMCU
– Noduino
– OLIMEX
– Olimex
– Onehorse
– OpenBCI
– OpenEnergyMonitor
– PONTECH
– PanStamp
– Pinoccio
– Pololu Corporation
– Punch Through
– Quirkbot
– RFduino
– RedBearLab
– RepRap
– SODAQ
– SainSmart
– Sanguino
– SeeedStudio
– SparkFun
1.9. Frameworks
255
PlatformIO Documentation, Release 3.4.1
– SparkFun Electronics
– SweetPea
– Teensy
– ThaiEasyElec
– The Things Network
– TinyCircuits
– UBW32
– WEMOS
– Wicked Device
– Widora
– chipKIT
– element14
– makerlab.mx
– nicai-systems
– ubIQio
256
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Platforms
Name
Atmel
AVR
Atmel
SAM
Espressif
32
Espressif
8266
Intel
ARC32
Microchip
PIC32
Nordic
nRF51
ST
STM32
Teensy
TI
MSP430
Description
Atmel AVR 8- and 32-bit MCUs deliver a unique combination of performance, power efficiency and
design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on
the industrys most code-efficient architecture for C and assembly programming.
Atmel | SMART offers Flash- based ARM products based on the ARM Cortex-M0+, Cortex-M3 and
Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature
mix.
Espressif Systems is a privately held fabless semiconductor company. They provide wireless
communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things
applications.
Espressif Systems is a privately held fabless semiconductor company. They provide wireless
communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things
applications.
ARC embedded processors are a family of 32-bit CPUs that are widely used in SoC devices for
storage, home, mobile, automotive, and Internet of Things applications.
Microchip’s 32-bit portfolio with the MIPS microAptiv or M4K core offer high performance
microcontrollers, and all the tools needed to develop your embedded projects. PIC32 MCUs gives
your application the processing power, memory and peripherals your design needs!
The Nordic nRF51 Series is a family of highly flexible, multi-protocol, system-on-chip (SoC)
devices for ultra-low power wireless applications. nRF51 Series devices support a range of protocol
stacks including Bluetooth Smart (previously called Bluetooth low energy), ANT and proprietary
2.4GHz protocols such as Gazell.
The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to
offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high
performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation,
while maintaining full integration and ease of development.
Teensy is a complete USB-based microcontroller development system, in a very small footprint,
capable of implementing many types of projects. All programming is done via the USB port. No
special programmer is needed, only a standard USB cable and a PC or Macintosh with a USB port.
MSP430 microcontrollers (MCUs) from Texas Instruments (TI) are 16-bit, RISC-based,
mixed-signal processors designed for ultra-low power. These MCUs offer the lowest power
consumption and the perfect mix of integrated peripherals for thousands of applications.
Boards
Note:
• You can list pre-configured boards by platformio boards command or PlatformIO Boards Explorer
• For more detailed board information please scroll tables below by horizontal.
4DSystems
ID
Name
picadillo_35t4DSystems
PICadillo 35T
1.9. Frameworks
Platform
Microchip
PIC32
Debug
MicroconFretroller
quency
32MX795F512L80 MHz
Flash
RAM
512
Kb
128
Kb
257
PlatformIO Documentation, Release 3.4.1
Adafruit
ID
Name
adafruit_circuitplayground_m0
Adafruit Circuit
Playground Express
adafruit_feather_m0 Adafruit Feather M0
adafruit_feather_m0_express
Adafruit Feather M0
Express
adafruit_metro_m0
Adafruit Metro M0
Expresss
bluefruitmicro
Adafruit Bluefruit Micro
feather32u4
Adafruit Feather
featheresp32
Adafruit ESP32 Feather
flora8
Adafruit Flora
gemma
Adafruit Gemma
huzzah
Adafruit HUZZAH
ESP8266
Adafruit Metro
metro
protrinket3
protrinket3ftdi
protrinket5
protrinket5ftdi
trinket3
trinket5
Adafruit Pro Trinket
3V/12MHz (USB)
Adafruit Pro Trinket
3V/12MHz (FTDI)
Adafruit Pro Trinket
5V/16MHz (USB)
Adafruit Pro Trinket
5V/16MHz (FTDI)
Adafruit Trinket
3V/8MHz
Adafruit Trinket
5V/16MHz
Platform
Debug
Atmel
SAM
Atmel
SAM
Atmel
SAM
Atmel
SAM
Atmel
AVR
Atmel
AVR
Espressif
32
Atmel
AVR
Atmel
AVR
Espressif
8266
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Yes
Yes
Yes
MicroFreconquency
troller
SAMD21G18A
48
MHz
SAMD21G18A
48
MHz
SAMD21G18A
48
MHz
SAMD21G18A
48
MHz
AT8 MHz
MEGA32U4
AT8 MHz
MEGA32U4
ESP32
240
MHz
AT8 MHz
MEGA32U4
AT8 MHz
TINY85
ESP8266
80
MHz
AT16
MEGA328P MHz
AT12
MEGA328P MHz
AT12
MEGA328P MHz
AT16
MEGA328P MHz
AT16
MEGA328P MHz
AT8 MHz
TINY85
AT16
TINY85
MHz
Flash RAM
256
Kb
256
Kb
256
Kb
256
Kb
32
Kb
32
Kb
1280
Kb
32
Kb
8 Kb
4096
Kb
32
Kb
32
Kb
32
Kb
32
Kb
32
Kb
8 Kb
8 Kb
32
Kb
32
Kb
32
Kb
32
Kb
2.5
Kb
2.5
Kb
288
Kb
2.5
Kb
0.5
Kb
80
Kb
2
Kb
2
Kb
2
Kb
2
Kb
2
Kb
0.5
Kb
0.5
Kb
Aiyarafun
ID
node32s
Name
Node32s
Platform
Espressif 32
Debug
Microcontroller
ESP32
Frequency
240 MHz
Flash
1280 Kb
RAM
288 Kb
Alorium Technolog
ID
alorium_xlr8
258
Name
Alorium XLR8
Platform
Atmel AVR
Debug
Microcontroller
ATMEGA328P
Frequency
16 MHz
Flash
32 Kb
RAM
2 Kb
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
April Brother
ID
Name
Platform
espea32
April Brother
ESPea32
Espressif
32
Debug
Microcontroller
ESP32
Frequency
240 MHz
Flash
RAM
1280
Kb
288
Kb
Arduboy
ID
Name
Platform
arduboy
Arduboy
Atmel
AVR
Atmel
AVR
arduboy_devkit Arduboy
DevKit
Debug
Microcontroller
ATMEGA32U4
ATMEGA32U4
Frequency
16 MHz
16 MHz
Flash
RAM
32
Kb
32
Kb
2.5
Kb
2.5
Kb
Arduino
ID
LilyPadUSB
atmega328pb
atmegangatmega168
atmegangatmega8
btatmega168
btatmega328
chiwawa
diecimilaatmega168
diecimilaatmega328
due
dueUSB
esplora
ethernet
fio
leonardo
leonardoeth
lilypadatmega168
lilypadatmega328
megaADK
megaatmega1280
megaatmega2560
micro
miniatmega168
miniatmega328
mkr1000USB
mkrfox1200
mkrzero
mzeroUSB
mzeropro
1.9. Frameworks
Name
Arduino LilyPad USB
Atmel ATmega328PB
Arduino NG or older ATmega168
Arduino NG or older ATmega8
Arduino BT ATmega168
Arduino BT ATmega328
Arduino Industrial 101
Arduino Duemilanove or Diecimila ATmega168
Arduino Duemilanove or Diecimila ATmega328
Arduino Due (Programming Port)
Arduino Due (USB Native Port)
Arduino Esplora
Arduino Ethernet
Arduino Fio
Arduino Leonardo
Arduino Leonardo ETH
Arduino LilyPad ATmega168
Arduino LilyPad ATmega328
Arduino Mega ADK
Arduino Mega or Mega 2560 ATmega1280
Arduino Mega or Mega 2560 ATmega2560 (Mega 2560)
Arduino Micro
Arduino Mini ATmega168
Arduino Mini ATmega328
Arduino MKR1000
Arduino MKRFox1200
Arduino MKRZero
Arduino M0
Arduino M0 Pro (Programming/Debug Port)
Platform
Atmel AVR
Atmel AVR
Atmel AVR
Atmel AVR
Atmel AVR
Atmel AVR
Atmel AVR
Atmel AVR
Atmel AVR
Atmel SAM
Atmel SAM
Atmel AVR
Atmel AVR
Atmel AVR
Atmel AVR
Atmel AVR
Atmel AVR
Atmel AVR
Atmel AVR
Atmel AVR
Atmel AVR
Atmel AVR
Atmel AVR
Atmel AVR
Atmel SAM
Atmel SAM
Atmel SAM
Atmel SAM
Atmel SAM
Debug
Yes
Yes
Yes
Microcontroller
ATMEGA32U4
ATMEGA328PB
ATMEGA168
ATMEGA8
ATMEGA168
ATMEGA328P
ATMEGA32U4
ATMEGA168
ATMEGA328P
AT91SAM3X8E
AT91SAM3X8E
ATMEGA32U4
ATMEGA328P
ATMEGA328P
ATMEGA32U4
ATMEGA32U4
ATMEGA168
ATMEGA328P
ATMEGA2560
ATMEGA1280
ATMEGA2560
ATMEGA32U4
ATMEGA168
ATMEGA328P
SAMD21G18A
SAMD21G18A
SAMD21G18A
SAMD21G18A
SAMD21G18A
259
PlatformIO Documentation, Release 3.4.1
ID
mzeroproUSB
nanoatmega168
nanoatmega328
pro16MHzatmega168
pro16MHzatmega328
pro8MHzatmega168
pro8MHzatmega328
robotControl
robotMotor
tian
uno
yun
yunmini
zero
zeroUSB
Table 1.3 – continued from previous page
Name
Platform
Debug
Arduino M0 Pro (Native USB Port)
Atmel SAM
Arduino Nano ATmega168
Atmel AVR
Arduino Nano ATmega328
Atmel AVR
Arduino Pro or Pro Mini ATmega168 (5V, 16 MHz)
Atmel AVR
Arduino Pro or Pro Mini ATmega328 (5V, 16 MHz)
Atmel AVR
Arduino Pro or Pro Mini ATmega168 (3.3V, 8 MHz)
Atmel AVR
Arduino Pro or Pro Mini ATmega328 (3.3V, 8 MHz)
Atmel AVR
Arduino Robot Control
Atmel AVR
Arduino Robot Motor
Atmel AVR
Arduino Tian
Atmel SAM
Arduino Uno
Atmel AVR
Arduino Yun
Atmel AVR
Arduino Yun Mini
Atmel AVR
Arduino Zero (Programming/Debug Port)
Atmel SAM Yes
Arduino Zero (USB Native Port)
Atmel SAM
Microcontroller
SAMD21G18A
ATMEGA168
ATMEGA328P
ATMEGA168
ATMEGA328P
ATMEGA168
ATMEGA328P
ATMEGA32U4
ATMEGA32U4
SAMD21G18A
ATMEGA328P
ATMEGA32U4
ATMEGA32U4
SAMD21G18A
SAMD21G18A
BQ
ID
zumbt328
Name
BQ ZUM BT-328
Platform
Atmel AVR
Debug
Microcontroller
ATMEGA328P
Frequency
16 MHz
Flash
32 Kb
RAM
2 Kb
BitWizard
ID
Name
Platform
raspduino
BitWizard
Raspduino
Atmel
AVR
Debug
Microcontroller
ATMEGA328P
Frequency
16 MHz
Flash
RAM
32 Kb
2 Kb
Controllino
ID
Name
controllino_maxi
Controllino Maxi
controllino_maxi_automation
Controllino Maxi
Automation
controllino_mega
Controllino Mega
controllino_mini
Controllino Mini
Platform
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Debug
Microcontroller
ATMEGA2560
ATMEGA2560
ATMEGA2560
ATMEGA328P
Frequency
16 MHz
16 MHz
16 MHz
16 MHz
Flash RAM
256
Kb
256
Kb
256
Kb
32
Kb
8
Kb
8
Kb
8
Kb
2
Kb
DFRobot
ID
Name
firebeetle32 FireBeetleESP32
260
Platform
Espressif
32
Debug
Microcontroller
ESP32
Frequency
240 MHz
Flash
RAM
1280
Kb
288
Kb
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
DOIT
ID
Name
esp32doit-devkit-v1
DOIT ESP32
DEVKIT V1
Platform
Debug
Espressif
32
Microcontroller
ESP32
Frequency
240
MHz
Flash
RAM
1280
Kb
288
Kb
Flash
RAM
512
Kb
512
Kb
128
Kb
128
Kb
128
Kb
512
Kb
512
Kb
512
Kb
512
Kb
2048
Kb
512
Kb
2048
Kb
128
Kb
32
Kb
128
Kb
32
Kb
32
Kb
16
Kb
32
Kb
128
Kb
32
Kb
128
Kb
512
Kb
128
Kb
512
Kb
16
Kb
Digilent
ID
Name
cerebot32mx4 Digilent Cerebot
32MX4
cerebot32mx7 Digilent Cerebot
32MX7
chipkit_cmod Digilent chipKIT
Cmod
chipkit_dp32 Digilent chipKIT
DP32
chipkit_mx3 Digilent chipKIT
MX3
chipkit_pro_mx4
Digilent chipKIT
Pro MX4
chipkit_pro_mx7
Digilent chipKIT
Pro MX7
chipkit_uc32 Digilent chipKIT
uC32
chipkit_wf32 Digilent chipKIT
WF32
chipkit_wifireDigilent chipKIT
WiFire
mega_pic32
Digilent chipKIT
MAX32
openscope
Digilent OpenScope
uno_pic32
1.9. Frameworks
Digilent chipKIT
UNO32
Platform
Microchip
PIC32
Microchip
PIC32
Microchip
PIC32
Microchip
PIC32
Microchip
PIC32
Microchip
PIC32
Microchip
PIC32
Microchip
PIC32
Microchip
PIC32
Microchip
PIC32
Microchip
PIC32
Microchip
PIC32
Microchip
PIC32
Debug
MicroconFretroller
quency
32MX460F512L 80 MHz
32MX795F512L 80 MHz
32MX150F128D 40 MHz
32MX250F128B 40 MHz
32MX320F128H 80 MHz
32MX460F512L 80 MHz
32MX795F512L 80 MHz
32MX340F512H 80 MHz
32MX695F512L 80 MHz
32MZ2048ECG100
200
MHz
32MX795F512L 80 MHz
32MZ2048EFG124
200
MHz
32MX320F128H 80 MHz
261
PlatformIO Documentation, Release 3.4.1
Digistump
ID
Name
digispark-proDigistump Digispark Pro (Default
16 MHz)
digispark-pro32
Digistump Digispark Pro (16
MHz) (32 byte buffer)
digispark-pro64
Digistump Digispark Pro (16
MHz) (64 byte buffer)
digispark-tiny
Digistump Digispark (Default - 16
MHz)
digix
Digistump DigiX
Platform
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
SAM
Debug
Microcon- Fretroller
quency
AT16
TINY167
MHz
AT16
TINY167
MHz
AT16
TINY167
MHz
AT16
TINY85
MHz
AT91SAM3X8E
84
MHz
Flash RAM
16
Kb
16
Kb
16
Kb
8 Kb
512
Kb
0.5
Kb
0.5
Kb
0.5
Kb
0.5
Kb
28
Kb
Doit
ID
Name
Platform
espduino ESPDuino (ESP-13
Module)
Espressif
8266
Debug
Microcontroller
ESP8266
Frequency
80 MHz
Flash
RAM
4096
Kb
80
Kb
Dwengo
ID
dwenguino
Name
Dwenguino
Platform
Atmel AVR
Debug
Microcontroller
AT90USB646
Frequency
16 MHz
Flash
64 Kb
RAM
2 Kb
DycodeX
ID
espectro
Name
ESPectro Core
Platform
Espressif 8266
Debug
Microcontroller
ESP8266
Frequency
80 MHz
Flash
4096 Kb
RAM
80 Kb
Flash
RAM
1024
Kb
288
Kb
ESP32vn
ID
Name
esp32vn-iot-uno ESP32vn IoT
Uno
Platform
Debug
Espressif
32
Microcontroller
ESP32
Frequency
240 MHz
ESPert
ID
Name
espresso_lite_v1ESPresso Lite
1.0
espresso_lite_v2ESPresso Lite
2.0
262
Platform
Espressif
8266
Espressif
8266
Debug
Microcontroller
ESP8266
Frequency
80 MHz
ESP8266
80 MHz
Flash
RAM
4096
Kb
4096
Kb
80
Kb
80
Kb
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
ESPino
ID
espino
Name
ESPino
Platform
Espressif 8266
Debug
Microcontroller
ESP8266
Frequency
80 MHz
Flash
4096 Kb
RAM
80 Kb
Electronic SweetPeas
ID
Name
Platform
esp320 Electronic SweetPeas
ESP320
Debug
Espressif
32
Microcontroller
ESP32
Frequency
240 MHz
Flash
RAM
1280
Kb
288
Kb
Engduino
ID
engduinov3
Name
Engduino 3
Platform
Atmel AVR
Debug
Microcontroller
ATMEGA32U4
Frequency
8 MHz
Flash
32 Kb
RAM
2.5 Kb
EnviroDIY
ID
mayfly
Name
EnviroDIY Mayfly
Platform
Atmel AVR
Debug
Microcontroller
ATMEGA1284P
Frequency
8 MHz
Flash
128 Kb
RAM
16 Kb
Espressif
ID
Name
Platform
esp01
esp12e
Espressif Generic ESP8266
ESP-01 512k
Espressif Generic ESP8266
ESP-01 1M
Espressif Generic ESP8266
ESP-07
Espressif ESP8266 ESP-12E
esp32dev
Espressif ESP32 Dev Module
esp8285
Generic ESP8285 Module
Espressif
8266
Espressif
8266
Espressif
8266
Espressif
8266
Espressif
32
Espressif
8266
Espressif
8266
Espressif
8266
Espressif
8266
Espressif
8266
esp01_1m
esp07
esp_wroom_02
ESP-WROOM-02
phoenix_v1 Phoenix 1.0
phoenix_v2 Phoenix 2.0
wifinfo
WifInfo
1.9. Frameworks
Debug
Microcontroller
ESP8266
Frequency
80 MHz
ESP8266
80 MHz
ESP8266
80 MHz
ESP8266
80 MHz
ESP32
ESP8266
240
MHz
80 MHz
ESP8266
80 MHz
ESP8266
80 MHz
ESP8266
80 MHz
ESP8266
80 MHz
Flash
RAM
512
Kb
1024
Kb
4096
Kb
4096
Kb
1280
Kb
448
Kb
4096
Kb
1024
Kb
1024
Kb
448
Kb
80
Kb
80
Kb
80
Kb
80
Kb
288
Kb
80
Kb
80
Kb
80
Kb
80
Kb
80
Kb
263
PlatformIO Documentation, Release 3.4.1
Fubarino
ID
Name
fubarino_mini Fubarino Mini
fubarino_sd
Fubarino SD
(1.5)
Platform
Debug
Microchip
PIC32
Microchip
PIC32
MicroconFretroller
quency
32MX250F128D 48 MHz
32MX795F512H 80 MHz
Flash
RAM
128
Kb
512
Kb
32 Kb
128
Kb
Generic
ID
Name
bluepill_f103c8BluePill F103C8
genericSTM32F103C8
STM32F103C8 (20k RAM.
64k Flash)
genericSTM32F103CB
STM32F103CB (20k RAM.
128k Flash)
genericSTM32F103R8
STM32F103R8 (20k RAM.
64 Flash)
genericSTM32F103RB
STM32F103RB (20k RAM.
128k Flash)
genericSTM32F103RC
STM32F103RC (48k RAM.
256k Flash)
genericSTM32F103RE
STM32F103RE (64k RAM.
512k Flash)
264
Platform
ST
STM32
ST
STM32
ST
STM32
ST
STM32
ST
STM32
ST
STM32
ST
STM32
Debug
Yes
MicroconFretroller
quency
STM32F103C8T6
72 MHz
Yes
STM32F103C8 72 MHz
Yes
STM32F103CB72 MHz
Yes
STM32F103R8 72 MHz
Yes
STM32F103RB72 MHz
Yes
STM32F103RC72 MHz
Yes
STM32F103RE 72 MHz
Flash RAM
64
Kb
64
Kb
128
Kb
64
Kb
128
Kb
256
Kb
512
Kb
20
Kb
20
Kb
20
Kb
20
Kb
20
Kb
48
Kb
64
Kb
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Generic ATTiny
ID
Name
Platform
attiny13
Generic ATTiny13
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
attiny1634 Generic
ATTiny1634
attiny167 Generic
ATTiny167
attiny2313 Generic
ATTiny2313
attiny24
Generic ATTiny24
attiny25
Generic ATTiny25
Generic
ATTiny261
attiny4313 Generic
ATTiny4313
attiny44
Generic ATTiny44
attiny261
attiny441
attiny45
Generic
ATTiny441
Generic ATTiny45
attiny48
Generic
ATTiny461
Generic ATTiny48
attiny84
Generic ATTiny84
attiny841
Generic
ATTiny841
Generic ATTiny85
attiny461
attiny85
attiny87
Generic
ATTiny861
Generic ATTiny87
attiny88
Generic ATTiny88
attiny861
Debug
Microcontroller
ATTINY13
Frequency
9 MHz
Flash
RAM
1 Kb
ATTINY1634
8 MHz
ATTINY167
8 MHz
ATTINY2313
8 MHz
16
Kb
16
Kb
2 Kb
0.0625
Kb
1 Kb
ATTINY24
8 MHz
2 Kb
0.125 Kb
ATTINY25
8 MHz
2 Kb
0.125 Kb
ATTINY261
8 MHz
2 Kb
0.125 Kb
ATTINY4313
8 MHz
4 Kb
0.25 Kb
ATTINY44
8 MHz
4 Kb
0.25 Kb
ATTINY441
8 MHz
4 Kb
0.25 Kb
ATTINY45
8 MHz
4 Kb
0.25 Kb
ATTINY461
8 MHz
4 Kb
0.25 Kb
ATTINY48
8 MHz
4 Kb
0.25 Kb
ATTINY84
8 MHz
8 Kb
0.5 Kb
ATTINY841
8 MHz
8 Kb
0.5 Kb
ATTINY85
8 MHz
8 Kb
0.5 Kb
ATTINY861
8 MHz
8 Kb
0.5 Kb
ATTINY87
8 MHz
8 Kb
0.5 Kb
ATTINY88
8 MHz
8 Kb
0.5 Kb
0.5 Kb
0.125 Kb
Hornbill
ID
Name
Hornbill ESP32
Dev
hornbill32minimaHornbill ESP32
Minima
hornbill32dev
1.9. Frameworks
Platform
Espressif
32
Espressif
32
Debug
Microcontroller
ESP32
Frequency
240 MHz
ESP32
240 MHz
Flash
RAM
1280
Kb
1280
Kb
288
Kb
288
Kb
265
PlatformIO Documentation, Release 3.4.1
Intel
ID
Name
Platform
genuino101 Arduino/Genuino
101
Debug
Microcontroller
ARCV2EM
Intel
ARC32
Frequency
32 MHz
Flash
RAM
192
Kb
80
Kb
IntoRobot
ID
intorobot
Name
IntoRobot Fig
Platform
Espressif 32
Debug
Microcontroller
ESP32
Frequency
240 MHz
Flash
1280 Kb
RAM
288 Kb
LeafLabs
ID
Name
maple
Maple
Maple Mini
Bootloader 2.0
maple_mini_origin
Maple Mini Original
maple_mini_b20
Platform
ST
STM32
ST
STM32
ST
STM32
Debug
MicroconFretroller
quency
STM32F103RB 72 MHz
Flash
RAM
128
Kb
128
Kb
128
Kb
17
Kb
20
Kb
17
Kb
Frequency
16 MHz
Flash
RAM
32 Kb
2 Kb
16 MHz
128
Kb
16
Kb
STM32F103CB 72 MHz
STM32F103CB 72 MHz
LightUp
ID
lightup
Name
LightUp
Platform
Atmel AVR
Debug
Microcontroller
ATMEGA32U4
Frequency
8 MHz
Flash
32 Kb
RAM
2.5 Kb
Linino
ID
one
Name
Linino One
Platform
Atmel AVR
Debug
Microcontroller
ATMEGA32U4
Frequency
16 MHz
Flash
32 Kb
RAM
2.5 Kb
LowPowerLab
ID
Name
moteino
LowPowerLab Moteino
moteinomega LowPowerLab
MoteinoMEGA
266
Platform
Atmel
AVR
Atmel
AVR
Debug
Microcontroller
ATMEGA328P
ATMEGA1284P
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
MXChip
ID
Name
mxchip_az3166
Microsoft Azure IoT Development
Kit (MXChip AZ3166)
Platform
ST
STM32
Debug
Yes
MicroconFretroller
quency
STM32F412ZGT6
100
MHz
Flash
RAM
1024
Kb
256
Kb
MakerAsia
ID
nano32
Name
MakerAsia Nano32
Platform
Espressif 32
Debug
Microcontroller
ESP32
Frequency
240 MHz
Flash
1280 Kb
RAM
288 Kb
Mcudude
ID
Name
mightycore1284MightyCore
ATmega1284
mightycore16 MightyCore
ATmega16
mightycore164 MightyCore
ATmega164
mightycore32 MightyCore
ATmega32
mightycore324 MightyCore
ATmega324
mightycore644 MightyCore
ATmega644
mightycore8535MightyCore
ATmega8535
1.9. Frameworks
Platform
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Debug
Microcontroller
ATMEGA1284P
ATMEGA16
Frequency
16 MHz
Flash
RAM
16 MHz
128
Kb
16 Kb
16
Kb
1 Kb
ATMEGA164P
ATMEGA32
16 MHz
16 Kb
1 Kb
16 MHz
32 Kb
2 Kb
ATMEGA324P
ATMEGA644P
ATMEGA16
16 MHz
32 Kb
2 Kb
16 MHz
64 Kb
4 Kb
16 MHz
8 Kb
0.5
Kb
267
PlatformIO Documentation, Release 3.4.1
Microduino
ID
Name
Platform
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
1284p16mMicroduino Core+
([email protected],5V)
1284p8m Microduino Core+
([email protected],3.3V)
168pa16mMicroduino Core
([email protected],5V)
168pa8m Microduino Core
([email protected],3.3V)
328p16m Microduino Core
([email protected],5V)
328p8m Microduino Core
([email protected],3.3V)
32u416m Microduino Core USB
([email protected],5V)
644pa16mMicroduino Core+
([email protected],5V)
644pa8m Microduino Core+
([email protected],3.3V)
Debug
Microcontroller
ATMEGA1284P
ATMEGA1284P
ATMEGA168P
ATMEGA168P
ATMEGA328P
ATMEGA328P
ATMEGA32U4
ATMEGA644P
ATMEGA644P
Frequency
16 MHz
8 MHz
16 MHz
8 MHz
16 MHz
8 MHz
16 MHz
16 MHz
8 MHz
Flash
RAM
128
Kb
128
Kb
16
Kb
16
Kb
32
Kb
32
Kb
32
Kb
64
Kb
64
Kb
16
Kb
16
Kb
1 Kb
Flash
RAM
512
Kb
32
Kb
1 Kb
2 Kb
2 Kb
2.5
Kb
4 Kb
4 Kb
MikroElektronika
ID
Name
Platform
clicker2 MikroElektronika
Clicker 2
Debug
Microchip
PIC32
MicroconFretroller
quency
32MX460F512L 80 MHz
NodeMCU
ID
Name
Platform
NodeMCU 0.9 (ESP-12
Module)
nodemcu-32sNodeMCU-32S
Espressif
8266
Espressif
32
Espressif
8266
nodemcu
nodemcuv2
NodeMCU 1.0 (ESP-12E
Module)
Debug
Microcontroller
ESP8266
Frequency
80 MHz
ESP32
240
MHz
80 MHz
ESP8266
Flash
RAM
4096
Kb
1280
Kb
4096
Kb
80
Kb
288
Kb
80
Kb
Noduino
ID
Name
Platform
quantum
Noduino
Quantum
Espressif
32
268
Debug
Microcontroller
ESP32
Frequency
240 MHz
Flash
RAM
1280 Kb
288 Kb
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
OLIMEX
ID
Name
Platform
esp32-evb
OLIMEX ESP32-EVB
Espressif
32
Espressif
32
esp32-gatewayOLIMEX
ESP32-GATEWAY
Debug
Microcontroller
ESP32
Frequency
240 MHz
ESP32
240 MHz
Flash
RAM
1280
Kb
1280
Kb
288
Kb
288
Kb
Olimex
ID
Name
Platform
Olimex MOD-WIFIESP8266(-DEV)
pinguino32Olimex PIC32-PINGUINO
modwifi
Debug
Espressif
8266
Microchip
PIC32
Microcontroller
ESP8266
Frequency
80 MHz
32MX440F256H80 MHz
Flash
RAM
2048
Kb
256
Kb
80
Kb
32
Kb
Onehorse
ID
Name
Platform
onehorse32devOnehorse ESP32 Dev
Module
Debug
Espressif
32
Microcontroller
ESP32
Frequency
240 MHz
Flash
RAM
1280
Kb
288
Kb
Flash
RAM
128 Kb
32 Kb
OpenBCI
ID
Name
Platform
openbci
OpenBCI
32bit
Microchip
PIC32
Debug
Microcontroller
32MX250F128B
Frequency
40 MHz
OpenEnergyMonitor
ID
Name
Platform
emonpi
OpenEnergyMonitor
emonPi
Atmel
AVR
Debug
Microcontroller
ATMEGA328P
Frequency
16 MHz
Flash
RAM
32
Kb
2 Kb
Flash
RAM
512
Kb
512
Kb
128
Kb
32 Kb
PONTECH
ID
Name
quick240_usb PONTECH
quicK240
usbono_pic32 PONTECH
UAV100
1.9. Frameworks
Platform
Microchip
PIC32
Microchip
PIC32
Debug
MicroconFretroller
quency
32MX795F512L 80 MHz
32MX440F512H 80 MHz
269
PlatformIO Documentation, Release 3.4.1
PanStamp
ID
Name
Platform
Debug
panStampAVR
PanStamp AVR
Atmel AVR
panStampNRG
PanStamp NRG
1.1
TI
MSP430
Microcontroller
ATMEGA328P
Frequency
8 MHz
CC430F5137
12 MHz
Flash
RAM
32
Kb
32
Kb
2 Kb
4 Kb
Pinoccio
ID
pinoccio
Name
Pinoccio Scout
Platform
Atmel AVR
Debug
Microcontroller
ATMEGA256RFR2
Frequency
16 MHz
Flash
256 Kb
RAM
32 Kb
Pololu Corporation
ID
Name
Platform
a-star32U4
Pololu A-Star
32U4
Atmel
AVR
Debug
Microcontroller
ATMEGA32U4
Frequency
16 MHz
Flash
RAM
32
Kb
2.5
Kb
Punch Through
ID
Name
LightBlue
Bean
lightblue-beanplus LightBlue
Bean+
lightblue-bean
Platform
Debug
Atmel
AVR
Atmel
AVR
Microcontroller
ATMEGA328P
ATMEGA328P
Frequency
8 MHz
16 MHz
Flash
RAM
32
Kb
32
Kb
2 Kb
2 Kb
Quirkbot
ID
quirkbot
Name
Quirkbot
Platform
Atmel AVR
Debug
Microcontroller
ATMEGA32U4
Frequency
8 MHz
Flash
32 Kb
RAM
2.5 Kb
RFduino
ID
rfduino
270
Name
RFduino
Platform
Nordic nRF51
Debug
Microcontroller
NRF51822
Frequency
16 MHz
Flash
128 Kb
RAM
8 Kb
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
RedBearLab
ID
Name
blend
RedBearLab Blend
Platform
Atmel
AVR
Atmel
AVR
Atmel
AVR
blendmicro16
RedBearLab Blend Micro
3.3V/16MHz (overclock)
blendmicro8RedBearLab Blend Micro
3.3V/8MHz
Debug
Microcontroller
ATMEGA32U4
ATMEGA32U4
ATMEGA32U4
Frequency
16 MHz
16 MHz
8 MHz
Flash RAM
32
Kb
32
Kb
32
Kb
2.5
Kb
2.5
Kb
2.5
Kb
RepRap
ID
Name
Platform
reprap_rambo
RepRap
RAMBo
Atmel
AVR
Debug
Microcontroller
ATMEGA2560
Frequency
16 MHz
Flash
RAM
256
Kb
8 Kb
Flash
RAM
256
Kb
256
Kb
128
Kb
128
Kb
32 Kb
32
Kb
32
Kb
16
Kb
16
Kb
2 Kb
128
Kb
256
Kb
128
Kb
16
Kb
32
Kb
16
Kb
SODAQ
ID
Name
sodaq_autonomo SODAQ
Autonomo
sodaq_explorer SODAQ
ExpLoRer
sodaq_galora
SODAQ GaLoRa
sodaq_mbili
SODAQ Mbili
sodaq_moja
SODAQ Moja
sodaq_ndogo
SODAQ Ndogo
sodaq_one
SODAQ ONE
sodaq_tatu
SODAQ Tatu
Platform
Debug
Atmel
SAM
Atmel
SAM
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
SAM
Atmel
AVR
Microcontroller
SAMD21J18A
Frequency
48 MHz
SAMD21J18A
48 MHz
ATMEGA1284P
ATMEGA1284P
ATMEGA328P
ATMEGA1284P
SAMD21G18A
8 MHz
ATMEGA1284P
8 MHz
8 MHz
8 MHz
8 MHz
48 MHz
SainSmart
ID
Name
SainSmart Due
(Programming Port)
sainSmartDueUSB
SainSmart Due (USB
Native Port)
sainSmartDue
1.9. Frameworks
Platform
Atmel
SAM
Atmel
SAM
Debug
MicroconFretroller
quency
AT91SAM3X8E84 MHz
AT91SAM3X8E84 MHz
Flash
RAM
512
Kb
512
Kb
32
Kb
32
Kb
271
PlatformIO Documentation, Release 3.4.1
Sanguino
ID
Name
sanguino_atmega1284_8m
Sanguino ATmega1284p (8MHz)
sanguino_atmega1284p
Sanguino ATmega1284p
(16MHz)
sanguino_atmega644
Sanguino ATmega644 or
ATmega644A (16 MHz)
sanguino_atmega644_8m
Sanguino ATmega644 or
ATmega644A (8 MHz)
sanguino_atmega644p
Sanguino ATmega644P or
ATmega644PA (16 MHz)
sanguino_atmega644p_8m
Sanguino ATmega644P or
ATmega644PA (8 MHz)
Platform
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Debug
MicroFrecontroller quency
AT8 MHz
MEGA1284P
AT16
MEGA1284PMHz
AT16
MEGA644 MHz
AT8 MHz
MEGA644
AT16
MEGA644P MHz
AT8 MHz
MEGA644P
Flash RAM
128
Kb
128
Kb
64
Kb
64
Kb
64
Kb
64
Kb
16
Kb
16
Kb
4
Kb
4
Kb
4
Kb
4
Kb
SeeedStudio
ID
Name
cui32stem SeeedStudio
CUI32stem
272
Platform
Microchip
PIC32
Debug
MicroconFretroller
quency
32MX795F512H 80 MHz
Flash
RAM
512
Kb
128
Kb
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
SparkFun
ID
Name
Platform
sparkfunBlynk
SparkFun Blynk Board
Espressif
8266
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
SAM
Atmel
SAM
Atmel
AVR
sparkfun_digitalsandbox
SparkFun Digital
Sandbox
sparkfun_fiov3
SparkFun Fio V3
3.3V/8MHz
sparkfun_makeymakey
SparkFun Makey Makey
sparkfun_megamini SparkFun Mega Pro
Mini 3.3V
sparkfun_megapro16MHz
SparkFun Mega Pro
5V/16MHz
sparkfun_megapro8MHz
SparkFun Mega Pro
3.3V/8MHz
sparkfun_promicro16
SparkFun Pro Micro
5V/16MHz
sparkfun_promicro8SparkFun Pro Micro
3.3V/8MHz
sparkfun_qduinomini
SparkFun Qduino Mini
sparkfun_redboard SparkFun RedBoard
sparkfun_samd21_dev_usb
SparkFun SAMD21 Dev
Breakout
sparkfun_samd21_mini_usb
SparkFun SAMD21
Mini Breakout
sparkfun_satmega128rfa1
SparkFun
ATmega128RFA1 Dev
Board
sparkfun_serial7seg
SparkFun Serial
7-Segment Display
thing
SparkFun ESP8266
Thing
thingdev
SparkFun ESP8266
Thing Dev
uview
SparkFun MicroView
Atmel
AVR
Espressif
8266
Espressif
8266
Atmel
AVR
Debug
Yes
Yes
Microcontroller
ESP8266
Frequency
80
MHz
8 MHz
Flash RAM
4096
Kb
32
Kb
32
Kb
32
Kb
256
Kb
256
Kb
256
Kb
32
Kb
32
Kb
32
Kb
32
Kb
256
Kb
256
Kb
16
Kb
80
Kb
2
Kb
2.5
Kb
2.5
Kb
8
Kb
8
Kb
8
Kb
2.5
Kb
2.5
Kb
2.5
Kb
2
Kb
32
Kb
32
Kb
124
Kb
8 MHz
32
Kb
512
Kb
512
Kb
32
Kb
2
Kb
80
Kb
80
Kb
2
Kb
ATMEGA328P
AT8 MHz
MEGA32U4
AT16
MEGA32U4 MHz
AT8 MHz
MEGA2560
AT16
MEGA2560 MHz
AT8 MHz
MEGA2560
AT16
MEGA32U4 MHz
AT8 MHz
MEGA32U4
AT8 MHz
MEGA32U4
AT16
MEGA328P MHz
SAMD21G18A48
MHz
SAMD21G18A48
MHz
AT16
MEGA128RFA1MHz
ATMEGA328P
ESP8266
ESP8266
ATMEGA328P
80
MHz
80
MHz
16
MHz
SparkFun Electronics
ID
Name
esp32thing SparkFun ESP32
Thing
1.9. Frameworks
Platform
Espressif
32
Debug
Microcontroller
ESP32
Frequency
240 MHz
Flash
RAM
1280
Kb
288
Kb
273
PlatformIO Documentation, Release 3.4.1
SweetPea
ID
Name
Platform
esp210
SweetPea
ESP-210
Espressif
8266
Debug
Microcontroller
ESP8266
Frequency
80 MHz
Microcontroller
ATMEGA32U4
AT90USB1286
MK20DX128
MK20DX256
MK64FX512
MK66FX1M0
MKL26Z64
Frequency
16 MHz
16 MHz
48 MHz
72 MHz
120 MHz
180 MHz
48 MHz
Flash
RAM
4096
Kb
80 Kb
Teensy
ID
teensy20
teensy20pp
teensy30
teensy31
teensy35
teensy36
teensylc
Name
Teensy 2.0
Teensy++ 2.0
Teensy 3.0
Teensy 3.1 / 3.2
Teensy 3.5
Teensy 3.6
Teensy LC
Platform
Teensy
Teensy
Teensy
Teensy
Teensy
Teensy
Teensy
Debug
Flash
32 Kb
128 Kb
128 Kb
256 Kb
512 Kb
1024 Kb
64 Kb
RAM
2.5 Kb
8 Kb
16 Kb
64 Kb
192 Kb
256 Kb
8 Kb
Flash
RAM
1280
Kb
4096
Kb
288
Kb
80 Kb
ThaiEasyElec
ID
Name
Platform
espino32
ESPino32
Espressif 32
espinotee ThaiEasyElec
ESPino
Debug
Espressif
8266
Microcontroller
ESP32
Frequency
240 MHz
ESP8266
80 MHz
The Things Network
ID
Name
the_things_uno The Things
Uno
Platform
Debug
Atmel
AVR
Microcontroller
ATMEGA32U4
Frequency
16 MHz
Flash
RAM
32
Kb
2.5
Kb
TinyCircuits
ID
Name
tinyduino TinyCircuits TinyDuino
Processor Board
tinylily TinyCircuits TinyLily Mini
Processor
274
Platform
Atmel
AVR
Atmel
AVR
Debug
Microcontroller
ATMEGA328P
ATMEGA328P
Frequency
8 MHz
8 MHz
Flash RAM
32
Kb
32
Kb
2
Kb
2
Kb
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
UBW32
ID
Name
Platform
ubw32_mx460 UBW32
MX460
ubw32_mx795 UBW32
MX795
Debug
MicroconFretroller
quency
32MX460F512L 80 MHz
Microchip
PIC32
Microchip
PIC32
32MX795F512L 80 MHz
Flash
RAM
512
Kb
512
Kb
32 Kb
Flash
RAM
4096
Kb
4096
Kb
960 Kb
80 Kb
1280
Kb
288
Kb
128
Kb
WEMOS
ID
Name
Platform
d1
WEMOS D1
(Retired)
WEMOS D1 mini
Espressif
8266
Espressif
8266
Espressif
8266
Espressif 32
d1_mini
d1_mini_lite WEMOS D1 mini
Lite
lolin32
WEMOS
LOLIN32
Debug
Microcontroller
ESP8266
Frequency
80 MHz
ESP8266
80 MHz
ESP8266
80 MHz
ESP32
240 MHz
80 Kb
80 Kb
Wicked Device
ID
Name
Platform
wildfirev2 Wicked Device WildFire
V2
wildfirev3 Wicked Device WildFire
V3
Debug
Atmel
AVR
Atmel
AVR
Microcontroller
ATMEGA1284P
ATMEGA1284P
Frequency
16 MHz
16 MHz
Flash
RAM
128
Kb
128
Kb
16
Kb
16
Kb
Widora
ID
widora-air
Name
Widora AIR
Platform
Espressif 32
Debug
Microcontroller
ESP32
Frequency
240 MHz
Flash
1280 Kb
RAM
288 Kb
chipKIT
ID
lenny
Name
chipKIT Lenny
Platform
Microchip PIC32
Debug
Microcontroller
32MX270F256D
Frequency
40 MHz
Flash
128 Kb
RAM
32 Kb
element14
ID
Name
chipkit_pi Element14 chipKIT
Pi
1.9. Frameworks
Platform
Microchip
PIC32
Debug
MicroconFretroller
quency
32MX250F128B 40 MHz
Flash
RAM
128
Kb
32
Kb
275
PlatformIO Documentation, Release 3.4.1
makerlab.mx
ID
altair
Name
Altair
Platform
Atmel AVR
Debug
Microcontroller
ATMEGA256RFR2
Frequency
16 MHz
Flash
256 Kb
RAM
32 Kb
nicai-systems
ID
Name
bob3
nicai-systems BOB3 coding bot
nibo2
nicai-systems NIBO 2 robot
nibobee
nicai-systems NIBObee robot
nibobee_1284 nicai-systems NIBObee robot with
Tuning Kit
niboburger
nicai-systems NIBO burger robot
niboburger_1284
nicai-systems NIBO burger robot
with Tuning Kit
Platform
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Debug
Microcontroller
ATMEGA88
ATMEGA128
ATMEGA16
ATMEGA1284P
ATMEGA16
ATMEGA1284P
Frequency
8 MHz
Flash RAM
16
MHz
15
MHz
20
MHz
15
MHz
20
MHz
128
Kb
16
Kb
128
Kb
16
Kb
128
Kb
8 Kb
1
Kb
4
Kb
1
Kb
16
Kb
1
Kb
16
Kb
ubIQio
ID
ardhat
Name
ubIQio Ardhat
Platform
Atmel AVR
Debug
Microcontroller
ATMEGA328P
Frequency
16 MHz
Flash
32 Kb
RAM
2 Kb
ARTIK SDK
framework = artik-sdk
ARTIK SDK is a C/C++ SDK targeting Samsung ARTIK platforms. It exposes a set of APIs to ease up development
of applications. These APIs cover hardware buses such as GPIO, SPI, I2C, UART, connectivity links like Wi-Fi,
Bluetooth, Zigbee, and network protocols such as HTTP, Websockets, MQTT, and others.
For more detailed information please visit vendor site.
Contents
• Platforms
• Boards
– RushUp
– Samsung
276
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Platforms
Name
Linux
ARM
Description
Linux ARM is a Unix-like and mostly POSIX-compliant computer operating system (OS) assembled
under the model of free and open-source software development and distribution. Using host OS (Mac
OS X, Linux ARM) you can build native application for Linux ARM platform.
Boards
Note:
• You can list pre-configured boards by platformio boards command or PlatformIO Boards Explorer
• For more detailed board information please scroll tables below by horizontal.
RushUp
ID
Name
kitra_520 RushUp Kitra
520
Platform
Debug
Linux
ARM
Microcontroller
EXYNOS3250
Frequency
1000
MHz
Flash
RAM
4194304
Kb
524288
Kb
MicroconFretroller
quency
EXYNOS5422 1500
MHz
EXYNOS3250 1000
MHz
S5P4418
1200
MHz
S5P6818
1400
MHz
Flash
RAM
16777216
Kb
4194304
Kb
4194304
Kb
4194304
Kb
2097152
Kb
524288
Kb
524288
Kb
1048576
Kb
Samsung
ID
Name
artik_1020 Samsung ARTIK
1020
artik_520 Samsung ARTIK
520
artik_530 Samsung ARTIK
530
artik_710 Samsung ARTIK
710
Platform
Debug
Linux
ARM
Linux
ARM
Linux
ARM
Linux
ARM
CMSIS
framework = cmsis
The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction
layer for the Cortex-M processor series and specifies debugger interfaces. The CMSIS enables consistent and simple
software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies
software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for
devices.
For more detailed information please visit vendor site.
1.9. Frameworks
277
PlatformIO Documentation, Release 3.4.1
Contents
• Platforms
• Boards
– Armstrap
– RushUp
– ST
• Articles
• Examples
Platforms
Name Description
ST
The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer
STM32 new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high
performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation,
while maintaining full integration and ease of development.
Boards
Note:
• You can list pre-configured boards by platformio boards command or PlatformIO Boards Explorer
• For more detailed board information please scroll tables below by horizontal.
Armstrap
ID
Name
armstrap_eagle1024
Armstrap Eagle
1024
armstrap_eagle2048
Armstrap Eagle
2048
armstrap_eagle512Armstrap Eagle
512
Platform
ST
STM32
ST
STM32
ST
STM32
Debug
Yes
MicroconFretroller
quency
STM32F417VGT6168 MHz
Yes
STM32F427VIT6 168 MHz
Yes
STM32F407VET6168 MHz
Flash
RAM
1024
Kb
2048
Kb
512
Kb
192
Kb
256
Kb
192
Kb
Flash
RAM
512
Kb
96
Kb
RushUp
ID
Name
Platform
cloud_jam
RushUp
Cloud-JAM
ST
STM32
278
Debug
Yes
Microcontroller
Frequency
STM32F401RET6 84 MHz
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
ST
ID
Name
Platform
disco_f303vc ST
ST
STM32F3DISCOVERY STM32
disco_f407vg ST
ST
STM32F4DISCOVERY STM32
disco_l152rb ST
ST
STM32LDISCOVERY STM32
nucleo_f401reST Nucleo F401RE
ST
STM32
Debug
Yes
MicroconFretroller
quency
STM32F303VCT672 MHz
Yes
STM32F407VGT6168 MHz
Yes
STM32L152RBT632 MHz
Yes
STM32F401RET684 MHz
Flash
RAM
256
Kb
1024
Kb
128
Kb
512
Kb
48 Kb
128
Kb
16 Kb
96 Kb
Articles
• Jan 11, 2016 - David Mills, Ph.D. - STM NUCLEOF401RE TIMER IO
See more Articles about us.
Examples
All project examples are located in PlatformIO repository Examples for CMSIS framework.
• Blink
Energia
framework = energia
Energia Wiring-based framework enables pretty much anyone to start easily creating microcontroller-based projects
and applications. Its easy-to-use libraries and functions provide developers of all experience levels to start blinking
LEDs, buzzing buzzers and sensing sensors more quickly than ever before.
For more detailed information please visit vendor site.
Contents
• Platforms
• Boards
– TI
Platforms
Name Description
TI
MSP430 microcontrollers (MCUs) from Texas Instruments (TI) are 16-bit, RISC-based, mixed-signal
MSP430 processors designed for ultra-low power. These MCUs offer the lowest power consumption and the
perfect mix of integrated peripherals for thousands of applications.
TI
Texas Instruments TM4C12x MCUs offer the industrys most popular ARM Cortex-M4 core with
TIVA
scalable memory and package options, unparalleled connectivity peripherals, advanced application
functions, industry-leading analog integration, and extensive software solutions.
1.9. Frameworks
279
PlatformIO Documentation, Release 3.4.1
Boards
Note:
• You can list pre-configured boards by platformio boards command or PlatformIO Boards Explorer
• For more detailed board information please scroll tables below by horizontal.
TI
ID
Name
lplm4f120h5qr
TI LaunchPad (Stellaris) w/
lm4f120 (80MHz)
lpmsp430f5529
TI LaunchPad
MSP-EXP430F5529LP
lpmsp430fr4133
TI LaunchPad
MSP-EXP430FR4133LP
lpmsp430fr5739
TI FraunchPad
MSP-EXP430FR5739LP
lpmsp430fr5969
TI LaunchPad
MSP-EXP430FR5969LP
lpmsp430fr6989
TI LaunchPad
MSP-EXP430FR6989LP
lpmsp430g2553
TI LaunchPad
MSP-EXP430G2553LP
lptm4c1230c3pm
TI LaunchPad (Tiva C) w/
tm4c123 (80MHz)
lptm4c1294ncpdt
TI LaunchPad (Tiva C) w/
tm4c129 (120MHz)
Platform
TI
TIVA
TI
MSP430
TI
MSP430
TI
MSP430
TI
MSP430
TI
MSP430
TI
MSP430
TI
TIVA
TI
TIVA
Debug
Yes
Yes
Yes
MicroconFretroller
quency
LPLM4F120H5QR
80
MHz
MSP430F5529 16
MHz
MSP430FR4133 8 MHz
Yes
MSP430FR5739 16
MHz
MSP430FR5969 8 MHz
Yes
MSP430FR6989 8 MHz
Yes
MSP430G2553
Yes
Yes
Yes
16
MHz
LPTM4C1230C3PM
80
MHz
LPTM4C1294NCPDT
120
MHz
Flash
RAM
256
Kb
128
Kb
16
Kb
16
Kb
64
Kb
128
Kb
16
Kb
256
Kb
1024
Kb
32
Kb
8 Kb
2 Kb
0.5
Kb
2 Kb
2 Kb
0.5
Kb
32
Kb
256
Kb
ESP-IDF
framework = espidf
Espressif IoT Development Framework. Official development framework for ESP32.
For more detailed information please visit vendor site.
Contents
• Platforms
• Boards
– Adafruit
– Aiyarafun
– April Brother
– DFRobot
280
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
– DOIT
– ESP32vn
– Electronic SweetPeas
– Espressif
– Hornbill
– IntoRobot
– MakerAsia
– NodeMCU
– Noduino
– OLIMEX
– Onehorse
– SparkFun Electronics
– ThaiEasyElec
– WEMOS
– Widora
Platforms
Name
Espressif
32
Description
Espressif Systems is a privately held fabless semiconductor company. They provide wireless
communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things
applications.
Boards
Note:
• You can list pre-configured boards by platformio boards command or PlatformIO Boards Explorer
• For more detailed board information please scroll tables below by horizontal.
Adafruit
ID
Name
featheresp32 Adafruit ESP32
Feather
1.9. Frameworks
Platform
Espressif
32
Debug
Microcontroller
ESP32
Frequency
240 MHz
Flash
RAM
1280
Kb
288
Kb
281
PlatformIO Documentation, Release 3.4.1
Aiyarafun
ID
node32s
Name
Node32s
Platform
Espressif 32
Debug
Microcontroller
ESP32
Frequency
240 MHz
Flash
1280 Kb
RAM
288 Kb
April Brother
ID
Name
Platform
espea32
April Brother
ESPea32
Espressif
32
Debug
Microcontroller
ESP32
Frequency
240 MHz
Flash
RAM
1280
Kb
288
Kb
Frequency
240 MHz
Flash
RAM
1280
Kb
288
Kb
DFRobot
ID
Name
firebeetle32 FireBeetleESP32
Platform
Debug
Espressif
32
Microcontroller
ESP32
DOIT
ID
Name
esp32doit-devkit-v1
DOIT ESP32
DEVKIT V1
Platform
Espressif
32
Debug
Microcontroller
ESP32
Frequency
240
MHz
Flash
RAM
1280
Kb
288
Kb
ESP32vn
ID
Name
esp32vn-iot-uno ESP32vn IoT
Uno
Platform
Debug
Espressif
32
Microcontroller
ESP32
Frequency
240 MHz
Flash
RAM
1024
Kb
288
Kb
Microcontroller
ESP32
Frequency
240 MHz
Flash
RAM
1280
Kb
288
Kb
Frequency
240 MHz
Flash
RAM
1280
Kb
288
Kb
Electronic SweetPeas
ID
Name
esp320 Electronic SweetPeas
ESP320
Platform
Debug
Espressif
32
Espressif
ID
Name
Platform
esp32dev Espressif ESP32 Dev
Module
Espressif
32
282
Debug
Microcontroller
ESP32
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Hornbill
ID
Name
Platform
Hornbill ESP32
Dev
hornbill32minimaHornbill ESP32
Minima
hornbill32dev
Debug
Espressif
32
Espressif
32
Microcontroller
ESP32
Frequency
240 MHz
ESP32
240 MHz
Flash
RAM
1280
Kb
1280
Kb
288
Kb
288
Kb
IntoRobot
ID
intorobot
Name
IntoRobot Fig
Platform
Espressif 32
Debug
Microcontroller
ESP32
Frequency
240 MHz
Flash
1280 Kb
RAM
288 Kb
MakerAsia
ID
nano32
Name
MakerAsia Nano32
Platform
Espressif 32
Debug
Microcontroller
ESP32
Frequency
240 MHz
Flash
1280 Kb
RAM
288 Kb
Frequency
240 MHz
Flash
RAM
1280
Kb
288
Kb
Flash
RAM
1280 Kb
288 Kb
Flash
RAM
1280
Kb
1280
Kb
288
Kb
288
Kb
NodeMCU
ID
Name
Platform
nodemcu-32s
NodeMCU32S
Espressif
32
Debug
Microcontroller
ESP32
Noduino
ID
Name
Platform
quantum
Noduino
Quantum
Espressif
32
Debug
Microcontroller
ESP32
Frequency
240 MHz
OLIMEX
ID
Name
Platform
esp32-evb
OLIMEX ESP32-EVB
Espressif
32
Espressif
32
esp32-gatewayOLIMEX
ESP32-GATEWAY
1.9. Frameworks
Debug
Microcontroller
ESP32
Frequency
240 MHz
ESP32
240 MHz
283
PlatformIO Documentation, Release 3.4.1
Onehorse
ID
Name
Platform
onehorse32devOnehorse ESP32 Dev
Module
Debug
Espressif
32
Microcontroller
ESP32
Frequency
240 MHz
Flash
RAM
1280
Kb
288
Kb
SparkFun Electronics
ID
Name
Platform
esp32thing SparkFun ESP32
Thing
Debug
Espressif
32
Microcontroller
ESP32
Frequency
240 MHz
Flash
RAM
1280
Kb
288
Kb
ThaiEasyElec
ID
espino32
Name
ESPino32
Platform
Espressif 32
Debug
Microcontroller
ESP32
Frequency
240 MHz
Flash
1280 Kb
RAM
288 Kb
WEMOS
ID
Name
Platform
lolin32
WEMOS
LOLIN32
Espressif
32
Debug
Microcontroller
ESP32
Frequency
240 MHz
Flash
RAM
1280
Kb
288
Kb
Flash
1280 Kb
RAM
288 Kb
Widora
ID
widora-air
Name
Widora AIR
Platform
Espressif 32
Debug
Microcontroller
ESP32
Frequency
240 MHz
ESP8266 RTOS SDK
framework = esp8266-rtos-sdk
ESP8266 SDK based on FreeRTOS, a truly free professional grade RTOS for microcontrollers
For more detailed information please visit vendor site.
Contents
• Platforms
• Boards
– Adafruit
– Doit
284
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
– DycodeX
– ESPert
– ESPino
– Espressif
– NodeMCU
– Olimex
– SparkFun
– SweetPea
– ThaiEasyElec
– WEMOS
Platforms
Name
Espressif
8266
Description
Espressif Systems is a privately held fabless semiconductor company. They provide wireless
communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things
applications.
Boards
Note:
• You can list pre-configured boards by platformio boards command or PlatformIO Boards Explorer
• For more detailed board information please scroll tables below by horizontal.
Adafruit
ID
Name
Platform
huzzah Adafruit HUZZAH
ESP8266
Espressif
8266
Debug
Microcontroller
ESP8266
Frequency
80 MHz
Flash
RAM
4096
Kb
80
Kb
Frequency
80 MHz
Flash
RAM
4096
Kb
80
Kb
Doit
ID
Name
Platform
espduino ESPDuino (ESP-13
Module)
Espressif
8266
1.9. Frameworks
Debug
Microcontroller
ESP8266
285
PlatformIO Documentation, Release 3.4.1
DycodeX
ID
espectro
Name
ESPectro Core
Platform
Espressif 8266
Debug
Microcontroller
ESP8266
Frequency
80 MHz
Flash
4096 Kb
RAM
80 Kb
ESPert
ID
Name
espresso_lite_v1ESPresso Lite
1.0
espresso_lite_v2ESPresso Lite
2.0
Platform
Debug
Espressif
8266
Espressif
8266
Microcontroller
ESP8266
Frequency
80 MHz
ESP8266
80 MHz
Flash
RAM
4096
Kb
4096
Kb
80
Kb
80
Kb
ESPino
ID
espino
Name
ESPino
Platform
Espressif 8266
Debug
Microcontroller
ESP8266
Frequency
80 MHz
Flash
4096 Kb
RAM
80 Kb
Espressif
ID
Name
Platform
esp01
esp12e
Espressif Generic ESP8266
ESP-01 512k
Espressif Generic ESP8266
ESP-01 1M
Espressif Generic ESP8266
ESP-07
Espressif ESP8266 ESP-12E
esp8285
Generic ESP8285 Module
Espressif
8266
Espressif
8266
Espressif
8266
Espressif
8266
Espressif
8266
Espressif
8266
Espressif
8266
Espressif
8266
Espressif
8266
esp01_1m
esp07
esp_wroom_02
ESP-WROOM-02
phoenix_v1 Phoenix 1.0
phoenix_v2 Phoenix 2.0
wifinfo
286
WifInfo
Debug
Microcontroller
ESP8266
Frequency
80 MHz
ESP8266
80 MHz
ESP8266
80 MHz
ESP8266
80 MHz
ESP8266
80 MHz
ESP8266
80 MHz
ESP8266
80 MHz
ESP8266
80 MHz
ESP8266
80 MHz
Flash
RAM
512
Kb
1024
Kb
4096
Kb
4096
Kb
448
Kb
4096
Kb
1024
Kb
1024
Kb
448
Kb
80
Kb
80
Kb
80
Kb
80
Kb
80
Kb
80
Kb
80
Kb
80
Kb
80
Kb
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
NodeMCU
ID
Name
Platform
NodeMCU 0.9 (ESP-12
Module)
nodemcuv2 NodeMCU 1.0 (ESP-12E
Module)
nodemcu
Debug
Espressif
8266
Espressif
8266
Microcontroller
ESP8266
Frequency
80 MHz
Flash
RAM
4096
Kb
4096
Kb
80
Kb
80
Kb
ESP8266
80 MHz
Microcontroller
ESP8266
Frequency
80 MHz
Flash
RAM
2048
Kb
80
Kb
Microcontroller
ESP8266
Frequency
80 MHz
Flash
RAM
ESP8266
80 MHz
ESP8266
80 MHz
4096
Kb
512
Kb
512
Kb
80
Kb
80
Kb
80
Kb
Olimex
ID
Name
Platform
modwifi Olimex
MOD-WIFI-ESP8266(-DEV)
Debug
Espressif
8266
SparkFun
ID
Name
Platform
sparkfunBlynkSparkFun Blynk Board
SparkFun ESP8266
Thing
SparkFun ESP8266
Thing Dev
thing
thingdev
Espressif
8266
Espressif
8266
Espressif
8266
Debug
SweetPea
ID
Name
Platform
esp210
SweetPea
ESP-210
Espressif
8266
Debug
Microcontroller
ESP8266
Frequency
80 MHz
Flash
RAM
4096
Kb
80 Kb
ThaiEasyElec
ID
Name
espinotee ThaiEasyElec
ESPino
1.9. Frameworks
Platform
Espressif
8266
Debug
Microcontroller
ESP8266
Frequency
80 MHz
Flash
RAM
4096
Kb
80
Kb
287
PlatformIO Documentation, Release 3.4.1
WEMOS
ID
Name
Platform
d1
WEMOS D1
(Retired)
WEMOS D1 mini
Espressif
8266
Espressif
8266
d1_mini
Debug
Microcontroller
ESP8266
Frequency
80 MHz
ESP8266
80 MHz
Flash
RAM
4096
Kb
4096
Kb
80
Kb
80
Kb
libOpenCM3
framework = libopencm3
The libOpenCM3 framework aims to create a free/libre/open-source firmware library for various ARM CortexM0(+)/M3/M4 microcontrollers, including ST STM32, Ti Tiva and Stellaris, NXP LPC 11xx, 13xx, 15xx, 17xx
parts, Atmel SAM3, Energy Micro EFM32 and others.
For more detailed information please visit vendor site.
Contents
• Platforms
• Boards
– ST
– TI
• Examples
Platforms
Name Description
ST
The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer
STM32 new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high
performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation,
while maintaining full integration and ease of development.
TI
Texas Instruments TM4C12x MCUs offer the industrys most popular ARM Cortex-M4 core with
TIVA
scalable memory and package options, unparalleled connectivity peripherals, advanced application
functions, industry-leading analog integration, and extensive software solutions.
Boards
Note:
• You can list pre-configured boards by platformio boards command or PlatformIO Boards Explorer
• For more detailed board information please scroll tables below by horizontal.
288
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
ST
ID
Name
Platform
disco_f303vc ST
ST
STM32F3DISCOVERY STM32
disco_f407vg ST
ST
STM32F4DISCOVERY STM32
disco_l152rb ST
ST
STM32LDISCOVERY STM32
nucleo_f103rbST Nucleo F103RB
ST
STM32
Debug
Yes
MicroconFretroller
quency
STM32F303VCT672 MHz
Yes
STM32F407VGT6168 MHz
Yes
STM32L152RBT632 MHz
Yes
STM32F103RBT672 MHz
Flash
RAM
256
Kb
1024
Kb
128
Kb
128
Kb
48 Kb
128
Kb
16 Kb
20 Kb
TI
ID
Name
lplm4f120h5qrTI LaunchPad (Stellaris) w/
lm4f120 (80MHz)
lptm4c1230c3pm
TI LaunchPad (Tiva C) w/
tm4c123 (80MHz)
lptm4c1294ncpdt
TI LaunchPad (Tiva C) w/
tm4c129 (120MHz)
Platform
TI
TIVA
TI
TIVA
TI
TIVA
Debug
Yes
Yes
Yes
MicroconFretroller
quency
LPLM4F120H5QR80
MHz
LPTM4C1230C3PM
80
MHz
LPTM4C1294NCPDT
120
MHz
Flash
RAM
256
Kb
256
Kb
1024
Kb
32
Kb
32
Kb
256
Kb
Examples
All project examples are located in PlatformIO repository Examples for libOpenCM3 framework.
• Blink
mbed
framework = mbed
The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and
concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you
to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of
reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community.
For more detailed information please visit vendor site.
Contents
• Platforms
• Boards
– 96Boards
– Atmel
– BBC
1.9. Frameworks
289
PlatformIO Documentation, Release 3.4.1
– CQ Publishing
– Delta
– Elektor Labs
– Embedded Artists
– Espotel
– Freescale
– GHI Electronics
– Generic
– JKSoft
– Maxim
– Micromint
– MikroElektronika
– MultiTech
– NGX Technologies
– NXP
– Nordic
– Outrageous Circuits
– RedBearLab
– RushUp
– ST
– SeeedStudio
– Semtech
– Silicon Labs
– Smeshlink
– Solder Splash Labs
– Switch Science
– Teensy
– WIZNet
– u-blox
– y5 design
• Configuration
• Articles
• Examples
290
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Platforms
Name
Atmel SAM
Freescale
Kinetis
Maxim 32
Nordic
nRF51
Nordic
nRF52
NXP LPC
WIZNet
W7500
Silicon
Labs
EFM32
ST STM32
Teensy
Description
Atmel | SMART offers Flash- based ARM products based on the ARM Cortex-M0+, Cortex-M3
and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and
feature mix.
Freescale Kinetis Microcontrollers is family of multiple hardware- and software-compatible ARM
Cortex-M0+, Cortex-M4 and Cortex-M7-based MCU series. Kinetis MCUs offer exceptional
low-power performance, scalability and feature integration.
Maxim’s microcontrollers provide low-power, efficient, and secure solutions for challenging
embedded applications. Maxim’s processors embed cutting-edge technologies to secure data and
intellectual property, proven analog circuitry for real-world applications, and battery-conserving
low power operation.
The Nordic nRF51 Series is a family of highly flexible, multi-protocol, system-on-chip (SoC)
devices for ultra-low power wireless applications. nRF51 Series devices support a range of
protocol stacks including Bluetooth Smart (previously called Bluetooth low energy), ANT and
proprietary 2.4GHz protocols such as Gazell.
The nRF52 Series are built for speed to carry out increasingly complex tasks in the shortest
possible time and return to sleep, conserving precious battery power. They have a Cortex-M4F
processor and are the most capable Bluetooth Smart SoCs on the market.
The NXP LPC is a family of 32-bit microcontroller integrated circuits by NXP Semiconductors.
The LPC chips are grouped into related series that are based around the same 32-bit ARM
processor core, such as the Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0. Internally, each
microcontroller consists of the processor core, static RAM memory, flash memory, debugging
interface, and various peripherals.
The IOP (Internet Offload Processor) W7500 is the one-chip solution which integrates an ARM
Cortex-M0, 128KB Flash and hardwired TCP/IP core for various embedded application platform
especially requiring Internet of things
Silicon Labs EFM32 Gecko 32-bit microcontroller (MCU) family includes devices that offer flash
memory configurations up to 256 kB, 32 kB of RAM and CPU speeds up to 48 MHz. Based on the
powerful ARM Cortex-M core, the Gecko family features innovative low energy techniques, short
wake-up time from energy saving modes and a wide selection of peripherals, making it ideal for
battery operated applications and other systems requiring high performance and low-energy
consumption.
The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to
offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very
high performance, real-time capabilities, digital signal processing, and low-power, low-voltage
operation, while maintaining full integration and ease of development.
Teensy is a complete USB-based microcontroller development system, in a very small footprint,
capable of implementing many types of projects. All programming is done via the USB port. No
special programmer is needed, only a standard USB cable and a PC or Macintosh with a USB port.
Boards
Note:
• You can list pre-configured boards by platformio boards command or PlatformIO Boards Explorer
• For more detailed board information please scroll tables below by horizontal.
1.9. Frameworks
291
PlatformIO Documentation, Release 3.4.1
96Boards
ID
Name
b96b_f446ve 96Boards
B96B-F446VE
Platform
ST
STM32
Debug
Yes
Microcontroller
Frequency
STM32F446VET6 168 MHz
Flash
RAM
512
Kb
128
Kb
Atmel
ID
Name
Atmel
SAMD21-XPRO
samd21g18a
Atmel
ATSAMW25-XPRO
saml21_xpro_bAtmel
SAML21-XPRO-B
samr21_xpro Atmel
ATSAMR21-XPRO
samd21_xpro
Platform
Atmel
SAM
Atmel
SAM
Atmel
SAM
Atmel
SAM
Debug
Yes
Yes
Yes
Yes
Microcontroller
ATSAMD21J18A
ATSAMD21G18A
ATSAML21J18B
ATSAMR21G18A
Frequency
48 MHz
48 MHz
48 MHz
48 MHz
Flash
RAM
256
Kb
256
Kb
256
Kb
256
Kb
32
Kb
32
Kb
32
Kb
32
Kb
Flash
RAM
256
Kb
256
Kb
16
Kb
16
Kb
BBC
ID
Name
Platform
bbcmicrobit
BBC micro:bit
Nordic
nRF51
Nordic
nRF51
bbcmicrobit_b BBC micro:bit
B(S130)
Debug
Microcontroller
NRF51822
Frequency
16 MHz
NRF51822
16 MHz
CQ Publishing
ID
Name
lpc11u35_501CQ Publishing
TG-LPC11U35-501
Platform
NXP
LPC
Debug
Microcontroller
LPC11U35
Frequency
48 MHz
Flash RAM
64
Kb
10
Kb
Delta
ID
Name
delta_dfbm_nq620Delta
DFBM-NQ620
dfcm_nnn40
Delta
DFCM-NNN40
292
Platform
Nordic
nRF52
Nordic
nRF51
Debug
Yes
Microcontroller
NRF52832
Frequency
64 MHz
Yes
NRF51822
32 MHz
Flash
RAM
512
Kb
256
Kb
64
Kb
32
Kb
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Elektor Labs
ID
Name
Platform
elektor_cocorico
CoCo-riCo!
NXP
LPC
Debug
Yes
Microcontroller
LPC812
Frequency
30 MHz
Flash
RAM
16
Kb
4 Kb
Embedded Artists
ID
Name
lpc11u35
EA LPC11U35 QuickStart Board
Embedded Artists LPC4088
QuickStart Board
lpc4088_dmEmbedded Artists LPC4088
Display Module
lpc4088
Platform
NXP
LPC
NXP
LPC
NXP
LPC
Debug
Microcontroller
LPC11U35
Frequency
48 MHz
Yes
LPC4088
Yes
LPC4088
120
MHz
120
MHz
Debug
Yes
Microcontroller
Flash
RAM
64
Kb
512
Kb
512
Kb
10
Kb
96
Kb
96
Kb
Flash
RAM
512
Kb
128
Kb
Espotel
ID
Name
elmo_f411re Espotel LoRa
Module
1.9. Frameworks
Platform
ST
STM32
Frequency
STM32F411RET6 100 MHz
293
PlatformIO Documentation, Release 3.4.1
Freescale
ID
Name
Platform
IBMEthernetKit
Ethernet IoT Starter Kit
Freescale
Kinetis
Freescale
Kinetis
Freescale
Kinetis
Freescale
Kinetis
Freescale
Kinetis
Freescale
Kinetis
Freescale
Kinetis
Freescale
Kinetis
Freescale
Kinetis
Freescale
Kinetis
Freescale
Kinetis
frdm_k20d50mFreescale Kinetis
FRDM-K20D50M
frdm_k22f
Freescale Kinetis
FRDM-K22F
frdm_k64f
Freescale Kinetis
FRDM-K64F
frdm_k66f
Freescale Kinetis
FRDM-K66F
frdm_kl05z Freescale Kinetis
FRDM-KL05Z
frdm_kl25z Freescale Kinetis
FRDM-KL25Z
frdm_kl26z Freescale Kinetis
FRDM-KL26Z
frdm_kl27z Freescale Kinetis
FRDM-KL27Z
frdm_kl43z Freescale Kinetis
FRDM-KL43Z
frdm_kl46z Freescale Kinetis
FRDM-KL46Z
Debug
Yes
MicroconFretroller
quency
MK64FN1M0VLL12
120
MHz
MK20DX128VLH5
48
MHz
MK22FN512VLH12
120
MHz
MK64FN1M0VLL12
120
MHz
MK66FN2M0VMD18
180
MHz
MKL05Z32VFM448
MHz
MKL25Z128VLK448
MHz
MKL26Z128VLH448
MHz
MKL27Z64VLH4 48
MHz
MKL43Z256VLH448
MHz
MKL46Z256VLL448
MHz
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Flash
RAM
1024
Kb
128
Kb
512
Kb
1024
Kb
2048
Kb
32
Kb
128
Kb
128
Kb
64
Kb
256
Kb
256
Kb
256
Kb
16
Kb
128
Kb
256
Kb
256
Kb
4 Kb
16
Kb
16
Kb
16
Kb
32
Kb
32
Kb
GHI Electronics
ID
oc_mbuino
Name
mBuino
Platform
NXP LPC
Debug
Microcontroller
LPC11U24
Frequency
50 MHz
Flash
32 Kb
RAM
10 Kb
Generic
ID
Name
bluepill_f103c8 BluePill
F103C8
Platform
ST
STM32
Debug
Yes
Microcontroller
Frequency
STM32F103C8T6 72 MHz
Flash
RAM
64
Kb
20
Kb
JKSoft
ID
Name
wallbot_ble JKSoft Wallbot
BLE
294
Platform
Nordic
nRF51
Debug
Yes
Microcontroller
NRF51822
Frequency
16 MHz
Flash
RAM
128
Kb
16
Kb
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Maxim
ID
Name
Platform
max32600mbed
Maxim ARM mbed Enabled Development
Platform for MAX32600
max32620hsp
Maxim Health Sensor Platform
max32630fthr
Maxim MAX32630FTHR Application
Platform
maxwsnenv Maxim Wireless Sensor Node
Demonstrator
Debug
Maxim
32
Maxim
32
Maxim
32
Maxim
32
MicroFreconquency
troller
MAX32600 24
MHz
MAX32620 96
MHz
MAX32630 96
MHz
MAX32610 24
MHz
Flash RAM
256
Kb
2048
Kb
2048
Kb
256
Kb
32
Kb
256
Kb
512
Kb
32
Kb
Micromint
ID
Name
Platform
lpc4330_m4
Bambino-210E
lpc4337
LPCXpresso4337
NXP
LPC
NXP
LPC
Debug
Yes
Microcontroller
LPC4330
Frequency
204 MHz
LPC4337
204 MHz
Flash
RAM
8192
Kb
1024
Kb
264
Kb
136
Kb
Flash
RAM
1024
Kb
256
Kb
MikroElektronika
ID
Name
Platform
hexiwear
Hexiwear
Freescale
Kinetis
Debug
Yes
Microcontroller
Frequency
MK64FN1M0VDC12 120 MHz
MultiTech
ID
Name
mts_dragonfly_f411re
MTS Dragonfly
mts_mdot_f405rg
MultiTech mDot
mts_mdot_f411re
MultiTech mDot
F411
MultiTech xDot
xdot_l151cc
1.9. Frameworks
Platform
ST
STM32
ST
STM32
ST
STM32
ST
STM32
Debug
Yes
Yes
Yes
MicroconFretroller
quency
STM32F411RET6100
MHz
STM32F411RET6100
MHz
STM32F411RET6100
MHz
STM32L151CCU632 MHz
Flash
RAM
512
Kb
512
Kb
512
Kb
256
Kb
128
Kb
128
Kb
128
Kb
32
Kb
295
PlatformIO Documentation, Release 3.4.1
NGX Technologies
ID
Name
Platform
NXP
LPC
blueboard_lpc11u24
NGX Technologies
BlueBoard-LPC11U24
Debug
Microcontroller
LPC11U24
Frequency
48 MHz
Flash RAM
32
Kb
8
Kb
NXP
ID
Name
lpc11c24
NXP LPC11C24
lpc11u24
NXP mbed LPC11U24
lpc11u24_301 ARM mbed LPC11U24
(+CAN)
lpc11u34_421 NXP LPC11U34
lpc11u37_501 NXP LPC11U37
lpc11u68
LPCXpresso11U68
lpc1549
NXP LPCXpresso1549
lpc1768
NXP mbed LPC1768
lpc2368
NXP LPC2368
lpc2460
NXP LPC2460
lpc812
NXP LPC800-MAX
lpc824
LPCXpresso824-MAX
micronfcboardMicroNFCBoard
Platform
NXP
LPC
NXP
LPC
NXP
LPC
NXP
LPC
NXP
LPC
NXP
LPC
NXP
LPC
NXP
LPC
NXP
LPC
NXP
LPC
NXP
LPC
NXP
LPC
NXP
LPC
Debug
Microcontroller
LPC11C24
Frequency
48 MHz
Flash
RAM
32 Kb
8 Kb
Yes
LPC11U24
48 MHz
32 Kb
8 Kb
Yes
LPC11U24
48 MHz
32 Kb
8 Kb
LPC11U34
48 MHz
64 Kb
8 Kb
LPC11U37
48 MHz
LPC11U68
50 MHz
LPC1549
72 MHz
LPC1768
96 MHz
LPC2368
72 MHz
Yes
LPC2460
72 MHz
128
Kb
256
Kb
256
Kb
512
Kb
512
Kb
64 Kb
Yes
LPC812
30 MHz
16 Kb
10
Kb
36
Kb
36
Kb
64
Kb
58
Kb
16
Kb
4 Kb
Yes
LPC824
30 MHz
32 Kb
8 Kb
LPC11U34
48 MHz
64 Kb
10
Kb
Flash
RAM
256
Kb
256
Kb
128
Kb
512
Kb
32
Kb
32
Kb
16
Kb
64
Kb
Yes
Yes
Nordic
ID
Name
Platform
nrf51_dk
Nordic nRF51-DK
Nordic
nRF51
Nordic
nRF51
Nordic
nRF51
Nordic
nRF52
nrf51_dongle Nordic
nRF51-Dongle
nrf51_mkit
Nordic
nRF51822-mKIT
nrf52_dk
Nordic nRF52-DK
296
Debug
Yes
Microcontroller
NRF51822
Frequency
32 MHz
Yes
NRF51822
32 MHz
Yes
NRF51822
16 MHz
Yes
NRF52832
64 MHz
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Outrageous Circuits
ID
Name
Platform
mbuino
Outrageous Circuits
mBuino
NXP
LPC
Debug
Microcontroller
LPC11U24
Frequency
48 MHz
Flash
RAM
32
Kb
8 Kb
Flash
RAM
256
Kb
256
Kb
16
Kb
32
Kb
RedBearLab
ID
Name
Platform
RedBearLab
nRF51822
redBearLabBLENano
RedBearLab BLE
Nano
redBearLab
Nordic
nRF51
Nordic
nRF51
Debug
Yes
Microcontroller
NRF51822
Frequency
16 MHz
Yes
NRF51822
16 MHz
RushUp
ID
Name
cloud_jam
RushUp Cloud-JAM
cloud_jam_l4 RushUp Cloud-JAM
L4
Platform
ST
STM32
ST
STM32
Debug
Yes
Microcontroller
Frequency
STM32F401RET6 84 MHz
Flash
RAM
512 Kb
96 Kb
Yes
STM32L476RGT6 80 MHz
1024
Kb
128
Kb
ST
ID
disco_f030r8
disco_f051r8
disco_f100rb
disco_f303vc
disco_f334c8
disco_f401vc
disco_f407vg
disco_f429zi
disco_f469ni
disco_f746ng
disco_f769ni
disco_l053c8
disco_l072cz_lrwan1
disco_l475vg_iot01a
disco_l476vg
nucleo_f030r8
nucleo_f031k6
nucleo_f042k6
nucleo_f070rb
1.9. Frameworks
Name
ST STM32F0308DISCOVERY
ST STM32F0DISCOVERY
ST STM32VLDISCOVERY
ST STM32F3DISCOVERY
ST 32F3348DISCOVERY
ST 32F401CDISCOVERY
ST STM32F4DISCOVERY
ST 32F429IDISCOVERY
ST 32F469IDISCOVERY
ST 32F746GDISCOVERY
ST 32F769IDISCOVERY
ST 32L0538DISCOVERY
ST DISCO-L072CZ-LRWAN1
ST DISCO-L475VG-IOT01A
ST 32L476GDISCOVERY
ST Nucleo F030R8
ST Nucleo F031K6
ST Nucleo F042K6
ST Nucleo F070RB
Platform
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
Debug
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Microcontroller
STM32F030R8T6
STM32F051R8T6
STM32F100RBT6
STM32F303VCT6
STM32F334C8T6
STM32F401VCT6
STM32F407VGT6
STM32F429ZIT6
STM32F469NIH6
STM32F746NGH6
STM32F769NIH6
STM32L053C8T6
STM32L072CZ
STM32L475VGT6
STM32L476VGT6
STM32F030R8T6
STM32F031K6T6
STM32F042K6T6
STM32F070RBT6
Frequency Flash
48 MHz
64 Kb
48 MHz
64 Kb
24 MHz
128 Kb
72 MHz
256 Kb
72 MHz
64 Kb
84 MHz
256 Kb
168 MHz
1024 K
180 MHz
2048 K
180 MHz
1024 K
216 MHz
1024 K
80 MHz
1024 K
32 MHz
64 Kb
32 MHz
192 Kb
80 MHz
1024 K
80 MHz
1024 K
48 MHz
64 Kb
48 MHz
32 Kb
48 MHz
32 Kb
48 MHz
128 Kb
Continued on
297
PlatformIO Documentation, Release 3.4.1
Table 1.4 – continued from previous page
Name
Platform
Debug Microcontroller
ST Nucleo F072RB
ST STM32 Yes
STM32F072RBT6
ST Nucleo F091RC
ST STM32 Yes
STM32F091RCT6
ST Nucleo F103RB
ST STM32 Yes
STM32F103RBT6
ST Nucleo F207ZG
ST STM32 Yes
STM32F207ZGT6
ST Nucleo F302R8
ST STM32 Yes
STM32F302R8T6
ST Nucleo F303K8
ST STM32 Yes
STM32F303K8T6
ST Nucleo F303RE
ST STM32 Yes
STM32F303RET6
ST Nucleo F303ZE
ST STM32 Yes
STM32F303ZET6
ST Nucleo F334R8
ST STM32 Yes
STM32F334R8T6
ST Nucleo F401RE
ST STM32 Yes
STM32F401RET6
ST Nucleo F410RB
ST STM32 Yes
STM32F410RBT6
ST Nucleo F411RE
ST STM32 Yes
STM32F411RET6
ST Nucleo F412ZG
ST STM32 Yes
STM32F412ZGT6
ST Nucleo F429ZI
ST STM32 Yes
STM32F429ZIT6
ST Nucleo F446RE
ST STM32 Yes
STM32F446RET6
ST Nucleo F446ZE
ST STM32 Yes
STM32F446ZET6
ST Nucleo F746ZG
ST STM32 Yes
STM32F746ZGT6
ST Nucleo F767ZI
ST STM32 Yes
STM32F767ZIT6
ST Nucleo L011K4
ST STM32 Yes
STM32L011K4T6
ST Nucleo L031K6
ST STM32 Yes
STM32L031K6T6
ST Nucleo L053R8
ST STM32 Yes
STM32L053R8T6
ST Nucleo L073RZ
ST STM32 Yes
STM32L073RZ
ST Nucleo L152RE
ST STM32 Yes
STM32L152RET6
ST Nucleo L432KC
ST STM32 Yes
STM32L432KCU6
ST Nucleo L476RG
ST STM32 Yes
STM32L476RGT6
ID
nucleo_f072rb
nucleo_f091rc
nucleo_f103rb
nucleo_f207zg
nucleo_f302r8
nucleo_f303k8
nucleo_f303re
nucleo_f303ze
nucleo_f334r8
nucleo_f401re
nucleo_f410rb
nucleo_f411re
nucleo_f412zg
nucleo_f429zi
nucleo_f446re
nucleo_f446ze
nucleo_f746zg
nucleo_f767zi
nucleo_l011k4
nucleo_l031k6
nucleo_l053r8
nucleo_l073rz
nucleo_l152re
nucleo_l432kc
nucleo_l476rg
Frequency
48 MHz
48 MHz
72 MHz
120 MHz
72 MHz
72 MHz
72 MHz
72 MHz
72 MHz
84 MHz
100 MHz
100 MHz
100 MHz
180 MHz
180 MHz
180 MHz
216 MHz
216 MHz
32 MHz
32 MHz
48 MHz
32 MHz
32 MHz
80 MHz
80 MHz
SeeedStudio
ID
Name
Platform
seeedArchBLE Seeed Arch BLE
seeedArchGPRS Seeed Arch GPRS
V2
seeedArchLink Seeed Arch Link
Nordic
nRF51
NXP LPC
Debug
Yes
Microcontroller
NRF51822
Frequency
16 MHz
LPC11U37
48 MHz
16 MHz
Yes
NRF51822
seeedArchMax Seeed Arch Max
Nordic
nRF51
ST STM32
Yes
STM32F407VET6 168 MHz
seeedArchPro Seeed Arch Pro
NXP LPC
Yes
LPC1768
96 MHz
seeedTinyBLE Seeed Tiny BLE
Nordic
nRF51
NXP LPC
Yes
NRF51822
16 MHz
LPC11U35
48 MHz
xadow_m0
Seeed Xadow M0
Flash
RAM
128
Kb
128
Kb
256
Kb
512
Kb
512
Kb
256
Kb
64 Kb
16 Kb
10 Kb
16 Kb
192
Kb
64 Kb
16 Kb
10 Kb
Semtech
ID
mote_l152rc
298
Name
NAMote72
Platform
ST STM32
Debug
Yes
Microcontroller
STM32L152RC
Frequency
32 MHz
Flash
256 Kb
RAM
32 Kb
Chapter 1. Contents
Flash
128 Kb
256 Kb
128 Kb
1024 K
64 Kb
64 Kb
512 Kb
512 Kb
64 Kb
512 Kb
128 Kb
512 Kb
1024 K
2048 K
512 Kb
512 Kb
1024 K
2048 K
16 Kb
32 Kb
64 Kb
192 Kb
512 Kb
256 Kb
1024 K
PlatformIO Documentation, Release 3.4.1
Silicon Labs
ID
Name
Platform
efm32gg_stk3700
Silicon Labs
EFM32GG-STK3700 (Giant
Gecko)
efm32hg_stk3400
Silicon Labs SLSTK3400A
USB-enabled (Happy Gecko)
Silicon
Labs
EFM32
Silicon
Labs
EFM32
Silicon
Labs
EFM32
Silicon
Labs
EFM32
Silicon
Labs
EFM32
Silicon
Labs
EFM32
efm32lg_stk3600
Silicon Labs
EFM32LG-STK3600 (Leopard
Gecko)
efm32pg_stk3401
Silicon Labs SLSTK3401A
(Pearl Gecko)
efm32wg_stk3800
Silicon Labs
EFM32WG-STK3800 (Wonder
Gecko)
efm32zg_stk3200
Silicon Labs
EFM32ZG-STK3200 (Zero
Gecko)
Debug
Yes
MicroconFreFlash RAM
troller
quency
EFM32GG990F1024
48
1024 128
MHz
Kb
Kb
Yes
EFM32HG322F64
24
MHz
64
Kb
8
Kb
Yes
EFM32LG990F256
48
MHz
256
Kb
32
Kb
Yes
EFM32PG1B200F256
40
MHz
256
Kb
32
Kb
Yes
EFM32WG990F256
48
MHz
256
Kb
32
Kb
Yes
EFM32ZG222F32
24
MHz
32
Kb
4
Kb
Smeshlink
ID
Name
xbed_lpc1768 Smeshlink xbed
LPC1768
Platform
NXP
LPC
Debug
Microcontroller
LPC1768
Frequency
96 MHz
Flash
RAM
512
Kb
32
Kb
Solder Splash Labs
ID
Name
dipcortexm0 Solder Splash Labs
DipCortex M0
lpc1347
DipCortex M3
1.9. Frameworks
Platform
NXP
LPC
NXP
LPC
Debug
Microcontroller
LPC11U24
Frequency
50 MHz
LPC1347
72 MHz
Flash RAM
32
Kb
64
Kb
8 Kb
12
Kb
299
PlatformIO Documentation, Release 3.4.1
Switch Science
ID
Name
Platform
Switch Science mbed
HRM1017
lpc1114fn28Switch Science mbed
LPC1114FN28
ssci824
Switch Science mbed
LPC824
ty51822r3 Switch Science mbed
TY51822r3
Nordic
nRF51
NXP LPC
hrm1017
Debug
Yes
Microcontroller
NRF51822
Frequency
16 MHz
Yes
LPC1114FN28 48 MHz
NXP LPC
Yes
LPC824
30 MHz
Nordic
nRF51
Yes
NRF51822
32 MHz
Flash
RAM
256
Kb
32
Kb
32
Kb
256
Kb
16
Kb
4
Kb
8
Kb
32
Kb
Teensy
ID
teensy31
Name
Teensy 3.1 / 3.2
Platform
Teensy
Debug
Microcontroller
MK20DX256
Frequency
72 MHz
Flash
256 Kb
RAM
64 Kb
WIZNet
ID
Name
wizwiki_w7500 WIZNet
WIZwiki-W7500
wizwiki_w7500eco
WIZNet
WIZwiki-W7500ECO
wizwiki_w7500pWIZNet
WIZwiki-W7500P
Platform
WIZNet
W7500
WIZNet
W7500
WIZNet
W7500
Debug
Yes
Microcontroller
WIZNET7500
Frequency
48 MHz
Yes
WIZNET7500ECO
WIZNET7500P
48 MHz
Yes
48 MHz
Flash
RAM
128
Kb
128
Kb
128
Kb
48
Kb
48
Kb
48
Kb
u-blox
ID
Name
ublox_evk_odin_w2
u-blox
EVK-ODIN-W2
ubloxc027
u-blox C027
Platform
ST
STM32
NXP
LPC
Debug
Yes
MicroconFretroller
quency
STM32F439ZIY6168 MHz
Yes
LPC1768
96 MHz
Flash
RAM
2048
Kb
512
Kb
256
Kb
64
Kb
y5 design
ID
Name
lpc11u35_y5_mbugy5 LPC11U35
mbug
nrf51822_y5_mbugy5 nRF51822
mbug
300
Platform
Debug
NXP LPC
Nordic
nRF51
Yes
Microcontroller
LPC11U35
Frequency
48 MHz
Flash
RAM
64 Kb
NRF51822
16 MHz
256
Kb
10
Kb
16
Kb
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Configuration
mbed framework consists of several components, some of which should be explicitly added to the build process. For
this purpose PlatformIO has special macro definitions that should be added to build_flags when one of the components
is used in a project:
Name
PIO_FRAMEWORK_MBED_RTOS_PRESENT
PIO_FRAMEWORK_MBED_EVENTS_PRESENT
PIO_FRAMEWORK_MBED_FILESYSTEM_PRESENT
Description
Build the project with enabled rtos library
Build the project with enabled events library
Build the project with enabled filesystem library
An example of Project Configuration File platformio.ini with enabled events library
[env:wizwiki_w7500p]
platform = wiznet7500
framework = mbed
board = wizwiki_w7500p
build_flags = -D PIO_FRAMEWORK_MBED_EVENTS_PRESENT
An example of Project Configuration File platformio.ini with events and rtos libraries
[env:nrf52_dk]
platform = nordicnrf52
framework = mbed
board = nrf52_dk
build_flags = -D PIO_FRAMEWORK_MBED_EVENTS_PRESENT -D PIO_FRAMEWORK_MBED_RTOS_PRESENT
An example of Project Configuration File platformio.ini with filesystem library
[env:nucleo_f767zi]
platform = ststm32
framework = mbed
board = nucleo_f767zi
build_flags = -D PIO_FRAMEWORK_MBED_FILESYSTEM_PRESENT
Articles
• Dec 15, 2015 - stastaka - PlatformIO (Use a custom board for PlatformIO, Japanese)
• Nov 06, 2015 - nocd5 - PlatformIOmbedSTM32 Nucleomruby (Use mruby in the offline build for STM32
Nucleo board with mbed and PlatformIO, Japanese)
• Oct 21, 2015 - Vittorio Zaccaria - Using a cheap STM32 Nucleo to teach remote sensor monitoring
• Sep 01, 2015 - Thomas P. Weldon, Ph.D. - Improvised MBED FRDM-K64F Eclipse/PlatformIO Setup and
Software Installation
See more Articles about us.
Examples
All project examples are located in PlatformIO repository Examples for MBED framework.
• Blink
• DSP
• HTTP Client
1.9. Frameworks
301
PlatformIO Documentation, Release 3.4.1
• RTOS
• Serial
Pumbaa
framework = pumbaa
Pumbaa is Python on top of Simba. The implementation is a port of MicroPython, designed for embedded devices
with limited amount of RAM and code memory.
For more detailed information please visit vendor site.
Contents
• Platforms
• Boards
– MakerAsia
Platforms
Name
Espressif
32
Description
Espressif Systems is a privately held fabless semiconductor company. They provide wireless
communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things
applications.
Boards
Note:
• You can list pre-configured boards by platformio boards command or PlatformIO Boards Explorer
• For more detailed board information please scroll tables below by horizontal.
MakerAsia
ID
nano32
Name
MakerAsia Nano32
Platform
Espressif 32
Debug
Microcontroller
ESP32
Frequency
240 MHz
Flash
1280 Kb
RAM
288 Kb
Simba
framework = simba
Simba is an RTOS and build framework. It aims to make embedded programming easy and portable.
For more detailed information please visit vendor site.
302
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Contents
• Platforms
• Boards
– Adafruit
– Arduino
– Espressif
– MakerAsia
– NodeMCU
• Examples
Platforms
Name
Atmel
AVR
Atmel
SAM
Espressif
32
Espressif
8266
Description
Atmel AVR 8- and 32-bit MCUs deliver a unique combination of performance, power efficiency and
design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on
the industrys most code-efficient architecture for C and assembly programming.
Atmel | SMART offers Flash- based ARM products based on the ARM Cortex-M0+, Cortex-M3 and
Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature
mix.
Espressif Systems is a privately held fabless semiconductor company. They provide wireless
communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things
applications.
Espressif Systems is a privately held fabless semiconductor company. They provide wireless
communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things
applications.
Boards
Note:
• You can list pre-configured boards by platformio boards command or PlatformIO Boards Explorer
• For more detailed board information please scroll tables below by horizontal.
Adafruit
ID
Name
Platform
huzzah Adafruit HUZZAH
ESP8266
Espressif
8266
1.9. Frameworks
Debug
Microcontroller
ESP8266
Frequency
80 MHz
Flash
RAM
4096
Kb
80
Kb
303
PlatformIO Documentation, Release 3.4.1
Arduino
ID
Name
due
Arduino Due (Programming Port)
dueUSB
Arduino Due (USB Native Port)
megaatmega2560
Arduino Mega or Mega 2560
ATmega2560 (Mega 2560)
nanoatmega328
Arduino Nano ATmega328
uno
Arduino Uno
Platform
Atmel
SAM
Atmel
SAM
Atmel
AVR
Atmel
AVR
Atmel
AVR
Debug
Microcon- Fretroller
quency
AT91SAM3X8E
84
MHz
AT91SAM3X8E
84
MHz
AT16
MEGA2560 MHz
AT16
MEGA328P MHz
AT16
MEGA328P MHz
Flash RAM
512
Kb
512
Kb
256
Kb
32
Kb
32
Kb
32
Kb
32
Kb
8
Kb
2
Kb
2
Kb
Espressif
ID
Name
Platform
esp01
Espressif Generic ESP8266
ESP-01 512k
Espressif Generic ESP8266
ESP-01 1M
Espressif ESP8266 ESP-12E
Espressif
8266
Espressif
8266
Espressif
8266
Espressif
8266
esp01_1m
esp12e
esp_wroom_02
ESP-WROOM-02
Debug
Microcontroller
ESP8266
Frequency
80 MHz
ESP8266
80 MHz
ESP8266
80 MHz
ESP8266
80 MHz
Flash
RAM
512
Kb
1024
Kb
4096
Kb
4096
Kb
80
Kb
80
Kb
80
Kb
80
Kb
MakerAsia
ID
nano32
Name
MakerAsia Nano32
Platform
Espressif 32
Debug
Microcontroller
ESP32
Frequency
240 MHz
Flash
1280 Kb
RAM
288 Kb
NodeMCU
ID
Name
NodeMCU 0.9 (ESP-12
Module)
nodemcuv2 NodeMCU 1.0 (ESP-12E
Module)
nodemcu
Platform
Espressif
8266
Espressif
8266
Debug
Microcontroller
ESP8266
Frequency
80 MHz
ESP8266
80 MHz
Flash
RAM
4096
Kb
4096
Kb
80
Kb
80
Kb
Examples
All project examples are located in PlatformIO repository Examples for Simba framework.
• Blink
304
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
SPL
framework = spl
The ST Standard Peripheral Library provides a set of functions for handling the peripherals on the STM32 Cortex-M3
family. The idea is to save the user (the new user, in particular) having to deal directly with the registers.
For more detailed information please visit vendor site.
Contents
• Platforms
• Boards
– Armstrap
– RushUp
– ST
• Examples
Platforms
Name Description
ST
The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer
STM32 new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high
performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation,
while maintaining full integration and ease of development.
Boards
Note:
• You can list pre-configured boards by platformio boards command or PlatformIO Boards Explorer
• For more detailed board information please scroll tables below by horizontal.
Armstrap
ID
Name
armstrap_eagle1024
Armstrap Eagle
1024
armstrap_eagle2048
Armstrap Eagle
2048
armstrap_eagle512Armstrap Eagle
512
1.9. Frameworks
Platform
ST
STM32
ST
STM32
ST
STM32
Debug
Yes
MicroconFretroller
quency
STM32F417VGT6168 MHz
Yes
STM32F427VIT6 168 MHz
Yes
STM32F407VET6168 MHz
Flash
RAM
1024
Kb
2048
Kb
512
Kb
192
Kb
256
Kb
192
Kb
305
PlatformIO Documentation, Release 3.4.1
RushUp
ID
Name
Platform
cloud_jam
RushUp
Cloud-JAM
ST
STM32
Debug
Yes
Microcontroller
Frequency
STM32F401RET6 84 MHz
Flash
RAM
512
Kb
96
Kb
Flash
RAM
256
Kb
1024
Kb
128
Kb
512
Kb
48 Kb
ST
ID
Name
Platform
disco_f303vc ST
ST
STM32F3DISCOVERY STM32
disco_f407vg ST
ST
STM32F4DISCOVERY STM32
disco_l152rb ST
ST
STM32LDISCOVERY STM32
nucleo_f401reST Nucleo F401RE
ST
STM32
Debug
Yes
MicroconFretroller
quency
STM32F303VCT672 MHz
Yes
STM32F407VGT6168 MHz
Yes
STM32L152RBT632 MHz
Yes
STM32F401RET684 MHz
128
Kb
16 Kb
96 Kb
Examples
All project examples are located in PlatformIO repository Examples for SPL framework.
• Blink
STM32Cube
framework = stm32cube
STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized,
expert oriented set of APIs designed for both performance and runtime efficiency.
For more detailed information please visit vendor site.
Contents
• Platforms
• Boards
– 96Boards
– Armstrap
– Espotel
– Generic
– MultiTech
– RushUp
– ST
306
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
– SeeedStudio
– Semtech
• Tutorials
Platforms
Name Description
ST
The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer
STM32 new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high
performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation,
while maintaining full integration and ease of development.
Boards
Note:
• You can list pre-configured boards by platformio boards command or PlatformIO Boards Explorer
• For more detailed board information please scroll tables below by horizontal.
96Boards
ID
Name
b96b_f446ve 96Boards
B96B-F446VE
Platform
ST
STM32
Debug
Yes
Microcontroller
Frequency
STM32F446VET6 168 MHz
Flash
RAM
512
Kb
128
Kb
Debug
Yes
MicroconFretroller
quency
STM32F417VGT6168 MHz
Flash
RAM
Yes
STM32F427VIT6 168 MHz
Yes
STM32F407VET6168 MHz
1024
Kb
2048
Kb
512
Kb
192
Kb
256
Kb
192
Kb
Flash
RAM
512
Kb
128
Kb
Armstrap
ID
Name
armstrap_eagle1024
Armstrap Eagle
1024
armstrap_eagle2048
Armstrap Eagle
2048
armstrap_eagle512Armstrap Eagle
512
Platform
ST
STM32
ST
STM32
ST
STM32
Espotel
ID
Name
elmo_f411re Espotel LoRa
Module
1.9. Frameworks
Platform
ST
STM32
Debug
Yes
Microcontroller
Frequency
STM32F411RET6 100 MHz
307
PlatformIO Documentation, Release 3.4.1
Generic
ID
Name
Platform
bluepill_f103c8 BluePill
F103C8
Debug
Yes
ST
STM32
Microcontroller
Frequency
STM32F103C8T6 72 MHz
Flash
RAM
64
Kb
20
Kb
MultiTech
ID
Name
Platform
xdot_l151cc
MultiTech
xDot
ST
STM32
Debug
Microcontroller
STM32L151CCU6
Frequency
32 MHz
Flash
RAM
256
Kb
32
Kb
RushUp
ID
Name
cloud_jam
RushUp Cloud-JAM
cloud_jam_l4 RushUp Cloud-JAM
L4
Platform
ST
STM32
ST
STM32
Debug
Yes
Microcontroller
Frequency
STM32F401RET6 84 MHz
Flash
RAM
512 Kb
96 Kb
Yes
STM32L476RGT6 80 MHz
1024
Kb
128
Kb
ST
ID
disco_f030r8
disco_f051r8
disco_f100rb
disco_f303vc
disco_f334c8
disco_f401vc
disco_f407vg
disco_f411ve
disco_f429zi
disco_f469ni
disco_f746ng
disco_f769ni
disco_l053c8
disco_l072cz_lrwan1
disco_l152rb
disco_l476vg
nucleo_f030r8
nucleo_f031k6
nucleo_f042k6
nucleo_f070rb
nucleo_f072rb
308
Name
ST STM32F0308DISCOVERY
ST STM32F0DISCOVERY
ST STM32VLDISCOVERY
ST STM32F3DISCOVERY
ST 32F3348DISCOVERY
ST 32F401CDISCOVERY
ST STM32F4DISCOVERY
ST 32F411EDISCOVERY
ST 32F429IDISCOVERY
ST 32F469IDISCOVERY
ST 32F746GDISCOVERY
ST 32F769IDISCOVERY
ST 32L0538DISCOVERY
ST DISCO-L072CZ-LRWAN1
ST STM32LDISCOVERY
ST 32L476GDISCOVERY
ST Nucleo F030R8
ST Nucleo F031K6
ST Nucleo F042K6
ST Nucleo F070RB
ST Nucleo F072RB
Platform
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
Debug
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Microcontroller
STM32F030R8T6
STM32F051R8T6
STM32F100RBT6
STM32F303VCT6
STM32F334C8T6
STM32F401VCT6
STM32F407VGT6
STM32F411VET6
STM32F429ZIT6
STM32F469NIH6
STM32F746NGH6
STM32F769NIH6
STM32L053C8T6
STM32L072CZ
STM32L152RBT6
STM32L476VGT6
STM32F030R8T6
STM32F031K6T6
STM32F042K6T6
STM32F070RBT6
STM32F072RBT6
Frequency Flash
48 MHz
64 Kb
48 MHz
64 Kb
24 MHz
128 Kb
72 MHz
256 Kb
72 MHz
64 Kb
84 MHz
256 Kb
168 MHz
1024 K
100 MHz
512 Kb
180 MHz
2048 K
180 MHz
1024 K
216 MHz
1024 K
80 MHz
1024 K
32 MHz
64 Kb
32 MHz
192 Kb
32 MHz
128 Kb
80 MHz
1024 K
48 MHz
64 Kb
48 MHz
32 Kb
48 MHz
32 Kb
48 MHz
128 Kb
48 MHz
128 Kb
Continued on
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Table 1.5 – continued from previous page
Name
Platform
Debug Microcontroller
ST Nucleo F091RC
ST STM32 Yes
STM32F091RCT6
ST Nucleo F103RB
ST STM32 Yes
STM32F103RBT6
ST Nucleo F207ZG
ST STM32 Yes
STM32F207ZGT6
ST Nucleo F302R8
ST STM32 Yes
STM32F302R8T6
ST Nucleo F303K8
ST STM32 Yes
STM32F303K8T6
ST Nucleo F303RE
ST STM32 Yes
STM32F303RET6
ST Nucleo F303ZE
ST STM32 Yes
STM32F303ZET6
ST Nucleo F334R8
ST STM32 Yes
STM32F334R8T6
ST Nucleo F401RE
ST STM32 Yes
STM32F401RET6
ST Nucleo F410RB
ST STM32 Yes
STM32F410RBT6
ST Nucleo F411RE
ST STM32 Yes
STM32F411RET6
ST Nucleo F412ZG
ST STM32 Yes
STM32F412ZGT6
ST Nucleo F429ZI
ST STM32 Yes
STM32F429ZIT6
ST Nucleo F446RE
ST STM32 Yes
STM32F446RET6
ST Nucleo F446ZE
ST STM32 Yes
STM32F446ZET6
ST Nucleo F746ZG
ST STM32 Yes
STM32F746ZGT6
ST Nucleo F767ZI
ST STM32 Yes
STM32F767ZIT6
ST Nucleo L031K6
ST STM32 Yes
STM32L031K6T6
ST Nucleo L053R8
ST STM32 Yes
STM32L053R8T6
ST Nucleo L073RZ
ST STM32 Yes
STM32L073RZ
ST Nucleo L152RE
ST STM32 Yes
STM32L152RET6
ST Nucleo L432KC
ST STM32 Yes
STM32L432KCU6
ST Nucleo L476RG
ST STM32 Yes
STM32L476RGT6
ID
nucleo_f091rc
nucleo_f103rb
nucleo_f207zg
nucleo_f302r8
nucleo_f303k8
nucleo_f303re
nucleo_f303ze
nucleo_f334r8
nucleo_f401re
nucleo_f410rb
nucleo_f411re
nucleo_f412zg
nucleo_f429zi
nucleo_f446re
nucleo_f446ze
nucleo_f746zg
nucleo_f767zi
nucleo_l031k6
nucleo_l053r8
nucleo_l073rz
nucleo_l152re
nucleo_l432kc
nucleo_l476rg
Frequency
48 MHz
72 MHz
120 MHz
72 MHz
72 MHz
72 MHz
72 MHz
72 MHz
84 MHz
100 MHz
100 MHz
100 MHz
180 MHz
180 MHz
180 MHz
216 MHz
216 MHz
32 MHz
48 MHz
32 MHz
32 MHz
80 MHz
80 MHz
SeeedStudio
ID
Name
seeedArchMax Seeed Arch
Max
Platform
ST
STM32
Debug
Yes
Microcontroller
Frequency
STM32F407VET6 168 MHz
Flash
RAM
512
Kb
192
Kb
Semtech
ID
mote_l152rc
Name
NAMote72
Platform
ST STM32
Debug
Yes
Microcontroller
STM32L152RC
Frequency
32 MHz
Flash
256 Kb
RAM
32 Kb
Tutorials
• Get started with STM32Cube HAL and Nucleo-F401RE: debugging and unit testing
WiringPi
framework = wiringpi
WiringPi is a GPIO access library written in C for the BCM2835 used in the Raspberry Pi. It’s designed to be familiar
to people who have used the Arduino “wiring” system.
For more detailed information please visit vendor site.
1.9. Frameworks
309
Flash
256 Kb
128 Kb
1024 K
64 Kb
64 Kb
512 Kb
512 Kb
64 Kb
512 Kb
128 Kb
512 Kb
1024 K
2048 K
512 Kb
512 Kb
1024 K
2048 K
32 Kb
64 Kb
192 Kb
512 Kb
256 Kb
1024 K
PlatformIO Documentation, Release 3.4.1
Contents
• Platforms
• Boards
– Raspberry Pi
• Examples
Platforms
Name
Linux
ARM
Description
Linux ARM is a Unix-like and mostly POSIX-compliant computer operating system (OS) assembled
under the model of free and open-source software development and distribution. Using host OS (Mac
OS X, Linux ARM) you can build native application for Linux ARM platform.
Boards
Note:
• You can list pre-configured boards by platformio boards command or PlatformIO Boards Explorer
• For more detailed board information please scroll tables below by horizontal.
Raspberry Pi
ID
Name
raspberrypi_1b Raspberry Pi 1
Model B
raspberrypi_2b Raspberry Pi 2
Model B
raspberrypi_3b Raspberry Pi 3
Model B
raspberrypi_zero
Raspberry Pi Zero
Platform
Linux
ARM
Linux
ARM
Linux
ARM
Linux
ARM
Debug
Microcontroller
BCM2835
BCM2836
BCM2837
BCM2835
Frequency
700
MHz
900
MHz
1200
MHz
1000
MHz
Flash
RAM
524288
Kb
1048576
Kb
1048576
Kb
524288
Kb
524288
Kb
1048576
Kb
1048576
Kb
524288
Kb
Examples
All project examples are located in PlatformIO repository Examples for WiringPi framework.
• Blink
• Serial
310
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Embedded Boards
Rapid Embedded Development, Continuous and IDE integration in a few steps with PlatformIO thanks to built-in
project generator for the most popular embedded boards and IDE.
Note:
• You can list pre-configured boards by platformio boards command or PlatformIO Boards Explorer
• For more detailed board information please scroll tables below by horizontal.
Vendors
• 4DSystems
• 96Boards
• Adafruit
• Aiyarafun
• Alorium Technolog
• April Brother
• Arduboy
• Arduino
• Armstrap
• Atmel
• BBC
• BQ
• BitWizard
• CQ Publishing
• Controllino
• DFRobot
• DOIT
• Delta
• Digilent
• Digistump
• Doit
• Dwengo
• DycodeX
• ESP32vn
• ESPert
• ESPino
1.10. Embedded Boards
311
PlatformIO Documentation, Release 3.4.1
• Electronic SweetPeas
• Elektor Labs
• Embedded Artists
• Engduino
• EnviroDIY
• Espotel
• Espressif
• FPGAwars
• Freescale
• Fubarino
• GHI Electronics
• Generic
• Generic ATTiny
• Hornbill
• Intel
• IntoRobot
• JKSoft
• Lattice
• LeafLabs
• LightUp
• Linino
• LowPowerLab
• MXChip
• MakerAsia
• Maxim
• Mcudude
• Microduino
• Micromint
• MikroElektronika
• MultiTech
• NGX Technologies
• NXP
• NodeMCU
• Noduino
• Nordic
312
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
• OLIMEX
• Olimex
• Onehorse
• OpenBCI
• OpenEnergyMonitor
• Outrageous Circuits
• PONTECH
• PanStamp
• Pinoccio
• Pololu Corporation
• Punch Through
• Quirkbot
• RFduino
• Raspberry Pi
• RedBearLab
• RepRap
• RushUp
• SODAQ
• ST
• SainSmart
• Samsung
• Sanguino
• SeeedStudio
• Semtech
• Silicon Labs
• Smeshlink
• Solder Splash Labs
• SparkFun
• SparkFun Electronics
• SweetPea
• Switch Science
• TI
• Teensy
• ThaiEasyElec
• The Things Network
1.10. Embedded Boards
313
PlatformIO Documentation, Release 3.4.1
• TinyCircuits
• UBW32
• WEMOS
• WIZNet
• Wicked Device
• Widora
• chipKIT
• element14
• makerlab.mx
• nicai-systems
• u-blox
• ubIQio
• y5 design
4DSystems
ID
Name
picadillo_35t4DSystems
PICadillo 35T
Platform
Debug
Microchip
PIC32
MicroconFretroller
quency
32MX795F512L80 MHz
Flash
RAM
512
Kb
128
Kb
Flash
RAM
512
Kb
128
Kb
96Boards
ID
Name
b96b_f446ve 96Boards
B96B-F446VE
314
Platform
ST
STM32
Debug
Yes
Microcontroller
Frequency
STM32F446VET6 168 MHz
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Adafruit
ID
Name
adafruit_circuitplayground_m0
Adafruit Circuit
Playground Express
adafruit_feather_m0 Adafruit Feather M0
adafruit_feather_m0_express
Adafruit Feather M0
Express
adafruit_metro_m0
Adafruit Metro M0
Expresss
bluefruitmicro
Adafruit Bluefruit Micro
feather32u4
Adafruit Feather
featheresp32
Adafruit ESP32 Feather
flora8
Adafruit Flora
gemma
Adafruit Gemma
huzzah
Adafruit HUZZAH
ESP8266
Adafruit Metro
metro
Adafruit Pro Trinket
3V/12MHz (USB)
Adafruit Pro Trinket
3V/12MHz (FTDI)
Adafruit Pro Trinket
5V/16MHz (USB)
Adafruit Pro Trinket
5V/16MHz (FTDI)
Adafruit Trinket
3V/8MHz
Adafruit Trinket
5V/16MHz
protrinket3
protrinket3ftdi
protrinket5
protrinket5ftdi
trinket3
trinket5
Platform
Debug
Atmel
SAM
Atmel
SAM
Atmel
SAM
Atmel
SAM
Atmel
AVR
Atmel
AVR
Espressif
32
Atmel
AVR
Atmel
AVR
Espressif
8266
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Yes
Yes
Yes
MicroFreconquency
troller
SAMD21G18A
48
MHz
SAMD21G18A
48
MHz
SAMD21G18A
48
MHz
SAMD21G18A
48
MHz
AT8 MHz
MEGA32U4
AT8 MHz
MEGA32U4
ESP32
240
MHz
AT8 MHz
MEGA32U4
AT8 MHz
TINY85
ESP8266
80
MHz
AT16
MEGA328P MHz
AT12
MEGA328P MHz
AT12
MEGA328P MHz
AT16
MEGA328P MHz
AT16
MEGA328P MHz
AT8 MHz
TINY85
AT16
TINY85
MHz
Flash RAM
256
Kb
256
Kb
256
Kb
256
Kb
32
Kb
32
Kb
1280
Kb
32
Kb
8 Kb
4096
Kb
32
Kb
32
Kb
32
Kb
32
Kb
32
Kb
8 Kb
8 Kb
32
Kb
32
Kb
32
Kb
32
Kb
2.5
Kb
2.5
Kb
288
Kb
2.5
Kb
0.5
Kb
80
Kb
2
Kb
2
Kb
2
Kb
2
Kb
2
Kb
0.5
Kb
0.5
Kb
Aiyarafun
ID
node32s
Name
Node32s
Platform
Espressif 32
Debug
Microcontroller
ESP32
Frequency
240 MHz
Flash
1280 Kb
RAM
288 Kb
Alorium Technolog
ID
alorium_xlr8
Name
Alorium XLR8
1.10. Embedded Boards
Platform
Atmel AVR
Debug
Microcontroller
ATMEGA328P
Frequency
16 MHz
Flash
32 Kb
RAM
2 Kb
315
PlatformIO Documentation, Release 3.4.1
April Brother
ID
Name
Platform
espea32
April Brother
ESPea32
Espressif
32
Debug
Microcontroller
ESP32
Frequency
240 MHz
Flash
RAM
1280
Kb
288
Kb
Arduboy
ID
Name
Platform
arduboy
Arduboy
Atmel
AVR
Atmel
AVR
arduboy_devkit Arduboy
DevKit
Debug
Microcontroller
ATMEGA32U4
ATMEGA32U4
Frequency
16 MHz
16 MHz
Flash
RAM
32
Kb
32
Kb
2.5
Kb
2.5
Kb
Arduino
ID
LilyPadUSB
atmega328pb
atmegangatmega168
atmegangatmega8
btatmega168
btatmega328
chiwawa
diecimilaatmega168
diecimilaatmega328
due
dueUSB
esplora
ethernet
fio
leonardo
leonardoeth
lilypadatmega168
lilypadatmega328
megaADK
megaatmega1280
megaatmega2560
micro
miniatmega168
miniatmega328
mkr1000USB
mkrfox1200
mkrzero
mzeroUSB
mzeropro
mzeroproUSB
316
Name
Arduino LilyPad USB
Atmel ATmega328PB
Arduino NG or older ATmega168
Arduino NG or older ATmega8
Arduino BT ATmega168
Arduino BT ATmega328
Arduino Industrial 101
Arduino Duemilanove or Diecimila ATmega168
Arduino Duemilanove or Diecimila ATmega328
Arduino Due (Programming Port)
Arduino Due (USB Native Port)
Arduino Esplora
Arduino Ethernet
Arduino Fio
Arduino Leonardo
Arduino Leonardo ETH
Arduino LilyPad ATmega168
Arduino LilyPad ATmega328
Arduino Mega ADK
Arduino Mega or Mega 2560 ATmega1280
Arduino Mega or Mega 2560 ATmega2560 (Mega 2560)
Arduino Micro
Arduino Mini ATmega168
Arduino Mini ATmega328
Arduino MKR1000
Arduino MKRFox1200
Arduino MKRZero
Arduino M0
Arduino M0 Pro (Programming/Debug Port)
Arduino M0 Pro (Native USB Port)
Platform
Atmel AVR
Atmel AVR
Atmel AVR
Atmel AVR
Atmel AVR
Atmel AVR
Atmel AVR
Atmel AVR
Atmel AVR
Atmel SAM
Atmel SAM
Atmel AVR
Atmel AVR
Atmel AVR
Atmel AVR
Atmel AVR
Atmel AVR
Atmel AVR
Atmel AVR
Atmel AVR
Atmel AVR
Atmel AVR
Atmel AVR
Atmel AVR
Atmel SAM
Atmel SAM
Atmel SAM
Atmel SAM
Atmel SAM
Atmel SAM
Debug
Yes
Yes
Yes
Microcontroller
ATMEGA32U4
ATMEGA328PB
ATMEGA168
ATMEGA8
ATMEGA168
ATMEGA328P
ATMEGA32U4
ATMEGA168
ATMEGA328P
AT91SAM3X8E
AT91SAM3X8E
ATMEGA32U4
ATMEGA328P
ATMEGA328P
ATMEGA32U4
ATMEGA32U4
ATMEGA168
ATMEGA328P
ATMEGA2560
ATMEGA1280
ATMEGA2560
ATMEGA32U4
ATMEGA168
ATMEGA328P
SAMD21G18A
SAMD21G18A
SAMD21G18A
SAMD21G18A
SAMD21G18A
SAMD21G18A
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
ID
nanoatmega168
nanoatmega328
pro16MHzatmega168
pro16MHzatmega328
pro8MHzatmega168
pro8MHzatmega328
robotControl
robotMotor
tian
uno
yun
yunmini
zero
zeroUSB
Table 1.6 – continued from previous page
Name
Platform
Debug
Arduino Nano ATmega168
Atmel AVR
Arduino Nano ATmega328
Atmel AVR
Arduino Pro or Pro Mini ATmega168 (5V, 16 MHz)
Atmel AVR
Arduino Pro or Pro Mini ATmega328 (5V, 16 MHz)
Atmel AVR
Arduino Pro or Pro Mini ATmega168 (3.3V, 8 MHz)
Atmel AVR
Arduino Pro or Pro Mini ATmega328 (3.3V, 8 MHz)
Atmel AVR
Arduino Robot Control
Atmel AVR
Arduino Robot Motor
Atmel AVR
Arduino Tian
Atmel SAM
Arduino Uno
Atmel AVR
Arduino Yun
Atmel AVR
Arduino Yun Mini
Atmel AVR
Arduino Zero (Programming/Debug Port)
Atmel SAM Yes
Arduino Zero (USB Native Port)
Atmel SAM
Microcontroller
ATMEGA168
ATMEGA328P
ATMEGA168
ATMEGA328P
ATMEGA168
ATMEGA328P
ATMEGA32U4
ATMEGA32U4
SAMD21G18A
ATMEGA328P
ATMEGA32U4
ATMEGA32U4
SAMD21G18A
SAMD21G18A
Armstrap
ID
Name
armstrap_eagle1024
Armstrap Eagle
1024
armstrap_eagle2048
Armstrap Eagle
2048
armstrap_eagle512Armstrap Eagle
512
Platform
ST
STM32
ST
STM32
ST
STM32
Debug
Yes
MicroconFretroller
quency
STM32F417VGT6168 MHz
Yes
STM32F427VIT6 168 MHz
Yes
STM32F407VET6168 MHz
Flash
RAM
1024
Kb
2048
Kb
512
Kb
192
Kb
256
Kb
192
Kb
Atmel
ID
Name
Atmel
SAMD21-XPRO
samd21g18a
Atmel
ATSAMW25-XPRO
saml21_xpro_bAtmel
SAML21-XPRO-B
samr21_xpro Atmel
ATSAMR21-XPRO
samd21_xpro
Platform
Atmel
SAM
Atmel
SAM
Atmel
SAM
Atmel
SAM
Debug
Yes
Yes
Yes
Yes
Microcontroller
ATSAMD21J18A
ATSAMD21G18A
ATSAML21J18B
ATSAMR21G18A
Frequency
48 MHz
48 MHz
48 MHz
48 MHz
Flash
RAM
256
Kb
256
Kb
256
Kb
256
Kb
32
Kb
32
Kb
32
Kb
32
Kb
Flash
RAM
256
Kb
256
Kb
16
Kb
16
Kb
BBC
ID
Name
Platform
bbcmicrobit
BBC micro:bit
Nordic
nRF51
Nordic
nRF51
bbcmicrobit_b BBC micro:bit
B(S130)
1.10. Embedded Boards
Debug
Microcontroller
NRF51822
Frequency
16 MHz
NRF51822
16 MHz
317
PlatformIO Documentation, Release 3.4.1
BQ
ID
zumbt328
Name
BQ ZUM BT-328
Platform
Atmel AVR
Debug
Microcontroller
ATMEGA328P
Frequency
16 MHz
Flash
32 Kb
RAM
2 Kb
BitWizard
ID
Name
Platform
raspduino
BitWizard
Raspduino
Atmel
AVR
Debug
Microcontroller
ATMEGA328P
Frequency
16 MHz
Flash
RAM
32 Kb
2 Kb
CQ Publishing
ID
Name
Platform
NXP
LPC
lpc11u35_501CQ Publishing
TG-LPC11U35-501
Debug
Microcontroller
LPC11U35
Frequency
48 MHz
Flash RAM
64
Kb
10
Kb
Controllino
ID
Name
controllino_maxi
Controllino Maxi
controllino_maxi_automation
Controllino Maxi
Automation
controllino_mega
Controllino Mega
Controllino Mini
controllino_mini
Platform
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Debug
Microcontroller
ATMEGA2560
ATMEGA2560
ATMEGA2560
ATMEGA328P
Frequency
16 MHz
16 MHz
16 MHz
16 MHz
Flash RAM
256
Kb
256
Kb
256
Kb
32
Kb
8
Kb
8
Kb
8
Kb
2
Kb
DFRobot
ID
Name
firebeetle32 FireBeetleESP32
Platform
Debug
Espressif
32
Microcontroller
ESP32
Frequency
240 MHz
Flash
RAM
1280
Kb
288
Kb
DOIT
ID
Name
esp32doit-devkit-v1
DOIT ESP32
DEVKIT V1
318
Platform
Espressif
32
Debug
Microcontroller
ESP32
Frequency
240
MHz
Flash
RAM
1280
Kb
288
Kb
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Delta
ID
Name
delta_dfbm_nq620Delta
DFBM-NQ620
dfcm_nnn40
Delta
DFCM-NNN40
Platform
Nordic
nRF52
Nordic
nRF51
Debug
Yes
Microcontroller
NRF52832
Frequency
64 MHz
Yes
NRF51822
32 MHz
Flash
RAM
512
Kb
256
Kb
64
Kb
32
Kb
Flash
RAM
512
Kb
512
Kb
128
Kb
128
Kb
128
Kb
512
Kb
512
Kb
512
Kb
512
Kb
2048
Kb
512
Kb
2048
Kb
128
Kb
32
Kb
128
Kb
32
Kb
32
Kb
16
Kb
32
Kb
128
Kb
32
Kb
128
Kb
512
Kb
128
Kb
512
Kb
16
Kb
Digilent
ID
Name
cerebot32mx4 Digilent Cerebot
32MX4
cerebot32mx7 Digilent Cerebot
32MX7
chipkit_cmod Digilent chipKIT
Cmod
chipkit_dp32 Digilent chipKIT
DP32
chipkit_mx3 Digilent chipKIT
MX3
chipkit_pro_mx4
Digilent chipKIT
Pro MX4
chipkit_pro_mx7
Digilent chipKIT
Pro MX7
chipkit_uc32 Digilent chipKIT
uC32
chipkit_wf32 Digilent chipKIT
WF32
chipkit_wifireDigilent chipKIT
WiFire
mega_pic32
Digilent chipKIT
MAX32
openscope
Digilent OpenScope
uno_pic32
Digilent chipKIT
UNO32
1.10. Embedded Boards
Platform
Microchip
PIC32
Microchip
PIC32
Microchip
PIC32
Microchip
PIC32
Microchip
PIC32
Microchip
PIC32
Microchip
PIC32
Microchip
PIC32
Microchip
PIC32
Microchip
PIC32
Microchip
PIC32
Microchip
PIC32
Microchip
PIC32
Debug
MicroconFretroller
quency
32MX460F512L 80 MHz
32MX795F512L 80 MHz
32MX150F128D 40 MHz
32MX250F128B 40 MHz
32MX320F128H 80 MHz
32MX460F512L 80 MHz
32MX795F512L 80 MHz
32MX340F512H 80 MHz
32MX695F512L 80 MHz
32MZ2048ECG100
200
MHz
32MX795F512L 80 MHz
32MZ2048EFG124
200
MHz
32MX320F128H 80 MHz
319
PlatformIO Documentation, Release 3.4.1
Digistump
ID
Name
digispark-proDigistump Digispark Pro (Default
16 MHz)
digispark-pro32
Digistump Digispark Pro (16
MHz) (32 byte buffer)
digispark-pro64
Digistump Digispark Pro (16
MHz) (64 byte buffer)
digispark-tiny
Digistump Digispark (Default - 16
MHz)
digix
Digistump DigiX
Platform
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
SAM
Debug
Microcon- Fretroller
quency
AT16
TINY167
MHz
AT16
TINY167
MHz
AT16
TINY167
MHz
AT16
TINY85
MHz
AT91SAM3X8E
84
MHz
Flash RAM
16
Kb
16
Kb
16
Kb
8 Kb
512
Kb
0.5
Kb
0.5
Kb
0.5
Kb
0.5
Kb
28
Kb
Doit
ID
Name
Platform
espduino ESPDuino (ESP-13
Module)
Espressif
8266
Debug
Microcontroller
ESP8266
Frequency
80 MHz
Flash
RAM
4096
Kb
80
Kb
Dwengo
ID
dwenguino
Name
Dwenguino
Platform
Atmel AVR
Debug
Microcontroller
AT90USB646
Frequency
16 MHz
Flash
64 Kb
RAM
2 Kb
DycodeX
ID
espectro
Name
ESPectro Core
Platform
Espressif 8266
Debug
Microcontroller
ESP8266
Frequency
80 MHz
Flash
4096 Kb
RAM
80 Kb
Flash
RAM
1024
Kb
288
Kb
ESP32vn
ID
Name
esp32vn-iot-uno ESP32vn IoT
Uno
Platform
Debug
Espressif
32
Microcontroller
ESP32
Frequency
240 MHz
ESPert
ID
Name
espresso_lite_v1ESPresso Lite
1.0
espresso_lite_v2ESPresso Lite
2.0
320
Platform
Espressif
8266
Espressif
8266
Debug
Microcontroller
ESP8266
Frequency
80 MHz
ESP8266
80 MHz
Flash
RAM
4096
Kb
4096
Kb
80
Kb
80
Kb
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
ESPino
ID
espino
Name
ESPino
Platform
Espressif 8266
Debug
Microcontroller
ESP8266
Frequency
80 MHz
Flash
4096 Kb
RAM
80 Kb
Electronic SweetPeas
ID
Name
Platform
esp320 Electronic SweetPeas
ESP320
Debug
Espressif
32
Microcontroller
ESP32
Frequency
240 MHz
Microcontroller
LPC812
Frequency
30 MHz
Flash
RAM
1280
Kb
288
Kb
Elektor Labs
ID
Name
Platform
elektor_cocorico
CoCo-riCo!
NXP
LPC
Debug
Yes
Flash
RAM
16
Kb
4 Kb
Embedded Artists
ID
Name
lpc11u35
EA LPC11U35 QuickStart Board
Embedded Artists LPC4088
QuickStart Board
lpc4088_dmEmbedded Artists LPC4088
Display Module
lpc4088
Platform
NXP
LPC
NXP
LPC
NXP
LPC
Debug
Microcontroller
LPC11U35
Frequency
48 MHz
Yes
LPC4088
Yes
LPC4088
120
MHz
120
MHz
Flash
RAM
64
Kb
512
Kb
512
Kb
10
Kb
96
Kb
96
Kb
Engduino
ID
engduinov3
Name
Engduino 3
Platform
Atmel AVR
Debug
Microcontroller
ATMEGA32U4
Frequency
8 MHz
Flash
32 Kb
RAM
2.5 Kb
EnviroDIY
ID
mayfly
Name
EnviroDIY Mayfly
Platform
Atmel AVR
Debug
Microcontroller
ATMEGA1284P
Frequency
8 MHz
Flash
128 Kb
RAM
16 Kb
Espotel
ID
Name
elmo_f411re Espotel LoRa
Module
1.10. Embedded Boards
Platform
ST
STM32
Debug
Yes
Microcontroller
Frequency
STM32F411RET6 100 MHz
Flash
RAM
512
Kb
128
Kb
321
PlatformIO Documentation, Release 3.4.1
Espressif
ID
Name
Platform
esp01
esp12e
Espressif Generic ESP8266
ESP-01 512k
Espressif Generic ESP8266
ESP-01 1M
Espressif Generic ESP8266
ESP-07
Espressif ESP8266 ESP-12E
esp32dev
Espressif ESP32 Dev Module
esp8285
Generic ESP8285 Module
Espressif
8266
Espressif
8266
Espressif
8266
Espressif
8266
Espressif
32
Espressif
8266
Espressif
8266
Espressif
8266
Espressif
8266
Espressif
8266
esp01_1m
esp07
esp_wroom_02
ESP-WROOM-02
phoenix_v1 Phoenix 1.0
phoenix_v2 Phoenix 2.0
WifInfo
wifinfo
Debug
Microcontroller
ESP8266
Frequency
80 MHz
ESP8266
80 MHz
ESP8266
80 MHz
ESP8266
80 MHz
ESP32
ESP8266
240
MHz
80 MHz
ESP8266
80 MHz
ESP8266
80 MHz
ESP8266
80 MHz
ESP8266
80 MHz
Flash
RAM
512
Kb
1024
Kb
4096
Kb
4096
Kb
1280
Kb
448
Kb
4096
Kb
1024
Kb
1024
Kb
448
Kb
80
Kb
80
Kb
80
Kb
80
Kb
288
Kb
80
Kb
80
Kb
80
Kb
80
Kb
80
Kb
Flash
RAM
32
Kb
32
Kb
FPGAwars
ID
Name
icezum IceZUM Alhambra
FPGA
322
Platform
Lattice
iCE40
Debug
Microcontroller
ICE40-HX1KTQ144
Frequency
12 MHz
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Freescale
ID
Name
Platform
IBMEthernetKit
Ethernet IoT Starter Kit
Freescale
Kinetis
Freescale
Kinetis
Freescale
Kinetis
Freescale
Kinetis
Freescale
Kinetis
Freescale
Kinetis
Freescale
Kinetis
Freescale
Kinetis
Freescale
Kinetis
Freescale
Kinetis
Freescale
Kinetis
frdm_k20d50mFreescale Kinetis
FRDM-K20D50M
frdm_k22f
Freescale Kinetis
FRDM-K22F
frdm_k64f
Freescale Kinetis
FRDM-K64F
frdm_k66f
Freescale Kinetis
FRDM-K66F
frdm_kl05z Freescale Kinetis
FRDM-KL05Z
frdm_kl25z Freescale Kinetis
FRDM-KL25Z
frdm_kl26z Freescale Kinetis
FRDM-KL26Z
frdm_kl27z Freescale Kinetis
FRDM-KL27Z
frdm_kl43z Freescale Kinetis
FRDM-KL43Z
frdm_kl46z Freescale Kinetis
FRDM-KL46Z
Debug
Yes
MicroconFretroller
quency
MK64FN1M0VLL12
120
MHz
MK20DX128VLH5
48
MHz
MK22FN512VLH12
120
MHz
MK64FN1M0VLL12
120
MHz
MK66FN2M0VMD18
180
MHz
MKL05Z32VFM448
MHz
MKL25Z128VLK448
MHz
MKL26Z128VLH448
MHz
MKL27Z64VLH4 48
MHz
MKL43Z256VLH448
MHz
MKL46Z256VLL448
MHz
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Flash
RAM
1024
Kb
128
Kb
512
Kb
1024
Kb
2048
Kb
32
Kb
128
Kb
128
Kb
64
Kb
256
Kb
256
Kb
256
Kb
16
Kb
128
Kb
256
Kb
256
Kb
4 Kb
Flash
RAM
128
Kb
512
Kb
32 Kb
16
Kb
16
Kb
16
Kb
32
Kb
32
Kb
Fubarino
ID
Name
Platform
fubarino_mini Fubarino Mini
fubarino_sd
Fubarino SD
(1.5)
Microchip
PIC32
Microchip
PIC32
Debug
MicroconFretroller
quency
32MX250F128D 48 MHz
32MX795F512H 80 MHz
128
Kb
GHI Electronics
ID
oc_mbuino
Name
mBuino
1.10. Embedded Boards
Platform
NXP LPC
Debug
Microcontroller
LPC11U24
Frequency
50 MHz
Flash
32 Kb
RAM
10 Kb
323
PlatformIO Documentation, Release 3.4.1
Generic
ID
Name
bluepill_f103c8BluePill F103C8
genericSTM32F103C8
STM32F103C8 (20k RAM.
64k Flash)
genericSTM32F103CB
STM32F103CB (20k RAM.
128k Flash)
genericSTM32F103R8
STM32F103R8 (20k RAM.
64 Flash)
genericSTM32F103RB
STM32F103RB (20k RAM.
128k Flash)
genericSTM32F103RC
STM32F103RC (48k RAM.
256k Flash)
genericSTM32F103RE
STM32F103RE (64k RAM.
512k Flash)
324
Platform
ST
STM32
ST
STM32
ST
STM32
ST
STM32
ST
STM32
ST
STM32
ST
STM32
Debug
Yes
MicroconFretroller
quency
STM32F103C8T6
72 MHz
Yes
STM32F103C8 72 MHz
Yes
STM32F103CB72 MHz
Yes
STM32F103R8 72 MHz
Yes
STM32F103RB72 MHz
Yes
STM32F103RC72 MHz
Yes
STM32F103RE 72 MHz
Flash RAM
64
Kb
64
Kb
128
Kb
64
Kb
128
Kb
256
Kb
512
Kb
20
Kb
20
Kb
20
Kb
20
Kb
20
Kb
48
Kb
64
Kb
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Generic ATTiny
ID
Name
Platform
attiny13
Generic ATTiny13
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
attiny1634 Generic
ATTiny1634
attiny167 Generic
ATTiny167
attiny2313 Generic
ATTiny2313
attiny24
Generic ATTiny24
attiny25
Generic ATTiny25
Generic
ATTiny261
attiny4313 Generic
ATTiny4313
attiny44
Generic ATTiny44
attiny261
attiny441
attiny45
Generic
ATTiny441
Generic ATTiny45
attiny48
Generic
ATTiny461
Generic ATTiny48
attiny84
Generic ATTiny84
attiny841
Generic
ATTiny841
Generic ATTiny85
attiny461
attiny85
attiny87
Generic
ATTiny861
Generic ATTiny87
attiny88
Generic ATTiny88
attiny861
Debug
Microcontroller
ATTINY13
Frequency
9 MHz
Flash
RAM
1 Kb
ATTINY1634
8 MHz
ATTINY167
8 MHz
ATTINY2313
8 MHz
16
Kb
16
Kb
2 Kb
0.0625
Kb
1 Kb
ATTINY24
8 MHz
2 Kb
0.125 Kb
ATTINY25
8 MHz
2 Kb
0.125 Kb
ATTINY261
8 MHz
2 Kb
0.125 Kb
ATTINY4313
8 MHz
4 Kb
0.25 Kb
ATTINY44
8 MHz
4 Kb
0.25 Kb
ATTINY441
8 MHz
4 Kb
0.25 Kb
ATTINY45
8 MHz
4 Kb
0.25 Kb
ATTINY461
8 MHz
4 Kb
0.25 Kb
ATTINY48
8 MHz
4 Kb
0.25 Kb
ATTINY84
8 MHz
8 Kb
0.5 Kb
ATTINY841
8 MHz
8 Kb
0.5 Kb
ATTINY85
8 MHz
8 Kb
0.5 Kb
ATTINY861
8 MHz
8 Kb
0.5 Kb
ATTINY87
8 MHz
8 Kb
0.5 Kb
ATTINY88
8 MHz
8 Kb
0.5 Kb
0.5 Kb
0.125 Kb
Hornbill
ID
Name
Hornbill ESP32
Dev
hornbill32minimaHornbill ESP32
Minima
hornbill32dev
1.10. Embedded Boards
Platform
Espressif
32
Espressif
32
Debug
Microcontroller
ESP32
Frequency
240 MHz
ESP32
240 MHz
Flash
RAM
1280
Kb
1280
Kb
288
Kb
288
Kb
325
PlatformIO Documentation, Release 3.4.1
Intel
ID
Name
Platform
genuino101 Arduino/Genuino
101
Debug
Microcontroller
ARCV2EM
Intel
ARC32
Frequency
32 MHz
Flash
RAM
192
Kb
80
Kb
IntoRobot
ID
intorobot
Name
IntoRobot Fig
Platform
Espressif 32
Debug
Microcontroller
ESP32
Frequency
240 MHz
Flash
1280 Kb
RAM
288 Kb
JKSoft
ID
Name
Platform
wallbot_ble JKSoft Wallbot
BLE
Nordic
nRF51
Debug
Yes
Microcontroller
NRF51822
Frequency
16 MHz
Flash
RAM
128
Kb
16
Kb
Lattice
ID
Name
Platform
icestick Lattice iCEstick FPGA
Evaluation Kit
Debug
Microcontroller
ICE40-HX1KTQ144
Lattice
iCE40
Frequency
12 MHz
Flash RAM
32
Kb
32
Kb
LeafLabs
ID
Name
maple
Maple
Maple Mini
Bootloader 2.0
maple_mini_origin
Maple Mini Original
maple_mini_b20
Platform
ST
STM32
ST
STM32
ST
STM32
Debug
MicroconFretroller
quency
STM32F103RB 72 MHz
STM32F103CB 72 MHz
STM32F103CB 72 MHz
Flash
RAM
128
Kb
128
Kb
128
Kb
17
Kb
20
Kb
17
Kb
LightUp
ID
lightup
Name
LightUp
Platform
Atmel AVR
Debug
Microcontroller
ATMEGA32U4
Frequency
8 MHz
Flash
32 Kb
RAM
2.5 Kb
Linino
ID
one
326
Name
Linino One
Platform
Atmel AVR
Debug
Microcontroller
ATMEGA32U4
Frequency
16 MHz
Flash
32 Kb
RAM
2.5 Kb
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
LowPowerLab
ID
Name
moteino
LowPowerLab Moteino
moteinomega LowPowerLab
MoteinoMEGA
Platform
Atmel
AVR
Atmel
AVR
Debug
Microcontroller
ATMEGA328P
ATMEGA1284P
Frequency
16 MHz
Flash
RAM
32 Kb
2 Kb
16 MHz
128
Kb
16
Kb
MXChip
ID
Name
mxchip_az3166
Microsoft Azure IoT Development
Kit (MXChip AZ3166)
Platform
ST
STM32
Debug
Yes
MicroconFretroller
quency
STM32F412ZGT6
100
MHz
Flash
RAM
1024
Kb
256
Kb
MakerAsia
ID
nano32
Name
MakerAsia Nano32
Platform
Espressif 32
Debug
Microcontroller
ESP32
Frequency
240 MHz
Flash
1280 Kb
RAM
288 Kb
Maxim
ID
Name
max32600mbed
Maxim ARM mbed Enabled Development
Platform for MAX32600
max32620hsp
Maxim Health Sensor Platform
max32630fthr
Maxim MAX32630FTHR Application
Platform
maxwsnenv Maxim Wireless Sensor Node
Demonstrator
1.10. Embedded Boards
Platform
Maxim
32
Maxim
32
Maxim
32
Maxim
32
Debug
MicroFreconquency
troller
MAX32600 24
MHz
MAX32620 96
MHz
MAX32630 96
MHz
MAX32610 24
MHz
Flash RAM
256
Kb
2048
Kb
2048
Kb
256
Kb
32
Kb
256
Kb
512
Kb
32
Kb
327
PlatformIO Documentation, Release 3.4.1
Mcudude
ID
Name
Platform
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
mightycore1284MightyCore
ATmega1284
mightycore16 MightyCore
ATmega16
mightycore164 MightyCore
ATmega164
mightycore32 MightyCore
ATmega32
mightycore324 MightyCore
ATmega324
mightycore644 MightyCore
ATmega644
mightycore8535MightyCore
ATmega8535
Debug
Microcontroller
ATMEGA1284P
ATMEGA16
Frequency
16 MHz
Flash
RAM
16 MHz
128
Kb
16 Kb
16
Kb
1 Kb
ATMEGA164P
ATMEGA32
16 MHz
16 Kb
1 Kb
16 MHz
32 Kb
2 Kb
ATMEGA324P
ATMEGA644P
ATMEGA16
16 MHz
32 Kb
2 Kb
16 MHz
64 Kb
4 Kb
16 MHz
8 Kb
0.5
Kb
Microduino
ID
Name
1284p16mMicroduino Core+
([email protected],5V)
1284p8m Microduino Core+
([email protected],3.3V)
168pa16mMicroduino Core
([email protected],5V)
168pa8m Microduino Core
([email protected],3.3V)
328p16m Microduino Core
([email protected],5V)
328p8m Microduino Core
([email protected],3.3V)
32u416m Microduino Core USB
([email protected],5V)
644pa16mMicroduino Core+
([email protected],5V)
644pa8m Microduino Core+
([email protected],3.3V)
Platform
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Debug
Microcontroller
ATMEGA1284P
ATMEGA1284P
ATMEGA168P
ATMEGA168P
ATMEGA328P
ATMEGA328P
ATMEGA32U4
ATMEGA644P
ATMEGA644P
Frequency
16 MHz
8 MHz
16 MHz
8 MHz
16 MHz
8 MHz
16 MHz
16 MHz
8 MHz
Flash
RAM
128
Kb
128
Kb
16
Kb
16
Kb
32
Kb
32
Kb
32
Kb
64
Kb
64
Kb
16
Kb
16
Kb
1 Kb
1 Kb
2 Kb
2 Kb
2.5
Kb
4 Kb
4 Kb
Micromint
ID
Name
Platform
lpc4330_m4
Bambino-210E
lpc4337
LPCXpresso4337
NXP
LPC
NXP
LPC
328
Debug
Yes
Microcontroller
LPC4330
Frequency
204 MHz
LPC4337
204 MHz
Flash
RAM
8192
Kb
1024
Kb
264
Kb
136
Kb
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
MikroElektronika
ID
Name
Platform
clicker2 MikroElektronika
Clicker 2
hexiwear Hexiwear
Debug
Microchip
PIC32
Freescale
Kinetis
Microcontroller
32MX460F512L
Frequency
80 MHz
MK64FN1M0VDC12120
MHz
Yes
Flash
RAM
512
Kb
1024
Kb
32
Kb
256
Kb
MultiTech
ID
Name
mts_dragonfly_f411re
MTS Dragonfly
mts_mdot_f405rg
MultiTech mDot
mts_mdot_f411re
MultiTech mDot
F411
MultiTech xDot
xdot_l151cc
Platform
ST
STM32
ST
STM32
ST
STM32
ST
STM32
Debug
Yes
Yes
Yes
MicroconFretroller
quency
STM32F411RET6100
MHz
STM32F411RET6100
MHz
STM32F411RET6100
MHz
STM32L151CCU632 MHz
Flash
RAM
512
Kb
512
Kb
512
Kb
256
Kb
128
Kb
128
Kb
128
Kb
32
Kb
NGX Technologies
ID
Name
blueboard_lpc11u24
NGX Technologies
BlueBoard-LPC11U24
1.10. Embedded Boards
Platform
NXP
LPC
Debug
Microcontroller
LPC11U24
Frequency
48 MHz
Flash RAM
32
Kb
8
Kb
329
PlatformIO Documentation, Release 3.4.1
NXP
ID
Name
lpc11c24
NXP LPC11C24
lpc11u24
NXP mbed LPC11U24
lpc11u24_301 ARM mbed LPC11U24
(+CAN)
lpc11u34_421 NXP LPC11U34
lpc11u37_501 NXP LPC11U37
lpc11u68
LPCXpresso11U68
lpc1549
NXP LPCXpresso1549
lpc1768
NXP mbed LPC1768
lpc2368
NXP LPC2368
lpc2460
NXP LPC2460
lpc812
NXP LPC800-MAX
lpc824
LPCXpresso824-MAX
micronfcboardMicroNFCBoard
Platform
NXP
LPC
NXP
LPC
NXP
LPC
NXP
LPC
NXP
LPC
NXP
LPC
NXP
LPC
NXP
LPC
NXP
LPC
NXP
LPC
NXP
LPC
NXP
LPC
NXP
LPC
Debug
Microcontroller
LPC11C24
Frequency
48 MHz
Flash
RAM
32 Kb
8 Kb
Yes
LPC11U24
48 MHz
32 Kb
8 Kb
Yes
LPC11U24
48 MHz
32 Kb
8 Kb
LPC11U34
48 MHz
64 Kb
8 Kb
LPC11U37
48 MHz
LPC11U68
50 MHz
LPC1549
72 MHz
LPC1768
96 MHz
LPC2368
72 MHz
Yes
LPC2460
72 MHz
128
Kb
256
Kb
256
Kb
512
Kb
512
Kb
64 Kb
Yes
LPC812
30 MHz
16 Kb
10
Kb
36
Kb
36
Kb
64
Kb
58
Kb
16
Kb
4 Kb
Yes
LPC824
30 MHz
32 Kb
8 Kb
LPC11U34
48 MHz
64 Kb
10
Kb
Yes
Yes
NodeMCU
ID
Name
Platform
NodeMCU 0.9 (ESP-12
Module)
nodemcu-32sNodeMCU-32S
Espressif
8266
Espressif
32
Espressif
8266
nodemcu
nodemcuv2
NodeMCU 1.0 (ESP-12E
Module)
Debug
Microcontroller
ESP8266
Frequency
80 MHz
ESP32
240
MHz
80 MHz
ESP8266
Flash
RAM
4096
Kb
1280
Kb
4096
Kb
80
Kb
288
Kb
80
Kb
Noduino
ID
Name
Platform
quantum
Noduino
Quantum
Espressif
32
330
Debug
Microcontroller
ESP32
Frequency
240 MHz
Flash
RAM
1280 Kb
288 Kb
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Nordic
ID
Name
Platform
nrf51_dk
Nordic nRF51-DK
Nordic
nRF51
Nordic
nRF51
Nordic
nRF51
Nordic
nRF52
nrf51_dongle Nordic
nRF51-Dongle
nrf51_mkit
Nordic
nRF51822-mKIT
nrf52_dk
Nordic nRF52-DK
Debug
Yes
Microcontroller
NRF51822
Frequency
32 MHz
Yes
NRF51822
32 MHz
Yes
NRF51822
16 MHz
Yes
NRF52832
64 MHz
Debug
Microcontroller
ESP32
Frequency
240 MHz
ESP32
240 MHz
Flash
RAM
256
Kb
256
Kb
128
Kb
512
Kb
32
Kb
32
Kb
16
Kb
64
Kb
Flash
RAM
1280
Kb
1280
Kb
288
Kb
288
Kb
OLIMEX
ID
Name
Platform
esp32-evb
OLIMEX ESP32-EVB
Espressif
32
Espressif
32
esp32-gatewayOLIMEX
ESP32-GATEWAY
Olimex
ID
Name
Platform
Olimex MOD-WIFIESP8266(-DEV)
pinguino32Olimex PIC32-PINGUINO
modwifi
Debug
Espressif
8266
Microchip
PIC32
Microcontroller
ESP8266
Frequency
80 MHz
32MX440F256H80 MHz
Flash
RAM
2048
Kb
256
Kb
80
Kb
32
Kb
Onehorse
ID
Name
Platform
onehorse32devOnehorse ESP32 Dev
Module
Espressif
32
Debug
Microcontroller
ESP32
Frequency
240 MHz
Flash
RAM
1280
Kb
288
Kb
Flash
RAM
128 Kb
32 Kb
OpenBCI
ID
Name
Platform
openbci
OpenBCI
32bit
Microchip
PIC32
1.10. Embedded Boards
Debug
Microcontroller
32MX250F128B
Frequency
40 MHz
331
PlatformIO Documentation, Release 3.4.1
OpenEnergyMonitor
ID
Name
Platform
emonpi
OpenEnergyMonitor
emonPi
Atmel
AVR
Debug
Microcontroller
ATMEGA328P
Frequency
16 MHz
Flash
RAM
32
Kb
2 Kb
Microcontroller
LPC11U24
Frequency
48 MHz
Flash
RAM
32
Kb
8 Kb
Flash
RAM
512
Kb
512
Kb
128
Kb
32 Kb
Outrageous Circuits
ID
Name
Platform
mbuino
Outrageous Circuits
mBuino
NXP
LPC
Debug
PONTECH
ID
Name
Platform
quick240_usb PONTECH
quicK240
usbono_pic32 PONTECH
UAV100
Debug
Microchip
PIC32
Microchip
PIC32
MicroconFretroller
quency
32MX795F512L 80 MHz
32MX440F512H 80 MHz
PanStamp
ID
Name
Platform
panStampAVR
PanStamp AVR
Atmel AVR
panStampNRG
PanStamp NRG
1.1
TI
MSP430
Debug
Microcontroller
ATMEGA328P
Frequency
8 MHz
CC430F5137
12 MHz
Flash
RAM
32
Kb
32
Kb
2 Kb
4 Kb
Pinoccio
ID
pinoccio
Name
Pinoccio Scout
Platform
Atmel AVR
Debug
Microcontroller
ATMEGA256RFR2
Frequency
16 MHz
Flash
256 Kb
RAM
32 Kb
Pololu Corporation
ID
Name
Platform
a-star32U4
Pololu A-Star
32U4
Atmel
AVR
332
Debug
Microcontroller
ATMEGA32U4
Frequency
16 MHz
Flash
RAM
32
Kb
2.5
Kb
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Punch Through
ID
Name
Platform
LightBlue
Bean
lightblue-beanplus LightBlue
Bean+
Debug
Microcontroller
ATMEGA328P
ATMEGA328P
Atmel
AVR
Atmel
AVR
lightblue-bean
Frequency
8 MHz
16 MHz
Flash
RAM
32
Kb
32
Kb
2 Kb
2 Kb
Quirkbot
ID
quirkbot
Name
Quirkbot
Platform
Atmel AVR
Debug
Microcontroller
ATMEGA32U4
Frequency
8 MHz
Flash
32 Kb
RAM
2.5 Kb
RFduino
ID
rfduino
Name
RFduino
Platform
Nordic nRF51
Debug
Microcontroller
NRF51822
Frequency
16 MHz
Flash
128 Kb
RAM
8 Kb
Raspberry Pi
ID
Name
raspberrypi_1b Raspberry Pi 1
Model B
raspberrypi_2b Raspberry Pi 2
Model B
raspberrypi_3b Raspberry Pi 3
Model B
raspberrypi_zero
Raspberry Pi Zero
Platform
Linux
ARM
Linux
ARM
Linux
ARM
Linux
ARM
Debug
Microcontroller
BCM2835
Frequency
700
MHz
900
MHz
1200
MHz
1000
MHz
Flash
RAM
524288
Kb
1048576
Kb
1048576
Kb
524288
Kb
524288
Kb
1048576
Kb
1048576
Kb
524288
Kb
Frequency
16
MHz
16
MHz
8 MHz
Yes
Microcontroller
ATMEGA32U4
ATMEGA32U4
ATMEGA32U4
NRF51822
Yes
NRF51822
BCM2836
BCM2837
BCM2835
RedBearLab
ID
Name
Platform
blend
RedBearLab Blend
Atmel
AVR
Atmel
AVR
Atmel
AVR
Nordic
nRF51
Nordic
nRF51
blendmicro16 RedBearLab Blend Micro
3.3V/16MHz (overclock)
blendmicro8 RedBearLab Blend Micro
3.3V/8MHz
redBearLab
RedBearLab nRF51822
redBearLabBLENano
RedBearLab BLE Nano
1.10. Embedded Boards
Debug
16
MHz
16
MHz
Flash RAM
32
Kb
32
Kb
32
Kb
256
Kb
256
Kb
2.5
Kb
2.5
Kb
2.5
Kb
16
Kb
32
Kb
333
PlatformIO Documentation, Release 3.4.1
RepRap
ID
Name
Platform
reprap_rambo
RepRap
RAMBo
Atmel
AVR
Debug
Microcontroller
ATMEGA2560
Frequency
16 MHz
Flash
RAM
256
Kb
8 Kb
RushUp
ID
Name
RushUp
Cloud-JAM
cloud_jam_l4RushUp
Cloud-JAM L4
kitra_520
RushUp Kitra 520
cloud_jam
Platform
ST
STM32
ST
STM32
Linux
ARM
Debug
Yes
MicroconFretroller
quency
STM32F401RET684 MHz
Flash
RAM
512 Kb
96 Kb
Yes
STM32L476RGT680 MHz
1024 Kb
128 Kb
EXYNOS3250
4194304
Kb
524288
Kb
1000
MHz
SODAQ
ID
Name
Platform
sodaq_autonomo SODAQ
Autonomo
sodaq_explorer SODAQ
ExpLoRer
sodaq_galora
SODAQ GaLoRa
sodaq_mbili
SODAQ Mbili
sodaq_moja
SODAQ Moja
sodaq_ndogo
SODAQ Ndogo
sodaq_one
SODAQ ONE
sodaq_tatu
SODAQ Tatu
Debug
Atmel
SAM
Atmel
SAM
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
SAM
Atmel
AVR
Microcontroller
SAMD21J18A
Frequency
48 MHz
SAMD21J18A
48 MHz
ATMEGA1284P
ATMEGA1284P
ATMEGA328P
ATMEGA1284P
SAMD21G18A
8 MHz
ATMEGA1284P
8 MHz
8 MHz
8 MHz
8 MHz
48 MHz
Flash
RAM
256
Kb
256
Kb
128
Kb
128
Kb
32 Kb
32
Kb
32
Kb
16
Kb
16
Kb
2 Kb
128
Kb
256
Kb
128
Kb
16
Kb
32
Kb
16
Kb
ST
ID
disco_f030r8
disco_f051r8
disco_f100rb
disco_f303vc
disco_f334c8
disco_f401vc
334
Name
ST STM32F0308DISCOVERY
ST STM32F0DISCOVERY
ST STM32VLDISCOVERY
ST STM32F3DISCOVERY
ST 32F3348DISCOVERY
ST 32F401CDISCOVERY
Platform
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
Debug
Yes
Yes
Yes
Yes
Yes
Yes
Microcontroller
STM32F030R8T6
STM32F051R8T6
STM32F100RBT6
STM32F303VCT6
STM32F334C8T6
STM32F401VCT6
Frequency Flash
48 MHz
64 Kb
48 MHz
64 Kb
24 MHz
128 Kb
72 MHz
256 Kb
72 MHz
64 Kb
84 MHz
256 Kb
Continued on
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
ID
disco_f407vg
disco_f411ve
disco_f429zi
disco_f469ni
disco_f746ng
disco_f769ni
disco_l053c8
disco_l072cz_lrwan1
disco_l152rb
disco_l475vg_iot01a
disco_l476vg
nucleo_f030r8
nucleo_f031k6
nucleo_f042k6
nucleo_f070rb
nucleo_f072rb
nucleo_f091rc
nucleo_f103rb
nucleo_f207zg
nucleo_f302r8
nucleo_f303k8
nucleo_f303re
nucleo_f303ze
nucleo_f334r8
nucleo_f401re
nucleo_f410rb
nucleo_f411re
nucleo_f412zg
nucleo_f429zi
nucleo_f446re
nucleo_f446ze
nucleo_f746zg
nucleo_f767zi
nucleo_l011k4
nucleo_l031k6
nucleo_l053r8
nucleo_l073rz
nucleo_l152re
nucleo_l432kc
nucleo_l476rg
Table 1.7 – continued from previous page
Name
Platform
Debug Microcontroller
ST STM32F4DISCOVERY
ST STM32 Yes
STM32F407VGT6
ST 32F411EDISCOVERY
ST STM32 Yes
STM32F411VET6
ST 32F429IDISCOVERY
ST STM32 Yes
STM32F429ZIT6
ST 32F469IDISCOVERY
ST STM32 Yes
STM32F469NIH6
ST 32F746GDISCOVERY
ST STM32 Yes
STM32F746NGH6
ST 32F769IDISCOVERY
ST STM32 Yes
STM32F769NIH6
ST 32L0538DISCOVERY
ST STM32 Yes
STM32L053C8T6
ST DISCO-L072CZ-LRWAN1 ST STM32 Yes
STM32L072CZ
ST STM32LDISCOVERY
ST STM32 Yes
STM32L152RBT6
ST DISCO-L475VG-IOT01A
ST STM32 Yes
STM32L475VGT6
ST 32L476GDISCOVERY
ST STM32 Yes
STM32L476VGT6
ST Nucleo F030R8
ST STM32 Yes
STM32F030R8T6
ST Nucleo F031K6
ST STM32 Yes
STM32F031K6T6
ST Nucleo F042K6
ST STM32 Yes
STM32F042K6T6
ST Nucleo F070RB
ST STM32 Yes
STM32F070RBT6
ST Nucleo F072RB
ST STM32 Yes
STM32F072RBT6
ST Nucleo F091RC
ST STM32 Yes
STM32F091RCT6
ST Nucleo F103RB
ST STM32 Yes
STM32F103RBT6
ST Nucleo F207ZG
ST STM32 Yes
STM32F207ZGT6
ST Nucleo F302R8
ST STM32 Yes
STM32F302R8T6
ST Nucleo F303K8
ST STM32 Yes
STM32F303K8T6
ST Nucleo F303RE
ST STM32 Yes
STM32F303RET6
ST Nucleo F303ZE
ST STM32 Yes
STM32F303ZET6
ST Nucleo F334R8
ST STM32 Yes
STM32F334R8T6
ST Nucleo F401RE
ST STM32 Yes
STM32F401RET6
ST Nucleo F410RB
ST STM32 Yes
STM32F410RBT6
ST Nucleo F411RE
ST STM32 Yes
STM32F411RET6
ST Nucleo F412ZG
ST STM32 Yes
STM32F412ZGT6
ST Nucleo F429ZI
ST STM32 Yes
STM32F429ZIT6
ST Nucleo F446RE
ST STM32 Yes
STM32F446RET6
ST Nucleo F446ZE
ST STM32 Yes
STM32F446ZET6
ST Nucleo F746ZG
ST STM32 Yes
STM32F746ZGT6
ST Nucleo F767ZI
ST STM32 Yes
STM32F767ZIT6
ST Nucleo L011K4
ST STM32 Yes
STM32L011K4T6
ST Nucleo L031K6
ST STM32 Yes
STM32L031K6T6
ST Nucleo L053R8
ST STM32 Yes
STM32L053R8T6
ST Nucleo L073RZ
ST STM32 Yes
STM32L073RZ
ST Nucleo L152RE
ST STM32 Yes
STM32L152RET6
ST Nucleo L432KC
ST STM32 Yes
STM32L432KCU6
ST Nucleo L476RG
ST STM32 Yes
STM32L476RGT6
Frequency
168 MHz
100 MHz
180 MHz
180 MHz
216 MHz
80 MHz
32 MHz
32 MHz
32 MHz
80 MHz
80 MHz
48 MHz
48 MHz
48 MHz
48 MHz
48 MHz
48 MHz
72 MHz
120 MHz
72 MHz
72 MHz
72 MHz
72 MHz
72 MHz
84 MHz
100 MHz
100 MHz
100 MHz
180 MHz
180 MHz
180 MHz
216 MHz
216 MHz
32 MHz
32 MHz
48 MHz
32 MHz
32 MHz
80 MHz
80 MHz
SainSmart
ID
Name
SainSmart Due
(Programming Port)
sainSmartDueUSB
SainSmart Due (USB
Native Port)
sainSmartDue
1.10. Embedded Boards
Platform
Atmel
SAM
Atmel
SAM
Debug
MicroconFretroller
quency
AT91SAM3X8E84 MHz
AT91SAM3X8E84 MHz
Flash
RAM
512
Kb
512
Kb
32
Kb
32
Kb
335
Flash
1024 K
512 Kb
2048 K
1024 K
1024 K
1024 K
64 Kb
192 Kb
128 Kb
1024 K
1024 K
64 Kb
32 Kb
32 Kb
128 Kb
128 Kb
256 Kb
128 Kb
1024 K
64 Kb
64 Kb
512 Kb
512 Kb
64 Kb
512 Kb
128 Kb
512 Kb
1024 K
2048 K
512 Kb
512 Kb
1024 K
2048 K
16 Kb
32 Kb
64 Kb
192 Kb
512 Kb
256 Kb
1024 K
PlatformIO Documentation, Release 3.4.1
Samsung
ID
Name
Platform
artik_1020 Samsung ARTIK
1020
artik_520 Samsung ARTIK
520
artik_530 Samsung ARTIK
530
artik_710 Samsung ARTIK
710
Debug
Linux
ARM
Linux
ARM
Linux
ARM
Linux
ARM
MicroconFretroller
quency
EXYNOS5422 1500
MHz
EXYNOS3250 1000
MHz
S5P4418
1200
MHz
S5P6818
1400
MHz
Flash
RAM
16777216
Kb
4194304
Kb
4194304
Kb
4194304
Kb
2097152
Kb
524288
Kb
524288
Kb
1048576
Kb
Sanguino
ID
Name
sanguino_atmega1284_8m
Sanguino ATmega1284p (8MHz)
sanguino_atmega1284p
Sanguino ATmega1284p
(16MHz)
sanguino_atmega644
Sanguino ATmega644 or
ATmega644A (16 MHz)
sanguino_atmega644_8m
Sanguino ATmega644 or
ATmega644A (8 MHz)
sanguino_atmega644p
Sanguino ATmega644P or
ATmega644PA (16 MHz)
sanguino_atmega644p_8m
Sanguino ATmega644P or
ATmega644PA (8 MHz)
Platform
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Debug
MicroFrecontroller quency
AT8 MHz
MEGA1284P
AT16
MEGA1284PMHz
AT16
MEGA644 MHz
AT8 MHz
MEGA644
AT16
MEGA644P MHz
AT8 MHz
MEGA644P
Flash RAM
128
Kb
128
Kb
64
Kb
64
Kb
64
Kb
64
Kb
16
Kb
16
Kb
4
Kb
4
Kb
4
Kb
4
Kb
SeeedStudio
ID
Name
SeeedStudio
CUI32stem
seeedArchBLE Seeed Arch BLE
cui32stem
seeedArchGPRSSeeed Arch GPRS
V2
seeedArchLinkSeeed Arch Link
Platform
Microchip
PIC32
Nordic
nRF51
NXP LPC
Debug
Yes
MicroconFretroller
quency
32MX795F512H 80 MHz
NRF51822
16 MHz
LPC11U37
48 MHz
16 MHz
Yes
NRF51822
seeedArchMax Seeed Arch Max
Nordic
nRF51
ST STM32
Yes
STM32F407VET6168 MHz
seeedArchPro Seeed Arch Pro
NXP LPC
Yes
LPC1768
96 MHz
seeedTinyBLE Seeed Tiny BLE
Nordic
nRF51
NXP LPC
Yes
NRF51822
16 MHz
LPC11U35
48 MHz
xadow_m0
336
Seeed Xadow M0
Flash
RAM
512
Kb
128
Kb
128
Kb
256
Kb
512
Kb
512
Kb
256
Kb
64
Kb
128
Kb
16
Kb
10
Kb
16
Kb
192
Kb
64
Kb
16
Kb
10
Kb
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Semtech
ID
mote_l152rc
Name
NAMote72
Platform
ST STM32
Debug
Yes
Microcontroller
STM32L152RC
Frequency
32 MHz
Flash
256 Kb
RAM
32 Kb
Silicon Labs
ID
Name
Platform
efm32gg_stk3700
Silicon Labs
EFM32GG-STK3700 (Giant
Gecko)
efm32hg_stk3400
Silicon Labs SLSTK3400A
USB-enabled (Happy Gecko)
Silicon
Labs
EFM32
Silicon
Labs
EFM32
Silicon
Labs
EFM32
Silicon
Labs
EFM32
Silicon
Labs
EFM32
Silicon
Labs
EFM32
efm32lg_stk3600
Silicon Labs
EFM32LG-STK3600 (Leopard
Gecko)
efm32pg_stk3401
Silicon Labs SLSTK3401A
(Pearl Gecko)
efm32wg_stk3800
Silicon Labs
EFM32WG-STK3800 (Wonder
Gecko)
efm32zg_stk3200
Silicon Labs
EFM32ZG-STK3200 (Zero
Gecko)
Debug
Yes
MicroconFreFlash RAM
troller
quency
EFM32GG990F1024
48
1024 128
MHz
Kb
Kb
Yes
EFM32HG322F64
24
MHz
64
Kb
8
Kb
Yes
EFM32LG990F256
48
MHz
256
Kb
32
Kb
Yes
EFM32PG1B200F256
40
MHz
256
Kb
32
Kb
Yes
EFM32WG990F256
48
MHz
256
Kb
32
Kb
Yes
EFM32ZG222F32
24
MHz
32
Kb
4
Kb
Smeshlink
ID
Name
xbed_lpc1768 Smeshlink xbed
LPC1768
Platform
NXP
LPC
Debug
Microcontroller
LPC1768
Frequency
96 MHz
Flash
RAM
512
Kb
32
Kb
Solder Splash Labs
ID
Name
dipcortexm0 Solder Splash Labs
DipCortex M0
lpc1347
DipCortex M3
1.10. Embedded Boards
Platform
NXP
LPC
NXP
LPC
Debug
Microcontroller
LPC11U24
Frequency
50 MHz
LPC1347
72 MHz
Flash RAM
32
Kb
64
Kb
8 Kb
12
Kb
337
PlatformIO Documentation, Release 3.4.1
SparkFun
ID
Name
Platform
sparkfunBlynk
SparkFun Blynk Board
Espressif
8266
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
SAM
Atmel
SAM
Atmel
AVR
sparkfun_digitalsandbox
SparkFun Digital
Sandbox
sparkfun_fiov3
SparkFun Fio V3
3.3V/8MHz
sparkfun_makeymakey
SparkFun Makey Makey
sparkfun_megamini SparkFun Mega Pro
Mini 3.3V
sparkfun_megapro16MHz
SparkFun Mega Pro
5V/16MHz
sparkfun_megapro8MHz
SparkFun Mega Pro
3.3V/8MHz
sparkfun_promicro16
SparkFun Pro Micro
5V/16MHz
sparkfun_promicro8SparkFun Pro Micro
3.3V/8MHz
sparkfun_qduinomini
SparkFun Qduino Mini
sparkfun_redboard SparkFun RedBoard
sparkfun_samd21_dev_usb
SparkFun SAMD21 Dev
Breakout
sparkfun_samd21_mini_usb
SparkFun SAMD21
Mini Breakout
sparkfun_satmega128rfa1
SparkFun
ATmega128RFA1 Dev
Board
sparkfun_serial7seg
SparkFun Serial
7-Segment Display
thing
SparkFun ESP8266
Thing
thingdev
SparkFun ESP8266
Thing Dev
uview
SparkFun MicroView
Atmel
AVR
Espressif
8266
Espressif
8266
Atmel
AVR
Debug
Yes
Yes
Microcontroller
ESP8266
Frequency
80
MHz
8 MHz
Flash RAM
4096
Kb
32
Kb
32
Kb
32
Kb
256
Kb
256
Kb
256
Kb
32
Kb
32
Kb
32
Kb
32
Kb
256
Kb
256
Kb
16
Kb
80
Kb
2
Kb
2.5
Kb
2.5
Kb
8
Kb
8
Kb
8
Kb
2.5
Kb
2.5
Kb
2.5
Kb
2
Kb
32
Kb
32
Kb
124
Kb
8 MHz
32
Kb
512
Kb
512
Kb
32
Kb
2
Kb
80
Kb
80
Kb
2
Kb
ATMEGA328P
AT8 MHz
MEGA32U4
AT16
MEGA32U4 MHz
AT8 MHz
MEGA2560
AT16
MEGA2560 MHz
AT8 MHz
MEGA2560
AT16
MEGA32U4 MHz
AT8 MHz
MEGA32U4
AT8 MHz
MEGA32U4
AT16
MEGA328P MHz
SAMD21G18A48
MHz
SAMD21G18A48
MHz
AT16
MEGA128RFA1MHz
ATMEGA328P
ESP8266
ESP8266
ATMEGA328P
80
MHz
80
MHz
16
MHz
SparkFun Electronics
ID
Name
esp32thing SparkFun ESP32
Thing
338
Platform
Espressif
32
Debug
Microcontroller
ESP32
Frequency
240 MHz
Flash
RAM
1280
Kb
288
Kb
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
SweetPea
ID
Name
Platform
esp210
SweetPea
ESP-210
Espressif
8266
Debug
Microcontroller
ESP8266
Frequency
80 MHz
Flash
RAM
4096
Kb
80 Kb
Switch Science
ID
Name
Platform
Switch Science mbed
HRM1017
lpc1114fn28Switch Science mbed
LPC1114FN28
ssci824
Switch Science mbed
LPC824
ty51822r3 Switch Science mbed
TY51822r3
Nordic
nRF51
NXP LPC
hrm1017
Debug
Yes
Microcontroller
NRF51822
Frequency
16 MHz
Yes
LPC1114FN28 48 MHz
NXP LPC
Yes
LPC824
30 MHz
Nordic
nRF51
Yes
NRF51822
32 MHz
Flash
RAM
256
Kb
32
Kb
32
Kb
256
Kb
16
Kb
4
Kb
8
Kb
32
Kb
Flash
RAM
256
Kb
128
Kb
16
Kb
16
Kb
64
Kb
128
Kb
16
Kb
256
Kb
1024
Kb
32
Kb
8 Kb
TI
ID
Name
lplm4f120h5qr
TI LaunchPad (Stellaris) w/
lm4f120 (80MHz)
lpmsp430f5529
TI LaunchPad
MSP-EXP430F5529LP
lpmsp430fr4133
TI LaunchPad
MSP-EXP430FR4133LP
lpmsp430fr5739
TI FraunchPad
MSP-EXP430FR5739LP
lpmsp430fr5969
TI LaunchPad
MSP-EXP430FR5969LP
lpmsp430fr6989
TI LaunchPad
MSP-EXP430FR6989LP
lpmsp430g2553
TI LaunchPad
MSP-EXP430G2553LP
lptm4c1230c3pm
TI LaunchPad (Tiva C) w/
tm4c123 (80MHz)
lptm4c1294ncpdt
TI LaunchPad (Tiva C) w/
tm4c129 (120MHz)
1.10. Embedded Boards
Platform
TI
TIVA
TI
MSP430
TI
MSP430
TI
MSP430
TI
MSP430
TI
MSP430
TI
MSP430
TI
TIVA
TI
TIVA
Debug
Yes
Yes
Yes
MicroconFretroller
quency
LPLM4F120H5QR
80
MHz
MSP430F5529 16
MHz
MSP430FR4133 8 MHz
Yes
MSP430FR5739 16
MHz
MSP430FR5969 8 MHz
Yes
MSP430FR6989 8 MHz
Yes
MSP430G2553
Yes
Yes
Yes
16
MHz
LPTM4C1230C3PM
80
MHz
LPTM4C1294NCPDT
120
MHz
2 Kb
0.5
Kb
2 Kb
2 Kb
0.5
Kb
32
Kb
256
Kb
339
PlatformIO Documentation, Release 3.4.1
Teensy
ID
teensy20
teensy20pp
teensy30
teensy31
teensy35
teensy36
teensylc
Name
Teensy 2.0
Teensy++ 2.0
Teensy 3.0
Teensy 3.1 / 3.2
Teensy 3.5
Teensy 3.6
Teensy LC
Platform
Teensy
Teensy
Teensy
Teensy
Teensy
Teensy
Teensy
Debug
Microcontroller
ATMEGA32U4
AT90USB1286
MK20DX128
MK20DX256
MK64FX512
MK66FX1M0
MKL26Z64
Frequency
16 MHz
16 MHz
48 MHz
72 MHz
120 MHz
180 MHz
48 MHz
Flash
32 Kb
128 Kb
128 Kb
256 Kb
512 Kb
1024 Kb
64 Kb
RAM
2.5 Kb
8 Kb
16 Kb
64 Kb
192 Kb
256 Kb
8 Kb
Flash
RAM
1280
Kb
4096
Kb
288
Kb
80 Kb
ThaiEasyElec
ID
Name
Platform
espino32
ESPino32
Espressif 32
espinotee ThaiEasyElec
ESPino
Debug
Espressif
8266
Microcontroller
ESP32
Frequency
240 MHz
ESP8266
80 MHz
The Things Network
ID
Name
Platform
the_things_uno The Things
Uno
Debug
Atmel
AVR
Microcontroller
ATMEGA32U4
Frequency
16 MHz
Flash
RAM
32
Kb
2.5
Kb
TinyCircuits
ID
Name
tinyduino TinyCircuits TinyDuino
Processor Board
tinylily TinyCircuits TinyLily Mini
Processor
Platform
Atmel
AVR
Atmel
AVR
Debug
Microcontroller
ATMEGA328P
ATMEGA328P
Frequency
8 MHz
Flash RAM
32
Kb
32
Kb
8 MHz
2
Kb
2
Kb
UBW32
ID
Name
ubw32_mx460 UBW32
MX460
ubw32_mx795 UBW32
MX795
340
Platform
Microchip
PIC32
Microchip
PIC32
Debug
MicroconFretroller
quency
32MX460F512L 80 MHz
32MX795F512L 80 MHz
Flash
RAM
512
Kb
512
Kb
32 Kb
128
Kb
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
WEMOS
ID
Name
Platform
d1
WEMOS D1
(Retired)
WEMOS D1 mini
Espressif
8266
Espressif
8266
Espressif
8266
Espressif 32
d1_mini
d1_mini_lite WEMOS D1 mini
Lite
lolin32
WEMOS
LOLIN32
Debug
Microcontroller
ESP8266
Frequency
80 MHz
ESP8266
80 MHz
ESP8266
80 MHz
ESP32
240 MHz
Flash
RAM
4096
Kb
4096
Kb
960 Kb
80 Kb
1280
Kb
288
Kb
80 Kb
80 Kb
WIZNet
ID
Name
Platform
wizwiki_w7500 WIZNet
WIZwiki-W7500
wizwiki_w7500eco
WIZNet
WIZwiki-W7500ECO
wizwiki_w7500pWIZNet
WIZwiki-W7500P
WIZNet
W7500
WIZNet
W7500
WIZNet
W7500
Debug
Yes
Microcontroller
WIZNET7500
Frequency
48 MHz
Yes
WIZNET7500ECO
WIZNET7500P
48 MHz
Yes
48 MHz
Flash
RAM
128
Kb
128
Kb
128
Kb
48
Kb
48
Kb
48
Kb
Flash
RAM
128
Kb
128
Kb
16
Kb
16
Kb
Wicked Device
ID
Name
Platform
wildfirev2 Wicked Device WildFire
V2
wildfirev3 Wicked Device WildFire
V3
Atmel
AVR
Atmel
AVR
Debug
Microcontroller
ATMEGA1284P
ATMEGA1284P
Frequency
16 MHz
16 MHz
Widora
ID
widora-air
Name
Widora AIR
Platform
Espressif 32
Debug
Microcontroller
ESP32
Frequency
240 MHz
Flash
1280 Kb
RAM
288 Kb
chipKIT
ID
lenny
Name
chipKIT Lenny
1.10. Embedded Boards
Platform
Microchip PIC32
Debug
Microcontroller
32MX270F256D
Frequency
40 MHz
Flash
128 Kb
RAM
32 Kb
341
PlatformIO Documentation, Release 3.4.1
element14
ID
Name
Platform
chipkit_pi Element14 chipKIT
Pi
Debug
Microchip
PIC32
MicroconFretroller
quency
32MX250F128B 40 MHz
Flash
RAM
128
Kb
32
Kb
makerlab.mx
ID
altair
Name
Altair
Platform
Atmel AVR
Debug
Microcontroller
ATMEGA256RFR2
Frequency
16 MHz
Flash
256 Kb
RAM
32 Kb
nicai-systems
ID
Name
bob3
nicai-systems BOB3 coding bot
nibo2
nicai-systems NIBO 2 robot
nibobee
nicai-systems NIBObee robot
nibobee_1284 nicai-systems NIBObee robot with
Tuning Kit
niboburger
nicai-systems NIBO burger robot
niboburger_1284
nicai-systems NIBO burger robot
with Tuning Kit
Platform
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Atmel
AVR
Debug
Microcontroller
ATMEGA88
ATMEGA128
ATMEGA16
ATMEGA1284P
ATMEGA16
ATMEGA1284P
Frequency
8 MHz
Flash RAM
16
MHz
15
MHz
20
MHz
15
MHz
20
MHz
128
Kb
16
Kb
128
Kb
16
Kb
128
Kb
8 Kb
1
Kb
4
Kb
1
Kb
16
Kb
1
Kb
16
Kb
u-blox
ID
Name
ublox_evk_odin_w2
u-blox
EVK-ODIN-W2
ubloxc027
u-blox C027
Platform
ST
STM32
NXP
LPC
Debug
Yes
MicroconFretroller
quency
STM32F439ZIY6168 MHz
Yes
LPC1768
96 MHz
Flash
RAM
2048
Kb
512
Kb
256
Kb
64
Kb
ubIQio
ID
ardhat
342
Name
ubIQio Ardhat
Platform
Atmel AVR
Debug
Microcontroller
ATMEGA328P
Frequency
16 MHz
Flash
32 Kb
RAM
2 Kb
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
y5 design
ID
Name
lpc11u35_y5_mbugy5 LPC11U35
mbug
nrf51822_y5_mbugy5 nRF51822
mbug
Platform
Debug
NXP LPC
Nordic
nRF51
Yes
Microcontroller
LPC11U35
Frequency
48 MHz
Flash
RAM
64 Kb
NRF51822
16 MHz
256
Kb
10
Kb
16
Kb
Custom Platform & Board
Custom Development Platform
PlatformIO was developed like a tool that may build the same source code for the different development platforms via
single command platformio run without any dependent software or requirements.
For this purpose PlatformIO uses own pre-configured platforms data: build scripts, toolchains, the settings for the
most popular embedded boards and etc. These data are pre-built and packaged to the different packages. It allows
PlatformIO to have multiple development platforms which can use the same packages(toolchains, frameworks), but
have different/own build scripts, uploader and etc.
Note: If you want to change some build flags for the existing Development Platforms, you don’t need to create (or
duplicate) own development platforms! Please use build_flags option.
Step-by-Step Manual
1. Choose Packages for platform
2. Create Manifest File platform.json
3. Create Build Script main.py
4. Finish with the Installation.
Contents
• Custom Development Platform
– Packages
– Manifest File platform.json
– Build Script main.py
– Installation
– Examples
Packages
PlatformIO has pre-built packages for the most popular operation systems: Mac OS, Linux (+ARM) and Windows.
1.11. Custom Platform & Board
343
PlatformIO Documentation, Release 3.4.1
Name
framework-arduinoavr
framework-arduinoespressif32
framework-arduinoespressif8266
framework-arduinointel
framework-arduinomicrochippic32
framework-arduinomsp430
framework-arduinonordicnrf51
framework-arduinosam
framework-arduinostm32mxchip
framework-arduinoststm32
framework-arduinoteensy
framework-artik-sdk
framework-cmsis
framework-energiamsp430
framework-energiativa
framework-esp8266-rtos-sdk
framework-espidf
framework-libopencm3
framework-mbed
framework-pumbaa
framework-simba
framework-spl
framework-stm32cube
framework-wiringpi
ldscripts
sdk-esp8266
tool-arduino101load
tool-avrdude
tool-bossac
tool-espotapy
tool-esptool
tool-esptoolpy
tool-lm4flash
tool-micronucleus
tool-mkspiffs
tool-mspdebug
tool-openocd
tool-pic32prog
tool-rfdloader
tool-scons
tool-sreccat
tool-stlink
tool-stm32duino
tool-teensy
toolchain-atmelavr
toolchain-gccarmlinuxgnueabi
toolchain-gccarmnoneeabi
toolchain-gcclinux32
toolchain-gcclinux64
toolchain-gccmingw32
344
Description
Arduino Wiring-based Framework (AVR Core, 1.6)
Arduino Wiring-based Framework (ESP32 Core)
Arduino Wiring-based Framework (ESP8266 Core)
Arduino Wiring-based Framework (Intel ARC Core)
Arduino Wiring-based Framework (PIC32 Core)
Arduino Wiring-based Framework (MSP430 Core)
Arduino Wiring-based Framework (RFduino Core)
Arduino Wiring-based Framework (SAM Core, 1.6)
Arduino Wiring-based Framework (ST STM32 MXChip Core)
Arduino Wiring-based Framework (STM32 Core)
Arduino Wiring-based Framework
ARTIK SDK is a C/C++ SDK targeting Samsung ARTIK platforms
Vendor-independent hardware abstraction layer for the Cortex-M processor series
Energia Wiring-based Framework (MSP430 Core)
Energia Wiring-based Framework (LM4F Core)
ESP8266 SDK based on FreeRTOS
Espressif IoT Development Framework
libOpenCM3 Framework
mbed Framework
Pumbaa Framework
Simba Framework
Standard Peripheral Library for STM32 MCUs
STM32Cube embedded software libraries
GPIO Interface library for the Raspberry Pi
Linker Scripts
ESP8266 SDK
Genuino101 uploader
AVRDUDE
BOSSA CLI
ESP8266 OTA utility
esptool-ck
Espressif ROM Bootloader utility
Flash Programmer
Micronucleus
Tool to build and unpack SPIFFS images
MSPDebug
OpenOCD
pic32prog
rfdloader
SCons software construction tool
Merging tool
ST-Link
STM32Duino Tools
Teensy Loader
avr-gcc
GCC for Linux ARM GNU EABI
gcc-arm-embedded
GCC for Linux i686
GCC for Linux x86_64
MinGW
Continued on next page
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Name
toolchain-icestorm
toolchain-intelarc32
toolchain-iverilog
toolchain-microchippic32
toolchain-timsp430
toolchain-xtensa
toolchain-xtensa32
Table 1.8 – continued from previous page
Description
Tools for analyzing and creating bitstream files for FPGA IceStorm
GCC for Intel ARC
Verilog simulation and synthesis tool
GCC for Microchip PIC32
msp-gcc
xtensa-gcc
xtensa32-gcc
Manifest File platform.json
{
"name": "myplatform",
"title": "My Platform",
"description": "My custom development platform",
"url": "http://example.com",
"homepage": "http://platformio.org/platforms/myplatform",
"license": "Apache-2.0",
"engines": {
"platformio": "~3.0.0",
"scons": ">=2.3.0,<2.6.0"
},
"repository": {
"type": "git",
"url": "https://github.com/platformio/platform-myplatform.git"
},
"version": "0.0.0",
"packageRepositories": [
"https://dl.bintray.com/platformio/dl-packages/manifest.json",
"https://sourceforge.net/projects/platformio-storage/files/packages/manifest.json/
˓→download",
"http://dl.platformio.org/packages/manifest.json",
{
"framework-%FRAMEWORK_NAME_1%": [
{
"url": "http://dl.example.com/packages/framework-%FRAMEWORK_NAME_1%-1.10607.
˓→0.tar.gz",
"sha1": "adce2cd30a830d71cb6572575bf08461b7b73c07",
"version": "1.10607.0",
"system": "*"
}
]
}
],
"frameworks": {
"%FRAMEWORK_NAME_1%": {
"package": "framework-%FRAMEWORK_NAME_1%",
"script": "builder/frameworks/%FRAMEWORK_NAME_1%.py"
},
"%FRAMEWORK_NAME_N%": {
"package": "framework-%FRAMEWORK_NAME_N%",
"script": "builder/frameworks/%FRAMEWORK_NAME_N%.py"
}
},
"packages": {
1.11. Custom Platform & Board
345
PlatformIO Documentation, Release 3.4.1
"toolchain-gccarmnoneeabi": {
"type": "toolchain",
"version": ">=1.40803.0,<1.40805.0"
},
"framework-%FRAMEWORK_NAME_1%": {
"type": "framework",
"optional": true,
"version": "~1.10607.0"
},
"framework-%FRAMEWORK_NAME_N%": {
"type": "framework",
"optional": true,
"version": "~1.117.0"
},
"tool-direct-vcs-url": {
"type": "uploader",
"optional": true,
"version": "https://github.com/user/repo.git"
}
}
}
Build Script main.py
Platform’s build script is based on a next-generation build tool named SCons. PlatformIO has own built-in firmware
builder env.BuildProgram with the deep libraries search. Please look into a base template of main.py.
"""
Build script for test.py
test-builder.py
"""
from os.path import join
from SCons.Script import AlwaysBuild, Builder, Default, DefaultEnvironment
env = DefaultEnvironment()
# A full list with the available variables
# http://www.scons.org/doc/production/HTML/scons-user.html#app-variables
env.Replace(
AR="ar",
AS="gcc",
CC="gcc",
CXX="g++",
OBJCOPY="objcopy",
RANLIB="ranlib",
ARFLAGS=["..."],
ASFLAGS=["flag1", "flag2", "flagN"],
CCFLAGS=["flag1", "flag2", "flagN"],
CXXFLAGS=["flag1", "flag2", "flagN"],
LINKFLAGS=["flag1", "flag2", "flagN"],
CPPDEFINES=["DEFINE_1", "DEFINE=2", "DEFINE_N"],
346
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
LIBS=["additional", "libs", "here"],
UPLOADER=join("$PIOPACKAGES_DIR", "tool-bar", "uploader"),
UPLOADCMD="$UPLOADER $SOURCES"
)
env.Append(
BUILDERS=dict(
ElfToBin=Builder(
action=" ".join([
"$OBJCOPY",
"-O",
"binary",
"$SOURCES",
"$TARGET"]),
suffix=".bin"
)
)
)
# The source code of "platformio-build-tool" is here
# https://github.com/platformio/platformio-core/blob/develop/platformio/builder/tools/
˓→platformio.py
#
# Target: Build executable and linkable firmware
#
target_elf = env.BuildProgram()
#
# Target: Build the .bin file
#
target_bin = env.ElfToBin(join("$BUILD_DIR", "firmware"), target_elf)
#
# Target: Upload firmware
#
upload = env.Alias(["upload"], target_bin, "$UPLOADCMD")
AlwaysBuild(upload)
#
# Target: Define targets
#
Default(target_bin)
Installation
1. Create platforms directory in home_dir if it doesn’t exist.
2. Create myplatform directory in platforms
3. Copy platform.json and builder/main.py files to myplatform directory.
4. Search available platforms via platformio platform search command. You should see myplatform platform.
5. Install myplatform platform via platformio platform install command.
Now, you can use myplatform for the platform option in Project Configuration File platformio.ini.
1.11. Custom Platform & Board
347
PlatformIO Documentation, Release 3.4.1
Examples
Please take a look at the source code of PlatformIO Development Platforms.
Custom Embedded Board
PlatformIO has pre-built settings for the most popular embedded boards. This list is available:
• Embedded Boards Explorer (Web)
• platformio boards (CLI command)
Nevertheless, PlatformIO allows to create own board or override existing board’s settings. All data is declared using
JSON-style via associative array (name/value pairs).
Contents
• Custom Embedded Board
– JSON Structure
– Installation
– Examples
JSON Structure
The key fields:
• build data will be used by Development Platforms and Frameworks builders
• frameworks is the list with supported Frameworks
• platform name of Development Platforms
• upload upload settings which depend on the platform
{
"build": {
"extra_flags": "-DHELLO_PLATFORMIO",
"f_cpu": "16000000L",
"hwids": [
[
"0x1234",
"0x0013"
],
[
"0x4567",
"0x0013"
]
],
"mcu": "%MCU_TYPE_HERE%"
},
"frameworks": ["%LIST_WITH_SUPPORTED_FRAMEWORKS%"],
"name": "My Test Board",
"upload": {
"maximum_ram_size": 2048,
"maximum_size": 32256
348
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
},
"url": "http://example.com",
"vendor": "MyCompany"
}
Installation
1. Create boards directory in home_dir if it doesn’t exist.
2. Create myboard.json file in this boards directory.
3. Search available boards via platformio boards command. You should see myboard board.
Now, you can use myboard for the board option in Project Configuration File platformio.ini.
Note: You can have custom boards per project. In this case, please put your board’s JSON files to boards_dir.
Examples
Please take a look at the source code of PlatformIO Development Platforms and navigate to boards folder of the
repository.
PIO Account
Having PIO Account allows you to use extra professional features from PlatformIO Plus:
• PIO Remote™
• PIO Unified Debugger
• PIO Unit Testing
• Integration with Cloud IDE
A registration is FREE.
PlatformIO IDE for Atom
PlatformIO IDE for Atom has built-in UI to manage PIO Account. You can register new account, reset a password or
fetch authentication token.
1.12. PIO Account
349
PlatformIO Documentation, Release 3.4.1
User Guide (CLI)
PIO Remote™
Your devices are always with you!
New in version 3.2: (PlatformIO Plus)
PIO Remote™ allows you to work remotely with devices from Anywhere In The World. No matter where are you
now! Run a small and cross-platform PIO Remote™ Agent on a remote machine and you are able to list active devices
(wireless + wired), to upload firmware (program), to process remote unit tests, or to start remote debugging session
via Remote Serial Port Monitor.
350
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Using PIO Remote™ you can share your devices with colleagues across your organization or friends. In combination
with Cloud IDE, you can create awesome things at any time when inspiration comes to you.
You should have PIO Account to work with PIO Remote™. A registration is FREE.
Tip: QUESTIONS? Ask us! Chat button is located in the bottom right corner
Contents
• PIO Remote™
– Features
– Technology
– Installation
– Quick Start
– User Guide (CLI)
Features
• Cloud IDE
• Remote Device Manager
• Remote Serial Port Monitor
• Remote Firmware Updates
• PIO Remote™ Share
• Continuous Deployment
• Continuous Delivery
• Remote Unit Testing
1.13. PIO Remote™
351
PlatformIO Documentation, Release 3.4.1
352
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Technology
1.13. PIO Remote™
353
PlatformIO Documentation, Release 3.4.1
PIO Remote™ is an own PlatformIO Plus technology for remote solutions without external dependencies to operation
system or its software based on client-server architecture. The Server component (PlatformIO Cloud) plays a role
of coupling link between PIO Remote™ Agent and Client (platformio remote, Cloud IDE, Continuous Integration,
SDKs, etc.). When you start PIO Remote™ Agent, it connects over the Internet with PlatformIO Cloud and listen for
the actions/commands which you can send in Client role from anywhere in the world.
PIO Remote™ is multi-agents and multi-clients system. A single agent can be shared with multiple clients, where
different clients can use the same agent. This approach allows to work with distributed hardware located in the different
places, networks, etc.
This technology allows to work with remote devices in generic form as you do that with local devices using PlatformIO
ecosystem. The only one difference is a prefix “remote” before each generic PlatformIO command. For example,
listing of local and remote devices will look like platformio device list and platformio remote device list.
Installation
PIO Remote™ is built into PlatformIO IDE. Please open PlatformIO IDE Terminal and run pio remote --help
command for usage (see platformio remote).
If you do not have PlatformIO IDE, or use Cloud IDE or a card-sized PC (Raspberry Pi, BeagleBoard, etc.), please
install PlatformIO Core.
Quick Start
1. Start PIO Remote™ Agent using platformio remote agent start command on a remote machine where devices
are connected physically or are accessible via network. PIO Remote™ Agent works on Windows, macOS,
Linux and Linux ARMv6+. It means that you can use desktop machine, laptop or credit card sized PC (Raspberry Pi, BeagleBoard, etc).
You can share own devices/hardware with friends, team or other developers using platformio remote
agent start --share option.
2. Using host machine (platformio remote, Cloud IDE Terminal in a browser, SDKs, etc.), please authorize via
platformio account login command with the same credentials that you used on the previous step. Now, you can
use platformio remote commands to work with remote machine and its devices.
You don’t need to have networking or other access to remote machine where PIO Remote™ Agent is started.
If you use PIO Remote™ in pair with Continuous Integration or want automatically authorize, please set
PLATFORMIO_AUTH_TOKEN system environment variable instead of using platformio account login command.
Note: In case with Cloud IDE, your browser with Cloud IDE’s VM is a “host machine”. The machine where devices
are connected physically (your real PC) is called “remote machine” in this case. You should run PIO Remote™ Agent
here (not in Cloud IDE’s Terminal).
Note: Please use local IP as “upload port” when device is not connected directly to a remote machine where
PIO Remote™ Agent is started but supports natively Over-the-Air (OTA) updates. For example, Espressif
8266 and Over-the-Air (OTA) update. In this case, the final command for remote OTA update will look as
platformio remote run -t upload --upload-port 192.168.0.255 or platformio remote
run -t upload --upload-port myesp8266.local.
354
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
User Guide (CLI)
PIO Unified Debugger
It Simply Works. Easier than ever before!
New in version 3.4: (PlatformIO Plus)
Note: Demo, discussions, request a support for new hardware.
• “1-click” solution, zero configuration
• Support for 100+ embedded boards (see below)
• Multiple architectures and development platforms
• Windows, MacOS, Linux (+ARMv6-8)
• Built-in into PlatformIO IDE for Atom and PlatformIO IDE for VScode
• Integration with Eclipse and Sublime Text
You should have PIO Account to work with PIO Unified Debugger. A registration is FREE.
Tip: QUESTIONS? Ask us! Chat button is located in the bottom right corner
1.14. PIO Unified Debugger
355
PlatformIO Documentation, Release 3.4.1
Contents
• Tutorials
• Configuration
• Tools
– Black Magic Probe
– CMSIS-DAP
– J-LINK
– MSP Debug
– TI-ICDI
356
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
– ST-LINK
– ST-LINK/V1
– ST-LINK/V2
– ST-LINK/V2-1
– Custom
* Examples
· Black Magic Probe
· J-Link and ST Nucleo
· ST-Util and ST-Link
· OpenOCD and ST-Link
· pyOCD and CMSIS-DAP
• User Guide (CLI)
• Platforms
• Frameworks
• Boards
– 96Boards
– Adafruit
– Arduino
– Armstrap
– Atmel
– Delta
– Elektor Labs
– Embedded Artists
– Espotel
– Freescale
– Generic
– JKSoft
– MXChip
– Micromint
– MikroElektronika
– MultiTech
– NXP
– Nordic
– RedBearLab
– RushUp
1.14. PIO Unified Debugger
357
PlatformIO Documentation, Release 3.4.1
– ST
– SeeedStudio
– Semtech
– Silicon Labs
– SparkFun
– Switch Science
– TI
– WIZNet
– u-blox
– y5 design
Tutorials
• Get started with STM32Cube HAL and Nucleo-F401RE: debugging and unit testing
Configuration
Warning: For the JTAG probes implemented as USB devices (actually most of them), you need to configure the
UDEV subsystem:
Linux Users: Install “udev” rules file 98-openocd-udev.rules (an instruction is located inside a file).
Windows Users:: Please check that you have a correctly installed USB driver from board manufacturer
PIO Unified Debugger can be configured from Project Configuration File platformio.ini
• debug_tool
• debug_init_break
• debug_init_cmds
• debug_extra_cmds (conditional project breakpoints, extra configuration, etc.)
• debug_load_cmd
• debug_server
• debug_port
Tools
You can change debugging tool via debug_tool option.
• Black Magic Probe
• CMSIS-DAP
358
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
• J-LINK
• MSP Debug
• TI-ICDI
• ST-LINK
• ST-LINK/V1
• ST-LINK/V2
• ST-LINK/V2-1
• Custom
– Examples
* Black Magic Probe
* J-Link and ST Nucleo
* ST-Util and ST-Link
* OpenOCD and ST-Link
* pyOCD and CMSIS-DAP
Black Magic Probe
debug_tool = blackmagic
The Black Magic Probe is a modern, in-application debugging tool for embedded microprocessors. It is able to control
and examine the state of the target microprocessor using a JTAG or Serial Wire Debugging (SWD) port and on-chip
debug logic provided by the microprocessor. The probe connects to a host computer using a standard USB interface.
Also, see Custom debugging configuration with Black Magic Probe.
More details
CMSIS-DAP
debug_tool = cmsis-dap
CMSIS-DAP is generally implemented as an on-board interface chip, providing direct USB connection from a development board to a debugger running on a host computer on one side, and over JTAG (Joint Test Action Group) or
SWD (Serial Wire Debug) to the target device to access the Coresight DAP on the other.
More details
J-LINK
debug_tool = jlink
SEGGER J-Links are the most widely used line of debug probes available today. They’ve proven their value for more
than 10 years with over 400,000 units sold, including OEM versions and on-board solutions. This popularity stems
from the unparalleled performance, extensive feature set, large number of supported CPUs, and compatibility with all
popular development environments.
• Install J-Link GDB Server
1.14. PIO Unified Debugger
359
PlatformIO Documentation, Release 3.4.1
• J-Link Supported Devices
Also, see Custom debugging configuration with J-Link GDB Server.
More details
MSP Debug
debug_tool = mspdebug
The MSP debug stack (MSPDS) for all MSP430™ microcontrollers (MCUs) and SimpleLink™ MSP432™ devices
consists of a static library on the host system side as well as an embedded firmware that runs on debug tools including
the MSP-FET, MSP-FET430UIF or on-board eZ debuggers. It is the bridging element between all PC software and
all MSP430 and SimpleLink MSP432 microcontroller derivatives and handles tasks such as code download, stepping
through code or break points
More details
TI-ICDI
debug_tool = ti-icdi
Tiva™ C Series evaluation and reference design kits provide an integrated In-Circuit Debug Interface (ICDI) which
allows programming and debugging of the onboard C Series microcontroller
More details
ST-LINK
debug_tool = stlink
The ST-LINK is an in-circuit debugger and programmer for the STM8 and STM32 microcontroller families. The
single wire interface module (SWIM) and JTAG/serial wire debugging (SWD) interfaces are used to communicate
with any STM8 or STM32 microcontroller located on an application board.
More details
ST-LINK/V1
debug_tool = stlink-v1
ST-LINK/V1 in-circuit debugger/programmer for STM8 and STM32. Details ST-LINK.
ST-LINK/V2
debug_tool = stlink-v2
ST-LINK/V2 in-circuit debugger/programmer for STM8 and STM32. Details ST-LINK.
ST-LINK/V2-1
debug_tool = stlink-v2-1
ST-LINK/V2-1 in-circuit debugger/programmer for STM8 and STM32. Details ST-LINK.
360
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Custom
debug_tool = custom
Custom debugging configuration:
• debug_init_break
• debug_init_cmds
• debug_extra_cmds (conditional project breakpoints, extra configuration, etc.)
• debug_load_cmd
• debug_server
• debug_port
Examples
• Black Magic Probe
• J-Link and ST Nucleo
• ST-Util and ST-Link
• OpenOCD and ST-Link
• pyOCD and CMSIS-DAP
Black Magic Probe
Black Magic Probe with a custom debug_port (list ports with platformio device list)
[env:debug]
platform = ...
board = ...
framework = ...
debug_tool = custom
; set here a valid port...
debug_port = /dev/cu.usbmodem7BB07991
debug_init_cmds =
target extended-remote $DEBUG_PORT
monitor swdp_scan
attach 1
set mem inaccessible-by-default off
file "$PROG_PATH"
$INIT_BREAK
$LOAD_CMD
J-Link and ST Nucleo
Segger J-Link probe and ST Nucleo F446RE board in pair with J-Link GDB Server:
• Install J-Link GDB Server
1.14. PIO Unified Debugger
361
PlatformIO Documentation, Release 3.4.1
• Convert ST-LINK On-Board Into a J-Link
Note: You can use configuration below in pair with other boards, not only with ST Nucleo F446RE. In this case,
please replace STM32F446RE with your own device name in debug_server option.
See full list with J-Link Supported Devices.
[env:debug_jlink]
platform = ststm32
framework = mbed
board = nucleo_f446re
debug_tool = custom
debug_server =
/set/path/to/JLinkGDBServerCL
-singlerun
-if
SWD
-select
USB
-port
2331
-device
STM32F446RE
ST-Util and ST-Link
On-board ST-Link V2/V2-1 in pair with ST-Util GDB Server:
[env:debug]
platform = ststm32
framework = mbed
board = ...
debug_tool = custom
debug_port = :4242
debug_server = $PLATFORMIO_HOME_DIR/packages/tool-stlink/st-util
OpenOCD and ST-Link
On-board ST-Link V2/V2-1 in pair with OpenOCD GDB Server:
[env:debug]
platform = ststm32
framework = mbed
board = ...
debug_tool = custom
debug_server =
$PLATFORMIO_HOME_DIR/packages/tool-openocd/bin/openocd
-f
$PLATFORMIO_HOME_DIR/packages/tool-openocd/scripts/board/st_nucleo_f4.cfg
362
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
pyOCD and CMSIS-DAP
Using pyOCD for CMSIS-DAP based boards
Firstly, please install pyOCD and check that pyocd-gdbserver --version command works.
[env:debug]
platform = ...
board = ...
framework = mbed
debug_tool = custom
debug_server = pyocd-gdbserver
1.14. PIO Unified Debugger
363
PlatformIO Documentation, Release 3.4.1
User Guide (CLI)
Platforms
Name
Atmel SAM
Freescale
Kinetis
Nordic
nRF51
Nordic
nRF52
NXP LPC
WIZNet
W7500
Silicon
Labs
EFM32
ST STM32
TI MSP430
TI TIVA
364
Description
Atmel | SMART offers Flash- based ARM products based on the ARM Cortex-M0+, Cortex-M3
and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and
feature mix.
Freescale Kinetis Microcontrollers is family of multiple hardware- and software-compatible ARM
Cortex-M0+, Cortex-M4 and Cortex-M7-based MCU series. Kinetis MCUs offer exceptional
low-power performance, scalability and feature integration.
The Nordic nRF51 Series is a family of highly flexible, multi-protocol, system-on-chip (SoC)
devices for ultra-low power wireless applications. nRF51 Series devices support a range of
protocol stacks including Bluetooth Smart (previously called Bluetooth low energy), ANT and
proprietary 2.4GHz protocols such as Gazell.
The nRF52 Series are built for speed to carry out increasingly complex tasks in the shortest
possible time and return to sleep, conserving precious battery power. They have a Cortex-M4F
processor and are the most capable Bluetooth Smart SoCs on the market.
The NXP LPC is a family of 32-bit microcontroller integrated circuits by NXP Semiconductors.
The LPC chips are grouped into related series that are based around the same 32-bit ARM
processor core, such as the Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0. Internally, each
microcontroller consists of the processor core, static RAM memory, flash memory, debugging
interface, and various peripherals.
The IOP (Internet Offload Processor) W7500 is the one-chip solution which integrates an ARM
Cortex-M0, 128KB Flash and hardwired TCP/IP core for various embedded application platform
especially requiring Internet of things
Silicon Labs EFM32 Gecko 32-bit microcontroller (MCU) family includes devices that offer flash
memory configurations up to 256 kB, 32 kB of RAM and CPU speeds up to 48 MHz. Based on the
powerful ARM Cortex-M core, the Gecko family features innovative low energy techniques, short
wake-up time from energy saving modes and a wide selection of peripherals, making it ideal for
battery operated applications and other systems requiring high performance and low-energy
consumption.
The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to
offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very
high performance, real-time capabilities, digital signal processing, and low-power, low-voltage
operation, while maintaining full integration and ease of development.
MSP430 microcontrollers (MCUs) from Texas Instruments (TI) are 16-bit, RISC-based,
mixed-signal processors designed for ultra-low power. These MCUs offer the lowest power
consumption and the perfect mix of integrated peripherals for thousands of applications.
Texas Instruments TM4C12x MCUs offer the industrys most popular ARM Cortex-M4 core with
scalable memory and package options, unparalleled connectivity peripherals, advanced application
functions, industry-leading analog integration, and extensive software solutions.
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Frameworks
Name
Arduino
Description
Arduino Wiring-based Framework allows writing cross-platform software to control devices attached
to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or
physical experiences.
CMSIS
The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent
hardware abstraction layer for the Cortex-M processor series and specifies debugger interfaces. The
CMSIS enables consistent and simple software interfaces to the processor for interface peripherals,
real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve
for new microcontroller developers and cutting the time-to-market for devices.
Energia Energia Wiring-based framework enables pretty much anyone to start easily creating
microcontroller-based projects and applications. Its easy-to-use libraries and functions provide
developers of all experience levels to start blinking LEDs, buzzing buzzers and sensing sensors more
quickly than ever before.
liThe libOpenCM3 framework aims to create a free/libre/open-source firmware library for various ARM
bOpenCM3Cortex-M0(+)/M3/M4 microcontrollers, including ST STM32, Ti Tiva and Stellaris, NXP LPC 11xx,
13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others.
mbed
The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be
intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM
CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and
Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been
built on top of the SDK by the mbed Developer Community.
SPL
The ST Standard Peripheral Library provides a set of functions for handling the peripherals on the
STM32 Cortex-M3 family. The idea is to save the user (the new user, in particular) having to deal
directly with the registers.
STM32Cube
STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling
portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a
light-weight, optimized, expert oriented set of APIs designed for both performance and runtime
efficiency.
Boards
Note: For more detailed board information please scroll tables below by horizontal.
96Boards
ID
Name
b96b_f446ve96Boards
B96B-F446VE
1.14. PIO Unified Debugger
Platform
ST
STM32
Debug
ST-LINK/V2-1
(on-board)
MicroconFretroller
quency
STM32F446VET6
168
MHz
Flash
RAM
512
Kb
128
Kb
365
PlatformIO Documentation, Release 3.4.1
Adafruit
ID
Name
Platform
Debug
adafruit_circuitplayground_m0
Adafruit Circuit
Playground Express
Atmel
SAM
adafruit_feather_m0Adafruit Feather
M0
Atmel
SAM
adafruit_metro_m0 Adafruit Metro M0
Expresss
Atmel
SAM
Black Magic
Probe,
CMSIS-DAP
Black Magic
Probe,
CMSIS-DAP
Black Magic
Probe,
CMSIS-DAP
MicroFreFlash RAM
conquency
troller
SAMD21G18A
48
256 32
MHz
Kb
Kb
SAMD21G18A
48
MHz
256
Kb
32
Kb
SAMD21G18A
48
MHz
256
Kb
32
Kb
Arduino
ID
Name
mkr1000USB
Arduino MKR1000
mzeroUSB Arduino M0
mzeropro Arduino M0 Pro
(Programming/Debug Port)
zero
Arduino Zero
(Programming/Debug Port)
Platform
Atmel
SAM
Atmel
SAM
Atmel
SAM
Atmel
SAM
Debug
Black Magic Probe,
CMSIS-DAP
Black Magic Probe,
CMSIS-DAP
CMSIS-DAP
(on-board)
CMSIS-DAP
(on-board)
MicroFrecontroller quency
SAMD21G18A
48
MHz
SAMD21G18A
48
MHz
SAMD21G18A
48
MHz
SAMD21G18A
48
MHz
Flash RAM
256
Kb
256
Kb
256
Kb
256
Kb
32
Kb
32
Kb
32
Kb
32
Kb
Armstrap
ID
Name
armstrap_eagle1024
Armstrap
Eagle 1024
armstrap_eagle2048
Armstrap
Eagle 2048
armstrap_eagle512
Armstrap
Eagle 512
366
Platform
ST
STM32
ST
STM32
ST
STM32
Debug
ST-LINK/V2-1
(on-board)
ST-LINK/V2-1
(on-board)
ST-LINK/V2-1
(on-board)
MicroconFretroller
quency
STM32F417VGT6
168
MHz
STM32F427VIT6
168
MHz
STM32F407VET6
168
MHz
Flash
RAM
1024
Kb
2048
Kb
512
Kb
192
Kb
256
Kb
192
Kb
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Atmel
ID
Name
samd21_xpro Atmel
SAMD21-XPRO
samd21g18a Atmel
ATSAMW25XPRO
saml21_xpro_b
Atmel
SAML21-XPRO-B
samr21_xpro Atmel
ATSAMR21-XPRO
Platform
Atmel
SAM
Atmel
SAM
Debug
CMSIS-DAP
(on-board)
CMSIS-DAP
(on-board)
Microcontroller
ATSAMD21J18A
ATSAMD21G18A
Frequency
48 MHz
Atmel
SAM
Atmel
SAM
CMSIS-DAP
(on-board)
CMSIS-DAP
(on-board)
AT48 MHz
SAML21J18B
AT48 MHz
SAMR21G18A
Flash RAM
48 MHz
256
Kb
256
Kb
32
Kb
32
Kb
256
Kb
256
Kb
32
Kb
32
Kb
Delta
ID
Name
delta_dfbm_nq620
Delta
DFBM-NQ620
dfcm_nnn40
Delta
DFCM-NNN40
Platform
Debug
Nordic
nRF52
Nordic
nRF51
CMSIS-DAP
(on-board)
CMSIS-DAP
(on-board)
Microcontroller
NRF52832
Frequency
64 MHz
NRF51822
32 MHz
Flash RAM
512
Kb
256
Kb
64
Kb
32
Kb
Elektor Labs
ID
Name
elektor_cocoricoCoCo-riCo!
Platform
NXP
LPC
Debug
Microcontroller
LPC812
CMSIS-DAP
(on-board)
Frequency
30 MHz
Flash RAM
16
Kb
4
Kb
Embedded Artists
ID
Name
Embedded Artists LPC4088
QuickStart Board
lpc4088_dm
Embedded Artists LPC4088
Display Module
lpc4088
Platform
NXP
LPC
NXP
LPC
Debug
CMSIS-DAP
(on-board)
CMSIS-DAP
(on-board)
Microcontroller
LPC4088
LPC4088
Frequency
120
MHz
120
MHz
Flash RAM
512
Kb
512
Kb
96
Kb
96
Kb
Espotel
ID
Name
elmo_f411re Espotel LoRa
Module
1.14. PIO Unified Debugger
Platform
ST
STM32
Debug
STLINK/V2-1
MicroconFretroller
quency
STM32F411RET6 100 MHz
Flash
RAM
512
Kb
128
Kb
367
PlatformIO Documentation, Release 3.4.1
Freescale
ID
Name
IBMEthernetKit
Ethernet IoT Starter
Kit
frdm_k20d50m
Freescale Kinetis
FRDM-K20D50M
frdm_k22f Freescale Kinetis
FRDM-K22F
frdm_k64f Freescale Kinetis
FRDM-K64F
frdm_k66f Freescale Kinetis
FRDM-K66F
frdm_kl05z Freescale Kinetis
FRDM-KL05Z
frdm_kl25z Freescale Kinetis
FRDM-KL25Z
frdm_kl26z Freescale Kinetis
FRDM-KL26Z
frdm_kl27z Freescale Kinetis
FRDM-KL27Z
frdm_kl43z Freescale Kinetis
FRDM-KL43Z
frdm_kl46z Freescale Kinetis
FRDM-KL46Z
368
Platform
Debug
Freescale
Kinetis
Freescale
Kinetis
Freescale
Kinetis
Freescale
Kinetis
Freescale
Kinetis
Freescale
Kinetis
Freescale
Kinetis
Freescale
Kinetis
Freescale
Kinetis
Freescale
Kinetis
Freescale
Kinetis
CMSIS-DAP
(on-board)
CMSIS-DAP
(on-board)
CMSIS-DAP
(on-board)
CMSIS-DAP
(on-board)
CMSIS-DAP
(on-board)
CMSIS-DAP
(on-board)
CMSIS-DAP
(on-board)
CMSIS-DAP
(on-board)
CMSIS-DAP
(on-board)
CMSIS-DAP
(on-board)
CMSIS-DAP
(on-board)
MicroconFretroller
quency
MK64FN1M0VLL12
120
MHz
MK20DX128VLH5
48
MHz
MK22FN512VLH12
120
MHz
MK64FN1M0VLL12
120
MHz
MK66FN2M0VMD18
180
MHz
MKL05Z32VFM4
48
MHz
MKL25Z128VLK4
48
MHz
MKL26Z128VLH4
48
MHz
MKL27Z64VLH4
48
MHz
MKL43Z256VLH4
48
MHz
MKL46Z256VLL4
48
MHz
Flash RAM
1024
Kb
128
Kb
512
Kb
1024
Kb
2048
Kb
32
Kb
128
Kb
128
Kb
64
Kb
256
Kb
256
Kb
256
Kb
16
Kb
128
Kb
256
Kb
256
Kb
4
Kb
16
Kb
16
Kb
16
Kb
32
Kb
32
Kb
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Generic
ID
Name
Platform
bluepill_f103c8
BluePill F103C8
genericSTM32F103C8
STM32F103C8 (20k
RAM. 64k Flash)
genericSTM32F103CB
STM32F103CB
(20k RAM. 128k
Flash)
genericSTM32F103R8
STM32F103R8 (20k
RAM. 64 Flash)
genericSTM32F103RB
STM32F103RB
(20k RAM. 128k
Flash)
genericSTM32F103RC
STM32F103RC
(48k RAM. 256k
Flash)
genericSTM32F103RE
STM32F103RE
(64k RAM. 512k
Flash)
Debug
MicroFreFlash RAM
conquency
troller
STM32F103C8T6
72
64
20
MHz
Kb
Kb
ST
Black Magic Probe,
STM32 ST-LINK/V2 (default),
ST-LINK/V2-1
ST
Black Magic Probe,
STM32 ST-LINK/V2 (default),
ST-LINK/V2-1
ST
Black Magic Probe,
STM32 ST-LINK/V2 (default),
ST-LINK/V2-1
ST
Black Magic Probe,
STM32 ST-LINK/V2 (default),
ST-LINK/V2-1
ST
Black Magic Probe,
STM32 ST-LINK/V2 (default),
ST-LINK/V2-1
ST
Black Magic Probe,
STM32 ST-LINK/V2 (default),
ST-LINK/V2-1
ST
Black Magic Probe,
STM32 ST-LINK/V2 (default),
ST-LINK/V2-1
STM32F103C8
72
MHz
64
Kb
20
Kb
STM32F103CB
72
MHz
128
Kb
20
Kb
STM32F103R8
72
MHz
64
Kb
20
Kb
STM32F103RB
72
MHz
128
Kb
20
Kb
STM32F103RC
72
MHz
256
Kb
48
Kb
STM32F103RE
72
MHz
512
Kb
64
Kb
JKSoft
ID
Name
wallbot_bleJKSoft Wallbot
BLE
Platform
Debug
Nordic
nRF51
CMSIS-DAP
(on-board)
Microcontroller
NRF51822
Frequency
16 MHz
Flash
RAM
128
Kb
16
Kb
MXChip
ID
Name
PlatDebug
form
ST
ST-LINK/V2-1
STM32 (on-board)
mxchip_az3166
Microsoft Azure IoT
Development Kit (MXChip
AZ3166)
MicroFreFlash RAM
controller quency
STM32F412ZGT6
100
1024 256
MHz
Kb
Kb
Micromint
ID
Name
lpc4330_m4 Bambino210E
1.14. PIO Unified Debugger
Platform
NXP
LPC
Debug
CMSIS-DAP
(on-board)
Microcontroller
LPC4330
Frequency
204 MHz
Flash
RAM
8192
Kb
264
Kb
369
PlatformIO Documentation, Release 3.4.1
MikroElektronika
ID
Name
hexiwear Hexiwear
Platform
Debug
Freescale
Kinetis
CMSISDAP
Microcontroller
Frequency
MK64FN1M0VDC12 120 MHz
Flash
RAM
1024
Kb
256
Kb
MultiTech
ID
Name
mts_dragonfly_f411re
MTS Dragonfly
Platform
ST
STM32
mts_mdot_f405rg
MultiTech mDot
ST
STM32
mts_mdot_f411re
MultiTech mDot
F411
ST
STM32
Debug
STLINK/V21
STLINK/V21
STLINK/V21
MicroconFretroller
quency
STM32F411RET6
100
MHz
Flash
RAM
512
Kb
128
Kb
STM32F411RET6
100
MHz
512
Kb
128
Kb
STM32F411RET6
100
MHz
512
Kb
128
Kb
NXP
ID
Name
lpc11u24
NXP mbed LPC11U24
lpc11u24_301
ARM mbed LPC11U24
(+CAN)
lpc11u68
LPCXpresso11U68
lpc1768
NXP mbed LPC1768
lpc2460
NXP LPC2460
lpc812
NXP LPC800-MAX
lpc824
LPCXpresso824-MAX
370
Platform
NXP
LPC
NXP
LPC
NXP
LPC
NXP
LPC
NXP
LPC
NXP
LPC
NXP
LPC
Debug
CMSIS-DAP
(on-board)
CMSIS-DAP
(on-board)
CMSIS-DAP
(on-board)
CMSIS-DAP
(on-board)
CMSIS-DAP
(on-board)
CMSIS-DAP
(on-board)
CMSIS-DAP
(on-board)
Microcontroller
LPC11U24
Frequency
48 MHz
LPC11U24
48 MHz
LPC11U68
50 MHz
LPC1768
96 MHz
LPC2460
72 MHz
LPC812
30 MHz
LPC824
30 MHz
Flash RAM
32
Kb
32
Kb
256
Kb
512
Kb
64
Kb
16
Kb
32
Kb
8
Kb
8
Kb
36
Kb
64
Kb
16
Kb
4
Kb
8
Kb
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Nordic
ID
Name
Platform
Debug
nrf51_dk
Nordic nRF51-DK
Nordic
nRF51
Nordic
nRF51
Nordic
nRF51
Nordic
nRF52
CMSIS-DAP
(on-board)
CMSIS-DAP
(on-board)
CMSIS-DAP
(on-board)
CMSIS-DAP
(on-board)
nrf51_dongle
Nordic
nRF51-Dongle
nrf51_mkit Nordic
nRF51822-mKIT
nrf52_dk
Nordic nRF52-DK
Microcontroller
NRF51822
Frequency
32 MHz
NRF51822
32 MHz
NRF51822
16 MHz
NRF52832
64 MHz
Flash
RAM
256
Kb
256
Kb
128
Kb
512
Kb
32
Kb
32
Kb
16
Kb
64
Kb
RedBearLab
ID
Name
RedBearLab
nRF51822
redBearLabBLENano
RedBearLab
BLE Nano
redBearLab
Platform
Debug
Nordic
nRF51
Nordic
nRF51
CMSIS-DAP
(on-board)
CMSIS-DAP
(on-board)
Microcontroller
NRF51822
Frequency
16 MHz
NRF51822
16 MHz
Flash RAM
256
Kb
256
Kb
16
Kb
32
Kb
RushUp
ID
Name
RushUp
Cloud-JAM
cloud_jam_l4
RushUp
Cloud-JAM L4
cloud_jam
Platform
ST
STM32
ST
STM32
Debug
ST-LINK/V2-1
(on-board)
ST-LINK/V2-1
(on-board)
MicroconFretroller
quency
STM32F401RET6
84 MHz
STM32L476RGT6
80 MHz
Flash
RAM
512
Kb
1024
Kb
96
Kb
128
Kb
ST
ID
disco_f030r8
disco_f051r8
disco_f100rb
disco_f303vc
disco_f334c8
disco_f401vc
disco_f407vg
disco_f411ve
disco_f429zi
disco_f469ni
disco_f746ng
disco_f769ni
disco_l053c8
disco_l072cz_lrwan1
disco_l152rb
1.14. PIO Unified Debugger
Name
ST STM32F0308DISCOVERY
ST STM32F0DISCOVERY
ST STM32VLDISCOVERY
ST STM32F3DISCOVERY
ST 32F3348DISCOVERY
ST 32F401CDISCOVERY
ST STM32F4DISCOVERY
ST 32F411EDISCOVERY
ST 32F429IDISCOVERY
ST 32F469IDISCOVERY
ST 32F746GDISCOVERY
ST 32F769IDISCOVERY
ST 32L0538DISCOVERY
ST DISCO-L072CZ-LRWAN1
ST STM32LDISCOVERY
Platform
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
ST STM32
Debug
ST-LINK/V2 (on-board)
ST-LINK/V2 (on-board)
ST-LINK/V1 (on-board)
ST-LINK/V2 (on-board)
ST-LINK/V2-1 (on-board)
ST-LINK/V2 (on-board)
ST-LINK/V2 (on-board)
ST-LINK/V2-1 (on-board)
ST-LINK/V2 (on-board)
ST-LINK/V2 (on-board)
ST-LINK/V2-1 (on-board)
ST-LINK/V2-1 (on-board)
ST-LINK/V2-1 (on-board)
ST-LINK/V2-1 (on-board)
ST-LINK/V2-1 (on-board)
Microcontroller
STM32F030R8T6
STM32F051R8T6
STM32F100RBT6
STM32F303VCT6
STM32F334C8T6
STM32F401VCT6
STM32F407VGT6
STM32F411VET6
STM32F429ZIT6
STM32F469NIH6
STM32F746NGH6
STM32F769NIH6
STM32L053C8T6
STM32L072CZ
STM32L152RBT6
371
Fre
48
48
24
72
72
84
168
100
180
180
216
80
32
32
32
PlatformIO Documentation, Release 3.4.1
ID
disco_l475vg_iot01a
disco_l476vg
nucleo_f030r8
nucleo_f031k6
nucleo_f042k6
nucleo_f070rb
nucleo_f072rb
nucleo_f091rc
nucleo_f103rb
nucleo_f207zg
nucleo_f302r8
nucleo_f303k8
nucleo_f303re
nucleo_f303ze
nucleo_f334r8
nucleo_f401re
nucleo_f410rb
nucleo_f411re
nucleo_f412zg
nucleo_f429zi
nucleo_f446re
nucleo_f446ze
nucleo_f746zg
nucleo_f767zi
nucleo_l011k4
nucleo_l031k6
nucleo_l053r8
nucleo_l073rz
nucleo_l152re
nucleo_l432kc
nucleo_l476rg
Table 1.9 – continued from previous page
Name
Platform
Debug
ST DISCO-L475VG-IOT01A
ST STM32 ST-LINK/V2-1 (on-board)
ST 32L476GDISCOVERY
ST STM32 ST-LINK/V2-1 (on-board)
ST Nucleo F030R8
ST STM32 ST-LINK/V2-1 (on-board)
ST Nucleo F031K6
ST STM32 ST-LINK/V2-1 (on-board)
ST Nucleo F042K6
ST STM32 ST-LINK/V2-1 (on-board)
ST Nucleo F070RB
ST STM32 ST-LINK/V2-1 (on-board)
ST Nucleo F072RB
ST STM32 ST-LINK/V2-1 (on-board)
ST Nucleo F091RC
ST STM32 ST-LINK/V2-1 (on-board)
ST Nucleo F103RB
ST STM32 ST-LINK/V2-1 (on-board)
ST Nucleo F207ZG
ST STM32 ST-LINK/V2-1 (on-board)
ST Nucleo F302R8
ST STM32 ST-LINK/V2-1 (on-board)
ST Nucleo F303K8
ST STM32 ST-LINK/V2-1 (on-board)
ST Nucleo F303RE
ST STM32 ST-LINK/V2-1 (on-board)
ST Nucleo F303ZE
ST STM32 ST-LINK/V2-1 (on-board)
ST Nucleo F334R8
ST STM32 ST-LINK/V2-1 (on-board)
ST Nucleo F401RE
ST STM32 ST-LINK/V2-1 (on-board)
ST Nucleo F410RB
ST STM32 ST-LINK/V2-1 (on-board)
ST Nucleo F411RE
ST STM32 ST-LINK/V2-1 (on-board)
ST Nucleo F412ZG
ST STM32 ST-LINK/V2-1 (on-board)
ST Nucleo F429ZI
ST STM32 ST-LINK/V2-1 (on-board)
ST Nucleo F446RE
ST STM32 ST-LINK/V2-1 (on-board)
ST Nucleo F446ZE
ST STM32 ST-LINK/V2-1 (on-board)
ST Nucleo F746ZG
ST STM32 ST-LINK/V2-1 (on-board)
ST Nucleo F767ZI
ST STM32 ST-LINK/V2-1 (on-board)
ST Nucleo L011K4
ST STM32 ST-LINK/V2-1 (on-board)
ST Nucleo L031K6
ST STM32 ST-LINK/V2-1 (on-board)
ST Nucleo L053R8
ST STM32 ST-LINK/V2-1 (on-board)
ST Nucleo L073RZ
ST STM32 ST-LINK/V2-1 (on-board)
ST Nucleo L152RE
ST STM32 ST-LINK/V2-1 (on-board)
ST Nucleo L432KC
ST STM32 ST-LINK/V2-1 (on-board)
ST Nucleo L476RG
ST STM32 ST-LINK/V2-1 (on-board)
Microcontroller
STM32L475VGT6
STM32L476VGT6
STM32F030R8T6
STM32F031K6T6
STM32F042K6T6
STM32F070RBT6
STM32F072RBT6
STM32F091RCT6
STM32F103RBT6
STM32F207ZGT6
STM32F302R8T6
STM32F303K8T6
STM32F303RET6
STM32F303ZET6
STM32F334R8T6
STM32F401RET6
STM32F410RBT6
STM32F411RET6
STM32F412ZGT6
STM32F429ZIT6
STM32F446RET6
STM32F446ZET6
STM32F746ZGT6
STM32F767ZIT6
STM32L011K4T6
STM32L031K6T6
STM32L053R8T6
STM32L073RZ
STM32L152RET6
STM32L432KCU6
STM32L476RGT6
SeeedStudio
ID
Name
seeedArchBLESeeed Arch
BLE
seeedArchLink
Seeed Arch
Link
seeedArchMaxSeeed Arch
Max
seeedArchProSeeed Arch
Pro
seeedTinyBLESeeed Tiny
BLE
372
Platform
Debug
Nordic
nRF51
Nordic
nRF51
ST STM32
CMSIS-DAP
(on-board)
CMSIS-DAP
(on-board)
ST-LINK/V2-1
(on-board)
CMSIS-DAP
(on-board)
CMSIS-DAP
(on-board)
NXP LPC
Nordic
nRF51
Microcontroller
NRF51822
Frequency
16 MHz
NRF51822
16 MHz
STM32F407VET6
168
MHz
LPC1768
96 MHz
NRF51822
16 MHz
Flash
RAM
128
Kb
256
Kb
512
Kb
512
Kb
256
Kb
16
Kb
16
Kb
192
Kb
64
Kb
16
Kb
Chapter 1. Contents
Fre
80
80
48
48
48
48
48
48
72
120
72
72
72
72
72
84
100
100
100
180
180
180
216
216
32
32
48
32
32
80
80
PlatformIO Documentation, Release 3.4.1
Semtech
ID
Name
Platform
Debug
mote_l152rc
NAMote72
ST
STM32
ST-LINK/V21
Microcontroller
STM32L152RC
Frequency
32 MHz
Flash
RAM
256
Kb
32
Kb
Silicon Labs
ID
Name
efm32gg_stk3700
Silicon Labs
EFM32GG-STK3700 (Giant
Gecko)
efm32hg_stk3400
Silicon Labs SLSTK3400A
USB-enabled (Happy Gecko)
efm32lg_stk3600
Silicon Labs
EFM32LG-STK3600 (Leopard
Gecko)
efm32pg_stk3401
Silicon Labs SLSTK3401A
(Pearl Gecko)
efm32wg_stk3800
Silicon Labs
EFM32WG-STK3800
(Wonder Gecko)
efm32zg_stk3200
Silicon Labs
EFM32ZG-STK3200 (Zero
Gecko)
Platform
Debug
Silicon
Labs
EFM32
Silicon
Labs
EFM32
Silicon
Labs
EFM32
Silicon
Labs
EFM32
Silicon
Labs
EFM32
Silicon
Labs
EFM32
J-LINK
(onboard)
J-LINK
(onboard)
J-LINK
(onboard)
J-LINK
(onboard)
J-LINK
(onboard)
J-LINK
(onboard)
MicroconFreFlash RAM
troller
quency
EFM32GG990F1024
48
1024 128
MHz
Kb
Kb
EFM32HG322F64
24
MHz
64
Kb
8
Kb
EFM32LG990F256
48
MHz
256
Kb
32
Kb
EFM32PG1B200F256
40
256
MHz
Kb
32
Kb
EFM32WG990F256
48
MHz
256
Kb
32
Kb
EFM32ZG222F32
24
MHz
32
Kb
4
Kb
SparkFun
ID
Name
Platform
Debug
sparkfun_samd21_dev_usb
SparkFun SAMD21
Dev Breakout
Atmel
SAM
sparkfun_samd21_mini_usb
SparkFun SAMD21
Mini Breakout
Atmel
SAM
Black Magic
Probe,
CMSIS-DAP
Black Magic
Probe,
CMSIS-DAP
1.14. PIO Unified Debugger
MicroFreFlash RAM
conquency
troller
SAMD21G18A
48
256 32
MHz
Kb
Kb
SAMD21G18A
48
MHz
256
Kb
32
Kb
373
PlatformIO Documentation, Release 3.4.1
Switch Science
ID
Name
Switch Science mbed
HRM1017
lpc1114fn28
Switch Science mbed
LPC1114FN28
ssci824
Switch Science mbed
LPC824
ty51822r3 Switch Science mbed
TY51822r3
hrm1017
Platform
Debug
Nordic
nRF51
NXP
LPC
NXP
LPC
Nordic
nRF51
CMSIS-DAP
(on-board)
CMSIS-DAP
(on-board)
CMSIS-DAP
(on-board)
CMSIS-DAP
(on-board)
Microcontroller
NRF51822
Frequency
16
MHz
LPC1114FN2848
MHz
LPC824
30
MHz
NRF51822 32
MHz
Flash RAM
MicroconFretroller
quency
LPLM4F120H5QR
80
MHz
MSP430F5529 16
MHz
MSP430FR41338 MHz
Flash RAM
256
Kb
32
Kb
32
Kb
256
Kb
16
Kb
4
Kb
8
Kb
32
Kb
TI
ID
Name
lplm4f120h5qr
TI LaunchPad (Stellaris) w/
lm4f120 (80MHz)
lpmsp430f5529
TI LaunchPad
MSP-EXP430F5529LP
lpmsp430fr4133
TI LaunchPad
MSP-EXP430FR4133LP
lpmsp430fr5739
TI FraunchPad
MSP-EXP430FR5739LP
lpmsp430fr5969
TI LaunchPad
MSP-EXP430FR5969LP
lpmsp430fr6989
TI LaunchPad
MSP-EXP430FR6989LP
lpmsp430g2553
TI LaunchPad
MSP-EXP430G2553LP
lptm4c1230c3pm
TI LaunchPad (Tiva C) w/
tm4c123 (80MHz)
lptm4c1294ncpdt
TI LaunchPad (Tiva C) w/
tm4c129 (120MHz)
Platform
TI
TIVA
TI
MSP430
TI
MSP430
TI
MSP430
TI
MSP430
TI
MSP430
TI
MSP430
TI
TIVA
TI
TIVA
Debug
TI-ICDI
(on-board)
MSP Debug
(on-board)
MSP Debug
(on-board)
MSP Debug
(on-board)
MSP Debug
(on-board)
MSP Debug
(on-board)
MSP Debug
(on-board)
TI-ICDI
(on-board)
TI-ICDI
(on-board)
MSP430FR573916
MHz
MSP430FR59698 MHz
MSP430FR69898 MHz
MSP430G2553 16
MHz
LPTM4C1230C3PM
80
MHz
LPTM4C1294NCPDT
120
MHz
256
Kb
128
Kb
16
Kb
16
Kb
64
Kb
128
Kb
16
Kb
256
Kb
1024
Kb
32
Kb
8
Kb
2
Kb
0.5
Kb
2
Kb
2
Kb
0.5
Kb
32
Kb
256
Kb
WIZNet
ID
Name
wizwiki_w7500WIZNet
WIZwiki-W7500
wizwiki_w7500eco
WIZNet WIZwikiW7500ECO
wizwiki_w7500p
WIZNet
WIZwiki-W7500P
374
Platform
Debug
WIZNet
W7500
WIZNet
W7500
WIZNet
W7500
CMSIS-DAP
(on-board)
CMSIS-DAP
(on-board)
CMSIS-DAP
(on-board)
Microcontroller
WIZNET7500
WIZNET7500ECO
WIZNET7500P
Frequency
48
MHz
48
MHz
48
MHz
Flash RAM
128
Kb
128
Kb
128
Kb
48
Kb
48
Kb
48
Kb
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
u-blox
ID
Name
ublox_evk_odin_w2
u-blox
EVK-ODIN-W2
ubloxc027
u-blox C027
Platform
ST
STM32
NXP
LPC
Debug
ST-LINK/V2-1
CMSIS-DAP
(on-board)
MicroconFretroller
quency
STM32F439ZIY6
168
MHz
LPC1768
96 MHz
Flash
RAM
2048
Kb
512
Kb
256
Kb
64
Kb
y5 design
ID
Name
nrf51822_y5_mbug
y5 nRF51822
mbug
Platform
Debug
Nordic
nRF51
CMSIS-DAP
(on-board)
Microcontroller
NRF51822
Frequency
16 MHz
Flash
RAM
256
Kb
16
Kb
PIO Unit Testing
New in version 3.0: (PlatformIO Plus)
Unit Testing (wiki) is a software testing method by which individual units of source code, sets of one or more MCU
program modules together with associated control data, usage procedures, and operating procedures, are tested to
determine whether they are fit for use. Unit testing finds problems early in the development cycle.
Tip: QUESTIONS? Ask us! Chat button is located in the bottom right corner
Contents
• Demo
• Tutorials and Examples
– Tutorials
– Project Examples
• Configuration
• Test Types
– Desktop
– Embedded
• Test Runner
– Local
– Remote
• Design
• Workflow
• API
1.15. PIO Unit Testing
375
PlatformIO Documentation, Release 3.4.1
• User Guide (CLI)
Demo
Demo of Local & Embedded: Calculator.
Tutorials and Examples
Tutorials
• Get started with Unit Testing of “Blink” Project
• Start Embedded Testing with PlatformIO
• Get started with STM32Cube HAL and Nucleo-F401RE: debugging and unit testing
Project Examples
• Embedded: Wiring Blink
376
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
• Local & Embedded: Calculator
• Labmet Weather Station
• PlatformIO Remote Unit Testing Example
For the other examples and source code please follow to PlatformIO Unit Testing Examples repository.
Configuration
PIO Unit Testing Engine can be configured from Project Configuration File platformio.ini
• test_filter
• test_ignore
• test_port
• test_transport
Test Types
Desktop
PlatformIO wraps a test and a main program (from src_dir) with PIO Unit Testing Framework and builds the final program using Native development platform. Finally, PlatformIO runs tests on the host machine (desktop or Continuous
Integration VM instance).
Note: PlatformIO does not install any toolchains automatically for Native and requires GCC toolchain to be installed
on your host machine. Please open Terminal and check that the gcc command is installed.
Embedded
PlatformIO wraps a test and main firmware (from src_dir) with PIO Unit Testing Framework and builds special
firmware for a target device and deploy it. Then, PlatformIO connects to the embedded device (board) using configured
Serial test_port and communicate via test_transport. Finally, it runs tests on embedded side, collects results, analyzes
them and provides a summary on host machine side (desktop).
Note: Please note that the PIO Unit Testing Framework uses the first available Serial/UART implementation
(depending on a framework) as a communication interface between the PIO Unit Testing Engine and target device.
If you use Serial in your project, please wrap/hide Serial-based blocks with #ifndef UNIT_TEST macro.
Also, you can create custom test_transport and implement base interface.
Test Runner
Test Runner allows you to process specific environments or ignore tests using “Glob patterns”. You can also ignore
tests for specific environments using a test_ignore option from Project Configuration File platformio.ini.
1.15. PIO Unit Testing
377
PlatformIO Documentation, Release 3.4.1
Local
Allows you to run tests on a host machine or on target devices (boards) that are directly connected to the host machine.
In this case, need to use the platformio test command.
Remote
Allows you to run tests on a remote machine or remote target devices (boards) without having to depend on OS
software, extra software, SSH, VPN or opening network ports. Remote Unit Testing works in pair with PIO Remote™.
In this case, you need to use the special command platformio remote test.
PlatformIO supports multiple Continuous Integration systems where you can run unit tests on each integration stage.
See real PlatformIO Remote Unit Testing Example.
Design
The PIO Unit Testing Engine design is based on a few isolated components:
1. Main Program. Contains the independent modules, procedures, functions or methods that will be the target
candidates (TC) for testing.
2. Unit Test. A small independent program that is intended to re-use TC from the main program and apply tests to
them.
3. Test Processor. The set of approaches and tools that will be used to apply tests for the environments from
Project Configuration File platformio.ini.
Workflow
1. Create PlatformIO project using the platformio init command. For Desktop Unit Testing (on the host machine),
you need to use Native.
; PlatformIO Project Configuration File
;
;
Build options: build flags, source filter, extra scripting
;
Upload options: custom port, speed and extra flags
;
Library options: dependencies, extra library storages
;
; Please visit documentation for the other options and examples
; http://docs.platformio.org/page/projectconf.html
;
; Embedded platforms
;
[env:uno]
platform = atmelavr
framework = arduino
board = uno
[env:nodemcu]
platform = espressif8266
framework = arduino
board = nodemcuv2
378
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
;
; Desktop platforms (Win, Mac, Linux, Raspberry Pi, etc)
; See http://platformio.org/platforms/native
;
[env:native]
platform = native
2. Place source code for the main program in the src directory.
3. Wrap main() or setup()/loop() methods in the main program with a UNIT_TEST guard:
/**
* Arduino Wiring-based Framework
*/
#ifndef UNIT_TEST
#include <Arduino.h>
void setup () {
// some code...
}
void loop () {
// some code...
}
#endif
/**
* Generic C/C++
*/
#ifndef UNIT_TEST
int main(int argc, char **argv) {
// setup code...
while (1) {
// loop code...
}
return 0
}
#endif
4. Create a test directory in the root of your project. See test_dir.
5. Write the test using API. Each test is a small independent program with its own main() or setup()/loop()
methods. Tests should start with UNITY_BEGIN() and finish with UNITY_END().
Warning: If your board does not support software reset via Serial.DTR/RTS, you should add >2 seconds delay before UNITY_BEGIN()`. That time is needed to establish a ``Serial
communication between the host machine and target device.
delay(2000); // for Arduino framework
wait(2);
// for ARM mbed framework
UNITY_BEGIN();
6. Place the test in the test directory. If you have more than one test, split them into sub-folders. For example, test/test_1/*.[c,cpp,h], test_N/*.[c,cpp,h], etc. If there is no such directory in the
1.15. PIO Unit Testing
379
PlatformIO Documentation, Release 3.4.1
test``folder, then |PIOUTE| will treat the source code of ``test folder as SINGLE test.
7. Run tests using the platformio test command.
API
Summary of the Unity Test API:
• Running Tests
– RUN_TEST(func, linenum)
• Ignoring Tests
– TEST_IGNORE()
– TEST_IGNORE_MESSAGE (message)
• Aborting Tests
– TEST_PROTECT()
– TEST_ABORT()
• Basic Validity Tests
– TEST_ASSERT_TRUE(condition)
– TEST_ASSERT_FALSE(condition)
– TEST_ASSERT(condition)
– TEST_ASSERT_UNLESS(condition)
– TEST_FAIL()
– TEST_FAIL_MESSAGE(message)
• Numerical Assertions: Integers
– TEST_ASSERT_EQUAL_INT(expected, actual)
– TEST_ASSERT_EQUAL_INT8(expected, actual)
– TEST_ASSERT_EQUAL_INT16(expected, actual)
– TEST_ASSERT_EQUAL_INT32(expected, actual)
– TEST_ASSERT_EQUAL_INT64(expected, actual)
– TEST_ASSERT_EQUAL_UINT(expected, actual)
– TEST_ASSERT_EQUAL_UINT8(expected, actual)
– TEST_ASSERT_EQUAL_UINT16(expected, actual)
– TEST_ASSERT_EQUAL_UINT32(expected, actual)
– TEST_ASSERT_EQUAL_UINT64(expected, actual)
– TEST_ASSERT_EQUAL_HEX(expected, actual)
– TEST_ASSERT_EQUAL_HEX8(expected, actual)
– TEST_ASSERT_EQUAL_HEX16(expected, actual)
– TEST_ASSERT_EQUAL_HEX32(expected, actual)
380
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
– TEST_ASSERT_EQUAL_HEX64(expected, actual)
– TEST_ASSERT_EQUAL_HEX8_ARRAY(expected, actual, elements)
– TEST_ASSERT_EQUAL(expected, actual)
– TEST_ASSERT_INT_WITHIN(delta, expected, actual)
• Numerical Assertions: Bitwise
– TEST_ASSERT_BITS(mask, expected, actual)
– TEST_ASSERT_BITS_HIGH(mask, actual)
– TEST_ASSERT_BITS_LOW(mask, actual)
– TEST_ASSERT_BIT_HIGH(mask, actual)
– TEST_ASSERT_BIT_LOW(mask, actual)
• Numerical Assertions: Floats
– TEST_ASSERT_FLOAT_WITHIN(delta, expected, actual)
– TEST_ASSERT_EQUAL_FLOAT(expected, actual)
– TEST_ASSERT_EQUAL_DOUBLE(expected, actual)
• String Assertions
– TEST_ASSERT_EQUAL_STRING(expected, actual)
– TEST_ASSERT_EQUAL_STRING_LEN(expected, actual, len)
– TEST_ASSERT_EQUAL_STRING_MESSAGE(expected, actual, message)
– TEST_ASSERT_EQUAL_STRING_LEN_MESSAGE(expected, actual, len, message)
• Pointer Assertions
– TEST_ASSERT_NULL(pointer)
– TEST_ASSERT_NOT_NULL(pointer)
• Memory Assertions
– TEST_ASSERT_EQUAL_MEMORY(expected, actual, len)
User Guide (CLI)
Cloud & Standalone IDE
PlatformIO IDE
PlatformIO IDE is the next-generation integrated development environment for IoT.
We provide official open-source packages (plugins, extensions) for the most popular IDEs and text editors.
PlatformIO IDE for Atom
PlatformIO IDE is the next-generation integrated development environment for IoT.
• Cross-platform build system without external dependencies to the OS software:
1.16. Cloud & Standalone IDE
381
PlatformIO Documentation, Release 3.4.1
– 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)
Atom is a text editor that’s modern, approachable, yet hackable to the core—a tool
can customize to do anything but also use productively without ever touching a config
382
you
file.
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Contents
• Installation
– I. Atom
– II. Clang for Intelligent Code Completion
• Quick Start
– Launch
– Setting Up the Project
– Process Project
• User Guide
– Menu item PlatformIO
– PlatformIO Toolbar
– Building / Uploading / Targets
1.16. Cloud & Standalone IDE
383
PlatformIO Documentation, Release 3.4.1
– Intelligent Code Completion
– Smart Code Linter
– Install Shell Commands
• Known issues
– Smart Code Linter is disabled for Arduino files
* Convert Arduino file to C++ manually
* Force Arduino file as C++
– Arch Linux: PlatformIO IDE Terminal issue
• Frequently Asked Questions
– Keep build panel visible
– Automatically save on build
– Jump to Declaration
– Code Formatting
• Uninstall Atom with PlatformIO IDE
– Windows
– macOS
– Linux
• Articles / Manuals
• Changelog
Installation
Note: Please note that you do not need to install PlatformIO Core separately if you are going to use PlatformIO
IDE for Atom. PlatformIO Core is built into PlatformIO IDE and you will be able to use it within PlatformIO IDE
Terminal.
Also, PlatformIO IDE allows to install PlatformIO Core Shell Commands (pio, platformio) globally to your
system via Menu: PlatformIO > Install Shell Commands.
I. Atom
0. Download and install official GitHub’s Atom text editor. PlatformIO IDE is built on top of it
1. Open Atom Package Manager
• Mac OS X, Menu:
• Windows, Menu:
• Linux, Menu:
Atom > Preferences > Install
File > Settings > Install
Edit > Preferences > Install
2. Search for official platformio-ide package
384
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
3. Install PlatformIO IDE.
II. Clang for Intelligent Code Completion
PlatformIO IDE uses Clang for the Intelligent Code Completion. To check that clang is available in your system,
please open Terminal and run clang --version. If clang is not installed, then install it and restart Atom:
• Mac OS X: Install the latest Xcode along with the latest Command Line Tools (they are installed automatically
when you run clang in Terminal for the first time, or manually by running xcode-select --install
• Windows: Download Clang 3.9.1 for Windows. Please select “Add LLVM to the system PATH” option on the
installation step.
– Clang 3.9.1 for Windows (32-bit)
– Clang 3.9.1 for Windows (64-bit)
1.16. Cloud & Standalone IDE
385
PlatformIO Documentation, Release 3.4.1
Warning: PLEASE DO NOT INSTALL CLANG 4.0. TEMPORARY, WE SUPPORT ONLY CLANG 3.9.
If you see Failed to find MSBuild toolsets directory error in the installation console,
please ignore it and press any key to close this window. PlatformIO IDE uses only Clang completion engine
that should work after it without any problems.
• Linux: Using package managers: apt-get install clang or yum install clang.
• Other Systems: Download the latest Clang for the other systems.
Warning: If some libraries are not visible in PlatformIO IDE for Atom and Code Completion or Code Linting does not work properly, please perform Menu: PlatformIO > Rebuild C/C++ Project Index
(Autocomplete, Linter)
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.
Launch
After installation, you launch PlatformIO IDE by opening Atom. Once Atom is opened, PlatformIO IDE auto installer
will continue to install dependent packages and PlatformIO Core. Please be patient and let the installation complete.
386
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
In the final result PlatformIO IDE will ask you to reload Atom window to apply installed components. Please click on
Reload Now. After it PlatformIO IDE is ready for using. Happy coding!
Setting Up the Project
1. To create a new project choose Menu: PlatformIO > Initialize new Project or update
existing or press the corresponding icon in the PlatformIO toolbar as shown in the image below:
2. In the “New Project Menu” choose desired boards (more than one board is allowed) and select a project directory.
Then press “Initialize” button:
1.16. Cloud & Standalone IDE
387
PlatformIO Documentation, Release 3.4.1
3. If everything is fine, you should see the success message and project tree in the left panel:
388
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
4. Now, let’s create the first project source file: right-click on the folder src and choose New File:
1.16. Cloud & Standalone IDE
389
PlatformIO Documentation, Release 3.4.1
390
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Enter filename main.cpp:
Copy the next source code to the just created file main.cpp
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)
1.16. Cloud & Standalone IDE
391
PlatformIO Documentation, Release 3.4.1
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);
}
Process Project
PlatformIO IDE proposes different ways to process project (build, clean, upload firmware, run other targets) using:
• PlatformIO Toolbar
• Menu item PlatformIO
• Building / Uploading / Targets and hotkeys
5. Run Build and you should see green “success” result in the building panel:
392
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
To upload firmware to the board run Upload.
6. What is more, you can run specific target or process project environment using Menu:
Run other target... or call targets list from the status bar (bottom, left corner):
1.16. Cloud & Standalone IDE
PlatformIO >
393
PlatformIO Documentation, Release 3.4.1
394
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
And select desired target:
7. To run built-in terminal interface choose Menu:
icon in the PlatformIO toolbar:
1.16. Cloud & Standalone IDE
PlatformIO > Terminal or press the corresponding
395
PlatformIO Documentation, Release 3.4.1
It
396
provides
you
fast
access
to
all
set
of
powerful
PlatformIO
Core
CLI
commands:
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
8. To run built-in “Serial Monitor” choose Menu:
sponding icon in the PlatformIO toolbar:
1.16. Cloud & Standalone IDE
PlatformIO > Serial Monitor or press the corre-
397
PlatformIO Documentation, Release 3.4.1
398
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
It has several settings to adjust your connection:
1.16. Cloud & Standalone IDE
399
PlatformIO Documentation, Release 3.4.1
And allows you to communicate with your board in an easy way:
User Guide
Menu item PlatformIO
platformio-ide package adds to Atom new menu item named Menu:
400
PlatformIO (after Menu:
Help item).
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
PlatformIO Toolbar
PlatformIO IDE Toolbar contains quick access buttons for the popular commands. Each button contains hint (delay
mouse on it).
• PlatformIO: Home (PIO Account, Library Manager, Board Explorer, Development Platform Manager)
• PlatformIO: Build
• PlatformIO: Upload
1.16. Cloud & Standalone IDE
401
PlatformIO Documentation, Release 3.4.1
• PlatformIO: Clean
• PIO Unified Debugger
• Run other target (Build environments, PIO Unit Testing)
• Toggle build panel
• ||
• Initialize new PlatformIO Project or update existing...
• Add/Open Project Folder...
• Find in Project...
• ||
• PIO Terminal
• Serial Monitor
• ||
• Atom Settings
Building / Uploading / Targets
• cmd-alt-b / ctrl-alt-b / f9 builds project without auto-uploading.
• cmd-alt-u / ctrl-alt-u builds and uploads (if no errors).
• cmd-alt-c / ctrl-alt-c cleans compiled objects.
• cmd-alt-t / ctrl-alt-t / f7 run other targets (Upload using Programmer, Upload SPIFFS image, Update
platforms and libraries).
• cmd-alt-g / ctrl-alt-g / f4 cycles through causes of build error.
• cmd-alt-h / ctrl-alt-h / shift-f4 goes to the first build error.
• cmd-alt-v / ctrl-alt-v / f8 toggles the build panel.
• escape terminates build / closes the build window.
More options Menu:
PlatformIO > Settings > Build.
Intelligent Code Completion
PlatformIO IDE uses clang for the Intelligent Code Completion. To install it or check if it is already installed, please
follow to step II. Clang for Intelligent Code Completion from Installation guide.
Warning: The libraries which are added/installed after initializing process will not be reflected in code linter. You
need Menu: PlatformIO > Rebuild C/C++ Project Index (Autocomplete, Linter).
402
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Smart Code Linter
PlatformIO IDE uses PlatformIO’s pre-built GCC toolchains for Smart Code Linter and rapid professional development. The configuration data are located in .gcc-flags.json. This file will be automatically created and
preconfigured when you initialize project using Menu: PlatformIO > Initialize new PlatformIO
Project or update existing....
Warning: If some libraries are not visible in PlatformIO IDE for Atom and Code Completion or Code Linting does not work properly, please perform Menu: PlatformIO > Rebuild C/C++ Project Index
(Autocomplete, Linter)
Error: If you have an error like linter-gcc: Executable not found and "***/.platformio/
packages/toolchain-atmelavr/bin/avr-g++" not found, please Menu: PlatformIO >
Initialize new PlatformIO Project or update existing....
Install Shell Commands
To install platformio and pio shell commands please use Menu: PlatformIO > Install Shell
Commands. It will allow you to call PlatformIO from other process, terminal and etc.
Known issues
Smart Code Linter is disabled for Arduino files
Smart Code Linter is disabled by default for Arduino files (*.ino and .pde) because they are not valid C/C++ based
source files:
1. Missing includes such as #include <Arduino.h>
2. Function declarations are omitted.
There are two solutions:
• Convert Arduino file to C++ manually
• Force Arduino file as C++
Convert Arduino file to C++ manually
Recommended! See Convert Arduino file to C++ manually.
Force Arduino file as C++
To force Smart Code Linter to use Arduino files as C++ please
1. Open .gcc-flags.json file from the Initialized/Imported project and add -x c++ flag at the beginning of
the value of gccDefaultCppFlags field:
1.16. Cloud & Standalone IDE
403
PlatformIO Documentation, Release 3.4.1
{
"execPath": "...",
"gccDefaultCFlags": "...",
"gccDefaultCppFlags": "-x c++ -fsyntax-only ...",
"gccErrorLimit": 15,
"gccIncludePaths": "...",
"gccSuppressWarnings": false
}
2. Perform all steps from Convert Arduino file to C++ manually (without renaming to .cpp).
Warning: Please do not modify other flags here. They will be removed on a next “Project Rebuild C/C++ Index”
stage. Please use build_flags for Project Configuration File platformio.ini instead.
Arch Linux: PlatformIO IDE Terminal issue
Please read this article Installing PlatformIO on Arch Linux.
Frequently Asked Questions
Keep build panel visible
PlatformIO IDE hides build panel on success by default. Nevertheless, you can keep it visible all time. Please follow
to Menu: PlatformIO > Settings > Build and set Panel Visibility to Keep Visible.
Key-bindings (toggle panel):
• cmd+alt+v - Mac OS X
• ctrl+alt+v - Windows/Linux
Automatically save on build
If you want automatically save all edited files when triggering a build, please follow to Menu:
Settings > Build and check Automatically save on build.
PlatformIO >
Jump to Declaration
Click on a function/include, press F3 and you will be taken directly to the declaration for that function.
Code Formatting
You need to install atom-beautify package and C/C++ Uncrustify Code Beautifier.
Uninstall Atom with PlatformIO IDE
Here’s how to uninstall the PlatformIO IDE for multiple OS.
See Uninstall PIO Core and dependent packages, if you do not need it in a system.
404
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Windows
1. Uninstall Atom using “Start > Control Panel > Programs and Features > Uninstall”
2. Remove C:\Users\<user name>\.atom folder (settings, packages, etc...)
3. Remove C:\Users\<user name>\AppData\Local\atom folder (application itself)
4. Remove C:\Users\<user name>\AppData\Roaming\Atom folder (cache, etc.)
5. Remove registry records using regedit:
• HKEY_CLASSES_ROOT\Directory\Background\shell
• HKEY_CLASSES_ROOT\Directory\shell
• HKEY_CLASSES_ROOT*\shell
macOS
Run these commands in system Terminal
rm
rm
rm
rm
rm
rm
rm
rm
rm
rm
-rf ~/.atom
/usr/local/bin/atom
/usr/local/bin/apm
-rf /Applications/Atom.app
~/Library/Preferences/com.github.atom.plist
~/Library/Application\ Support/com.github.atom.ShipIt
-rf ~/Library/Application\ Support/Atom
-rf ~/Library/Saved\ Application\ State/com.github.atom.savedState
-rf ~/Library/Caches/com.github.atom
-rf ~/Library/Caches/Atom
Linux
Run these commands in system Terminal
rm
rm
rm
rm
rm
rm
/usr/local/bin/atom
/usr/local/bin/apm
-rf ~/atom
-rf ~/.atom
-rf ~/.config/Atom-Shell
-rf /usr/local/share/atom/
Articles / Manuals
• Mar, 31, 2017 - Robin Reiter - A little guide to PlatformIO. As an Arduino developer, you may want to check
that out! (video review)
• Dec 13, 2016 - Dr. Patrick Mineault - Multi-Arduino projects with PlatformIO
• Nov 10, 2016 - PiGreek - PlatformIO the new Arduino IDE ?!
• Aug 18, 2016 - Primal Cortex - Installing PlatformIO on Arch Linux
• Jul 26, 2016 - Embedded Systems Laboratory - PlatformIO IDE Arduino ESP8266 (Get started with PlatformIO IDE for Arduino board and ESP8266, Thai)
1.16. Cloud & Standalone IDE
405
PlatformIO Documentation, Release 3.4.1
• May 30, 2016 - Ron Moerman - IoT Development with PlatformIO
• May 01, 2016 - Pedro Minatel - PlatformIO – Uma alternativa ao Arduino IDE (PlatformIO - An alternative to
the Arduino IDE, Portuguese)
• Apr 23, 2016 - Al Williams - Hackaday: Atomic Arduino (and Other) Development
• Apr 16, 2016 - Sathittham Sangthong - [PlatformIO] PlatformIO Arduino IDE (Let’s play together with
PlatformIO IDE [alternative to Arduino IDE], Thai)
• Apr 11, 2016 - Matjaz Trcek - Top 5 Arduino integrated development environments
• Apr 06, 2016 - Aleks - PlatformIO ausprobiert (Tried PlatformIO, German)
• Apr 02, 2016 - Diego Pinto - Você tem coragem de abandonar a IDE do Arduino? PlatformIO + Atom (Do you
dare to leave the Arduino IDE? PlatformIO + Atom, Portuguese)
• Mar 30, 2016 - Brandon Cannaday - Getting Started with PlatformIO and ESP8266 NodeMcu
• Mar 12, 2016 - Peter Marks - PlatformIO, the Arduino IDE for programmers
• Mar 05, 2016 - brichacek.net - PlatformIO – otevřený ekosystém pro vývoj IoT (PlatformIO – an open source
ecosystem for IoT development, Czech)
• Mar 04, 2016 - Ricardo Vega - Programa tu Arduino desde Atom (Program your Arduino from Atom, Spanish)
• Feb 28, 2016 - Alex Bloggt - PlatformIO vorgestellt (Introduction to PlatformIO IDE, German)
• Feb 25, 2016 - NutDIY - PlatformIO Blink On Nodemcu Dev Kit V1.0 (Thai)
See a full list with Articles about us.
Changelog
Please visit releases page.
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
406
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
• 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)
Contents
• Installation
• Quick Start
– Setting Up the Project
• User Guide
– PlatformIO Toolbar
1.16. Cloud & Standalone IDE
407
PlatformIO Documentation, Release 3.4.1
– Key Bindings: Building / Uploading / Other Tasks
– Task Runner
– Extension Settings
* platformio-ide.useBuiltinPIOCore
* platformio-ide.useDevelopmentPIOCore
* platformio-ide.autoRebuildAutocompleteIndex
* platformio-ide.forceUploadAndMonitor
* platformio-ide.customPATH
– Serial Port Monitor
– Install Shell Commands
– PIO Account
• Changelog
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.
0. Download and install official Microsoft Visual Studio Code. PlatformIO IDE is built on top of it
1. Open VSCode Package Manager
2. Search for official platformio-ide extension
3. Install PlatformIO IDE.
408
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
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. Create empty directory (or use existing) and open it via File > Open...
2. Initialize PlatformIO Project using one of these methods:
• Run “Initialize or Update Project” command using ctrl+alt+i hotkey
• Launch “VS Code Menu: View > Command Palette...” or use hotkey Ctrl+Shift+P (Cmd+Shift+P
for macOS), search for PlatformIO: Initialize or Update Project, and press enter
3. Select a board. You can change it any time in Project Configuration File platformio.ini or add new using the
same PlatformIO: Initialize or Update Project command.
1.16. Cloud & Standalone IDE
409
PlatformIO Documentation, Release 3.4.1
4. Create FREE PIO Account which opens access to extra features, such as:
• PIO Unified Debugger
• PIO Unit Testing
• PIO Remote™
Please open PIO Terminal using PlatformIO Toolbar
• Create new PIO Account with platformio account register command
• Use temporary password from received e-mail and login with platformio account login command
• Change temporary password using platformio account password command
5. Create New File named main.cpp in src folder
410
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
6. Copy the next source code to the just created file main.cpp
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.
1.16. Cloud & Standalone IDE
411
PlatformIO Documentation, Release 3.4.1
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);
}
7. Build your project with ctrl+alt+b hotkey (see all Key Bindings in “User Guide” section below)
412
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
8. Learn more about PlatformIO Toolbar and other commands (Upload, Clean, Serial Monitor, Library Manager,
Run Other Tasks) in “User Guider” section.
Happy coding with PlatformIO!
User Guide
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).
1.16. Cloud & Standalone IDE
413
PlatformIO Documentation, Release 3.4.1
• PlatformIO: Build
• PlatformIO: Upload
• PlatformIO: Clean
• PlatformIO: Run Other Tasks
• Initialize new PlatformIO Project or Update existing...
• Library Manager
• Serial Port Monitor
• PIO Terminal
Key Bindings: Building / Uploading / Other Tasks
• 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
• ctrl+alt+t Run Other Tasks (Upload using Programmer, Upload SPIFFS image, Test Project, Update packages and libraries, Upgrade PlatformIO Core)
Task Runner
PlatformIO IDE provides base 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"
414
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
],
"presentation": {
"panel": "new"
}
}
]
}
See more options in official VSCode documentation.
Extension 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.
Serial Port Monitor
You can customize Serial Port Monitor using Monitor options in Project Configuration File platformio.ini:
• monitor_port
• monitor_baud
• monitor_rts
• monitor_dtr
Example:
1.16. Cloud & Standalone IDE
415
PlatformIO Documentation, Release 3.4.1
[env:esp32dev]
platform = espressif32
framework = arduino
board = esp32dev
; Custom Serial Monitor port
monitor_port = /dev/ttyUSB1
; Custom Serial Monitor baud rate
monitor_baud = 115200
Install Shell Commands
Please navigate to FAQ Install PIO Core Shell Commands.
PIO Account
Create FREE PIO Account which opens access to extra features, such as:
• PIO Unified Debugger
• PIO Unit Testing
• PIO Remote™
Please open PIO Terminal using PlatformIO Toolbar
• Create new PIO Account with platformio account register command
• Use temporary password from received e-mail and login with platformio account login command
• Change temporary password using platformio account password command
Changelog
Please visit releases page.
Cloud IDE
Cloud9
Cloud9 combines a powerful online code editor with a full Ubuntu workspace in the cloud. Workspaces are powered
by Docker Ubuntu containers that give you full freedom over your environment, including sudo rights. Do a git push,
compile SASS, see server output, and Run apps easily with the built-in Terminal and Runners.
Tip: QUESTIONS? Ask us! Chat button is located in the bottom right corner
416
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Contents
• Cloud9
– Demo
– Integration
– Quick Start
– PlatformIO Build System
– Remote Device Manager
– Remote Firmware Uploading
– Remote Serial Port Monitor
– Multi-Project workspace
Note:
1. Please make sure to read PIO Remote™ guide first.
2. You need PIO Account if you don’t have it. Registration is FREE.
3. You should have a running PIO Remote™ Agent on a remote machine where hardware devices are connected
physically or accessible for the remote operations. See PIO Remote Quick Start for details.
1.16. Cloud & Standalone IDE
417
PlatformIO Documentation, Release 3.4.1
Demo
Integration
1. Sign in to Cloud9. A registration is FREE and gives you for FREE 1 private workspace (where you can host
multiple PlatformIO Projects) and unlimited public workspaces.
2. Create a new workspace using Blank template
418
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
3. Install PlatformIO Core using Cloud IDE Terminal. Paste a next command
sudo python -c "$(curl -fsSL https://raw.githubusercontent.com/platformio/platformio/
˓→develop/scripts/get-platformio.py)"
1.16. Cloud & Standalone IDE
419
PlatformIO Documentation, Release 3.4.1
4. Log in to PIO Account using platformio account login command.
Quick Start
Let’s create our first PlatformIO-based Cloud9 Project
1. Initialize new PlatformIO-based Project. Run a next command in Cloud IDE Terminal:
platformio init --board <ID>
# initialize project for Arduino Uno
platformio init --board uno
To get board ID please use platformio boards command or Embedded Boards Explorer.
2. Create new source file named main.cpp in src folder using Project Tree (left side). Please make right click
on src folder, then “New File” and insert a next content:
#include <Arduino.h>
int i = 0;
void setup() {
Serial.begin(9600);
Serial.println("Hello Cloud9!");
}
void loop() {
420
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
/* serial echo */
while (Serial.available()) {
Serial.write(Serial.read());
}
i++;
Serial.println(i);
delay(100);
}
3. If you prefer to work with PlatformIO Core CLI, then you can process project using Cloud IDE Terminal and
the next commands:
• platformio run - build project locally (using Cloud IDE’s virtual machine)
• pio run -t clean - clean project
• pio remote run -t upload - upload firmware (program) to a remote device
• platformio remote device list - list available remote devices
• platformio remote device monitor - Remote Serial Port Monitor
1.16. Cloud & Standalone IDE
421
PlatformIO Documentation, Release 3.4.1
If you are interested in better integration with Cloud9 and GUI, please read guide below where we will explain
how to create custom Build System for PlatformIO and own Runners.
PlatformIO Build System
Cloud9 allows to create own build system and use hotkey or command (Menu: Run > Build) to build a project.
Let’s create PlatformIO Build System that will be used for C/C++/H/INO/PDE files by default. Please click on Menu:
Run > Build System > New Build System and replace all content with the next:
{
"cmd" : ["pio", "run", "-d", "$file"],
"info" : "Building $project_path/$file_name",
"selector": "^.*\\.(cpp|c|h|hpp|S|ini|ino|pde)$"
}
Save new Build System and give a name PIOBuilder. Now, you can select it as default Build System using Menu:
Run > Build System > PIOBuilder.
Remote Device Manager
Remote Device Manager works in pair with PIO Remote™. You can list remote devices that are connected to host
machine where PIO Remote™ Agent is started or are visible for it.
Let’s create New Run Configuration (shortcut) that will be used for Remote Device Manager. Please click on Menu:
Run > Run Configurations > Manage..., then “Add New Config” and specify the next values:
• First Blank Input: a name of runner. Please set it to “PIO: Remote Devices”
• Command: set to pio remote device list
• Runner: set to “Shell command”
422
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Remote Firmware Uploading
Remote Firmware Uploading works in pair with PIO Remote™. You can deploy firmware (program) to any devices
which are visible for PIO Remote™ Agent.
Let’s create New Run Configuration (shortcut) that will be used for Remote Firmware Uploading. Please click on
Menu: Run > Run Configurations > Manage..., then “Add New Config” and specify the next values:
• First Blank Input: a name of runner. Please set it to “PIO: Remote Upload”
• Command: set to pio remote run -t upload
• Runner: set to “Shell command”
1.16. Cloud & Standalone IDE
423
PlatformIO Documentation, Release 3.4.1
424
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Remote Serial Port Monitor
Remote Serial Port Monitor works in pair with PIO Remote™. You can read or send data to any device that is connected
to host machine where PIO Remote™ Agent is started. To list active agents please use this command platformio remote
agent list.
Let’s create New Run Configuration (shortcut) that will be used for Remote Serial Port Monitor. Please click on
Menu: Run > Run Configurations > Manage..., then “Add New Config” and specify the next values:
• First Blank Input: a name of runner. Please set it to “PIO: Remote Serial Monitor”
• Command: set to pio remote device monitor
• Runner: set to “Shell command”
Multi-Project workspace
You can have multiple PlatformIO-based Projects in the same workspace. We recommend a next folders structure:
- project-A
|
- lib
|
|
- readme.txt
|
- platformio.ini
|
- src
|
- main.ino
1.16. Cloud & Standalone IDE
425
PlatformIO Documentation, Release 3.4.1
- project-B
- lib
|
- readme.txt
- platformio.ini
- src
- main.cpp
- main.h
In this case, you need to create 2 “New Run Configuration” for Remote Firmware Uploading with using the next
commands:
• pio remote run --project-dir project-A -t upload for Project-A
• pio remote run -d project-B -t upload for Project-B
See documentation for platformio remote run --project-dir option.
Codeanywhere
Codeanywhere is a Cross Platform Cloud IDE and it has all the features of Desktop IDE but with additional features
only a cloud application can give you! Codeanywhere is very flexible and you can set up your workflow any way
you want it. The elegant development environment will let you focus on building great applications quicker. All the
features you will need for any coding task are built into Codeanywhere, making development more productive and
fun.
Tip: QUESTIONS? Ask us! Chat button is located in the bottom right corner
Contents
• Codeanywhere
– Demo
– Integration
– Quick Start
– Run Button
– Remote Device Manager
– Remote Firmware Uploading
– Remote Serial Port Monitor
– Multi-Project workspace
Note:
1. Please make sure to read PIO Remote™ guide first.
2. You need PIO Account if you don’t have it. Registration is FREE.
3. You should have a running PIO Remote™ Agent on a remote machine where hardware devices are connected
physically or accessible for the remote operations. See PIO Remote Quick Start for details.
426
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Demo
Integration
1. Sign in to Codeanywhere. A registration is FREE and gives you unlimited private projects within the one
Container.
2. Open Dashboard Projects
3. Create a new Project and open it. In Connection Wizard create new Container:
• Name set to “PlatformIO”
• Stack search for Python stack (not Python3) that is based on Ubuntu OS.
• Click on “Create” button.
1.16. Cloud & Standalone IDE
427
PlatformIO Documentation, Release 3.4.1
4. Open SSH-Terminal tab (right click on Container (PlatformIO) > SSH Terminal) and install
PlatformIO Core using a next command
sudo python -c "$(curl -fsSL https://raw.githubusercontent.com/platformio/platformio/
˓→develop/scripts/get-platformio.py)"
428
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
5. Log in to PIO Account using platformio account login command.
Quick Start
Let’s create our first PlatformIO-based Codeanywhere Project
1. Initialize new PlatformIO-based Project. Run a next command in a Cloud IDE SSH Terminal:
platformio init --board <ID>
# initialize project for Arduino Uno
platformio init --board uno
To get board ID please use platformio boards command or Embedded Boards Explorer.
If you do not see created project, please refresh Project Tree using right-click on Container Name
(PlatformIO) > Refresh.
2. Create new source file named main.cpp in src folder using Project Tree (left side). Please make right click
on src folder, then “Create File” and insert a next content:
#include <Arduino.h>
int i = 0;
void setup() {
Serial.begin(9600);
1.16. Cloud & Standalone IDE
429
PlatformIO Documentation, Release 3.4.1
Serial.println("Hello Codeanywhere!");
}
void loop() {
/* serial echo */
while (Serial.available()) {
Serial.write(Serial.read());
}
i++;
Serial.println(i);
delay(100);
}
3. If you prefer to work with PlatformIO Core CLI, then you can process project using Cloud IDE SSH Terminal
and the next commands:
• platformio run - build project locally (using Cloud IDE’s virtual machine)
430
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
• pio run -t clean - clean project
• pio remote run -t upload - upload firmware (program) to a remote device
• platformio remote device list - list available remote devices
• platformio remote device monitor - Remote Serial Port Monitor
4. We recommend to hide “Hidden Files”. You can do that via Cloud IDE Menu:
Files.
View > Show Hidden
Run Button
Codeanywhere provides a quick “Run Project” button where you can specify own command. Let’s add “PlatformIO
Build Project” command:
1. Open “Project Config” via right click on Container Name (PlatformIO) > Config
2. Set commands field to
"commands": [
"pio run"
]
3. Save configuration file.
Now, try to click on “Run Project” button. You can assign any PlatformIO command to this button.
1.16. Cloud & Standalone IDE
431
PlatformIO Documentation, Release 3.4.1
432
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Remote Device Manager
Remote Device Manager works in pair with PIO Remote™. You can list remote devices that are connected to host
machine where PIO Remote™ Agent is started or are visible for it.
1. Open Cloud IDE SSH Terminal
2. Paste this command
pio remote device list
Remote Firmware Uploading
Remote Firmware Uploading works in pair with PIO Remote™. You can deploy firmware to any devices which are
visible for PIO Remote™ Agent.
1. Open Cloud IDE SSH Terminal
2. Paste this command
pio remote run -t upload
1.16. Cloud & Standalone IDE
433
PlatformIO Documentation, Release 3.4.1
Remote Serial Port Monitor
Remote Serial Port Monitor works in pair with PIO Remote™. You can read or send data to any device that is connected
to host machine where PIO Remote™ Agent is started. To list active agents please use this command platformio remote
agent list.
1. Open Cloud IDE SSH Terminal
2. Paste this command
pio remote device monitor
434
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Multi-Project workspace
You can have multiple PlatformIO-based Projects in the same workspace. We recommend a next folders structure:
- project-A
|
- lib
|
|
- readme.txt
|
- platformio.ini
|
- src
|
- main.ino
- project-B
- lib
|
- readme.txt
- platformio.ini
- src
- main.cpp
- main.h
In this case, you need to use -d, --project-dir option for platformio run or platformio remote run commands:
• pio remote run --project-dir project-A -t upload build Project-A
• pio remote run --project-dir project-A -t upload remote firmware uploading using
Project-A
• pio remote run -d project-B -t upload remote firmware (program) uploading using
Project-B
See documentation for platformio remote run --project-dir option.
1.16. Cloud & Standalone IDE
435
PlatformIO Documentation, Release 3.4.1
Eclipse Che
Eclipse Che is an open-source Java based developer workspace server and cloud integrated development environment
(IDE) which provides a remote development platform for multi-user purpose. The workspace server comes with a
RESTful webservice and provides high flexibility. It also contains a SDK which can be used to create plug-ins for
languages, frameworks or tools.
Tip: QUESTIONS? Ask us! Chat button is located in the bottom right corner
Contents
• Eclipse Che
– Demo
– Integration
– Quick Start
– Multi-Project workspace
Note:
1. Please make sure to read PIO Remote™ guide first.
2. You need PIO Account if you don’t have it. Registration is FREE.
3. You should have a running PIO Remote™ Agent on a remote machine where hardware devices are connected
physically or accessible for the remote operations. See PIO Remote Quick Start for details.
436
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Demo
Integration
1. Sign in to Codenvy (based on Eclipse Che). A registration is FREE and gives you unlimited private projects.
2. Open Workspaces tab
1.16. Cloud & Standalone IDE
437
PlatformIO Documentation, Release 3.4.1
3. Click on “Add Workspace”, then switch to “Runtime” tab.
• Name set to “PlatformIO”
• Stack search for PLATFORMIO
• Click on “Create” button, then “Open”.
4. Using opened Terminal, please log in to PIO Account using platformio account login command.
Quick Start
Let’s create our first PlatformIO-based Codenvy Project
1. Click on Menu: Workspace > Create New Project and select platformio-arduino-blink
sample. Set “Name” to “Arduino Blink” and press “Create”.
438
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
2. Now you can use dropdown Commands menu and process project with “run” command
1.16. Cloud & Standalone IDE
439
PlatformIO Documentation, Release 3.4.1
3. If you prefer to work with PlatformIO Core CLI, then you can process project using Cloud IDE Terminal and
the next commands:
• platformio run - build project locally (using Cloud IDE’s virtual machine)
• pio run -t clean - clean project
440
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
• pio remote run -t upload - upload firmware (program) to a remote device
• platformio remote device list - list available remote devices
• platformio remote device monitor - Remote Serial Port Monitor
Multi-Project workspace
You can have multiple PlatformIO-based Projects in the same workspace. We recommend a next folders structure:
- project-A
|
- lib
|
|
- readme.txt
|
- platformio.ini
|
- src
|
- main.ino
- project-B
- lib
|
- readme.txt
- platformio.ini
- src
- main.cpp
- main.h
In this case, you need to use -d, --project-dir option for platformio run or platformio remote run commands:
• pio remote run --project-dir project-A -t upload build Project-A
• pio remote run --project-dir project-A -t upload remote firmware uploading using
Project-A
• pio remote run -d project-B -t upload remote firmware (program) uploading using
Project-B
See documentation for platformio remote run --project-dir option.
Other IDE
CLion
The CLion is a cross-platform C/C++ IDE for Linux, OS X, and Windows integrated with the CMake build system.
The initial version will support the GCC and Clang compilers and GDB debugger. Clion includes such features as a
smart editor, code quality assurance, automated refactorings, project manager, integrated version control systems.
Refer
to
the
CLion
1.16. Cloud & Standalone IDE
Documentation
page
for
more
detailed
information.
441
PlatformIO Documentation, Release 3.4.1
Contents
• Integration
• Known issues
– Arduino .ino files are not supported
• Articles / Manuals
Integration
Integration process consists of these steps:
1. Open system Terminal and install PlatformIO Core
2. Create new folder for your project and change directory (cd) to it
3. Generate a project using PIO Core Project Generator (platformio init --ide)
442
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
4. Import project in IDE.
Choose board ID using platformio boards or Embedded Boards Explorer command and generate project via
platformio init --ide command:
platformio init --ide clion --board <ID>
# For example, generate project for Arduino UNO
platformio init --ide clion --board uno
Then:
1. Place source files (*.c, *.cpp, *.h, *.hpp) to src directory and repeat platformio init
--ide command above (to refresh source files list)
2. Import this project via Menu: File > Import Project and specify root directory where is located
Project Configuration File platformio.ini
3. Open source file from src directory
4. Build project (DO NOT use “Run” button, see marks on the screenshot above): Menu:
Run > Build.
Warning:
1. PlatformIO Core DOES NOT depend on Cmake, it has own cross-platform Build System. All data related
to build flags and source code filtering should be specified using Build options in Project Configuration File
platformio.ini.
2. See know issue: Arduino .ino files are not supported and how to resolve it.
There are 6 predefined targets for building (NOT FOR RUNNING, see marks on the screenshot above):
• PLATFORMIO_BUILD - Build project without auto-uploading
• PLATFORMIO_UPLOAD - Build and upload (if no errors)
• PLATFORMIO_CLEAN - Clean compiled objects
• PLATFORMIO_TEST - PIO Unit Testing
• PLATFORMIO_PROGRAM - Build and upload using external programmer (if no errors), see Upload using Programmer
• PLATFORMIO_UPLOADFS - Upload files to file system SPIFFS, see Uploading files to file system SPIFFS
• PLATFORMIO_UPDATE - Update installed platforms and libraries via platformio update
• PLATFORMIO_REBUILD_PROJECT_INDEX - Rebuild C/C++ Index for the Project. Allows to fix code
completion and code linting issues.
PlatformIO Project Generator created “File Watchers” configuration to monitor changes in platformio.ini and
automatically rebuild C/C++ Project Index. You need to install extra plugin named File Watchers via “Clion:
Preferences > Plugins” to enable this feature.
Warning: The libraries which are added, installed or used in the project after generating process will not be
reflected in IDE. To fix it please run PLATFORMIO_REBUILD_PROJECT_INDEX target.
1.16. Cloud & Standalone IDE
443
PlatformIO Documentation, Release 3.4.1
Known issues
Arduino .ino files are not supported
CLion uses “CMake” tool for code completion and code linting. As result, it doesn’t support Arduino files (*.ino
and .pde) because they are not valid C/C++ based source files:
1. Missing includes such as #include <Arduino.h>
2. Function declarations are omitted.
See how to Convert Arduino file to C++ manually.
Articles / Manuals
• Dec 01, 2015 - JetBrains CLion Blog - C++ Annotated: Fall 2015. Arduino Support in CLion using PlatformIO
• Nov 22, 2015 - Michał Seroczyński - Using PlatformIO to get started with Arduino in CLion IDE
• Nov 09, 2015 - ÁLvaro García Gómez - Programar con Arduino “The good way” (Programming with Arduino
“The good way”, Spanish)
See more Articles about us.
CodeBlocks
Code::Blocks is a free, open-source cross-platform IDE that supports multiple compilers including GCC, Clang and
Visual C++. It is developed in C++ using wxWidgets as the GUI toolkit. Using a plugin architecture, its capabilities
and features are defined by the provided plugins. Currently, Code::Blocks is oriented towards C, C++, and Fortran.
444
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
CodeBlocks IDE can be downloaded from here.
Contents
• CodeBlocks
– Integration
Integration
Integration process consists of these steps:
1. Open system Terminal and install PlatformIO Core
2. Create new folder for your project and change directory (cd) to it
3. Generate a project using PIO Core Project Generator (platformio init --ide)
4. Import project in IDE.
Choose board ID using platformio boards or Embedded Boards Explorer command and generate project via
platformio init --ide command:
platformio init --ide codeblocks --board <ID>
# For example, generate project for Arduino UNO
platformio init --ide codeblocks --board uno
1.16. Cloud & Standalone IDE
445
PlatformIO Documentation, Release 3.4.1
Then:
1. Open this project via Menu:
File > Open...
2. Add new files to src directory (*.c, *.cpp, *.ino, etc.) via Menu:
.
3. Build project using Menu:
File > New > File..
Build > Build
4. Upload firmware using Menu:
Build > Run
Warning: The libraries which are added, installed or used in the project after generating process wont be reflected
in IDE. To fix it you need to reinitialize project using platformio init (repeat it).
Eclipse
The Eclipse CDT (C/C++ Development Tooling) Project provides a fully functional C and C++ Integrated Development Environment based on the Eclipse platform. Features include: support for project creation and managed build for
various toolchains, standard make build, source navigation, various source knowledge tools, such as type hierarchy,
call graph, include browser, macro definition browser, code editor with syntax highlighting, folding and hyperlink
navigation, source code refactoring and code generation, visual debugging tools, including memory, registers, and
disassembly viewers.
446
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Refer to the CDT Documentation page for more detailed information.
Contents
• Integration
• Live Integration
• Debugging
• Articles / Manuals
1.16. Cloud & Standalone IDE
447
PlatformIO Documentation, Release 3.4.1
Integration
Integration process consists of these steps:
1. Open system Terminal and install PlatformIO Core
2. Create new folder for your project and change directory (cd) to it
3. Generate a project using PIO Core Project Generator (platformio init --ide)
4. Import project in IDE.
Choose board ID using platformio boards or Embedded Boards Explorer command and generate project via
platformio init --ide command:
platformio init --ide eclipse --board <ID>
# For example, generate project for Arduino UNO
platformio init --ide eclipse --board uno
Then:
1. Import this project via Menu: File > Import... > General > Existing Projects into
Workspace > Next and specify root directory where is located Project Configuration File platformio.ini
2. Open source file from src directory (*.c, *.cpp, *.ino, etc.)
3. Build project using Menu:
shot below):
Project > Build Project or pre-configured Make Targets (see screen-
• PlatformIO: Build - Build project without auto-uploading
• PlatformIO: Clean - Clean compiled objects.
• PlatformIO: Test - PIO Unit Testing
• PlatformIO: Upload - Build and upload (if no errors)
• PlatformIO: Upload using Programmer see Upload using Programmer
• PlatformIO: Upload SPIFFS image see Uploading files to file system SPIFFS
• PlatformIO: Update platforms and libraries - Update installed platforms and libraries
via platformio update
• PlatformIO: Rebuild C/C++ Project Index - Rebuild C/C++ Index for the Project. Allows
to fix code completion and code linting issues.
If you have some problems with unresolved includes, defines, etc., then
1. Rebuild PlatformIO Project Index: PlatformIO: Rebuild C/C++ Project Index target
2. Rebuild Eclipse Project Index: Menu:
Project > C/C++ Index > Rebuild
3. Refresh Project, right click on the project Project > Refresh (F5) or restart Eclipse IDE.
Warning: The libraries which are added, installed or used in the project after generating process wont be reflected
in IDE. To fix it please run PlatformIO: Rebuild C/C++ Project Index target and right click on the
project and Project > Refresh (F5).
448
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Warning:
The C/C++ GCC Cross Compiler Support package must be installed in Eclipse,
otherwise the CDT Cross GCC Built-in Compiler Settings provider will not be available
(check the Providers tab in Project > Properties > C/C++ General > Preprocessor
Include Paths, Macros etc. for a marked entry named CDT Cross GCC Built-in Compiler
Settings).
If this provider is not available, toolchain related includes cannot be resolved.
Live Integration
Eclipse
Virtual
IoT
Meetup:
PlatformIO:
a
cross-platform
IoT
solution
to
build
them
all!
Debugging
A debugging feature is provided by PIO Unified Debugger and new debug configuration named “PlatformIO Debugger” is created. No need to do extra configuration steps!
1. Build a project first time or after “Clean” operation using PlatformIO: Build target
2. Launch debugger via “Menu: Debug” or “Bug Icon” button on Tool Bar.
3. Wait for a while, PlatformIO will prepare project for debugging and session will be started soon.
Articles / Manuals
• May 05, 2016 - Ivan Kravets, Ph.D. / Eclipse Virtual IoT Meetup - PlatformIO: a cross-platform IoT solution
to build them all!
• Sep 01, 2015 - Thomas P. Weldon, Ph.D. - Improvised MBED FRDM-K64F Eclipse/PlatformIO Setup and
Software Installation
1.16. Cloud & Standalone IDE
449
PlatformIO Documentation, Release 3.4.1
• Jul 11, 2015 - TrojanC - Learning Arduino GitHub Repository
• June 20, 2014 - Ivan Kravets, Ph.D. - Building and debugging Atmel AVR (Arduino-based) project using
Eclipse IDE+PlatformIO
See a full list with Articles about us.
Emacs
GNU Emacs is an extensible, customizable text editor - and more. At its core is an interpreter for Emacs Lisp, a dialect
of the Lisp programming language with extensions to support text editing.
Refer
to
the
Emacs
Documentation
page
for
more
detailed
information.
Contents
• Emacs
– Integration
* PlatformIO-Mode
* Project Generator
Integration
Integration process consists of these steps:
1. Open system Terminal and install PlatformIO Core
2. Create new folder for your project and change directory (cd) to it
450
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
3. Generate a project using PIO Core Project Generator (platformio init --ide)
4. Import project in IDE.
PlatformIO-Mode
An Emacs minor mode has been written to facilitate building and uploading from within Emacs. It can be installed
from the MELPA repository using M-x package-install. See the MELPA Getting Started page for more information.
Setup instructions and an example config can be found at the Github page.
Code completion can optionally be provided by installing irony-mode
Project Generator
Choose board ID using platformio boards or Embedded Boards Explorer command and generate project via
platformio init --ide command:
platformio init --ide emacs --board <ID>
There are 6 predefined targets for building.
• platformio_build - Build project without auto-uploading. (C-c i b)
• platformio_clean - Clean compiled objects. (C-c i c)
• platformio_upload - Build and upload (if no errors). (C-c i u)
• platformio_programmer_upload - Build and upload using external programmer (if no errors, see Upload using Programmer). (C-c i p)
• platformio_spiffs_upload - Upload files to file system SPIFFS (see Uploading files to file system
SPIFFS). (C-c i s)
• platformio_update - Update installed platforms and libraries. (C-c i d)
Warning: The libraries which are added, installed or used in the project after generating process wont be reflected
in IDE. To fix it you need to reinitialize project using platformio init (repeat it).
NetBeans
NetBeans is a Java-based integrated development environment (IDE). It provides out-of-the-box code analyzers and
editors for working with the latest Java 8 technologies–Java SE 8, Java SE Embedded 8, and Java ME Embedded 8.
The IDE also has a range of new tools for HTML5/JavaScript, in particular for Node.js, KnockoutJS, and AngularJS;
enhancements that further improve its support for Maven and Java EE with PrimeFaces; and improvements to PHP
and C/C++ support.
NetBeans IDE
C/C++ version
can be downloaded from here.
(or if you already use NetBeans,
1.16. Cloud & Standalone IDE
Just make sure you download the
install the C/C++ development plugins).
451
PlatformIO Documentation, Release 3.4.1
Contents
• NetBeans
– Integration
– Articles / Manuals
452
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Integration
Integration process consists of these steps:
1. Open system Terminal and install PlatformIO Core
2. Create new folder for your project and change directory (cd) to it
3. Generate a project using PIO Core Project Generator (platformio init --ide)
4. Import project in IDE.
Choose board ID using platformio boards or Embedded Boards Explorer command and generate project via
platformio init --ide command:
platformio init --ide netbeans --board <ID>
# For example, generate project for Arduino UNO
platformio init --ide netbeans --board uno
Then:
1. Open this project via Menu:
File > Open Project...
2. Add new files to src directory (*.c, *.cpp, *.ino, etc.) via right-click on src folder in the
“Projects” pane
3. Build project using Menu:
Run > Build Project
4. Upload firmware using Menu:
Run > Run Project
Warning: The libraries which are added, installed or used in the project after generating process wont be reflected
in IDE. To fix it you need to reinitialize project using platformio init (repeat it).
Articles / Manuals
• Feb 22, 2016 - Grzegorz Hołdys - How to Integrate PlatformIO with Netbeans
See the full list with Articles about us.
Qt Creator
The Qt Creator is an open source cross-platform integrated development environment. The editor includes such features as syntax highlighting for various languages, project manager, integrated version control systems, rapid code
navigation tools and code autocompletion.
1.16. Cloud & Standalone IDE
453
PlatformIO Documentation, Release 3.4.1
Refer to the Qt-creator Manual page for more detailed information.
Contents
• Qt Creator
– Integration
* Project Generator
* Manual Integration
· Setup New Project
· First program in Qt Creator
· Conclusion
Integration
Integration process consists of these steps:
1. Open system Terminal and install PlatformIO Core
2. Create new folder for your project and change directory (cd) to it
3. Generate a project using PIO Core Project Generator (platformio init --ide)
4. Import project in IDE.
454
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Project Generator
Choose board ID using platformio boards or Embedded Boards Explorer command and generate project via
platformio init --ide command:
platformio init --ide qtcreator --board <ID>
# For example, generate project for Arduino UNO
platformio init --ide qtcreator --board uno
Then:
1. Import project via File > Open File or Project and select platformio.pro from the folder
where is located Project Configuration File platformio.ini
2. Select default desktop kit and click on Configure Project (Projects mode, left panel)
3. Set General > Build directory to the project directory where is located Project Configuration File
platformio.ini
4. Remove all items from Build Steps, click on Build Steps > Add Build Step > Custom
Process Step and set:
• Command: platformio
• Arguments: -f -c qtcreator run
• Working directory: %{buildDir}
5. Remove all items from Clean Steps, click on Clean Steps > Add Clean Step > Custom
Process Step and set:
• Command: platformio
• Arguments: -f -c qtcreator run --target clean
• Working directory: %{buildDir}
6. Update PATH in Build Environment > PATH > EDIT with the result of this command (paste in Terminal):
# Linux, Mac
echo $PATH
# Windows
echo %PATH%
7. Switch to Edit mode (left panel) and open source file from src directory (*.c, *.cpp, *.ino, etc.)
8. Build project: Menu:
Build > Build All.
1.16. Cloud & Standalone IDE
455
PlatformIO Documentation, Release 3.4.1
Warning: The libraries which are added, installed or used in the project after generating process wont be reflected
in IDE. To fix it you need to reinitialize project using platformio init (repeat it).
Manual Integration
Setup New Project
First
ing
456
of all,
Menu:
let’s create new project from Qt
File > New File or Project,
Creator
then
Start Page:
New Project or usselect
project
with
Empty Qt
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Project
type
(Other Project > Empty Qt Project),
fill
Name,
Create in.
On the next steps select any available kit and click Finish button.
1.16. Cloud & Standalone IDE
457
PlatformIO Documentation, Release 3.4.1
Secondly,
we need to delete default build
PlatformIO Build System (click on Projects
458
and clean steps and
label on left menu
configure project with
or Ctrl+5 shortcut):
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Thirdly, change project file by adding path to directories with header files. Please edit project file to match the
following contents:
win32 {
HOMEDIR += $$(USERPROFILE)
}
else {
HOMEDIR += $$(HOME)
}
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoavr/cores/arduino"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/toolchain-atmelavr/avr/include"
1.16. Cloud & Standalone IDE
459
PlatformIO Documentation, Release 3.4.1
First program in Qt Creator
Simple “Blink”
of your project
“C” source file
file
named
460
project will consist from two files:
1.
In the console, navigate to the root
folder and initialize platformio project with platformio init 2.
The main
named main.c must be located in the src directory.
Let’s create new text
main.c
using
Menu: New File or Project > General > Text File:
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Copy the source code which is described below to file main.c.
#include "Arduino.h"
#define WLED
13 // Most Arduino boards already have an LED attached to pin 13 on
˓→the board itself
void setup()
{
pinMode(WLED, OUTPUT);
}
// set pin as output
void loop()
{
digitalWrite(WLED, HIGH);
delay(1000);
digitalWrite(WLED, LOW);
delay(1000);
}
//
//
//
//
set the LED on
wait for a second
set the LED off
wait for a second
3. Locate the project configuration file named platformio.ini at the root of the project directory and open it.
1.16. Cloud & Standalone IDE
461
PlatformIO Documentation, Release 3.4.1
Edit the content to match the code described below.
; PlatformIO Project Configuration File
;
;
Build options: build flags, source filter, extra scripting
;
Upload options: custom port, speed and extra flags
;
Library options: dependencies, extra library storages
;
; Please visit documentation for the other options and examples
; http://docs.platformio.org/page/projectconf.html
[env:arduino_uno]
platform = atmelavr
framework = arduino
board = uno
Conclusion
Taking everything into account, we can build project with shortcut Ctrl+Shift+B or using Menu:
Build All.
462
Build >
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Sublime Text
The Sublime Text is a cross-platform text and source code editor, with a Python application programming interface
(API). Sublime Text is proprietary software. Its functionality is extendable with plugins. Most of the extending
packages have free-software licenses and are community-built and maintained. Sublime Text lacks graphical setting
dialogues and is entirely configured by editing text files.
Refer
to
the
Sublime
Text
Documentation
page
for
more
detailed
information.
Contents
• Deviot Plugin
• Integration
– Project Generator
– Manual Integration
* Initial configuration
· Command Hotkeys
* First program in Sublime Text
1.16. Cloud & Standalone IDE
463
PlatformIO Documentation, Release 3.4.1
* Conclusion
• Debugging
Deviot Plugin
We are glad to inform you about an awesome Sublime Text plugin for IoT development named Deviot. It is based on
PlatformIO Core and will automatically install it for you. Please visit official Deviot page for the further installation
steps and documentation.
Integration
Project Generator
Integration process consists of these steps:
1. Open system Terminal and install PlatformIO Core
2. Create new folder for your project and change directory (cd) to it
3. Generate a project using PIO Core Project Generator (platformio init --ide)
4. Import project in IDE.
Choose board ID using platformio boards or Embedded Boards Explorer command and generate project via
platformio init --ide command:
platformio init --ide sublimetext --board <ID>
# For example, generate project for Arduino UNO
platformio init --ide sublimetext --board uno
Then:
1. Import project via Menu: Project > Open Project... and select platformio.
sublime-project from the folder where is located Project Configuration File platformio.ini
2. Select PlatformIO as build system: Menu:
Tools > Build System > PlatformIO
3. Open source file from src directory (*.c, *.cpp, *.ino, etc.)
4. Build project: Menu:
Tools > Build.
Also, you can access to all pre-configured targets via Menu:
Tools > Builds With... (ST3)
• PlatformIO - Build - Build project without auto-uploading
• PlatformIO - Clean - Clean compiled objects.
• PlatformIO - Test - PIO Unit Testing
• PlatformIO - Upload - Build and upload (if no errors)
• PlatformIO - Upload using Programmer see Upload using Programmer
• PlatformIO - Upload SPIFFS image see Uploading files to file system SPIFFS
• PlatformIO - Update platforms and libraries - Update installed platforms and libraries via
platformio update.
464
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Manual Integration
Note: Please verify that folder where is located platformio program is added to PATH (wiki) environment
variable.
Initial configuration
First of all, we need to create “New Build System” with name “PlatformIO” from Menu:
System > New Build System and fill it like described below:
Tools > Build
{
"cmd": ["platformio", "-f", "-c", "sublimetext", "run"],
"working_dir": "${project_path:${folder}}",
"variants":
[
{
"name": "Clean",
"cmd": ["platformio", "-f", "-c", "sublimetext", "run", "--target", "clean
˓→"]
},
{
"name": "Upload",
"cmd": ["platformio", "-f", "-c", "sublimetext", "run", "--target",
˓→"upload"]
}
]
}
Secondly, we need to select “PlatformIO” Build System from a list:
1.16. Cloud & Standalone IDE
465
PlatformIO Documentation, Release 3.4.1
After that, we can use the necessary commands from Menu:
Ctrl+Shift+P (Windows/Linux) Cmd+Shift+P (Mac) shortcut.
466
Tools > Command Palette or with
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Command Hotkeys
Sublime Text allows to bind own hotkey per command. Let’s setup them for PlatformIO commands using shortcut
Menu: Preferences > Key-Bindings - User:
1.16. Cloud & Standalone IDE
467
PlatformIO Documentation, Release 3.4.1
We are going to use these shortcuts:
• F11 for clean project
• F12 for upload firmware to target device
In this case, the final code will look like:
[
{ "keys": ["f11"], "command": "build", "args": {"variant": "Clean"} },
{ "keys": ["f12"], "command": "build", "args": {"variant": "Upload"} }
]
First program in Sublime Text
Simple “Blink” project will consist from two files:
1. Main “C” source file named main.c must be located in the src directory. Let’s create new file named main.c
using Menu: File > New File or shortcut Ctrl+N (Windows/Linux) Cmd+N (Mac) with the next contents:
#include "Arduino.h"
#define WLED
13 // Most Arduino boards already have an LED attached to pin 13 on
˓→the board itself
void setup()
{
pinMode(WLED, OUTPUT);
}
468
// set pin as output
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
void loop()
{
digitalWrite(WLED, HIGH);
delay(1000);
digitalWrite(WLED, LOW);
delay(1000);
}
//
//
//
//
set the LED on
wait for a second
set the LED off
wait for a second
2. Project Configuration File named platformio.ini must be located in the project root directory. Copy the
source code which is described below to it.
; PlatformIO Project Configuration File
;
;
Build options: build flags, source filter, extra scripting
;
Upload options: custom port, speed and extra flags
;
Library options: dependencies, extra library storages
;
; Please visit documentation for the other options and examples
; http://docs.platformio.org/page/projectconf.html
[env:arduino_uno]
platform = atmelavr
framework = arduino
board = uno
Conclusion
Taking everything into account, we can open project directory in Sublime Text using Menu: File > Open
Folder and build it with shortcut Ctrl+B (Windows/Linux) or Cmd+B (Mac), clean project with shortcut F11
and upload firmware to target with shortcut F12.
Debugging
A debugging feature is provided by PIO Unified Debugger and new debug configuration named “PlatformIO Debugger” is created. No need to do extra configuration steps!
1. Install SublimeGDB package
2. Launch debugger with F5
3. Wait for a while, PlatformIO will prepare project for debugging and session will be started soon.
VIM
VIM is an open-source, powerful and configurable text editor. Vim is designed for use both from a command-line
interface and as a standalone application in a graphical user interface.
1.16. Cloud & Standalone IDE
469
PlatformIO Documentation, Release 3.4.1
Contents
• VIM
– Integration
* “Neomake-PlatformIO” Plugin
* Project Generator
– Articles / Manuals
Integration
Integration process consists of these steps:
1. Open system Terminal and install PlatformIO Core
2. Create new folder for your project and change directory (cd) to it
3. Generate a project using PIO Core Project Generator (platformio init --ide)
4. Import project in IDE.
470
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
“Neomake-PlatformIO” Plugin
Please visit neomake-platformio for the further installation steps and documentation.
Project Generator
Choose board ID using platformio boards or Embedded Boards Explorer command and generate project via
platformio init --ide command:
platformio init --ide vim --board <ID>
Recommended bundles:
• Syntax highlight - Arduino-syntax-file
• Code Completion - YouCompleteMe
formIO/YouCompleteMe Integration)
(see
configuration
example
by
Anthony
Ford
Plat-
• Syntax checking - Syntastic
Put to the project directory Makefile wrapper with contents:
# Uncomment lines below if you have problems with $PATH
#SHELL := /bin/bash
#PATH := /usr/local/bin:$(PATH)
all:
platformio -f -c vim run
upload:
platformio -f -c vim run --target upload
clean:
platformio -f -c vim run --target clean
program:
platformio -f -c vim run --target program
uploadfs:
platformio -f -c vim run --target uploadfs
update:
platformio -f -c vim update
Pre-defined targets:
• Build - Build project without auto-uploading
• Clean - Clean compiled objects.
• Upload - Build and upload (if no errors)
• Upload using Programmer see Upload using Programmer
• Upload SPIFFS image see Uploading files to file system SPIFFS
• Update platforms and libraries - Update installed platforms and libraries via platformio update.
Now, in VIM cd /path/to/this/project and press Ctrl+B or Cmd+B (Mac). PlatformIO should compile
your source code from the src directory, make firmware and upload it.
1.16. Cloud & Standalone IDE
471
PlatformIO Documentation, Release 3.4.1
Note: If hotkey doesn’t work for you, try to add this line nnoremap <C-b> :make<CR> to ~/.vimrc
Articles / Manuals
• Arduino : vim + platformio (Arduino development at the command line: VIM + PlatformIO, Japanese)
See a full list with Articles about us.
Visual Studio
The Microsoft Visual Studio (Free) is an integrated development environment (IDE) from Microsoft. Visual Studio
includes a code editor supporting IntelliSense (the code completion component) as well as code refactoring.
Refer
to
the
Visual
Studio
Documentation
page
for
more
detailed
information.
Contents
• Visual Studio
– Integration
472
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
* Project Generator
* Manual Integration
· Setup New Project
· First program in Visual Studio
· Conclusion
– Known issues
* IntelliSense Errors
Integration
Integration process consists of these steps:
1. Open system Terminal and install PlatformIO Core
2. Create new folder for your project and change directory (cd) to it
3. Generate a project using PIO Core Project Generator (platformio init --ide)
4. Import project in IDE.
Project Generator
Choose board ID using platformio boards or Embedded Boards Explorer command and generate project via
platformio init --ide command:
platformio init --ide sublimetext --board <ID>
# For example, generate project for Arduino UNO
platformio init --ide visualstudio --board uno
Then:
1. Import this project via Menu: File > Open > Project/Solution and specify root directory where
is located Project Configuration File platformio.ini
2. Open source file from src directory (*.c, *.cpp, *.ino, etc.)
3. Build project: Menu:
Build > Build Solution.
Warning: The libraries which are added, installed or used in the project after generating process wont be reflected
in IDE. To fix it you need to reinitialize project using platformio init (repeat it).
Manual Integration
1.16. Cloud & Standalone IDE
473
PlatformIO Documentation, Release 3.4.1
Setup New Project
First of all, let’s create new project from Visual Studio Start Page: Start > New Project or using
Menu: File > New > Project, then select project with Makefile type (Visual C++ > General >
Makefile Project), fill Project name, Solution name, Location fields and press OK button.
Secondly, we need to configure project with PlatformIO Build System:
474
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
If we want to use native AVR programming, we have to specify additional preprocessor symbol (“Preprocessor definitions” field) about your MCU. For example, an Arduino Uno is based on the ATmega328 MCU. In this case We will
add new definition __AVR_ATmega328__.
1.16. Cloud & Standalone IDE
475
PlatformIO Documentation, Release 3.4.1
Release Configuration is the same as Debug, so on the next step we check “Same as Debug Configuration” and click
“Finish” button.
476
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Thirdly, we need to add directories with header files using project properties (right click on the project name
or Alt-Enter shortcut) and add two directories to Configuration Properties > NMake > Include
Search Path:
$(HOMEDRIVE)$(HOMEPATH)\.platformio\packages\toolchain-atmelavr\avr\include
$(HOMEDRIVE)$(HOMEPATH)\.platformio\packages\framework-arduinoavr\cores\arduino
1.16. Cloud & Standalone IDE
477
PlatformIO Documentation, Release 3.4.1
First program in Visual Studio
Simple “Blink” project will consist from two files:
1. Main “C++” source file named main.cpp must be located in the src directory. Let’s create new file named
main.cpp using Menu: File > New File or shortcut Ctrl+N:
478
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Copy the source code which is described below to file main.cpp.
#include "Arduino.h"
#define WLED
13 // Most Arduino boards already have an LED attached to pin 13 on
˓→the board itself
void setup()
{
pinMode(WLED, OUTPUT);
}
// set pin as output
void loop()
{
digitalWrite(WLED, HIGH);
delay(1000);
digitalWrite(WLED, LOW);
delay(1000);
}
//
//
//
//
set the LED on
wait for a second
set the LED off
wait for a second
2. Project Configuration File named platformio.ini must be located in the project root directory.
1.16. Cloud & Standalone IDE
479
PlatformIO Documentation, Release 3.4.1
Copy the source code which is described below to it.
; PlatformIO Project Configuration File
;
;
Build options: build flags, source filter, extra scripting
;
Upload options: custom port, speed and extra flags
;
Library options: dependencies, extra library storages
;
; Please visit documentation for the other options and examples
; http://docs.platformio.org/page/projectconf.html
[env:arduino_uno]
platform = atmelavr
framework = arduino
board = uno
Conclusion
Taking everything into account, we can build project with shortcut Ctrl+Shift+B or using Menu:
Build Solution.
Build >
Known issues
480
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
IntelliSense Errors
VS Studio does not allow to specify for project other toolchain which will be used by IntelliSense. In this case,
IntelliSense does not understand GCC-specific definitions.
However, these errors does not have any influence on PlatformIO Build System. It means that you can ignore them
and rely on PlatformIO Build System messages which will be shown in output console after build.
Nevertheless, you can provide an IntelliSense-friendly definition of problematic GCC constructs and make sure
that the GCC will ignore such definitions or disable IntelliSense error reporting at all. See details in issue #543
Continuous Integration
Continuous Integration (CI, wiki) is the practice, in software engineering, of merging all developer working copies
with a shared mainline several times a day.
platformio ci command is intended to be used in combination with the build servers and the popular Continuous
Integration Software.
By integrating regularly, you can detect errors quickly, and locate them more easily.
1.17. Continuous Integration
481
PlatformIO Documentation, Release 3.4.1
AppVeyor
AppVeyor is an open-source hosted, distributed continuous integration service used to build and test projects hosted at
GitHub on Windows family systems.
AppVeyor is configured by adding a file named appveyor.yml, which is a YAML format text file, to the root
directory of the GitHub repository.
AppVeyor automatically detects when a commit has been made and pushed to a GitHub repository that is using
AppVeyor, and each time this happens, it will try to build the project using platformio ci command. This includes
commits to all branches, not just to the master branch. AppVeyor will also build and run pull requests. When that
process has completed, it will notify a developer in the way it has been configured to do so — for example, by sending
an email containing the build results (showing success or failure), or by posting a message on an IRC channel. It can
be configured to build project on a range of different Development Platforms.
Contents
• AppVeyor
– Integration
– Examples
Integration
Put appveyor.yml to the root directory of the GitHub repository.
build: off
environment:
matrix:
- PLATFORMIO_CI_SRC: "path\\to\\source\\file.c"
- PLATFORMIO_CI_SRC: "path\\to\\source\\file.ino"
- PLATFORMIO_CI_SRC: "path\\to\\source\\directory"
install:
- cmd: git submodule update --init --recursive
- cmd: SET PATH=%PATH%;C:\Python27\Scripts
- cmd: pip install -U platformio
test_script:
- cmd: platformio ci --board=<ID_1> --board=<ID_2> --board=<ID_N>
For more details as for PlatformIO build process please look into platformio ci command.
Examples
1. Integration for USB_Host_Shield_2.0 project. The appveyor.yml configuration file:
build: off
environment:
matrix:
- PLATFORMIO_CI_SRC: "examples\\Bluetooth\\PS3SPP\\PS3SPP.ino"
- PLATFORMIO_CI_SRC: "examples\\pl2303\\pl2303_gps\\pl2303_gps.ino"
482
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
install:
- cmd:
- cmd:
- cmd:
- cmd:
git
SET
pip
git
submodule update --init --recursive
PATH=%PATH%;C:\Python27\Scripts
install -U platformio
clone https://github.com/xxxajk/spi4teensy3.git C:\spi4teensy
test_script:
- cmd: platformio ci --lib="." --lib="C:\\spi4teensy" --board=uno -˓→board=teensy31 --board=due
Circle CI
Circle CI is a hosted cloud platform that provides hosted continuous integration, deployment, and testing to GitHub
repositories.
Circle CI is configured by adding a file named circle.yml, which is a YAML format text file, to the root directory
of the GitHub repository.
Circle CI automatically detects when a commit has been made and pushed to a GitHub repository that is using Circle
CI, and each time this happens, it will try to build the project using platformio ci command. This includes commits
to all branches, not just to the master branch. Circle CI will also build and run pull requests. When that process
has completed, it will notify a developer in the way it has been configured to do so — for example, by sending an
email containing the build results (showing success or failure), or by posting a message on an IRC channel. It can be
configured to build project on a range of different Development Platforms.
Contents
• Circle CI
– Integration
* Project as a library
* Library dependecies
· Install dependent library using Library Manager
· Manually download dependent library and include in build process via --lib option
* Custom Build Flags
* Advanced configuration
– Examples
Integration
Please make sure to read Circle CI Getting Started guide first.
dependencies:
pre:
# Install the latest stable PlatformIO
- sudo pip install -U platformio
test:
1.17. Continuous Integration
483
PlatformIO Documentation, Release 3.4.1
override:
- platformio ci path/to/test/file.c --board=<ID_1> --board=<ID_2> --board=<ID_
˓→N>
- platformio ci examples/file.ino --board=<ID_1> --board=<ID_2> --board=<ID_N>
- platformio ci path/to/test/directory --board=<ID_1> --board=<ID_2> --board=
˓→<ID_N>
For more details as for PlatformIO build process please look into platformio ci.
Project as a library
When project is written as a library (where own examples or testing code use it), please use --lib="." option for
platformio ci command
script:
- platformio ci --lib="." --board=<ID_1> --board=<ID_2> --board=<ID_N>
Library dependecies
There 2 options to test source code with dependent libraries:
Install dependent library using Library Manager
dependencies:
pre:
# Install the latest stable PlatformIO
- sudo pip install -U platformio
# OneWire Library with ID=1 http://platformio.org/lib/show/1/OneWire
- platformio lib -g install 1
test:
override:
- platformio ci path/to/test/file.c --board=<ID_1> --board=<ID_2> --board=<ID_
˓→N>
Manually download dependent library and include in build process via --lib option
dependencies:
pre:
# Install the latest stable PlatformIO
- sudo pip install -U platformio
# download library to the temporary directory
- wget https://github.com/PaulStoffregen/OneWire/archive/master.zip -O /tmp/
˓→onewire_source.zip
- unzip /tmp/onewire_source.zip -d /tmp/
test:
override:
- platformio ci path/to/test/file.c --lib="/tmp/OneWire-master" --board=<ID_1>
˓→ --board=<ID_2> --board=<ID_N>
484
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Custom Build Flags
PlatformIO allows to specify own build flags using PLATFORMIO_BUILD_FLAGS environment
machine:
environment:
PLATFORMIO_BUILD_FLAGS: -D SPECIFIC_MACROS -I/extra/inc
For the more details, please follow to available build flags/options.
Advanced configuration
PlatformIO allows to configure multiple build environments for the single source code using Project Configuration
File platformio.ini.
Instead of --board option, please use platformio ci --project-conf
test:
override:
- platformio ci path/to/test/file.c --project-conf=/path/to/platoformio.ini
Examples
1. Custom build flags
dependencies:
cache_directories:
- "~/.platformio"
pre:
- sudo pip install -U platformio
# pre-install PlatformIO development platforms, they will be cached
- platformio platform install atmelavr atmelsam teensy
#
#
#
#
#
-
Libraries from PlatformIO Library Registry:
http://platformio.org/lib/show/416/TinyGPS
http://platformio.org/lib/show/417/SPI4Teensy3
platformio lib -g install 416 417
test:
override:
- platformio ci
˓→board=due --lib="."
- platformio ci
˓→board=due --lib="."
- platformio ci
˓→board=due --lib="."
- platformio ci
˓→board=due --lib="."
examples/acm/acm_terminal --board=uno --board=teensy31 -examples/adk/adk_barcode --board=uno --board=teensy31 -examples/adk/ArduinoBlinkLED --board=uno --board=teensy31 -examples/adk/demokit_20 --board=uno --board=teensy31 --
1.17. Continuous Integration
485
PlatformIO Documentation, Release 3.4.1
# ...
- platformio ci examples/Xbox/XBOXUSB --board=uno --board=teensy31 -˓→board=due --lib="."
• Configuration file: https://github.com/ivankravets/USB_Host_Shield_2.0/blob/master/circle.yml
• Build History: https://circleci.com/gh/ivankravets/USB_Host_Shield_2.0/tree/master
2. Dependency on external libraries
dependencies:
pre:
# Install the latest stable PlatformIO
- sudo pip install -U platformio
# download dependent libraries
- wget https://github.com/jcw/jeelib/archive/master.zip -O /tmp/jeelib.zip
- unzip /tmp/jeelib.zip -d /tmp
˓→
- wget https://github.com/Rodot/Gamebuino/archive/master.zip
gamebuino.zip
- unzip /tmp/gamebuino.zip -d /tmp
-O /tmp/
test:
override:
- platformio ci examples/backSoon/backSoon.ino --lib="." --lib="/tmp/jeelib˓→master" --lib="/tmp/Gamebuino-master/libraries/tinyFAT" --board=uno -˓→board=megaatmega2560
- platformio ci examples/etherNode/etherNode.ino --lib="." --lib="/tmp/
˓→jeelib-master" --lib="/tmp/Gamebuino-master/libraries/tinyFAT" --board=uno -˓→board=megaatmega2560
- platformio ci examples/getDHCPandDNS/getDHCPandDNS.ino --lib="." --lib="/
˓→tmp/jeelib-master" --lib="/tmp/Gamebuino-master/libraries/tinyFAT" --board=uno -˓→board=megaatmega2560
- platformio ci examples/getStaticIP/getStaticIP.ino --lib="." --lib="/tmp/
˓→jeelib-master" --lib="/tmp/Gamebuino-master/libraries/tinyFAT" --board=uno -˓→board=megaatmega2560
# ...
- platformio ci examples/twitter/twitter.ino --lib="." --lib="/tmp/jeelib˓→master" --lib="/tmp/Gamebuino-master/libraries/tinyFAT" --board=uno -˓→board=megaatmega2560
- platformio ci examples/udpClientSendOnly/udpClientSendOnly.ino --lib="." -˓→lib="/tmp/jeelib-master" --lib="/tmp/Gamebuino-master/libraries/tinyFAT" -˓→board=uno --board=megaatmega2560
- platformio ci examples/udpListener/udpListener.ino --lib="." --lib="/tmp/
˓→jeelib-master" --lib="/tmp/Gamebuino-master/libraries/tinyFAT" --board=uno -˓→board=megaatmega2560
- platformio ci examples/webClient/webClient.ino --lib="." --lib="/tmp/
˓→jeelib-master" --lib="/tmp/Gamebuino-master/libraries/tinyFAT" --board=uno -˓→board=megaatmega2560
• Configuration file: hhttps://github.com/ivankravets/ethercard/blob/master/circle.yaml
• Build History: https://circleci.com/gh/ivankravets/ethercard/tree/master
Drone
Drone is a hosted continuous integration service. It enables you to conveniently set up projects to automatically build,
486
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
test, and deploy as you make changes to your code to GitHub and BitBucket repositories.
Drone is configured by modifying settings in your project control panel.
Drone automatically detects when a commit has been made and pushed to a GitHub repository that is using Drone,
and each time this happens, it will try to build the project using platformio ci command. This includes commits to all
branches, not just to the master branch. Drone will also build and run pull requests. When that process has completed,
it will notify a developer in the way it has been configured to do so — for example, by sending an email containing
the build results (showing success or failure). It can be configured to build project on a range of different Development
Platforms.
Contents
• Drone
– Integration
– Examples
Integration
Please fill all fields for your project in the Drone control panel:
Environment Variables:
PLATFORMIO_CI_SRC=path/to/source/file.c
PLATFORMIO_CI_SRC=path/to/source/file.ino
PLATFORMIO_CI_SRC=path/to/source/directory
Commands:
pip install -U platformio
platformio ci --board=<ID_1> --board=<ID_2> --board=<ID_N>
1.17. Continuous Integration
487
PlatformIO Documentation, Release 3.4.1
For more details as for PlatformIO build process please look into platformio ci command.
Examples
1. Integration for USB_Host_Shield_2.0 project. The circle.yml configuration file:
Environment Variables:
PLATFORMIO_CI_SRC=examples/Bluetooth/PS3SPP/PS3SPP.ino
PLATFORMIO_CI_SRC=examples/pl2303/pl2303_gps/pl2303_gps.ino
Commands:
488
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
pip install -U platformio
wget https://github.com/xxxajk/spi4teensy3/archive/master.zip -O /tmp/spi4teensy3.zip
unzip /tmp/spi4teensy3.zip -d /tmp
platformio ci --lib="." --lib="/tmp/spi4teensy3-master" --board=uno --board=teensy31 ˓→-board=due
Shippable
Shippable is a hosted cloud platform that provides hosted continuous integration, deployment, and testing to GitHub
1.17. Continuous Integration
489
PlatformIO Documentation, Release 3.4.1
and BitBucket repositories. Shippable’s continuous integration service is built using Docker.
Shippable is configured by adding a file named shippable.yml, which is a YAML format text file, to the root
directory of the GitHub repository or you can use your Travis CI configuration file .travis.yml.
Shippable automatically detects when a commit has been made and pushed to a GitHub repository that is using Shippable, and each time this happens, it will try to build the project using platformio ci command. This includes commits
to all branches, not just to the master branch. Shippable will also build and run pull requests. When that process
has completed, it will notify a developer in the way it has been configured to do so — for example, by sending an
email containing the build results (showing success or failure), or by posting a message on an IRC channel. It can be
configured to build project on a range of different Development Platforms.
Contents
• Shippable
– Integration
– Examples
Integration
Please put shippable.yml or .travis.yml to the root directory of the GitHub repository.
language: python
python:
- "2.7"
env:
- PLATFORMIO_CI_SRC=path/to/source/file.c
- PLATFORMIO_CI_SRC=path/to/source/file.ino
- PLATFORMIO_CI_SRC=path/to/source/directory
install:
- pip install -U platformio
script:
- platformio ci --board=<ID_1> --board=<ID_2> --board=<ID_N>
For more details as for PlatformIO build process please look into platformio ci command.
Examples
1. Integration for USB_Host_Shield_2.0 project. The shippable.yml or .travis.yml configuration file:
language: python
python:
- "2.7"
env:
- PLATFORMIO_CI_SRC=examples/Bluetooth/PS3SPP/PS3SPP.ino
- PLATFORMIO_CI_SRC=examples/pl2303/pl2303_gps/pl2303_gps.ino
install:
- pip install -U platformio
490
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
˓→
- wget https://github.com/xxxajk/spi4teensy3/archive/master.zip -O /tmp/
spi4teensy3.zip
- unzip /tmp/spi4teensy3.zip -d /tmp
script:
- platformio ci --lib="." --lib="/tmp/spi4teensy3-master" --board=uno -˓→board=teensy31 --board=due
Travis CI
Travis CI officially supports PlatformIO for Embedded Builds.
Travis CI is an open-source hosted, distributed continuous integration service used to build and test projects hosted at
GitHub.
Travis CI is configured by adding a file named .travis.yml, which is a YAML format text file, to the root directory
of the GitHub repository.
Travis CI automatically detects when a commit has been made and pushed to a GitHub repository that is using Travis
CI, and each time this happens, it will try to build the project using platformio ci command. This includes commits
to all branches, not just to the master branch. Travis CI will also build and run pull requests. When that process
has completed, it will notify a developer in the way it has been configured to do so — for example, by sending an
email containing the build results (showing success or failure), or by posting a message on an IRC channel. It can be
configured to build project on a range of different Development Platforms.
Contents
• Travis CI
– Integration
– Project as a library
– Library dependencies
* Install dependent library using Library Manager
* Manually download dependent library and include in build process via --lib option
– Custom Build Flags
– Advanced configuration
– Unit Testing
– Examples
1.17. Continuous Integration
491
PlatformIO Documentation, Release 3.4.1
Integration
Please make sure to read Travis CI Getting Started and general build configuration guides first.
Note:
If you are going to use PlatformIO PIO Unit Testing or PIO Remote™ you will need to define
PLATFORMIO_AUTH_TOKEN environment variable in project settings. See Defining Variables in Repository Settings guide.
PlatformIO is written in Python and is recommended to be run within Travis CI Python isolated environment:
language: python
python:
- "2.7"
# Cache PlatformIO packages using Travis CI container-based infrastructure
sudo: false
cache:
directories:
- "~/.platformio"
env:
- PLATFORMIO_CI_SRC=path/to/test/file.c
- PLATFORMIO_CI_SRC=examples/file.ino
- PLATFORMIO_CI_SRC=path/to/test/directory
install:
- pip install -U platformio
script:
- platformio ci --board=<ID_1> --board=<ID_2> --board=<ID_N>
Then perform steps 1, 2 and 4 from http://docs.travis-ci.com/user/getting-started/
For more details as for PlatformIO build process please look into platformio ci.
Project as a library
When project is written as a library (where own examples or testing code use it), please use --lib="." option for
platformio ci command
script:
- platformio ci --lib="." --board=<ID_1> --board=<ID_2> --board=<ID_N>
Library dependencies
There 2 options to test source code with dependent libraries:
Install dependent library using Library Manager
install:
- pip install -U platformio
#
492
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
# Libraries from PlatformIO Library Registry:
#
# http://platformio.org/lib/show/1/OneWire
- platformio lib -g install 1
Manually download dependent library and include in build process via --lib option
install:
- pip install -U platformio
# download library to the temporary directory
- wget https://github.com/PaulStoffregen/OneWire/archive/master.zip -O /tmp/
˓→onewire_source.zip
- unzip /tmp/onewire_source.zip -d /tmp/
script:
- platformio ci --lib="/tmp/OneWire-master" --board=<ID_1> --board=<ID_2> --board=
˓→<ID_N>
Custom Build Flags
PlatformIO allows to specify own build flags using PLATFORMIO_BUILD_FLAGS environment
env:
- PLATFORMIO_CI_SRC=path/to/test/file.c PLATFORMIO_BUILD_FLAGS="-D SPECIFIC_
˓→MACROS_PER_TEST_ENV -I/extra/inc"
- PLATFORMIO_CI_SRC=examples/file.ino
- PLATFORMIO_CI_SRC=path/to/test/directory
install:
- pip install -U platformio
- export PLATFORMIO_BUILD_FLAGS="-D GLOBAL_MACROS_FOR_ALL_TEST_ENV"
For the more details, please follow to available build flags/options.
Advanced configuration
PlatformIO allows to configure multiple build environments for the single source code using Project Configuration
File platformio.ini.
Instead of --board option, please use platformio ci --project-conf
script:
- platformio ci --project-conf=/path/to/platoformio.ini
Unit Testing
See PlatformIO Remote Unit Testing Example.
1.17. Continuous Integration
493
PlatformIO Documentation, Release 3.4.1
Examples
1. Custom build flags
language: python
python:
- "2.7"
# Cache PlatformIO packages using Travis CI container-based infrastructure
sudo: false
cache:
directories:
- "~/.platformio"
env:
- PLATFORMIO_CI_SRC=examples/acm/acm_terminal
- PLATFORMIO_CI_SRC=examples/Bluetooth/WiiIRCamera PLATFORMIO_BUILD_FLAGS="˓→DWIICAMERA"
- PLATFORMIO_CI_SRC=examples/ftdi/USBFTDILoopback
- PLATFORMIO_CI_SRC=examples/Xbox/XBOXUSB
# - ...
install:
- pip install -U platformio
#
#
#
#
#
-
Libraries from PlatformIO Library Registry:
http://platformio.org/lib/show/416/TinyGPS
http://platformio.org/lib/show/417/SPI4Teensy3
platformio lib -g install 416 417
script:
- platformio ci --board=uno --board=teensy31 --board=due --lib="."
• Configuration file: https://github.com/felis/USB_Host_Shield_2.0/blob/master/.travis.yml
• Build History: https://travis-ci.org/felis/USB_Host_Shield_2.0
2. Dependency on external libraries
language: python
python:
- "2.7"
# Cache PlatformIO packages using Travis CI container-based infrastructure
sudo: false
cache:
directories:
- "~/.platformio"
env:
- PLATFORMIO_CI_SRC=examples/backSoon/backSoon.ino
- PLATFORMIO_CI_SRC=examples/etherNode/etherNode.ino
# install:
- pip install -U platformio
494
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
- wget https://github.com/jcw/jeelib/archive/master.zip -O /tmp/jeelib.zip
- unzip /tmp/jeelib.zip -d /tmp
˓→
- wget https://github.com/Rodot/Gamebuino/archive/master.zip
zip
- unzip /tmp/gamebuino.zip -d /tmp
-O /tmp/gamebuino.
script:
- platformio ci --lib="." --lib="/tmp/jeelib-master" --lib="/tmp/Gamebuino-master/
˓→libraries/tinyFAT" --board=uno --board=megaatmega2560
• Configuration file: https://github.com/jcw/ethercard/blob/master/.travis.yml
• Build History: https://travis-ci.org/jcw/ethercard
3. Dynamic testing of the boards
language: python
python:
- "2.7"
# Cache PlatformIO packages using Travis CI container-based infrastructure
sudo: false
cache:
directories:
- "~/.platformio"
env:
- PLATFORMIO_CI_SRC=examples/TimeArduinoDue PLATFORMIO_CI_EXTRA_ARGS="--board=due"
- PLATFORMIO_CI_SRC=examples/TimeGPS
- PLATFORMIO_CI_SRC=examples/TimeNTP
- PLATFORMIO_CI_SRC=examples/TimeTeensy3 PLATFORMIO_CI_EXTRA_ARGS="-˓→board=teensy31"
# - ...
install:
- pip install -U platformio
- rm -rf ./linux
#
# Libraries from PlatformIO Library Registry:
#
# http://platformio.org/lib/show/416/TinyGPS
- platformio lib -g install 416 421 422
script:
- platformio ci --lib="." --board=uno --board=teensy20pp $PLATFORMIO_CI_EXTRA_ARGS
• Configuration file: https://github.com/ivankravets/Time/blob/master/.travis.yml
• Build History: https://travis-ci.org/ivankravets/Time
4. Advanced configuration with extra project options and libraries
language: python
python:
- "2.7"
# Cache PlatformIO packages using Travis CI container-based infrastructure
1.17. Continuous Integration
495
PlatformIO Documentation, Release 3.4.1
sudo: false
cache:
directories:
- "~/.platformio"
env:
- PLATFORMIO_CI_SRC=examples/Boards_Bluetooth/Adafruit_Bluefruit_LE
- PLATFORMIO_CI_SRC=examples/Boards_Bluetooth/Arduino_101_BLE PLATFORMIO_CI_EXTRA_
˓→ARGS="--board=genuino101"
- PLATFORMIO_CI_SRC=examples/Boards_USB_Serial/Blue_Pill_STM32F103C PLATFORMIO_CI_
˓→EXTRA_ARGS="--board=bluepill_f103c8 --project-option='framework=arduino'"
- PLATFORMIO_CI_SRC=examples/Export_Demo/myPlant_ESP8266 PLATFORMIO_CI_EXTRA_ARGS=
˓→"--board=nodemcuv2 --project-option='lib_ignore=WiFi101'"
# - ...
install:
- pip install -U platformio
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
Libraries from PlatformIO Library Registry:
http://platformio.org/lib/show/44/Time
http://platformio.org/lib/show/419/SimpleTimer
http://platformio.org/lib/show/17/Adafruit-CC3000
http://platformio.org/lib/show/28/SPI4Teensy3
http://platformio.org/lib/show/91/UIPEthernet
http://platformio.org/lib/show/418/WildFireCore
http://platformio.org/lib/show/420/WildFire-CC3000
http://platformio.org/lib/show/65/WiFlyHQ
http://platformio.org/lib/show/19/Adafruit-DHT
http://platformio.org/lib/show/299/WiFi101
http://platformio.org/lib/show/259/BLEPeripheral
http://platformio.org/lib/show/177/Adafruit_BluefruitLE_nRF51
- platformio lib -g install 17 28 91 418 419 420 65 44 19 299 259 177 https://
github.com/vshymanskyy/BlynkESP8266.git https://github.com/cmaglie/FlashStorage.git
˓→https://github.com/michael71/Timer5.git
˓→
script:
- make travis-build
• Configuration file: https://github.com/blynkkk/blynk-library/blob/master/.travis.yml
• Build History: https://travis-ci.org/blynkkk/blynk-library
Articles about us
Note: If you’ve written article about PlatformIO and would like it listed on this page, please edit this page.
Here are recent articles/reviews about PlatformIO:
496
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
2017
• Jun 23, 2017 - Naresh Krish - Home Automation Using Wiscore, OpenHab and PlatformIO
• Apr 12, 2017 - Jane Elizabeth - Let’s talk IoT: PlatformIO puts developers back in the driver’s seat
• Mar 13, 2017 - Ryan Mulligan - Continuous testing for Arduino libraries using PlatformIO and Travis CI
• Feb 23, 2017 - Bastiaan Visee - Using PlatformIO for your Arduino projects
• Jan 12, 2017 - Tiest van Gool - OTA: PlatformIO and ESP8266
2016
• Dec 13, 2016 - Dr. Patrick Mineault - Multi-Arduino projects with PlatformIO
• Dec 08, 2016 - Cuong Tran Viet - PlatformIO is a solution
• Nov 10, 2016 - PiGreek - PlatformIO the new Arduino IDE ?!
• Oct 31, 2016 - Ricardo Quesada - Retro Challenge: announcing Commodore Home
• Oct 3, 2016 - Xose Pérez - Using the new Bean Loader CLI from PlatformIO
• Sep 20, 2016 - The Linux Foundation - 21 Open Source Projects for IoT
• Sep 19, 2016 - Doc Walker - How to automatically test build Arduino libraries
• Sep 18, 2016 - Kadda Sahnine - LoRaWAN network practice with Objenious, PlatformIO and Node-RED
• Sep 13, 2016 - Xose Pérez MQTT LED Matrix Display
• Sep 12, 2016 - Pedro Minatel - OTA – Como programar o ESP8266 pelo WiFi no platformIO (OTA programming for ESP8266 via Wi-Fi using PlatformIO, Portuguese)
• Sep 2, 2016 - Xose Pérez ESP8266: Optimizing files for SPIFFS with Gulp
• Aug 28, 2016 - Tom Parker Using the BBC micro:bit with PlatformIO
• Aug 24, 2016 - Primal Cortex Cloud based continuous integration and delivery for IOT using PlatformIO
• Aug 18, 2016 - Primal Cortex - Installing PlatformIO on Arch Linux
• Aug 14, 2016 - Rodrigo Castro - PlataformIO o comó usar Arduino con ATOM (Spanish)
• Jul 27, 2016 - Francesco Azzola - Arduino Alternative IDE: PlatformIO IoT integrated platform
• Jul 26, 2016 - Embedded Systems Laboratory - PlatformIO IDE Arduino ESP8266 (Get started with PlatformIO IDE for Arduino board and ESP8266, Thai)
• Jul 15, 2016 - Jaime - ESP8266 Mobile Rick Roll Captive Portal
• Jul 5, 2016 - Ivan Kravets, Ph.D. - Explore the new development instruments for Arduino with PlatformIO
ecosystem
• Jul 5, 2016 - Belinda - Monte Bianco Arduino Developer Summit
• Jul 1, 2016 - Tam Hanna - Mikrocontroller-Gipfel in den Alpen: Arduino Developer Summit, Tag eins (Microcontroller peaks in the Alps: Arduino Developer Summit, Day One, German)
• Jun 14, 2016 - Glyn Hudson - OpenEnergyMonitor Part 2/3: Firmware Continuous Test & Build
• Jun 13, 2016 - Daniel Eichhorn - New Weather Station Demo on Github
• Jun 12, 2016 - Glyn Hudson - OpenEnergyMonitor Part 1/3: PlatformIO open-source embedded development
ecosystem
1.18. Articles about us
497
PlatformIO Documentation, Release 3.4.1
• Jun 12, 2016 - Uli Wolf - Nutzung von PlatformIO im Atom Editor zur Entwicklung von Arduino Code (Use
PlatformIO and Atom Editor to develop Arduino code, German)
• Jun 3, 2016 - Daniel Eichhorn - ESP8266: Continuous Delivery Pipeline – Push To Production
• May 30, 2016 - Ron Moerman - IoT Development with PlatformIO
• May 29, 2016 - Chris Synan - Reverse Engineer RF Remote Controller for IoT!
• May 26, 2016 - Charlie Key - 7 Best Developer Tools To Build Your NEXT Internet of Things Application
• May 22, 2016 - Pedro Minatel - Estação meteorológica com ESP8266 (Weather station with ESP8266, Portuguese)
• May 16, 2016 - Pedro Minatel - Controle remoto WiFi com ESP8266 (WiFi remote control using ESP8266,
Portuguese)
• May 11, 2016 - Jo Vandeginste - Using PlatformIO to compile for Jeelabs’ Jeenode Micro
• May 08, 2016 - Radoslaw Bob - Touch controlled buzzer (Nodemcu ESP8266)
• May 06, 2016 - Jean Roux - The IoT building blocks I use for my home-automation projects
• May 05, 2016 - Ivan Kravets, Ph.D. / Eclipse Virtual IoT Meetup - PlatformIO: a cross-platform IoT solution
to build them all!
• May 01, 2016 - Pedro Minatel - PlatformIO – Uma alternativa ao Arduino IDE (PlatformIO - An alternative to
the Arduino IDE, Portuguese)
• Apr 23, 2016 - Al Williams - Hackaday: Atomic Arduino (and Other) Development
• Apr 16, 2016 - Sathittham Sangthong - [PlatformIO] PlatformIO Arduino IDE (Let’s play together with
PlatformIO IDE [alternative to Arduino IDE], Thai)
• Apr 15, 2016 - Daniel Eichhorn - ESP8266: Offline Debugging with the Platformio Environment
• Apr 11, 2016 - Matjaz Trcek - Top 5 Arduino integrated development environments
• Apr 06, 2016 - Aleks - PlatformIO ausprobiert (Tried PlatformIO, German)
• Apr 02, 2016 - Diego Pinto - Você tem coragem de abandonar a IDE do Arduino? PlatformIO + Atom (Do you
dare to leave the Arduino IDE? PlatformIO + Atom, Portuguese)
• Mar 30, 2016 - Brandon Cannaday - Getting Started with PlatformIO and ESP8266 NodeMcu
• Mar 29, 2016 - Pablo Peñalve - PlatformIO + Geany + Raspberry PI, Spanish
• Mar 24, 2016 - NAzT - PlatformIO
Library, Thai)
Arduino Library (PlatformIO and advanced development for Arduino
• Mar 16, 2016 - Jakub Skořepa - Instalace PlatformIO (PlatformIO IDE Installation, Czech)
• Mar 12, 2016 - Peter Marks - PlatformIO, the Arduino IDE for programmers
• Mar 12, 2016 - Richard Arthurs - Getting Started With PlatformIO
• Mar 07, 2016 - Joran Jessurun - Nieuwe wereld met PlatformIO (New world with PlatformIO, Dutch)
• Mar 05, 2016 - brichacek.net - PlatformIO – otevřený ekosystém pro vývoj IoT (PlatformIO – an open source
ecosystem for IoT development, Czech)
• Mar 04, 2016 - Ricardo Vega - Programa tu Arduino desde Atom (Program your Arduino from Atom, Spanish)
• Feb 28, 2016 - Alex Bloggt - PlatformIO vorgestellt (Introduction to PlatformIO IDE, German)
• Feb 25, 2016 - NutDIY - PlatformIO Blink On Nodemcu Dev Kit V1.0 (Thai)
• Feb 23, 2016 - Ptarmigan Labs - ESP8266 Over The Air updating – what are the options?
498
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
• Feb 22, 2016 - Grzegorz Hołdys - How to Integrate PlatformIO with Netbeans
• Feb 19, 2016 - Embedds - Develop easier with PlatformIO ecosystem
• Feb 13, 2016 - Robert Cudmore - Programming an arduino with PlatformIO
• Jan 24, 2016 - Sergey Prilukin - How to use IntelliJ IDEA to develop and upload software for micro controllers
like Arduino
• Jan 16, 2016 - Dani Eichhorn - ESP8266 Arduino IDE Alternative: PlatformIO
• Jan 11, 2016 - David Mills, Ph.D. - STM NUCLEOF401RE TIMER IO
• Jan 05, 2016 - Julien Rodrigues - Internet Of Things: The IDE scandal
2015
• Dec 22, 2015 - Jan Penninkhof - Over-the-Air ESP8266 programming using PlatformIO
• Dec 15, 2015 - stastaka - PlatformIO (Use a custom board for PlatformIO, Japanese)
• Dec 08, 2015 - Piotr Król - Using PlatformIO with TI MSP430 LunchPads
• Dec 01, 2015 - Michał Seroczyński - Push Notification from Arduino Yún with motion sensor
• Dec 01, 2015 - JetBrains CLion Blog - C++ Annotated: Fall 2015. Arduino Support in CLion using PlatformIO
• Dec 01, 2015 - Tateno Yuichi - ESP8266 CUI (Develop a ESP8266 in CUI, Japanese)
• Nov 29, 2015 - Keith Hughes - Using PlatformIO for Embedded Projects
• Nov 22, 2015 - Michał Seroczyński - Using PlatformIO to get started with Arduino in CLion IDE
• Nov 09, 2015 - ÁLvaro García Gómez - Programar con Arduino “The good way” (Programming with Arduino
“The good way”, Spanish)
• Nov 06, 2015 - nocd5 - PlatformIOmbedSTM32 Nucleomruby (Use mruby in the offline build for STM32
Nucleo board with mbed and PlatformIO, Japanese)
• Oct 21, 2015 - Vittorio Zaccaria - Using a cheap STM32 Nucleo to teach remote sensor monitoring
• Oct 18, 2015 - Nico Coetzee - First Arduino I2C Experience with PlatformIO
• Oct 10, 2015 - Floyd Hilton - Programming Arduino with Atom
• Oct 01, 2015 - Mistan - Compile and Upload Arduino Sketch with PlatformIO for Raspberry Pi Running Arch
Linux
• Sep 30, 2015 - Jay Wiggins - PlatformIO Investigation
• Sep 01, 2015 - Thomas P. Weldon, Ph.D. - Improvised MBED FRDM-K64F Eclipse/PlatformIO Setup and
Software Installation
• Aug 08, 2015 - Josh Glendenning - Armstrap Eagle and PlatformIO
• Aug 01, 2015 - Russell Davis - PlatformIO on the Raspberry Pi
• Jul 25, 2015 - DinoTools - Erste Schritte mit PlatformIO (Getting Started with PlatformIO, German)
• Jul 20, 2015 - Eli Fatsi - Arduino Development in Atom Editor
• Jul 14, 2015 - ElbinarIO - Programar para Arduino y otros microcontroladores desde la linea de comandos
(Program Arguino and other microcontrollers from the command line, Spanish)
• Jul 11, 2015 - TrojanC - Learning Arduino GitHub Repository
• Jul 07, 2015 - Sho Hashimoto - PlatformIOArduino(Arduino development in PlatformIO, Japanese)
1.18. Articles about us
499
PlatformIO Documentation, Release 3.4.1
• Jun 02, 2015 - Alejandro Guirao Rodríguez - Discovering PlatformIO: The RaspberryPi / Arduino combo kit
is a winner option when prototyping an IoT-style project
• May 17, 2015 - S.S - Arduino : vim + platformio (Arduino development at the command line: VIM + PlatformIO, Japanese)
• May 11, 2015 - IT Hare - From Web Developer to Embedded One: Interview with Ivan Kravets, The Guy
Behind PlatformIO. Part II
• May 4, 2015 - IT Hare - From Web Developer to Embedded One: Interview with Ivan Kravets, The Guy Behind
PlatformIO. Part I
• Apr 17, 2015 - Michael Ball - PlatformIO - A Cross-Platform Code Builder and Missing Library Manager
• Mar 23, 2015 - Atmel - Cross-board and cross-vendor embedded development with PlatformIO
• Mar 22, 2015 - Mark VandeWettering - Discovered a new tool for embedded development: PlatformIO
• Feb 25, 2015 - Hendrik Putzek - Use your favourite IDE together with Arduino
2014
• Oct 7, 2014 - Ivan Kravets, Ph.D. - Integration of PlatformIO library manager to Arduino and Energia IDEs
• Jun 20, 2014 - Ivan Kravets, Ph.D. - Building and debugging Atmel AVR (Arduino-based) project using Eclipse
IDE+PlatformIO
• Jun 17, 2014 - Ivan Kravets, Ph.D. - How was PlatformIO born or why I love Python World
Frequently Asked Questions
Note: We have a big database with Frequently Asked Questions in our Community Forums. Please have a look at it.
Contents
• General
– What is PlatformIO?
– What is .pioenvs directory
– Command completion in Terminal
* Bash completion
* ZSH completion
• Install Python Interpreter
• Install PIO Core Shell Commands
– Unix
– Windows
• Convert Arduino file to C++ manually
• PlatformIO IDE
500
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
• Before/Pre and After/Post build actions
• Troubleshooting
– Installation
* Multiple PIO Cores in a system
* ‘platformio’ is not recognized as an internal or external command
* [Errno 1] Operation not permitted
* Windows AttributeError: ‘module’ object has no attribute ‘packages’
* PlatformIO: command not found || An error “pkg_resources.DistributionNotFound”
– Building
* UnicodeDecodeError: Non-ASCII characters found in build environment
* ARM toolchain: cc1plus: error while loading shared libraries
* Archlinux: libncurses.so.5: cannot open shared object file
* Monitoring a serial port breaks upload
General
What is PlatformIO?
Please refer to What is PlatformIO?
What is .pioenvs directory
Please refer to envs_dir.
Command completion in Terminal
Bash completion
Bash completion support will complete subcommands and parameters. To enable Bash completion for platformio
subcommands you need to put into your .bashrc:
eval "$(_PLATFORMIO_COMPLETE=source platformio)"
eval "$(_PLATFORMIO_COMPLETE=source pio)"
ZSH completion
To enable zsh completion please run these commands:
autoload bashcompinit && bashcompinit
eval "$(_PLATFORMIO_COMPLETE=source platformio)"
eval "$(_PLATFORMIO_COMPLETE=source pio)"
1.19. Frequently Asked Questions
501
PlatformIO Documentation, Release 3.4.1
Note: For permanent command completion you need to place commands above to ~/.bashrc or ~/.zshrc file.
Install Python Interpreter
PlatformIO Core is written in Python that is installed by default on the all popular OS except Windows.
Windows Users, please Download the latest Python 2.7.x and install it. DON’T FORGET to select Add python.
exe to Path feature on the “Customize” stage, otherwise python command will not be available.
Install PIO Core Shell Commands
PlatformIO Core consists of 2 standalone tools in a system:
• platformio or pio (short alias) - User Guide
• piodebuggdb - alias of platformio debug
If you have PlatformIO IDE already installed, you do not need to install PlatformIO Core separately. Just link these
tools with your shell:
502
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Unix
Please open system Terminal paste these commands (MAY require administrator access sudo)
ln -s ~/.platformio/penv/bin/platformio /usr/local/bin/platformio
ln -s ~/.platformio/penv/bin/pio /usr/local/bin/pio
ln -s ~/.platformio/penv/bin/piodebuggdb /usr/local/bin/piodebuggdb
Windows
Please read one of these instructions How do I set or change the PATH system variable?
You need to edit system environment variable called Path and append C:\Users\{username}\.
platformio\penv\Scripts; path in the beginning of a list (please replace {username} with your account
name).
Convert Arduino file to C++ manually
Some Cloud & Standalone IDE doesn’t support Arduino files (*.ino and .pde) because they are not valid C/C++
based source files:
1. Missing includes such as #include <Arduino.h>
2. Function declarations are omitted.
In this case, code completion and code linting does not work properly or disabled. To avoid this issue you can manually
convert your INO files to CPP.
For example, we have the next Demo.ino file:
void setup () {
someFunction(13);
}
void loop() {
delay(1000);
}
void someFunction(int num) {
}
Let’s convert it to Demo.cpp:
1. Add #include <Arduino.h> at the top of the source file
2. Declare each custom function (excluding built-in, such as setup and loop) before it will be called.
The final Demo.cpp:
#include <Arduino.h>
void someFunction(int num);
void setup () {
someFunction(13);
}
void loop() {
1.19. Frequently Asked Questions
503
PlatformIO Documentation, Release 3.4.1
delay(1000);
}
void someFunction(int num) {
}
PlatformIO IDE
Please refer to PlatformIO IDE Frequently Asked Questions.
Before/Pre and After/Post build actions
PlatformIO Build System has rich API that allows to attach different pre-/post actions (hooks). See features of extra_scripts option for Project Configuration File platformio.ini.
Troubleshooting
Installation
Multiple PIO Cores in a system
Multiple standalone PlatformIO Core in a system could lead to a different issues. We highly recommend to keep one
instance of PIO Core or use built-in PIO Core in PlatformIO IDE:
• PlatformIO IDE for Atom built-in PlatformIO Core
Menu PlatformIO: Settings > PlatformIO IDE > Use
Finally, if you have a standalone PlatformIO Core in a system, please open system Terminal (not PlatformIO IDE
Terminal) and uninstall obsolete PIO Core:
pip uninstall platformio
# if you used MacOS "brew"
brew uninstall platformio
If you need to have PlatformIO Core globally in a system, please Install PIO Core Shell Commands.
‘platformio’ is not recognized as an internal or external command
If you use PlatformIO IDE, please check in PlatformIO IDE Settings that “Use built-in PIO Core” is enabled.
If you modify system environment variable PATH in your Bash/Fish/ZSH profile, please do not override global
PATH. This line export PATH="/my/custom/path" is incorrect. Use export PATH="/my/custom/
path":$PATH instead.
[Errno 1] Operation not permitted
Answered in issue #295.
504
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Windows AttributeError: ‘module’ object has no attribute ‘packages’
Answered in issue #252.
PlatformIO: command not found || An error “pkg_resources.DistributionNotFound”
Please upgrade SetupTools package:
[sudo] pip uninstall setuptools
[sudo] pip install setuptools
# Then re-install PlatformIO
[sudo] pip uninstall platformio
[sudo] pip install platformio
Building
UnicodeDecodeError: Non-ASCII characters found in build environment
KNOWN ISSUE. PlatformIO Core currently does not support projects which contain non-ASCII characters (codes)
in a full path or depend on the libraries which use non-ASCII characters in their names.
TEMPORARY SOLUTION
1. Use PlatformIO IDE, it will automatically install PlatformIO Core in a root of system disk (%DISK%/.
platformio) and avoid an issue when system User contains non-ASCII characters
2. Do not use non-ASCII characters in project folder name or its parent folders.
Also, if you want to place PlatformIO Core in own location, see:
• Set PLATFORMIO_HOME_DIR environment variable with own path
• Configure custom location per project using home_dir option in Project Configuration File platformio.ini.
ARM toolchain: cc1plus: error while loading shared libraries
See related answers for error while loading shared libraries.
Archlinux: libncurses.so.5: cannot open shared object file
Answered in issue #291.
Monitoring a serial port breaks upload
Answered in issue #384.
1.19. Frequently Asked Questions
505
PlatformIO Documentation, Release 3.4.1
Release Notes
PlatformIO 3.0
3.4.1 (2017-08-02)
• Pre/Post extra scripting for advanced control of PIO Build System (issue #891)
• New lib_archive option to control library archiving and linking behaviour (issue #993)
• Add “inc” folder automatically to CPPPATH when “src” is available (works for project and library) (issue #1003)
• Use a root of library when filtering source code using library.json and srcFilter field
• Added monitor_* options to white-list for Project Configuration File “platformio.ini” (issue #982)
• Do not ask for board ID when initialize project for desktop platform
• Handle broken PIO Core state and create new one
• Fixed an issue with a custom transport for PIO Unit Testing when multiple tests are present
• Fixed an issue when can not upload firmware to SAM-BA based board (Due)
3.4.0 (2017-06-26)
• PIO Unified Debugger
– “1-click” solution, zero configuration
– Support for 100+ embedded boards
– Multiple architectures and development platforms
– Windows, MacOS, Linux (+ARMv6-8)
– Built-in into PlatformIO IDE for Atom and PlatformIO IDE for VScode
– Integration with Eclipse and Sublime Text
• Filter PIO Unit Testing tests using a new test_filter option in Project Configuration File “platformio.ini”
or platformio test –filter command (issue #934)
• Custom test_transport for PIO Unit Testing Engine
• Configure Serial Port Monitor in Project Configuration File “platformio.ini” (issue #787)
• New monitor target which allows to launch Serial Monitor automatically after successful “build” or “upload”
operations (issue #788)
• Project generator for VIM
• Multi-line support for the different options in Project Configuration File “platformio.ini”, such as:
build_flags, build_unflags, etc. (issue #889)
• Handle dynamic SRC_FILTER environment variable from library.json extra script
• Notify about multiple installations of PIO Core (issue #961)
• Improved auto-detecting of mbed-enabled media disks
• Automatically update Git-submodules for development platforms and libraries that were installed from repository
• Add support for .*cc extension (issue #939)
506
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
• Handle env_default in Project Configuration File “platformio.ini” when re-initializing a project (issue #950)
• Use root directory for PIO Home when path contains non-ascii characters (issue #951, issue #952)
• Don’t warn about known boards_dir option (pull #949)
• Escape non-valid file name characters when installing a new package (library) (issue #985)
• Fixed infinite dependency installing when repository consists of multiple libraries (issue #935)
• Fixed linter error “unity.h does not exist” for Unit Testing (issue #947)
• Fixed issue when Library Dependency Finder (LDF) does not handle custom src_dir (issue #942)
• Fixed cloning a package (library) from a private Git repository with custom user name and SSH port (issue
#925)
3.3.1 (2017-05-27)
• Hotfix for recently updated Python Requests package (2.16.0)
3.3.0 (2017-03-27)
• PlatformIO Library Registry statistics with new pio lib stats command
– Recently updated and added libraries
– Recent and popular keywords
– Featured libraries (today, week, month)
• List built-in libraries based on development platforms with a new pio lib builtin command
• Show detailed info about a library using pio lib show command (issue #430)
• List supported frameworks, SDKs with a new pio platform frameworks command
• Visual Studio Code extension for PlatformIO (issue #619)
• Added new options --no-reset, --monitor-rts and --monitor-dtr to pio test command (allows to
avoid automatic board’s auto-reset when gathering test results)
• Added support for templated methods in *.ino to *.cpp converter (pull #858)
• Package version as “Repository URL” in manifest of development version ("version":
github.com/user/repo.git")
"https://
• Produce less noisy output when -s/--silent options are used for platformio init and platformio run commands (issue #850)
• Use C++11 by default for CLion IDE based projects (pull #873)
• Escape project path when Glob matching is used
• Do not overwrite project configuration variables when system environment variables are set
• Handle dependencies when installing non-registry package/library (VCS, archive, local folder) (issue #913)
• Fixed package installing with VCS branch for Python 2.7.3 (issue #885)
3.2.1 (2016-12-07)
• Changed default LDF Mode from chain+ to chain
1.20. Release Notes
507
PlatformIO Documentation, Release 3.4.1
3.2.0 (2016-12-07)
• PIO Remote™. Your devices are always with you!
– Over-The-Air (OTA) Device Manager
– OTA Serial Port Monitor
– OTA Firmware Updates
– Continuous Deployment
– Continuous Delivery
• Integration with Cloud IDEs
– Cloud9
– Codeanywhere
– Eclipse Che
• PIO Account and PLATFORMIO_AUTH_TOKEN environment variable for CI systems (issue #808, issue
#467)
• Inject system environment variables to configuration settings in Project Configuration File “platformio.ini” (issue #792)
• Custom boards per project with boards_dir option in Project Configuration File “platformio.ini” (issue #515)
• Unix shell-style wildcards for upload_port (issue #839)
• Refactored Library Dependency Finder (LDF) C/C++ Preprocessor for conditional syntax (#ifdef, #if,
#else, #elif, #define, etc.) (issue #837)
• Added new LDF Modes: chain+ and deep+ and set chain+ as default
• Added global lib_extra_dirs option to [platformio] section for Project Configuration File “platformio.ini” (issue #842)
• Enabled caching by default for API requests and Library Manager (see enable_cache setting)
• Native integration with VIM/Neovim using neomake-platformio plugin
• Changed a default exit combination for Device Monitor from Ctrl+] to Ctrl+C
• Improved detecting of ARM mbed media disk for uploading
• Improved Project Generator for CLion IDE when source folder contains nested items
• Improved handling of library dependencies specified in library.json manifest (issue #814)
• Improved Library Dependency Finder (LDF) for circular dependencies
• Show vendor version of a package for platformio platform show command (issue #838)
• Fixed unable to include SSH user in lib_deps repository url (issue #830)
• Fixed merging of ”.gitignore” files when re-initialize project (issue #848)
• Fixed issue with PATH auto-configuring for upload tools
• Fixed 99-platformio-udev.rules checker for Linux OS
508
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
3.1.0 (2016-09-19)
• New! Dynamic variables/templates for Project Configuration File “platformio.ini” (issue #705)
• Summary about processed environments (issue #777)
• Implemented LocalCache system for API and improved a work in off-line mode
• Improved Project Generator when custom --project-option is passed to platformio init command
• Deprecated lib_force option, please use lib_deps instead
• Return valid exit code from plaformio test command
• Fixed Project Generator for CLion IDE using Windows OS (issue #785)
• Fixed SSL Server-Name-Indication for Python < 2.7.9 (issue #774)
3.0.1 (2016-09-08)
• Disabled temporary SSL for PlatformIO services (issue #772)
3.0.0 (2016-09-07)
• PlatformIO Plus
– Local and Embedded Unit Testing (issue #408, issue #519)
• Decentralized Development Platforms
– Development platform manifest “platform.json” and open source development platforms
– Semantic Versioning for platform commands, development platforms and dependent packages
– Custom package repositories
– External embedded board configuration files, isolated build scripts (issue #479)
– Embedded Board compatibility with more than one development platform (issue #456)
• Library Manager 3.0
– Project dependencies per build environment using lib_deps option (issue #413)
– Semantic Versioning for library commands and dependencies (issue #410)
– Multiple library storages: Project’s Local, PlatformIO’s Global or Custom (issue #475)
– Install library by name (issue #414)
– Depend on a library using VCS URL (GitHub, Git, ARM mbed code registry, Hg, SVN) (issue #498)
– Strict search for library dependencies (issue #588)
– Allowed library.json to specify sources other than PlatformIO’s Repository (issue #461)
– Search libraries by headers/includes with platformio lib search --header option
• New Intelligent Library Build System
– Library Dependency Finder that interprets C/C++ Preprocessor conditional macros with deep search behavior
– Check library compatibility with project environment before building (issue #415)
– Control Library Dependency Finder for compatibility using lib_compat_mode option
1.20. Release Notes
509
PlatformIO Documentation, Release 3.4.1
– Custom library storages/directories with lib_extra_dirs option (issue #537)
– Handle extra build flags, source filters and build script from library.json (issue #289)
– Allowed to disable library archiving (*.ar) (issue #719)
– Show detailed build information about dependent libraries (issue #617)
– Support for the 3rd party manifests (Arduino IDE “library.properties” and ARM mbed “module.json”)
• Removed enable_prompts setting. Now, all PlatformIO CLI is non-blocking!
• Switched to SSL PlatformIO API
• Renamed platformio serialports command to platformio device
• Build System: Attach custom Before/Pre and After/Post actions for targets (issue #542)
• Allowed passing custom project configuration options to platformio ci and platformio init commands using -O, --project-option.
• Print human-readable information when processing environments without -v, --verbose option (issue
#721)
• Improved INO to CPP converter (issue #659, issue #765)
• Added license field to library.json (issue #522)
• Warn about unknown options in project configuration file platformio.ini (issue #740)
• Fixed wrong line number for INO file when #warning directive is used (issue #742)
• Stopped supporting Python 2.6
PlatformIO 2.0
2.11.2 (2016-08-02)
• Improved support for Microchip PIC32 development platform and ChipKIT boards (issue #438)
• Added support for Pinoccio Scout board (issue #52)
• Added support for Teensy USB Features (HID, SERIAL_HID, DISK, DISK_SDFLASH, MIDI, etc.) (issue
#722)
• Switched to built-in GCC LwIP library for Espressif development platform
• Added support for local --echo for Serial Port Monitor (issue #733)
• Updated udev rules for the new STM32F407DISCOVERY boards (issue #731)
• Implemented firmware merging with base firmware for Nordic nRF51 development platform (issue #500, issue
#533)
• Fixed Project Generator for ESP8266 and ARM mbed based projects (resolves incorrect linter errors)
• Fixed broken LD Script for Element14 chipKIT Pi board (issue #725)
• Fixed firmware uploading to Atmel SAMD21-XPRO board using ARM mbed framework (issue #732)
510
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
2.11.1 (2016-07-12)
• Added support for Arduino M0, M0 Pro and Tian boards (issue #472)
• Added support for Microchip chipKIT Lenny board
• Updated Microchip PIC32 Arduino framework to v1.2.1
• Documented uploading of EEPROM data (from EEMEM directive)
• Added Rebuild C/C++ Project Index target to CLion and Eclipse IDEs
• Improved project generator for CLion IDE
• Added udev rules for OpenOCD CMSIS-DAP adapters (issue #718)
• Auto-remove project cache when PlatformIO is upgraded
• Keep user changes for .gitignore file when re-generate/update project data
• Ignore [platformio] section from custom project configuration file when platformio ci –project-conf command is used
• Fixed missed --boot flag for the firmware uploader for ATSAM3X8E Cortex-M3 MCU based boards (Arduino Due, etc) (issue #710)
• Fixed missing trailing \ for the source files list when generate project for Qt Creator IDE (issue #711)
• Split source files to HEADERS and SOURCES when generate project for Qt Creator IDE (issue #713)
2.11.0 (2016-06-28)
• New ESP8266-based boards: Generic ESP8285 Module, Phoenix 1.0 & 2.0, WifInfo
• Added support for Arduino M0 Pro board (issue #472)
• Added support for Arduino MKR1000 board (issue #620)
• Added support for Adafruit Feather M0, SparkFun SAMD21 and SparkFun SAMD21 Mini Breakout boards
(issue #520)
• Updated Arduino ESP8266 core for Espressif platform to 2.3.0
• Better removing unnecessary flags using build_unflags option (issue #698)
• Fixed issue with platformio init --ide command for Python 2.6
2.10.3 (2016-06-15)
• Fixed issue with platformio init --ide command
2.10.2 (2016-06-15)
• Added support for ST Nucleo L031K6 board to ARM mbed framework
• Process build_unflags option for ARM mbed framework
• Updated Intel ARC32 Arduino framework to v1.0.6 (issue #695)
• Improved a check of program size before uploading to the board
• Fixed issue with ARM mbed framework -u _printf_float and -u _scanf_float when parsing
$LINKFLAGS
1.20. Release Notes
511
PlatformIO Documentation, Release 3.4.1
• Fixed issue with ARM mbed framework and extra includes for the custom boards, such as Seeeduino Arch Pro
2.10.1 (2016-06-13)
• Re-submit a package to PyPI
2.10.0 (2016-06-13)
• Added support for emonPi, the OpenEnergyMonitor system (issue #687)
• Added support for SPL framework for STM32F0 boards (issue #683)
• Added support for Arduboy DevKit, the game system the size of a credit card
• Updated ARM mbed framework package to v121
• Check program size before uploading to the board (issue #689)
• Improved firmware uploading to Arduino Leonardo based boards (issue #691)
• Fixed issue with -L relative/path when parsing build_flags (issue #688)
2.9.4 (2016-06-04)
• Show udev warning only for the Linux OS while uploading firmware
2.9.3 (2016-06-03)
• Added support for Arduboy, the game system the size of a credit card
• Updated 99-platformio-udev.rules for Linux OS
• Refactored firmware uploading to the embedded boards with SAM-BA bootloader
2.9.2 (2016-06-02)
• Simplified Continuous Integration with AppVeyor (issue #671)
• Automatically add source directory to CPPPATH of Build System
• Added support for Silicon Labs SLSTK3401A (Pearl Gecko) and MultiTech mDot F411 ARM mbed based
boards
• Added support for MightyCore ATmega8535 board (issue #585)
• Added stlink as the default uploader for STM32 Discovery boards (issue #665)
• Use HTTP mirror for Package Manager in a case with SSL errors (issue #645)
• Improved firmware uploading to Arduino Leonardo/Due based boards
• Fixed bug with env_default when pio run -e is used
• Fixed issue with src_filter option for Windows OS (issue #652)
• Fixed configuration data for TI LaunchPads based on msp430fr4133 and msp430fr6989 MCUs (issue #676)
• Fixed issue with ARM mbed framework and multiple definition errors on FRDM-KL46Z board (issue #641)
• Fixed issue with ARM mbed framework when abstract class breaks compile for LPC1768 (issue #666)
512
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
2.9.1 (2016-04-30)
• Handle prototype pointers while converting *.ino to .cpp (issue #639)
2.9.0 (2016-04-28)
• Project generator for CodeBlocks IDE (issue #600)
• New Lattice iCE40 FPGA development platform with support for Lattice iCEstick FPGA Evaluation Kit and
BQ IceZUM Alhambra FPGA (issue #480)
• New Intel ARC 32-bit development platform with support for Arduino/Genuino 101 board (issue #535)
• New Microchip PIC32 development platform with support for 20+ different PIC32 based boards (issue #438)
• New RTOS and build Framework named Simba (issue #412)
• New boards for ARM mbed framework: ST Nucleo F410RB, ST Nucleo L073RZ and BBC micro:bit
• Added support for Arduino.Org boards: Arduino Leonardo ETH, Arduino Yun Mini, Arduino Industrial 101
and Linino One (issue #472)
• Added support for Generic ATTiny boards: ATTiny13, ATTiny24, ATTiny25, ATTiny45 and ATTiny85 (issue
#636)
• Added support for MightyCore boards: ATmega1284, ATmega644, ATmega324, ATmega164, ATmega32, ATmega16 and ATmega8535 (issue #585)
• Added support for TI MSP430 boards: TI LaunchPad w/ msp430fr4133 and TI LaunchPad w/ msp430fr6989
• Updated Arduino core for Espressif platform to 2.2.0 (issue #627)
• Updated native SDK for ESP8266 to 1.5 (issue #366)
• PlatformIO Library Registry in JSON format! Implemented --json-output and --page options for platformio lib search command (issue #604)
• Allowed to specify default environments env_default which should be processed by default with platformio
run command (issue #576)
• Allowed to unflag(remove) base/initial flags using build_unflags option (issue #559)
• Allowed multiple VID/PID pairs when detecting serial ports (issue #632)
• Automatically add -DUSB_MANUFACTURER with vendor’s name (issue #631)
• Automatically reboot Teensy board after upload when Teensy Loader GUI is used (issue #609)
• Refactored source code converter from *.ino to *.cpp (issue #610)
• Forced -std=gnu++11 for Atmel SAM development platform (issue #601)
• Don’t check OS type for ARM mbed-enabled boards and ST STM32 development platform before uploading to
disk (issue #596)
• Fixed broken compilation for Atmel SAMD based boards except Arduino Due (issue #598)
• Fixed firmware uploading using serial port with spaces in the path
• Fixed cache system when project’s root directory is used as src_dir (issue #635)
1.20. Release Notes
513
PlatformIO Documentation, Release 3.4.1
2.8.6 (2016-03-22)
• Launched PlatformIO Community Forums (issue #530)
• Added support for ARM mbed-enabled board Seed Arch Max (STM32F407VET6) (issue #572)
• Improved DNS lookup for PlatformIO API
• Updated Arduino Wiring-based framework to the latest version for Atmel AVR/SAM development platforms
• Updated “Teensy Loader CLI” and fixed uploading of large .hex files (issue #568)
• Updated the support for Sanguino Boards (issue #586)
• Better handling of used boards when re-initialize/update project
• Improved support for non-Unicode user profiles for Windows OS
• Disabled progress bar for download operations when prompts are disabled
• Fixed multiple definition errors for ST STM32 development platform and ARM mbed framework (issue #571)
• Fixed invalid board parameters (reset method and baudrate) for a few ESP8266 based boards
• Fixed “KeyError: ‘content-length”’ in PlatformIO Download Manager (issue #591)
2.8.5 (2016-03-07)
• Project generator for NetBeans IDE (issue #541)
• Created package for Homebrew Mac OS X Package Manager: brew install platformio (issue #395)
• Updated Arduino core for Espressif platform to 2.1.0 (issue #544)
• Added support for the ESP8266 ESP-07 board to Espressif (issue #527)
• Improved handling of String-based CPPDEFINES passed to extra build_flags (issue #526)
• Generate appropriate project for CLion IDE and CVS (issue #523)
• Use src_dir directory from Project Configuration File platformio.ini when initializing project otherwise create base src directory (issue #536)
• Fixed issue with incorrect handling of user’s build flags where the base flags were passed after user’s flags to
GCC compiler (issue #528)
• Fixed issue with Project Generator when optional build flags were passed using system environment variables:
PLATFORMIO_BUILD_FLAGS or PLATFORMIO_BUILD_SRC_FLAGS
• Fixed invalid detecting of compiler type (issue #550)
• Fixed issue with updating package which was deleted manually by user (issue #555)
• Fixed incorrect parsing of GCC -include flag (issue #552)
2.8.4 (2016-02-17)
• Added support for the new ESP8266-based boards (ESPDuino, ESP-WROOM-02, ESPresso Lite 1.0 & 2.0,
SparkFun ESP8266 Thing Dev, ThaiEasyElec ESPino) to Espressif development platform
• Added board_f_flash option to Project Configuration File platformio.ini which allows to specify custom
flash chip frequency for Espressif development platform (issue #501)
514
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
• Added board_flash_mode option to Project Configuration File platformio.ini which allows to specify custom flash chip mode for Espressif development platform
• Handle new environment variables PLATFORMIO_UPLOAD_PORT and PLATFORMIO_UPLOAD_FLAGS
(issue #518)
• Fixed issue with CPPDEFINES which contain space and break PlatformIO IDE Linter (IDE issue #34)
• Fixed unable to link C++ standard library to Espressif platform build (issue #503)
• Fixed issue with pointer (char* myfunc()) while converting from *.ino to *.cpp (issue #506)
2.8.3 (2016-02-02)
• Better integration of PlatformIO Builder with PlatformIO IDE Linter
• Fixed issue with removing temporary file while converting *.ino to *.cpp
• Fixed missing dependency (mbed framework) for Atmel SAM development platform (issue #487)
2.8.2 (2016-01-29)
• Corrected RAM size for NXP LPC1768 based boards (issue #484)
• Exclude only test and tests folders from build process
• Reverted -Wl,-whole-archive hook for ST STM32 and mbed
2.8.1 (2016-01-29)
• Fixed a bug with Project Initialization in PlatformIO IDE
2.8.0 (2016-01-29)
• PlatformIO IDE for Atom (issue #470)
• Added pio command line alias for platformio command (issue #447)
• Added SPL-Framework support for Nucleo F401RE board (issue #453)
• Added upload_resetmethod option to Project Configuration File platformio.ini which allows to specify
custom upload reset method for Espressif development platform (issue #444)
• Allowed to force output of color ANSI-codes or to disable progress bar even if the output is a pipe (not a tty)
using Environment variables (issue #465)
• Set 1Mb SPIFFS for Espressif boards by default (issue #458)
• Exclude test* folder by default from build process
• Generate project for IDEs with information about installed libraries
• Fixed builder for mbed framework and ST STM32 platform
1.20. Release Notes
515
PlatformIO Documentation, Release 3.4.1
2.7.1 (2016-01-06)
• Initial support for Arduino Zero board (issue #356)
• Added support for completions to Atom text editor using .clang_complete
• Generate default targets for supported IDE (CLion, Eclipse IDE, Emacs, Sublime Text, VIM): Build, Clean,
Upload, Upload SPIFFS image, Upload using Programmer, Update installed platforms and libraries (issue #427)
• Updated Teensy Arduino Framework to 1.27 (issue #434)
• Fixed uploading of EEPROM data using uploadeep target for Atmel AVR development platform
• Fixed project generator for CLion IDE (issue #422)
• Fixed package shasum validation on Mac OS X 10.11.2 (issue #429)
• Fixed CMakeLists.txt add_executable has only one source file (issue #421)
2.7.0 (2015-12-30)
Happy New Year!
• Moved SCons to PlatformIO packages. PlatformIO does not require SCons to be installed in your system.
Significantly simplified installation process of PlatformIO. pip install platformio rocks!
• Implemented uploading files to file system of ESP8266 SPIFFS (including OTA) (issue #382)
• Added support for the new Adafruit boards Bluefruit Micro and Feather (issue #403)
• Added support for RFDuino (issue #319)
• Project generator for Emacs text editor (pull #404)
• Updated Arduino framework for Atmel AVR development platform to 1.6.7
• Documented firmware uploading for Atmel AVR development platform using Programmers: AVR ISP, AVRISP
mkII, USBtinyISP, USBasp, Parallel Programmer and Arduino as ISP
• Fixed issue with current Python interpreter for Python-based tools (issue #417)
2.6.3 (2015-12-21)
• Restored support for Espressif ESP8266 ESP-01 1MB board (ready for OTA)
• Fixed invalid ROM size for ESP8266-based boards (issue #396)
2.6.2 (2015-12-21)
• Removed SCons from requirements list. PlatformIO will try to install it automatically, otherwise users need to
install it manually
• Fixed ChunkedEncodingError when SF connection is broken (issue #356)
2.6.1 (2015-12-18)
• Added support for the new ESP8266-based boards (SparkFun ESP8266 Thing, NodeMCU 0.9 & 1.0, Olimex
MOD-WIFI-ESP8266(-DEV), Adafruit HUZZAH ESP8266, ESPino, SweetPea ESP-210, WeMos D1, WeMos
D1 mini) to Espressif development platform
516
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
• Created public platformio-pkg-ldscripts repository for LD scripts. Moved common configuration for ESP8266
MCU to esp8266.flash.common.ld (issue #379)
• Improved documentation for Espressif development platform: OTA update, custom Flash Size, Upload Speed
and CPU frequency
• Fixed reset method for Espressif NodeMCU (ESP-12E Module) (issue #380)
• Fixed issue with code builder when build path contains spaces (issue #387)
• Fixed project generator for Eclipse IDE and “duplicate path entries found in project path” (issue #383)
2.6.0 (2015-12-15)
• Install only required packages depending on build environment (issue #308)
• Added support for Raspberry Pi WiringPi framework (issue #372)
• Implemented Over The Air (OTA) upgrades for Espressif development platform. (issue #365)
• Updated CMSIS framework and added CMSIS support for Nucleo F401RE board (issue #373)
• Added support for Espressif ESP8266 ESP-01-1MB board (ready for OTA)
• Handle upload_flags option in platformio.ini (issue #368)
• Improved PlatformIO installation on the Mac OS X El Capitan
2.5.0 (2015-12-08)
• Improved code builder for parallel builds (up to 4 times faster than before)
• Generate .travis.yml CI and .gitignore files for embedded projects by default (issue #354)
• Removed
prompt
with
“auto-uploading”
from
--enable-auto-uploading option (issue #352)
platformio
init
command
and
added
• Fixed incorrect behaviour of platformio serialports monitor in pair with PySerial 3.0
2.4.1 (2015-12-01)
• Restored PLATFORMIO macros with the current version
2.4.0 (2015-12-01)
• Added support for the new boards: Atmel ATSAMR21-XPRO, Atmel SAML21-XPRO-B, Atmel SAMD21XPRO, ST 32F469IDISCOVERY, ST 32L476GDISCOVERY, ST Nucleo F031K6, ST Nucleo F042K6, ST
Nucleo F303K8 and ST Nucleo L476RG
• Updated Arduino core for Espressif platform to 2.0.0 (issue #345)
• Added to FAQ explanation of Can not compile a library that compiles without issue with Arduino IDE (issue
#331)
• Fixed ESP-12E flash size (pull #333)
• Fixed configuration for LowPowerLab MoteinoMEGA board (issue #335)
• Fixed “LockFailed: failed to create appstate.json.lock” error for Windows
• Fixed relative include path for preprocessor using build_flags (issue #271)
1.20. Release Notes
517
PlatformIO Documentation, Release 3.4.1
2.3.5 (2015-11-18)
• Added support of libOpenCM3 framework for Nucleo F103RB board (issue #309)
• Added support for Espressif ESP8266 ESP-12E board (NodeMCU) (issue #310)
• Added support for pySerial 3.0 (issue #307)
• Updated Arduino AVR/SAM frameworks to 1.6.6 (issue #321)
• Upload firmware using external programmer via platformio run –target program target (issue #311)
• Fixed handling of upload port when board option is not specified in platformio.ini (issue #313)
• Fixed firmware uploading for nordicrf51 development platform (issue #316)
• Fixed installation on Mac OS X El Capitan (issue #312)
• Fixed project generator for CLion IDE under Windows OS with invalid path to executable (issue #326)
• Fixed empty list with serial ports on Mac OS X (isge #294)
• Fixed compilation error TWI_Disable not declared for Arduino Due board (issue #329)
2.3.4 (2015-10-13)
• Full support of CLion IDE including code auto-completion (issue #132)
• PlatformIO command completion in Terminal for bash and zsh
• Added support for ubIQio Ardhat board (pull #302)
• Install SCons automatically and avoid error:
not recognized (issue #279)
option --single-version-externally-managed
• Use Teensy CLI Loader for upload of .hex files on Mac OS X (issue #306)
• Fixed missing framework-mbed package for teensy platform (issue #305)
2.3.3 (2015-10-02)
• Added support for LightBlue Bean board (pull #292)
• Added support for ST Nucleo F446RE board (pull #293)
• Fixed broken lock file for “appstate” storage (issue #288)
• Fixed ESP8266 compile errors about RAM size when adding 1 library (issue #296)
2.3.2 (2015-09-10)
• Allowed to use ST-Link uploader for mbed-based projects
• Explained how to use lib directory from the PlatformIO based project in readme.txt which will be automatically generated using platformio init command (issue #273)
• Found solution for “pip/scons error: option –single-version-externally-managed not recognized” when install
PlatformIO using pip package manager (issue #279)
• Fixed firmware uploading to Arduino Leonardo board using Mac OS (issue #287)
• Fixed SConsNotInstalled error for Linux Debian-based distributives
518
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
2.3.1 (2015-09-06)
• Fixed critical issue when platformio init –ide command hangs PlatformIO (issue #283)
2.3.0 (2015-09-05)
• Added native, linux_arm, linux_i686, linux_x86_64, windows_x86 development platforms (issue #263)
• Added PlatformIO Demo page to documentation
• Simplified installation process of PlatformIO (issue #274)
• Significantly improved Project Generator which allows to integrate with the most popular IDE
• Added short -h help option for PlatformIO and sub-commands
• Updated mbed framework
• Updated tool-teensy package for Teensy platform (issue #268)
• Added FAQ answer when Program “platformio” not found in PATH (issue #272)
• Generate “readme.txt” for project “lib” directory (issue #273)
• Use toolchain’s includes pattern include* for Project Generator (issue #277)
• Added support for Adafruit Gemma board to atmelavr platform (pull #256)
• Fixed includes list for Windows OS when generating project for Eclipse IDE (issue #270)
• Fixed AttributeError:
'module' object has no attribute 'packages' (issue #252)
2.2.2 (2015-07-30)
• Integration with Atom IDE
• Support for off-line/unpublished/private libraries (issue #260)
• Disable project auto-clean while building/uploading firmware using platformio run –disable-auto-clean option
(issue #255)
• Show internal errors from “Miniterm” using platformio serialports monitor command (issue #257)
• Fixed platformio serialports monitor –help information with HEX char for hotkeys (issue #253)
• Handle “OSError: [Errno 13] Permission denied” for PlatformIO installer script (issue #254)
2.2.1 (2015-07-17)
• Project generator for CLion IDE (issue #132)
• Updated tool-bossac package to 1.5 version for atmelsam platform (issue #251)
• Updated sdk-esp8266 package for espressif platform
• Fixed incorrect arguments handling for platformio serialports monitor command (issue #248)
1.20. Release Notes
519
PlatformIO Documentation, Release 3.4.1
2.2.0 (2015-07-01)
• Allowed to exclude/include source files from build process using src_filter (issue #240)
• Launch own extra script before firmware building/uploading processes (issue #239)
• Specify own path to the linker script (ld) using build_flags option (issue #233)
• Specify library compatibility with the all platforms/frameworks using * symbol in library.json
• Added support for new embedded boards: ST 32L0538DISCOVERY and Delta DFCM-NNN40 to Framework
mbed
• Updated packages for Framework Arduino (AVR, SAM, Espressif and Teensy cores, Framework mbed, Espressif ESP8266 SDK (issue #246)
• Fixed stk500v2_command():
command failed (issue #238)
• Fixed IDE project generator when board is specified (issue #242)
• Fixed relative path for includes when generating project for IDE (issue #243)
• Fixed ESP8266 native SDK exception (issue #245)
2.1.2 (2015-06-21)
• Fixed broken link to SCons installer
2.1.1 (2015-06-09)
• Automatically detect upload port using VID:PID board settings (issue #231)
• Improved detection of build changes
• Avoided LibInstallDependencyError when more than 1 library is found (issue #229)
2.1.0 (2015-06-03)
• Added Silicon Labs EFM32 siliconlabsefm32 development platform (issue #226)
• Integrate PlatformIO with Circle CI and Shippable CI
• Described in documentation how to create/register own board for PlatformIO
• Disabled “nano.specs” for ARM-based platforms (issue #219)
• Fixed “ConnectionError” when PlatformIO SF Storage is off-line
• Fixed resolving of C/C++ std libs by Eclipse IDE (issue #220)
• Fixed firmware uploading using USB programmer (USBasp) for atmelavr platform (issue #221)
2.0.2 (2015-05-27)
• Fixed libraries order for “Library Dependency Finder” under Linux OS
520
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
2.0.1 (2015-05-27)
• Handle new environment variable PLATFORMIO_BUILD_FLAGS
• Pass to API requests information about Continuous Integration system. This information will be used by
PlatformIO-API.
• Use include directories from toolchain when initialising project for IDE (issue #210)
• Added support for new WildFire boards from Wicked Device to atmelavr platform
• Updated Arduino Framework to 1.6.4 version (issue #212)
• Handle Atmel AVR Symbols when initialising project for IDE (issue #216)
• Fixed bug with converting *.ino to *.cpp
• Fixed failing with platformio init --ide eclipse without boards (issue #217)
2.0.0 (2015-05-22)
Made in Paradise
• PlatformIO as Continuous Integration (CI) tool for embedded projects (issue #108)
• Initialise PlatformIO project for the specified IDE (issue #151)
• PlatformIO CLI 2.0: “platform” related commands have been moved to platformio platforms subcommand (issue #158)
• Created PlatformIO gitter.im room (issue #174)
• Global -f, --force option which will force to accept any confirmation prompts (issue #152)
• Run project with platformio run –project-dir option without changing the current working directory (issue #192)
• Control verbosity of platformio run command via -v/--verbose option
• Add library dependencies for build environment using lib_install option in platformio.ini (issue #134)
• Specify libraries which are compatible with build environment using lib_use option in platformio.ini
(issue #148)
• Add more boards to PlatformIO project with platformio init –board command (issue #167)
• Choose which library to update (issue #168)
• Specify platformio init –env-prefix when initialise/update project (issue #182)
• Added new Armstrap boards (issue #204)
• Updated SDK for espressif development platform to v1.1 (issue #179)
• Disabled automatic updates by default for platforms, packages and libraries (issue #171)
• Fixed bug with creating copies of source files (issue #177)
PlatformIO 1.0
1.5.0 (2015-05-15)
• Added support of Framework mbed for Teensy 3.1 (issue #183)
• Added GDB as alternative uploader to ststm32 platform (issue #175)
1.20. Release Notes
521
PlatformIO Documentation, Release 3.4.1
• Added examples with preconfigured IDE projects (issue #154)
• Fixed firmware uploading under Linux OS for Arduino Leonardo board (issue #178)
• Fixed invalid “mbed” firmware for Nucleo F411RE (issue #185)
• Fixed parsing of includes for PlatformIO Library Dependency Finder (issue #189)
• Fixed handling symbolic links within source code directory (issue #190)
• Fixed cancelling any previous definition of name, either built in or provided with a -D option (issue #191)
1.4.0 (2015-04-11)
• Added espressif development platform with ESP01 board
• Integrated PlatformIO with AppVeyor Windows based Continuous Integration system (issue #149)
• Added support for Teensy LC board to teensy platform
• Added support for new Arduino based boards by SparkFun, BQ, LightUp, LowPowerLab, Quirkbot, RedBearLab, TinyCircuits to atmelavr platform
• Upgraded Arduino Framework to 1.6.3 version (issue #156)
• Upgraded Energia Framework to 0101E0015 version (issue #146)
• Upgraded Arduino Framework with Teensy Core to 1.22 version (issue #162, issue #170)
• Fixed exceptions with PlatformIO auto-updates when Internet connection isn’t active
1.3.0 (2015-03-27)
• Moved PlatformIO source code and repositories from Ivan Kravets account to PlatformIO Organisation (issue
#138)
• Added support for new Arduino based boards by SparkFun, RepRap, Sanguino to atmelavr platform (issue #127,
issue #131)
• Added integration instructions for Visual Studio and Sublime Text IDEs
• Improved handling of multi-file *.ino/pde sketches (issue #130)
• Fixed wrong insertion of function prototypes converting *.ino/pde (issue #137, issue #140)
1.2.0 (2015-03-20)
• Added full support of mbed framework including libraries: RTOS, Ethernet, DSP, FAT, USB.
• Added freescalekinetis development platform with Freescale Kinetis Freedom boards
• Added nordicnrf51 development platform with supported boards from JKSoft, Nordic, RedBearLab, Switch
Science
• Added nxplpc development platform with supported boards from CQ Publishing, Embedded Artists, NGX Technologies, NXP, Outrageous Circuits, SeeedStudio, Solder Splash Labs, Switch Science, u-blox
• Added support for ST Nucleo boards to ststm32 development platform
• Created new Frameworks page in documentation and added to PlatformIO Web Site (issue #115)
• Introduced online Embedded Boards Explorer
522
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
• Automatically append define -DPLATFORMIO=%version% to builder (issue #105)
• Renamed stm32 development platform to ststm32
• Renamed opencm3 framework to libopencm3
• Fixed uploading for atmelsam development platform
• Fixed re-arranging the *.ino/pde files when converting to *.cpp (issue #100)
1.1.0 (2015-03-05)
• Implemented PLATFORMIO_* environment variables (issue #102)
• Added support for SainSmart boards to atmelsam development platform
• Added Project Configuration option named envs_dir
• Disabled “prompts” automatically for Continuous Integration systems (issue #103)
• Fixed firmware uploading for atmelavr boards which work within usbtiny protocol
• Fixed uploading for Digispark board (issue #106)
1.0.1 (2015-02-27)
PlatformIO 1.0 - recommended for production
• Changed development status from beta to Production/Stable
• Added support for ARM-based credit-card sized computers: Raspberry Pi, BeagleBone and CubieBoard
• Added atmelsam development platform with supported boards: Arduino Due and Digistump DigiX (issue #71)
• Added ststm32 development platform with supported boards: Discovery kit for STM32L151/152,
STM32F303xx, STM32F407/417 lines and libOpenCM3 Framework (issue #73)
• Added teensy development platform with supported boards: Teensy 2.x & 3.x (issue #72)
• Added new Arduino boards to atmelavr platform: Arduino NG, Arduino BT, Arduino Esplora, Arduino Ethernet,
Arduino Robot Control, Arduino Robot Motor and Arduino Yun
• Added support for Adafruit boards to atmelavr platform: Adafruit Flora and Adafruit Trinkets (issue #65)
• Added support for Digispark boards to atmelavr platform: Digispark USB Development Board and Digispark
Pro (issue #47)
• Covered code with tests (issue #2)
• Refactored Library Dependency Finder (issues #48, #50, #55)
• Added src_dir option to [platformio] section of platformio.ini which allows to redefine location to project’s
source directory (issue #83)
• Added --json-output option to platformio boards and platformio search commands which allows to return
the output in JSON format (issue #42)
• Allowed to ignore some libs from Library Dependency Finder via lib_ignore option
• Improved platformio run command: asynchronous output for build process, timing and detailed information
about environment configuration (issue #74)
• Output compiled size and static memory usage with platformio run command (issue #59)
• Updated framework-arduino AVR & SAM to 1.6 stable version
1.20. Release Notes
523
PlatformIO Documentation, Release 3.4.1
• Fixed an issue with the libraries that are git repositories (issue #49)
• Fixed handling of assembly files (issue #58)
• Fixed compiling error if space is in user’s folder (issue #56)
• Fixed AttributeError: ‘module’ object has no attribute ‘disable_warnings’ when a version of requests package
is less then 2.4.0
• Fixed bug with invalid process’s “return code” when PlatformIO has internal error (issue #81)
• Several bug fixes, increased stability and performance improvements
PlatformIO 0.0
0.10.2 (2015-01-06)
• Fixed an issue with --json-output (issue #42)
• Fixed an exception during platformio upgrade under Windows OS (issue #45)
0.10.1 (2015-01-02)
• Added --json-output option to platformio list, platformio serialports list and platformio lib list commands
which allows to return the output in JSON format (issue #42)
• Fixed missing auto-uploading by default after platformio init command
0.10.0 (2015-01-01)
Happy New Year!
• Implemented platformio boards command (issue #11)
• Added support of Engduino boards for atmelavr platform (issue #38)
• Added --board option to platformio init command which allows to initialise project with the specified embedded boards (issue #21)
• Added example with uploading firmware via USB programmer (USBasp) for atmelavr MCUs (issue #35)
• Automatic detection of port on platformio serialports monitor (issue #37)
• Allowed auto-installation of platforms when prompts are disabled (issue #43)
• Fixed urllib3’s SSL warning under Python <= 2.7.2 (issue #39)
• Fixed bug with Arduino USB boards (issue #40)
0.9.2 (2014-12-10)
• Replaced “dark blue” by “cyan” colour for the texts (issue #33)
• Added new setting enable_prompts and allowed to disable all PlatformIO prompts (useful for cloud compilers) (issue #34)
• Fixed compilation bug on Windows with installed MSVC (issue #18)
524
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
0.9.1 (2014-12-05)
• Ask user to install platform (when it hasn’t been installed yet) within platformio run and platformio show
commands
• Improved main documentation
• Fixed “OSError: [Errno 2] No such file or directory” within platformio run command when PlatformIO isn’t
installed properly
• Fixed example for Eclipse IDE with Tiva board (issue #32)
• Upgraded Eclipse Project Examples to latest Luna and PlatformIO releases
0.9.0 (2014-12-01)
• Implemented platformio settings command
• Improved platformio init command. Added new option --project-dir where you can specify another path
to directory where new project will be initialized (issue #31)
• Added Migration Manager which simplifies process with upgrading to a major release
• Added Telemetry Service which should help us make PlatformIO better
• Implemented PlatformIO AppState Manager which allow to have multiple .platformio states.
• Refactored Package Manager
• Download Manager: fixed SHA1 verification within Cygwin Environment (issue #26)
• Fixed bug with code builder and built-in Arduino libraries (issue #28)
0.8.0 (2014-10-19)
• Avoided trademark issues in library.json with the new fields: frameworks, platforms and dependencies (issue
#17)
• Switched logic from “Library Name” to “Library Registry ID” for all platformio lib commands (install, uninstall,
update and etc.)
• Renamed author field to authors and allowed to setup multiple authors per library in library.json
• Added option to specify “maintainer” status in authors field
• New filters/options for platformio lib search command: --framework and --platform
0.7.1 (2014-10-06)
• Fixed bug with order for includes in conversation from INO/PDE to CPP
• Automatic detection of port on upload (issue #15)
• Fixed lib update crashing when no libs are installed (issue #19)
0.7.0 (2014-09-24)
• Implemented new [platformio] section for Configuration File with home_dir option (issue #14)
• Implemented Library Manager (issue #6)
1.20. Release Notes
525
PlatformIO Documentation, Release 3.4.1
0.6.0 (2014-08-09)
• Implemented platformio serialports monitor (issue #10)
• Fixed an issue ImportError:
No module named platformio.util (issue #9)
• Fixed bug with auto-conversation from Arduino *.ino to *.cpp
0.5.0 (2014-08-04)
• Improved nested lookups for libraries
• Disabled default warning flag “-Wall”
• Added auto-conversation from *.ino to valid *.cpp for Arduino/Energia frameworks (issue #7)
• Added Arduino example with external library (Adafruit CC3000)
• Implemented platformio upgrade command and “auto-check” for the latest version (issue #8)
• Fixed an issue with “auto-reset” for Raspduino board
• Fixed a bug with nested libs building
0.4.0 (2014-07-31)
• Implemented platformio serialports command
• Allowed to put special build flags only for src files via src_build_flags environment option
• Allowed to override some of settings via system environment
PLATFORMIO_SRC_BUILD_FLAGS and PLATFORMIO_ENVS_DIR
variables
such
as:
• Added --upload-port option for platformio run command
• Implemented (especially for SmartAnthill) platformio run -t uploadlazy target (no dependencies to framework
libs, ELF and etc.)
• Allowed to skip default packages via platformio install –skip-default-package option
• Added tools for Raspberry Pi platform
• Added support for Microduino and Raspduino boards in atmelavr platform
0.3.1 (2014-06-21)
• Fixed auto-installer for Windows OS (bug with %PATH% customisations)
0.3.0 (2014-06-21)
• Allowed to pass multiple “SomePlatform” to install/uninstall commands
• Added “IDE Integration” section to README with Eclipse project examples
• Created auto installer script for PlatformIO (issue #3)
• Added “Super-Quick” way to Installation section (README)
• Implemented “build_flags” option for environments (issue #4)
526
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
0.2.0 (2014-06-15)
• Resolved issue #1 “Build referred libraries”
• Renamed project’s “libs” directory to “lib”
• Added arduino-internal-library example
• Changed to beta status
0.1.0 (2014-06-13)
• Birth! First alpha release
Migrating from 2.x to 3.0
Guidance on how to upgrade from PlatformIO v2.x to v3.x with emphasis on major changes, what is new, and what is
been removed.
PlatformIO 3 is not backwards compatible with v2.x. Use this section as a general guide to upgrading from v2.x to
v3.0. For a broader overview, see what is new in the v3.0 release announcement.
Contents
• Major PlatformIO CLI changes
• What is new
– Development Platforms
– Library Manager and Intelligent Build System
– Command Line Interface
– Project Configuration File platformio.ini
• What is removed
– Command Line Interface
– Project Configuration File platformio.ini
Major PlatformIO CLI changes
Note:
PlatformIO 3.x is 100% non-blocking! You do not need to use --force option or setup special
PLATOFMRIO_SETTING_ENABLE_PROMPTS environment. Use PlatformIO 3.0 with sub-processing without any
risk!
This table shows the CLI changes between v2.x and v3.0.
PlatformIO 2.x
platformio platforms
platformio serialports
platformio settings set enable_prompts false
1.21. Migrating from 2.x to 3.0
PlatformIO 3.x
platformio platform
platformio device
Removed! Now, all PlatformIO 3.0 CLI is 100% non-blocking!
527
PlatformIO Documentation, Release 3.4.1
PlatformIO 2.x commands will be converted to PlatformIO 3.x automatically. Nevertheless, we recommend to use
PlatformIO 3.x commands for the new projects.
What is new
Development Platforms
We have introduced Manifest File platform.json and ported PlatformIO 2.x development platforms according PlatformIO 3.0 decentralized architecture. Now, platform related things (build scrips, LD scripts, board configs, package
requirements) are located in own repository. Here is the full list with PlatformIO 3.0 open source development platforms. You can fork it, modify or create custom. See Custom Development Platform guide for details.
• Manifest File platform.json
• espressif development platform has been renamed to Espressif 8266
• PlatformIO 3.0 Platform Manager
• Custom package repositories
• External embedded board configuration files, isolated build scripts
• Embedded Board compatibility with more than one development platform
Library Manager and Intelligent Build System
• Powerful and super-fast Library Dependency Finder (LDF) that interprets C/C++ Preprocessor conditional
macros with deep search behavior
• Project dependencies per build environment using projectconf_lib_deps option
• Depend on a library using VCS URL (GitHub, Git, ARM mbed code registry, Hg, SVN)
• Install library by name
• Strict search for library dependencies
• Multiple library storages: Project’s Local, PlatformIO’s Global or Custom
• Allowed library.json to specify sources other than PlatformIO’s Repository
• Check library compatibility with project environment before building
• Control Library Dependency Finder for compatibility using lib_compat_mode option
• Custom library storages/directories with lib_extra_dirs option
• Handle extra build flags, source filters and build script from library.json
• Allowed to disable library archiving (*.ar)
• Show detailed build information about dependent libraries (Library Dependency Graph)
• Support for the 3rd party manifests (Arduino IDE “library.properties” and ARM mbed “module.json”)
• Build System: Attach custom Before/Pre and After/Post actions for targets using extra_scripts
528
Chapter 1. Contents
PlatformIO Documentation, Release 3.4.1
Command Line Interface
We have added new commands and changed some existing ones. Here are the new or updated commands and options.
Command
platformio boards
platformio boards
--installed
platformio ci
--project-option
platformio ci --verbose
platformio init
--project-option
platformio lib --global
platformio lib --storage-dir
platformio lib install
platformio lib
--silent
platformio lib
--interactive
platformio lib
--header
platformio lib
--only-check
platformio platform
Description
Returns all supported boards by PlatformIO
Returns currently installed boards
Pass custom option from Project Configuration File platformio.ini
Print detailed information about build process
Pass custom option from Project Configuration File platformio.ini
install
Manage PlatformIO Global Library Storage
Manage Custom Library Storage
New PlatformIO 3.0 Library Manager! Semantic Versioning, VCS
support and external URL support
Suppress progress reporting when install library
install
Allow to make a choice for all prompts when install library
search
Search library by specific header file name (include)
update
Do not update, only check for new version
platformio platform update
--only-packages
platformio platform update
--only-check
platformio run
platformio run --verbose
platformio settings set force_verbose true
platformio test
platformio update
--only-check
New PlatformIO 3.0 Platform Manager! Semantic Versioning, VCS
support and external URL support.
Update only platform packages
Do not update, only check for new version
By default, prints only human-readable information when processing
environments
Print detailed processing information
Force verbose output when processing environments (globally)
PlatformIO Plus Unit Testing
Do not update, only check for new version
Project Configuration File platformio.ini
We have added new options and changed some existing ones. Here are the new or updated options.
1.21. Migrating from 2.x to 3.0
529
PlatformIO Documentation, Release 3.4.1
Section
platformio
platformio
env
env
env
env
env
env
Option
Description
libdeps_dir
Internal storage where Library Manager will install project dependencies
test_dir
Directory where PIO Unit Testing engine will look for the tests
Specify project dependencies that should be installed automatically to libdeps_dir
before environment processing.
platform
PlatformIO 3.0 allows to use specific version of platform using Semantic Versioning
(X.Y.Z=MAJOR.MINOR.PATCH).
lib_extra_dirs A list with extra directories/storages where Library Dependency Finder (LDF) will
look for dependencies
lib_ldf_mode This option specifies how does Library Dependency Finder (LDF) should analyze
dependencies (#include directives)
lib_compat_mode
Library compatibility mode allows to control strictness of Library Dependency Finder
(LDF)
test_ignore
Ignore tests where the name matches specified patterns
lib_deps
What is removed
Command Line Interface
The following commands have been dropped or changed in v3.0.
Command
platformio init
–enable-auto-uploading
Description
Use platformio init --project-option instead of it with
targets = upload value
Project Configuration File platformio.ini
The following options have been dropped or changed in v3.0.
Section
platformio
530
Option
lib_dir
Description
Changed: Project’s own/private libraries, where in PlatformIO 2.x it was global library
storage
Chapter 1. Contents
Bibliography
[Embedds] Embedds.com: Develop easier with PlatformIO ecosystem
531
PlatformIO Documentation, Release 3.4.1
532
Bibliography
Index
Symbols
—quiet
platformio-device-monitor command line option, 32
platformio-remote-device-monitor command line
option, 86
–build-dir
platformio-ci command line option, 27
–core-packages
platformio-update command line option, 110
–disable-auto-clean
platformio-remote-run command line option, 88
platformio-run command line option, 97
–dtr
platformio-device-monitor command line option, 31
platformio-remote-device-monitor command line
option, 85
–echo
platformio-device-monitor command line option, 31
platformio-remote-device-monitor command line
option, 85
–encoding
platformio-device-monitor command line option, 32
platformio-remote-device-monitor command line
option, 85
–env-prefix
platformio-init command line option, 34
–eol
platformio-device-monitor command line option, 32
platformio-remote-device-monitor command line
option, 85
–exclude
platformio-ci command line option, 26
–exit-char
platformio-device-monitor command line option, 32
platformio-remote-device-monitor command line
option, 86
–force, -f
platformio command line option, 18
–help, -h
platformio command line option, 18
–ide
platformio-init command line option, 34
–installed
platformio-boards command line option, 23
–interactive
platformio-lib-install command line option, 42
–interface
platformio-debug command line option, 28
–json-output
platformio-account-show command line option, 22
platformio-account-token command line option, 22
platformio-boards command line option, 23
platformio-device-list command line option, 30
platformio-lib-builtin command line option, 37
platformio-lib-list command line option, 45
platformio-lib-search command line option, 51
platformio-lib-show command line option, 57, 59
platformio-lib-update command line option, 65
platformio-platform-frameworks command line option, 66
platformio-platform-list command line option, 72
platformio-platform-search command line option, 74
platformio-platform-update command line option,
79
platformio-remote-device-list command line option,
84
–keep-build-dir
platformio-ci command line option, 27
–menu-char
platformio-device-monitor command line option, 32
platformio-remote-device-monitor command line
option, 86
–monitor-dtr
platformio-test command line option, 109
–monitor-rts
platformio-test command line option, 109
–no-reset
platformio-test command line option, 109
–page
533
PlatformIO Documentation, Release 3.4.1
platformio-lib-search command line option, 51
–parity
platformio-device-monitor command line option, 31
platformio-remote-device-monitor command line
option, 85
–password, -p
platformio-account-login command line option, 20
–raw
platformio-device-monitor command line option, 32
platformio-remote-device-monitor command line
option, 86
–regenerate
platformio-account-token command line option, 22
–rts
platformio-device-monitor command line option, 31
platformio-remote-device-monitor command line
option, 85
–rtscts
platformio-device-monitor command line option, 31
platformio-remote-device-monitor command line
option, 85
–skip-default
platformio-platform-install command line option, 69
–storage
platformio-lib-builtin command line option, 37
–test-port
platformio-remote-test command line option, 91
platformio-test command line option, 108
–upload-port
platformio-remote-run command line option, 88
platformio-remote-test command line option, 91
platformio-run command line option, 97
platformio-test command line option, 108
–username, -u
platformio-account-forgot command line option, 19
platformio-account-login command line option, 20
platformio-account-register command line option,
21
–version
platformio command line option, 18
–with-package
platformio-platform-install command line option, 69
–without-building
platformio-remote-test command line option, 91
platformio-test command line option, 109
–without-package
platformio-platform-install command line option, 69
–without-uploading
platformio-remote-test command line option, 92
platformio-test command line option, 109
–xonxoff
platformio-device-monitor command line option, 31
platformio-remote-device-monitor command line
option, 85
534
-O, –project-option
platformio-ci command line option, 27
platformio-init command line option, 34
-P, –project-conf
platformio-ci command line option, 27
-a, –author
platformio-lib-search command line option, 50
-b, –baud
platformio-device-monitor command line option, 31
platformio-remote-device-monitor command line
option, 85
-b, –board
platformio-ci command line option, 27
platformio-init command line option, 34
-c, –only-check
platformio-lib-update command line option, 65
platformio-platform-update command line option,
79
platformio-remote-update command line option, 92
platformio-update command line option, 110
-d, –project-dir
platformio-debug command line option, 28
platformio-init command line option, 34
platformio-remote-run command line option, 88
platformio-remote-test command line option, 91
platformio-run command line option, 97
platformio-test command line option, 109
-d, –storage-dir
platformio-lib command line option, 36
-d, –working-dir
platformio-remote-agent-start command line option,
82
-e, –environment
platformio-debug command line option, 28
platformio-remote-run command line option, 88
platformio-remote-test command line option, 91
platformio-run command line option, 96
platformio-test command line option, 108
-f, –filter
platformio-device-monitor command line option, 32
platformio-remote-device-monitor command line
option, 85
platformio-test command line option, 108
-f, –framework
platformio-lib-search command line option, 50
-g, –global
platformio-lib command line option, 36
-i, –header
platformio-lib-search command line option, 51
-i, –ignore
platformio-remote-test command line option, 91
platformio-test command line option, 108
-k, –keyword
platformio-lib-search command line option, 50
Index
PlatformIO Documentation, Release 3.4.1
-l, –lib
platformio-ci command line option, 26
-n, –name
platformio-lib-search command line option, 50
platformio-remote-agent-start command line option,
82
-p, –only-packages
platformio-platform-update command line option,
79
-p, –platform
platformio-lib-search command line option, 51
-p, –port
platformio-device-monitor command line option, 31
platformio-remote-device-monitor command line
option, 85
-r, –force-remote
platformio-remote-run command line option, 88
platformio-remote-test command line option, 91
-s, –share
platformio-remote-agent-start command line option,
82
-s, –silent
platformio-init command line option, 34
platformio-lib-install command line option, 42
platformio-run command line option, 97
-t, –target
platformio-remote-run command line option, 88
platformio-run command line option, 96
-v, –verbose
platformio-ci command line option, 27
platformio-debug command line option, 28
platformio-remote-run command line option, 88
platformio-remote-test command line option, 92
platformio-run command line option, 97
platformio-test command line option, 109
PLATFORMIO_SETTING_AUTO_UPDATE_LIBRARIES,
164
PLATFORMIO_SETTING_AUTO_UPDATE_PLATFORMS,
164
PLATFORMIO_SETTING_CHECK_LIBRARIES_INTERVAL,
164
PLATFORMIO_SETTING_CHECK_PLATFORMIO_INTERVAL,
164
PLATFORMIO_SETTING_CHECK_PLATFORMS_INTERVAL,
165
PLATFORMIO_SETTING_ENABLE_SSL, 165
PLATFORMIO_SETTING_ENABLE_TELEMETRY,
165
PLATFORMIO_SETTING_FORCE_VERBOSE,
27, 28, 88, 92, 97, 109, 165
PLATFORMIO_SRC_BUILD_FLAGS, 146, 164
PLATFORMIO_SRC_DIR, 141, 163
PLATFORMIO_SRC_FILTER, 147, 164
PLATFORMIO_TEST_DIR, 141, 163
PLATFORMIO_UPLOAD_FLAGS, 148, 164
PLATFORMIO_UPLOAD_PORT, 147, 164
P
platformio command line option
–force, -f, 18
–help, -h, 18
–version, 18
platformio-account-forgot command line option
–username, -u, 19
platformio-account-login command line option
–password, -p, 20
–username, -u, 20
platformio-account-register command line option
–username, -u, 21
platformio-account-show command line option
–json-output, 22
E
platformio-account-token command line option
–json-output, 22
environment variable
–regenerate, 22
CI, 163
PLATFORMIO_AUTH_TOKEN, 19, 22, 163, 354, platformio-boards command line option
–installed, 23
492
–json-output, 23
PLATFORMIO_BOARDS_DIR, 142, 163
PLATFORMIO_BUILD_FLAGS, 145, 164, 485, platformio-ci command line option
–build-dir, 27
493
–exclude, 26
PLATFORMIO_DATA_DIR, 141, 163
–keep-build-dir, 27
PLATFORMIO_DISABLE_PROGRESSBAR, 163
-O, –project-option, 27
PLATFORMIO_ENVS_DIR, 141, 163
-P, –project-conf, 27
PLATFORMIO_EXTRA_SCRIPTS, 158, 164
-b, –board, 27
PLATFORMIO_FORCE_COLOR, 163
-l, –lib, 26
PLATFORMIO_HOME_DIR, 139, 163, 505
-v, –verbose, 27
PLATFORMIO_LIB_DIR, 140, 163
platformio-debug command line option
PLATFORMIO_LIB_EXTRA_DIRS, 151, 164
–interface, 28
PLATFORMIO_LIBDEPS_DIR, 140, 163
-d, –project-dir, 28
PLATFORMIO_REMOTE_AGENT_DIR, 163
Index
535
PlatformIO Documentation, Release 3.4.1
-e, –environment, 28
-v, –verbose, 28
platformio-device-list command line option
–json-output, 30
platformio-device-monitor command line option
—quiet, 32
–dtr, 31
–echo, 31
–encoding, 32
–eol, 32
–exit-char, 32
–menu-char, 32
–parity, 31
–raw, 32
–rts, 31
–rtscts, 31
–xonxoff, 31
-b, –baud, 31
-f, –filter, 32
-p, –port, 31
platformio-init command line option
–env-prefix, 34
–ide, 34
-O, –project-option, 34
-b, –board, 34
-d, –project-dir, 34
-s, –silent, 34
platformio-lib command line option
-d, –storage-dir, 36
-g, –global, 36
platformio-lib-builtin command line option
–json-output, 37
–storage, 37
platformio-lib-install command line option
–interactive, 42
-s, –silent, 42
platformio-lib-list command line option
–json-output, 45
platformio-lib-search command line option
–json-output, 51
–page, 51
-a, –author, 50
-f, –framework, 50
-i, –header, 51
-k, –keyword, 50
-n, –name, 50
-p, –platform, 51
platformio-lib-show command line option
–json-output, 57, 59
platformio-lib-update command line option
–json-output, 65
-c, –only-check, 65
platformio-platform-frameworks command line option
–json-output, 66
536
platformio-platform-install command line option
–skip-default, 69
–with-package, 69
–without-package, 69
platformio-platform-list command line option
–json-output, 72
platformio-platform-search command line option
–json-output, 74
platformio-platform-update command line option
–json-output, 79
-c, –only-check, 79
-p, –only-packages, 79
platformio-remote-agent-start command line option
-d, –working-dir, 82
-n, –name, 82
-s, –share, 82
platformio-remote-device-list command line option
–json-output, 84
platformio-remote-device-monitor command line option
—quiet, 86
–dtr, 85
–echo, 85
–encoding, 85
–eol, 85
–exit-char, 86
–menu-char, 86
–parity, 85
–raw, 86
–rts, 85
–rtscts, 85
–xonxoff, 85
-b, –baud, 85
-f, –filter, 85
-p, –port, 85
platformio-remote-run command line option
–disable-auto-clean, 88
–upload-port, 88
-d, –project-dir, 88
-e, –environment, 88
-r, –force-remote, 88
-t, –target, 88
-v, –verbose, 88
platformio-remote-test command line option
–test-port, 91
–upload-port, 91
–without-building, 91
–without-uploading, 92
-d, –project-dir, 91
-e, –environment, 91
-i, –ignore, 91
-r, –force-remote, 91
-v, –verbose, 92
platformio-remote-update command line option
-c, –only-check, 92
Index
PlatformIO Documentation, Release 3.4.1
platformio-run command line option
–disable-auto-clean, 97
–upload-port, 97
-d, –project-dir, 97
-e, –environment, 96
-s, –silent, 97
-t, –target, 96
-v, –verbose, 97
platformio-test command line option
–monitor-dtr, 109
–monitor-rts, 109
–no-reset, 109
–test-port, 108
–upload-port, 108
–without-building, 109
–without-uploading, 109
-d, –project-dir, 109
-e, –environment, 108
-f, –filter, 108
-i, –ignore, 108
-v, –verbose, 109
platformio-update command line option
–core-packages, 110
-c, –only-check, 110
PLATFORMIO_AUTH_TOKEN, 19, 22, 354, 492
PLATFORMIO_BOARDS_DIR, 142
PLATFORMIO_BUILD_FLAGS, 145, 485, 493
PLATFORMIO_DATA_DIR, 141
PLATFORMIO_DISABLE_PROGRESSBAR, 163
PLATFORMIO_ENVS_DIR, 141
PLATFORMIO_EXTRA_SCRIPTS, 158
PLATFORMIO_HOME_DIR, 139, 505
PLATFORMIO_LIB_DIR, 140
PLATFORMIO_LIB_EXTRA_DIRS, 151
PLATFORMIO_LIBDEPS_DIR, 140
PLATFORMIO_SETTING_FORCE_VERBOSE, 27, 28,
88, 92, 97, 109
PLATFORMIO_SRC_BUILD_FLAGS, 146
PLATFORMIO_SRC_DIR, 141
PLATFORMIO_SRC_FILTER, 147
PLATFORMIO_TEST_DIR, 141
PLATFORMIO_UPLOAD_FLAGS, 148
PLATFORMIO_UPLOAD_PORT, 147
Index
537
Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertisement