Provided by: platformio_4.3.4-2_all 

NAME
platformio - PlatformIO Documentation A place where Developers and Teams have true Freedom! No more hardware or software lock-ins! • Open source, maximum permissive Apache 2.0 license • Cross-platform IDE and Unified Debugger • Static Code Analyzer and Remote Unit Testing • Multi-platform and Multi-architecture Build System • Firmware File Explorer and Memory Inspection. Social: Twitter | LinkedIn | Facebook | Bintray | Community
CONTENTS
What is PlatformIO? A place where Developers and Teams have true Freedom! No more hardware or software lock-ins! Contents • Awards • Philosophy • Technologies • Problematic • How does it work? PlatformIO is a cross-platform, cross-architecture, multiple framework, professional tool for embedded systems engineers and for software developers who write applications for embedded products. Awards PlatformIO was nominated for the year's best Software and Tools in the 2015/16 IoT Awards. A native PlatformIO IDE extension for Microsoft ide_vscode editor is the most rated/reviewed extension with over 800 five-star reviews in the whole Microsoft Marketplace. It also was installed by over 750,000 unique developers around the world. Philosophy PlatformIO's unique philosophy in the embedded market provides developers with a modern integrated development environment (ide) that works cross-platform, supports many different software development kits (SDKs) or frameworks, and includes sophisticated debugging (piodebug), unit testing (unit_testing), automated code analysis (piocheck), and remote management (pioremote). It is architected to maximize flexibility and choice by developers, who can use either graphical or command line editors (piocore), or both. PlatformIO is a must-have tool for professional embedded systems engineers who develop solutions on more than one specific platform. In addition, by having a decentralized architecture, PlatformIO offers both new and existing developers a quick integration path for developing commercial-ready products, and reduces the overall time-to-market. And it runs on any one of your favorite modern operating systems (macOS, MS Windows, Linux, FreeBSD). Technologies PlatformIO applies the latest scalable and flexible software technology to the embedded market – an area traditionally served by complex software tools that experienced hardware engineers have learned over time (often painfully so). Instead, with PlatformIO, users can be hobbyists or professionals. They can import the classic Arduino "Blink" sketch or develop a sophisticated low-level embedded C program for a commercial product. Example code for any supported framework can be compiled and uploaded to a target platform in minutes. The build system structure automatically tags software dependencies and applies them using a modular hierarchy that takes away the usual complexity and pain. Developers no longer have to manually find and assemble an environment of toolchains, compilers, and library dependencies to develop applications for a specific target. With PlatformIO, clicking the compile button will bring in all necessary dependencies automatically. It's analogous to if you were a furniture designer, and your CAD program had a "build" button that caused a robot to fetch all the necessary pieces and fasteners and correctly assemble them. piocore is a unique, developed-from-scratch build system that removes the usual pain of software integration, packaging, and library dependencies that developers encounter when they move beyond the bounds of a specific SDK or example embedded application. It can be used with a variety of code development environments and allows easy integration with numerous cloud platforms and web services feeds. The user experiences no barriers to getting started quickly: no license fees, no legal contracts. The user maintains full flexibility of the build environment because the tools are open source and permissively licensed (no permission needed to modify them, and no requirement to share changes.) Problematic • The main problem which repulses people from the 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 an operating system they prefer to work with. 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 projectconf • 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. PlatformIO IDE PlatformIO IDE is the next-generation integrated development environment for IoT. • Cross-platform build system without external dependencies to the OS software: • 800+ boards • 35+ platforms • 20+ frameworks • piodebug • pioremote • 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 piocore and CLI tool (pio, platformio) • Built-in piohome. ---- We provide official packages (plugins, extensions) for the most popular IDEs and text editors. NOTE: In our experience, ide_vscode offers better system performance, and users have found it easier to get started PlatformIO for 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). Install PlatformIO for VSCode / Get started .SS PlatformIO for CLion The CLion is a cross-platform C/C++ IDE for Linux, OS X, and Windows. CLion includes such features as a smart editor, code generation, code quality assurance, automated refactorings, on-the-fly code analysis, project manager, integrated version control systems and debugger. Install PlatformIO for CLion / Get started .SS PlatformIO Core (CLI) PlatformIO Core (CLI tool) is a heart of whole PlatformIO ecosystem and consists of • Multi-platform Build System • Development platform and package managers • librarymanager • ldf • Serial Port Monitor • Integration components (ide and ci). PlatformIO Core is written in Python and works on Windows, macOS, Linux, FreeBSD and ARM-based credit-card sized computers (Raspberry Pi, BeagleBone, CubieBoard, Samsung ARTIK, etc.). 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 pioide. 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 pioide. PlatformIO Core is built into PlatformIO IDE and you will be able to use it within PlatformIO IDE Terminal. If you need PlatformIO Core commands outside PlatformIO IDE, please piocore_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 [image] Used in demo 1. Source code of Wiring Blink Example 2. cmd_run command 3. platformio run -t upload command. Platform Manager [image] Used in demo 1. userguide_platform 2. cmd_platform_list command 3. platformio platform search avr command 4. platformio platform show teensy command 5. cmd_platform_update command. Library Manager [image] Used in demo 1. cmd_lib 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. cmd_lib_update command. Over-the-Air update for ESP8266 .SS Used in demo 1. cmd_run command 2. platformio run -t upload command. Installation NOTE: Please note that you do not need to install piocore if you are going to use pioide. piocore is built into PlatformIO IDE and you will be able to use it within PlatformIO IDE Terminal. If you need piocore outside PlatformIO IDE, please Install Shell Commands. PlatformIO Core is written in Python and works on Windows, macOS, Linux, FreeBSD and ARM-based credit-card sized computers (Raspberry Pi, BeagleBone, CubieBoard, Samsung ARTIK, etc.). • System requirements • Installation Methods • Installer Script • Super-Quick (Mac / Linux) • Local Download (Mac / Linux / Windows) • Python Package Manager • macOS Homebrew • Virtual Environment • Prerequisites • Creating • Development Version • Install Shell Commands • Unix and Unix-like • Method 1 • Method 2 • Windows • Uninstall PIO Core and dependent packages • Integration with custom applications (extensions, plugins) • Prerequisite • Python Interpreter • Installer Script • Workflow • Step 1. Where is PlatformIO Core installed? • Step 2. Install PlatformIO Core • Troubleshooting System requirements Operating System Windows, macOS, Linux, FreeBSD, Linux ARMv6+ Python Interpreter Python 3.5+ (Python 2.7 is not recommended, support for it will be removed in the next releases). See detailed instruction on how to faq_install_python for Windows. 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: • Please install faq_udev_rules • Raspberry Pi users, please read this article Enable serial port on Raspberry Pi. Installation Methods Please choose ONE of the following methods: • Installer Script • Super-Quick (Mac / Linux) • Local Download (Mac / Linux / Windows) • Python Package Manager • macOS Homebrew • Virtual Environment • Prerequisites • Creating Installer Script WARNING: PlatformIO DOES NOT require administrative/sudo permissions. Please install using default user account WITHOUT EXTRA PERMISSIONS. Super-Quick (Mac / Linux) To install or upgrade PlatformIO Core paste that at a Terminal prompt: python3 -c "$(curl -fsSL https://raw.githubusercontent.com/platformio/platformio/develop/scripts/get-platformio.py)" # or using `curl` curl -fsSL https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py -o get-platformio.py python3 get-platformio.py # or using `wget` wget https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py -O get-platformio.py python3 get-platformio.py Local Download (Mac / Linux / Windows) To install or upgrade PlatformIO Core, download (save as...) get-platformio.py script. Then run the following: # 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\script\get-platformio.py # run it python.exe get-platformio.py NOTE: If you need to have access to platformio or platformio.exe commands from other applications or terminal in your OS, please Install Shell Commands. Python Package Manager WARNING: We recommend using this method ONLY FOR ci use cases or where your have full permissions to install PlatformIO Core into the global scope of your OS. For personal using, and avoiding maintenance and upgrade issues, we HIGHLY RECOMMEND using Installer Script which installs PlatformIO Core into an isolated virtual environment and does not affect your OS. The latest stable version of PlatformIO Core may be installed or upgraded via Python Package Manager (‐ pip) as follows: pip install -U platformio macOS Homebrew The latest stable version of PlatformIO may be installed or upgraded via macOS Homebrew Packages Manager (brew) as follows: brew install platformio Virtual Environment PlatformIO Core may be installed into isolated Python environment. This method is very good if you don't want to install PlatformIO Core Python's dependencies (packages) into your global system scope. pioide uses this method to install PlatformIO Core. Default and recommended environment folder is "projectconf_pio_core_dir/penv". You can print environment folder path using the next command in your system terminal: python -c "import os; print(os.path.join(os.getenv('PLATFORMIO_CORE_DIR', os.path.join(os.path.expanduser('~'), '.platformio')), 'penv'))" ######################## Examples # Windows # C:\Users\UserName\.platformio\penv # Linux # ~/.platformio/penv # /home/username/.platformio/penv # macOS # ~/.platformio/penv # /Users/username/.platformio/penv Prerequisites 1. Please remove existing PlatformIO Core environment folder if exists. See above command how to get path to environment folder. 2. Please check that you have a valid Python interpreter running a next command in system terminal. Python 2.7.9+ or Python 3.5+ is recommended. python --version # or, for Unix (Linux, Mac), you can use `python2` or `python3` aliases python2 --version python3 --version WARNING: Windows Users: If you already tried to install pioide and did not get success, please open system's Control Panel > Installed Programs, and check if PlatformIO IDE tried to install an own isolated Python 2.7 version. Please uninstall it. Also is good to uninstall all Python interpreters from a system and install manually the latest Python using faq_install_python guide. 3. Make sure virtualenv --help command exists in a system, otherwise, please install it manually using pip install virtualenv or pip2 install virtualenv command. If pip (Python Package Manager) does not exists, you have to install it manually. See https://pip.pypa.io/en/stable/installing/ Creating 1. Create a folder which contains all the necessary executables to use the packages that PIO Core would need using virtualenv command: virtualenv /path/to/.platformio/penv # If you want to use a custom Python interpreter virtualenv --python=/path/to/custom/python /path/to/.platformio/penv # EXAMPLES # Windows virtualenv C:\Users\UserName\.platformio\penv virtualenv --python=C:\Python27\python.exe C:\Users\UserName\.platformio\penv # Unix (Linux, Mac) virtualenv ~/.platformio/penv virtualenv -p python3 ~/.platformio/penv 2. Activate virtual environment # Windows C:\Users\UserName\.platformio\penv\Scripts\activate # Unix (Linux, Mac) source /path/to/.platformio/penv/bin/activate # or . /path/to/.platformio/penv/bin/activate 3. Install PIO Core into virtual environment pip install -U platformio If you plan to use PIO Core commands outside virtual environment, please Install Shell Commands. Development Version WARNING: If you use pioide, please enable development version: • ide_atom: "Menu PlatformIO: Settings > PlatformIO IDE > Use development version of PlatformIO Core" • ide_vscode: Set platformio-ide.useDevelopmentPIOCore to true in ide_vscode_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 you see a new commits in PlatformIO GitHub repository (branch: develop) like so: pip install -U https://github.com/platformio/platformio-core/archive/develop.zip Or: pio upgrade --dev To revert to the latest stable version: pip uninstall platformio pip install -U platformio Install Shell Commands piocore consists of 2 standalone tools in a system: • platformio or pio (short alias) - piocore_userguide • piodebuggdb - alias of cmd_debug If you have pioide already installed, you do not need to install piocore separately. Just link these tools with your shell: • Unix and Unix-like • Method 1 • Method 2 • Windows Unix and Unix-like In Unix and Unix-like systems, there are multiple ways to achieve this. Method 1 You can export PlatformIO executables' directory to the PATH environmental variable. This method will allow you to execute platformio commands from any terminal emulator as long as you're logged in as the user PlatformIO is installed and configured for. If you use Bash as your default shell, you can do it by editing either ~/.profile or ~/.bash_profile and adding the following line: export PATH=$PATH:~/.platformio/penv/bin If you use Zsh, you can either edit ~/.zprofile and add the code above, or for supporting both, Bash and Zsh, you can first edit ~/.profile and add the code above, then edit ~/.zprofile and add the following line: emulate sh -c '. ~/.profile' After everything's done, just restart your session (log out and log back in) and you're good to go. If you don't know the difference between the two, check out this page. Method 2 You can create system-wide symlinks. This method is not recommended if you have multiple users on your computer because the symlinks will be broken for other users and they will get errors while executing PlatformIO commands. If that's not a problem, open your system terminal app and 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 After that, you should be able to run PlatformIO from terminal. No restart is required. 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). Uninstall PIO Core and dependent packages • Uninstall PIO Core tool # uninstall standalone PIO Core installed via `pip` pip uninstall platformio # 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 projectconf_pio_core_dir folder (in user's HOME directory). Just remove it. Integration with custom applications (extensions, plugins) We recommend using PlatformIO Core Installer Script when you integrate PlatformIO Core into an application, such as extension or plugin for IDE. Examples that use this installer are: • platformio-node-helpers, is used by PlatformIO IDE for VSCode and PlatformIO IDE for Atom Prerequisite Python Interpreter PlatformIO Core Installer Script is written in Python and is compatible with Python 2.7+ and Python 3.5+. We highly recommend using Python 3. Python is installed by default on the most popular Unix OS (macOS, Linux, FreeBSD). If there is no Python on a user machine (you can check running python --version), we have 2 options: 1. Ask the user to install Python 3 using our guide faq_install_python 2. You can automatically Download Portable Python 3 and unpack it in a cache folder of your application. Later, you can use unpacked_protable_python_dir/python.exe for the installer script. Installer Script There are 2 options on how to work with PlatformIO Core Installer Script: 1. Bundle get-platformio.py file into your application 2. Download get-platformio.py file on demand. In both cases, you will need to have get-platformio.py script on the end-user machine. You can copy or download it to a cache/temporary folder. A list of arguments and options for the installer script is available via python get-platformio.py --help Workflow We will describe a simple workflow on how to automatically install piocore for end-user of your application/extension. We assume that get-platformio.py script is already copied/downloaded and exists on the end-user machine. See above how to get it. Step 1. Where is PlatformIO Core installed? You should check the PlatformIO Core installation state each time when the user starts your application. You need to call the Installer Script with check core arguments: python get-platformio.py check core This command returns 0 "exit code" when PlatformIO Core is already installed and is ready for use, otherwise, the non-zero code of subprocess will be returned and you need to install PlatformIO Core (see Step #2 below). If you need to have full information about PlatformIO Core installation state, please run with --dump-state option and specify a folder or a full path where to save data in JSON format: get-platformio.py check core --dump-state tmpdir/pioinstaller-state.json Now, read JSON file and use platformio_exe binary to call PlatforIO Core using CLI (see piocore_userguide). You can also export penv_bin_dir into system environment PATH variable and platformio command will be available without a full path. Example of pioinstaller-state.json run on macOS: { "cache_dir": "/Users/Freedom/.platformio/.cache", "core_dir": "/Users/Freedom/.platformio", "core_version": "4.3.1", "installer_version": "0.2.0", "is_develop_core": false, "penv_bin_dir": "/Users/Freedom/.platformio/penv/bin", "penv_dir": "/Users/Freedom/.platformio/penv", "platformio_exe": "/Users/Freedom/.platformio/penv/bin/platformio", "python_exe": "/Users/Freedom/.platformio/penv/bin/python", "system": "darwin_x86_64" } Step 2. Install PlatformIO Core To install PlatformIO Core into the virtual environment in an automatic mode, please call installer script without any arguments: python get-platformio.py Available options: • --verbose, verbose output • --dev, install the latest development version of PlatformIO Core • --ignore-python, a path to Python to be ignored (multiple options and unix wildcards are allowed) More options are available at python get-platformio.py --help. Installer Script will return exit code 0 on success, otherwise non-zero code and error explanation. Next time just use again python get-platformio.py check core as described in Step #1 (see above). 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 faq. If you find any issues with PlatformIO Core Installer Script, please report to https://github.com/platformio/platformio-core-installer/issues Quick Start This tutorial introduces you to the basics of piocore 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 piocore provides special cmd_project_init command for configuring your projects. It allows one to initialize new empty project or update existing with the new data. What is more, cmd_project_init can be used for ide. It means that you will be able to import pre-generated 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 framework_arduino: ┌────────────────────────┬───────────────────────────────┬───────────────────┐ │ Platform │ Board │ Framework │ ├────────────────────────┼───────────────────────────────┼───────────────────┤ │ platform_atmelavr │ board_atmelavr_uno │ framework_arduino │ ├────────────────────────┼───────────────────────────────┼───────────────────┤ │ platform_espressif8266 │ board_espressif8266_nodemcuv2 │ framework_arduino │ ├────────────────────────┼───────────────────────────────┼───────────────────┤ │ platform_teensy │ board_teensy_teensy31 │ framework_arduino │ └────────────────────────┴───────────────────────────────┴───────────────────┘ Board Identifier cmd_project_init command requires to specify board identifier ID. It can be found using boards catalog, Boards Explorer or cmd_boards command. For example, using cmd_boards let's try to find Teensy boards: > platformio boards teensy Platform: teensy --------------------------------------------------------------------------- ID MCU Frequency Flash RAM Name --------------------------------------------------------------------------- teensy20 atmega32u4 16MHz 31K 2.5K Teensy 2.0 teensy30 mk20dx128 48MHz 128K 16K Teensy 3.0 teensy31 mk20dx256 72MHz 256K 64K Teensy 3.1 / 3.2 teensylc mkl26z64 48MHz 62K 8K Teensy LC teensy20pp at90usb1286 16MHz 127K 8K Teensy++ 2.0 According to the table above the ID for board_teensy_teensy31 is teensy31. Also, the ID for board_atmelavr_uno is uno and for board_espressif8266_nodemcuv2 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 directory > 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 project 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 project 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: • projectconf • 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 file. • Miscellaneous files for VCS and ci support. NOTE: If you need to add new board to the existing project please use cmd_project_init again. The result of just generated 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 ; https://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); } The final Project structure: project_dir ├── lib │ └── README ├── platformio.ini └── src └── main.cpp Process Project piocore provides special cmd_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 projectconf • platformio run --target upload. Build project and upload firmware to the all devices specified in projectconf • 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: [image] Further Reading • Project examples • piocore_userguide for piocore commands CLI Guide Contents • CLI Guide • Usage • Options • Commands Usage pio [OPTIONS] COMMAND platformio [OPTIONS] COMMAND # "pio" is the alias of "platformio" command Options --no-ansi Do not print ANSI control characters. See also PLATFORMIO_NO_ANSI and PLATFORMIO_FORCE_ANSI environment variables. --version Show the version of PlatformIO --help, -h Show help for the available options and commands $ platformio --help $ platformio COMMAND --help Commands platformio account CLI helper command for pioaccount. 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 • Description • Options Usage platformio account forgot [OPTIONS] pio account forgot [OPTIONS] Description Allows you to reset password for pioaccount using username or email which were specified for registration. Options --username, -u Username or email. You can omit this option and enter username or email 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 pioaccount. If you are not able to provide authentication credentials manually you can use PLATFORMIO_AUTH_TOKEN. This is very useful for ci systems and pioremote operations. Options --username, -u Username or email. You can omit this option and enter username or email 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 pioaccount. platformio account password Contents • platformio account password • Usage • Description Usage platformio account password pio account password Description Change password for pioaccount. platformio account register Contents • platformio account register • Usage • Description • Options Usage platformio account register [OPTIONS] pio account register [OPTIONS] Description Create a new pioaccount. Options You can omit these options and enter them later in Register Wizard. --username, -u A username. You can use it later for cmd_account_login, cmd_account_update, and cmd_account_forgot commands. The username must contain at least 4 characters including single hyphens, and cannot begin or end with a hyphen. --email, -e An email. Please enter existing email, you will receive a confirmation letter. --password, -p A password. You will need it for cmd_account_login, cmd_account_password, cmd_account_token, and cmd_account_update commands. --firstname A first name. --lastname A last name. platformio account show Contents • platformio account show • Usage • Description • Options Usage platformio account show pio account show Description Show detailed information about pioaccount: • Active subscriptions • Available packages and services 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 ci systems, pioremote 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. --json-output Return the output in JSON format platformio account update Contents • platformio account update • Usage • Description • Options Usage platformio account update [OPTIONS] pio account update [OPTIONS] Description Update pioaccount profile. Options You can omit these options and enter them later in update Wizard. --username, -u A username that must contain at least 4 characters including single hyphens, and cannot begin or end with a hyphen. --email, -e An email. Please enter existing email, you will receive a confirmation letter. --firstname A first name. --lastname A last name. --current-password A current password to confirm this operation. 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 --------------------------------------------------------------------------- ID MCU Frequency Flash RAM Name --------------------------------------------------------------------------- btatmega168 atmega168 16MHz 14K 1K Arduino BT ATmega168 btatmega328 atmega328p 16MHz 28K 2K Arduino BT ATmega328 diecimilaatmega168 atmega168 16MHz 14K 1K Arduino Duemilanove or Diecimila ATmega168 diecimilaatmega328 atmega328p 16MHz 30K 2K Arduino Duemilanove or Diecimila ATmega328 esplora atmega32u4 16MHz 28K 2K Arduino Esplora ethernet atmega328p 16MHz 31K 2K Arduino Ethernet ... 2. Filter Arduino-based boards $ platformio boards arduino Platform: atmelavr --------------------------------------------------------------------------- ID MCU Frequency Flash RAM Name --------------------------------------------------------------------------- btatmega168 atmega168 16MHz 14K 1K Arduino BT ATmega168 btatmega328 atmega328p 16MHz 28K 2K Arduino BT ATmega328 diecimilaatmega168 atmega168 16MHz 14K 1K Arduino Duemilanove or Diecimila ATmega168 diecimilaatmega328 atmega328p 16MHz 30K 2K Arduino Duemilanove or Diecimila ATmega328 esplora atmega32u4 16MHz 28K 2K Arduino Esplora ethernet atmega328p 16MHz 31K 2K Arduino Ethernet ... 3. Filter mbed-enabled boards $ platformio boards mbed Platform: freescalekinetis --------------------------------------------------------------------------- ID MCU Frequency Flash RAM Name --------------------------------------------------------------------------- frdm_k20d50m mk20dx128vlh5 48MHz 128K 16K Freescale Kinetis FRDM-K20D50M frdm_k22f mk22fn512vlh12 120MHz 512K 128K Freescale Kinetis FRDM-K22F ... Platform: nordicnrf51 --------------------------------------------------------------------------- ID MCU Frequency Flash RAM Name --------------------------------------------------------------------------- wallBotBLE nrf51822 16MHz 128K 16K JKSoft Wallbot BLE nrf51_dk nrf51822 32MHz 256K 32K Nordic nRF51-DK ... Platform: nxplpc --------------------------------------------------------------------------- ID MCU Frequency Flash RAM Name --------------------------------------------------------------------------- blueboard_lpc11u24 lpc11u24 48MHz 32K 8K BlueBoard-LPC11U24 dipcortexm0 lpc11u24 50MHz 32K 8K DipCortex M0 lpc11u35 lpc11u35 48MHz 64K 10K EA LPC11U35 QuickStart Board ... Platform: ststm32 --------------------------------------------------------------------------- ID MCU Frequency Flash RAM Name --------------------------------------------------------------------------- disco_f401vc stm32f401vct6 84MHz 256K 64K 32F401CDISCOVERY nucleo_f030r8 stm32f030r8t6 48MHz 64K 8K ST Nucleo F030R8 ... 4. Filter boards which are based on ATmega168 MCU $ platformio boards atmega168 Platform: atmelavr --------------------------------------------------------------------------- ID MCU Frequency Flash RAM Name --------------------------------------------------------------------------- btatmega168 atmega168 16MHz 14K 1K Arduino BT ATmega168 diecimilaatmega168 atmega168 16MHz 14K 1K Arduino Duemilanove or Diecimila ATmega168 miniatmega168 atmega168 16MHz 14K 1K Arduino Mini ATmega168 atmegangatmega168 atmega168 16MHz 14K 1K Arduino NG or older ATmega168 nanoatmega168 atmega168 16MHz 14K 1K Arduino Nano ATmega168 pro8MHzatmega168 atmega168 8MHz 14K 1K Arduino Pro or Pro Mini ATmega168 (3.3V, 8 MHz) pro16MHzatmega168 atmega168 16MHz 14K 1K Arduino Pro or Pro Mini ATmega168 (5V, 16 MHz) lilypadatmega168 atmega168 8MHz 14K 1K LilyPad Arduino ATmega168 168pa16m atmega168p 16MHz 15K 1K Microduino Core (Atmega168PA@16M,5V) 168pa8m atmega168p 8MHz 15K 1K Microduino Core (Atmega168PA@8M,3.3V) 5. Show boards by platform_timsp430 $ platformio boards timsp430 Platform: timsp430 --------------------------------------------------------------------------- ID MCU Frequency Flash RAM Name --------------------------------------------------------------------------- lpmsp430fr5739 msp430fr5739 16MHz 15K 1K FraunchPad w/ msp430fr5739 lpmsp430f5529 msp430f5529 16MHz 128K 1K LaunchPad w/ msp430f5529 (16MHz) lpmsp430f5529_25 msp430f5529 25MHz 128K 1K LaunchPad w/ msp430f5529 (25MHz) lpmsp430fr5969 msp430fr5969 8MHz 64K 1K LaunchPad w/ msp430fr5969 lpmsp430g2231 msp430g2231 1MHz 2K 128B LaunchPad w/ msp430g2231 (1MHz) lpmsp430g2452 msp430g2452 16MHz 8K 256B LaunchPad w/ msp430g2452 (16MHz) lpmsp430g2553 msp430g2553 16MHz 16K 512B LaunchPad w/ msp430g2553 (16MHz) platformio check Helper command for piocheck. Contents • platformio check • Usage • Description • Options • Examples Usage platformio check [OPTIONS] pio check [OPTIONS] Description Perform static analysis check on PlatformIO based project. By default check_tool_cppcheck analysis tool is used. More details about PlatformIO piocheck. Options -e, --environment Process specified environments. --pattern You can specify which source files or folders should be included/excluded from check process. By default only projectconf_pio_src_dir and projectconf_pio_include_dir are checked. Multiple --pattern options and GLOB Patterns are allowed. Example: platformio check --pattern="tests" --pattern="src/*.cpp" --flags Specify additional flags that need to be passed to the analysis tool. If multiple tools set in projectconf_check_tool option, the flags are passed to all of them. Individual flags for each tool can be added using a special suffix with the tool name. ┌─────────────────┬─────────────────────────────┐ │ Flag │ Meaning │ ├─────────────────┼─────────────────────────────┤ │ --addon=<addon> │ Execute addon. i.e. cert. │ ├─────────────────┼─────────────────────────────┤ │ -D<ID> │ Define preprocessor symbol. │ └─────────────────┴─────────────────────────────┘ Multiple --flags options are allowed. Example: platformio check --flags "-DDEBUG cppcheck: --std=c++11 --platform=avr8" --severity Specify the check_severity types which will be reported by the check_tools. Possible values described in check_severity section. Multiple --severity options are allowed. Example: platformio check --severity=high -d, --project-dir Specify the path to project directory. By default, --project-dir is equal to the current working directory (CWD). -c, --project-conf Process project with a custom projectconf. --json-output Return the output in JSON format. --fail-on-defect Fail (exit with non-zero code) if there is a defect found with specified severity. By default exit code is the same as the exit code returned by a tool selected for performing check. Possible values described in check_severity section. Multiple --fail-on-defect options are allowed. Example: platformio check --fail-on-defect=low --fail-on-defect=medium -s, --silent Suppress progress reporting and show only defects with high severity. See check_severity. -v, --verbose Show detailed information when processing environments. This option can also be set globally using setting_force_verbose setting or by environment variable PLATFORMIO_SETTING_FORCE_VERBOSE. Examples For the examples please follow to piocheck page. platformio ci 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 cmd_project_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 cmd_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 ci page. NOTE: platformio ci command is useful for library developers. It allows one 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 • *.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 project init --board. --build-dir Path to directory where PlatformIO will initialise new project. By default it's temporary directory within your operating 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. -c, --project-conf Build project using pre-configured projectconf. -O, --project-option Pass additional options from projectconf to cmd_project_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". NOTE: Use multiple --project-option to pass multiple options to projectconf. One option per one argument. For example, platformio ci --project-option="build_unflags = -std=gnu++11" --project-option="build_flags = -std=c++14" -v, --verbose Shows detailed information when processing environments. This option can also be set globally using setting_force_verbose setting or by environment variable PLATFORMIO_SETTING_FORCE_VERBOSE. Examples For the others examples please follow to ci page. platformio debug Helper command for piodebug. Contents • platformio debug • Usage • Description • Options • 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 projectconf_pio_default_envs option from projectconf. -d, --project-dir Specify the path to a project directory. By default, --project-dir is equal to a current working directory (CWD). -c, --project-conf New in version 4.0. Process project with a custom projectconf. --interface PIO Debugging Interface. Valid values: • gdb - GDB: The GNU Project Debugger -v, --verbose Shows detailed information when processing environments. This option can also be set globally using setting_force_verbose setting or by environment variable PLATFORMIO_SETTING_FORCE_VERBOSE. 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 Compiling .pio/build/mzeropro/src/main.o Compiling .pio/build/mzeropro/FrameworkArduinoVariant/variant.o Compiling .pio/build/mzeropro/FrameworkArduino/IPAddress.o Compiling .pio/build/mzeropro/FrameworkArduino/Print.o Archiving .pio/build/mzeropro/libFrameworkArduinoVariant.a Indexing .pio/build/mzeropro/libFrameworkArduinoVariant.a ... Compiling .pio/build/mzeropro/FrameworkArduino/wiring_analog.o Compiling .pio/build/mzeropro/FrameworkArduino/wiring_digital.o Compiling .pio/build/mzeropro/FrameworkArduino/wiring_private.o Compiling .pio/build/mzeropro/FrameworkArduino/wiring_shift.o Archiving .pio/build/mzeropro/libFrameworkArduino.a Indexing .pio/build/mzeropro/libFrameworkArduino.a Linking .pio/build/mzeropro/firmware.elf Calculating size .pio/build/mzeropro/firmware.elf Building .pio/build/mzeropro/firmware.bin text data bss dec hex filename 11512 256 1788 13556 34f4 .pio/build/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 ... 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. Device Manager CLI To print all available commands and options use: pio device --help platformio device --help platformio device COMMAND --help platformio device list Contents • platformio device list • Usage • Description • Options • Examples Usage platformio device list [OPTIONS] pio device list [OPTIONS] Description List available devices. Default is set to --serial and all available Serial Ports will be shown. Options --serial List available Serial Ports, default. --logical List available logical devices. --mdns List multicast DNS services. --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) 3. List multicast DNS services and logical devices $ platformio device list --mdns --logical Multicast DNS Services ====================== PlatformIO._bttremote._tcp.local. ------------------------------ Type: _bttremote._tcp.local. IP: ... Port: 62941 Properties: ... Time for PlatformIO._adisk._tcp.local. --------------------------------- Type: _adisk._tcp.local. IP: 192.168.0.1 Port: 9 Properties: ... PlatformIO._ssh._tcp.local. ------------------------ Type: _ssh._tcp.local. IP: ... Port: 22 PlatformIO._sftp-ssh._tcp.local. ----------------------------- Type: _sftp-ssh._tcp.local. IP: ... Port: 22 Logical Devices =============== / - Name: /Volumes/PIO ------------- Name: PIO /Volumes/PLUS -------------- Name: PLUS platformio device monitor Contents • platformio device monitor • Usage • Description • Options • Filters • Capture output to a file • Device Monitor Filter API • Examples 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. Miniterm supports RFC 2217 remote serial ports and raw sockets using URL Handlers such as rfc2217://<host>:<port> respectively socket://<host>:<port> as port argument when invoking. 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, or valid URL Handlers. Can be customized in projectconf using projectconf_monitor_port option. URL Handlers • rfc2217://<host>:<port>[?<option>[&<option>...]] • socket://<host>:<port>[?logging={debug|info|warning|error}] • loop://[?logging={debug|info|warning|error}] • hwgrep://<regexp>[&skip_busy][&n=N] • spy://port[?option[=value][&option[=value]]] • alt://port?class=<classname> -b, --baud Set baud rate, default 9600. Can be customized in projectconf using projectconf_monitor_speed 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). Can be customized in projectconf using projectconf_monitor_rts option. --dtr Set initial DTR line state (0 or 1). Can be customized in projectconf using projectconf_monitor_dtr option. --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. See available filters at Filters. --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 -d, --project-dir Specify the path to project directory. By default, --project-dir is equal to current working directory (CWD). -e, --environment Process specified environments. You can also specify which environments should be processed by default using projectconf_pio_default_envs option from projectconf. Filters New in version 4.3. A list of filters that can be applied for monitor output using platformio device monitor --filter or projectconf and projectconf_monitor_filters options. option. ┌───────────────────────────┬────────────────────────────────────────┐ │ Name │ Description │ ├───────────────────────────┼────────────────────────────────────────┤ │ default │ Remove typical terminal control codes │ │ │ from input │ ├───────────────────────────┼────────────────────────────────────────┤ │ colorize │ Apply different colors for received │ │ │ and echo │ ├───────────────────────────┼────────────────────────────────────────┤ │ debug │ Print what is sent and received │ ├───────────────────────────┼────────────────────────────────────────┤ │ direct │ Do-nothing: forward all data │ │ │ unchanged │ ├───────────────────────────┼────────────────────────────────────────┤ │ hexlify │ Show a hexadecimal representation of │ │ │ the data (code point of each │ │ │ character) │ ├───────────────────────────┼────────────────────────────────────────┤ │ log2file │ Log data to a file │ │ │ "platformio-device-monitor-%date%.log" │ │ │ located in the current working │ │ │ directory │ ├───────────────────────────┼────────────────────────────────────────┤ │ nocontrol │ Remove all control codes, incl. CR+LF │ ├───────────────────────────┼────────────────────────────────────────┤ │ printable │ Show decimal code for all non-ASCII │ │ │ characters and replace most control │ │ │ codes │ ├───────────────────────────┼────────────────────────────────────────┤ │ time │ Add timestamp with milliseconds for │ │ │ each new line │ ├───────────────────────────┼────────────────────────────────────────┤ │ send_on_enter │ Send a text to device on ENTER │ ├───────────────────────────┼────────────────────────────────────────┤ │ esp32_exception_decoder │ Custom filter for platform_espressif32 │ │ │ which decodes crash exception │ ├───────────────────────────┼────────────────────────────────────────┤ │ esp8266_exception_decoder │ Custom filter for │ │ │ platform_espressif8266 which decodes │ │ │ crash exception │ └───────────────────────────┴────────────────────────────────────────┘ Capture output to a file New in version 4.3. You need to use a log2file filter from Filters: $ platformio device monitor -f log2file -f default or using projectconf and projectconf_monitor_filters [env:log_output_to_file] ... platform = ... monitor_filters = log2file, default Device Monitor Filter API piocore provides an API to extend device monitor with a custom filter declared in "monitor" folder of platforms. See examples: • https://github.com/platformio/platform-espressif32/tree/develop/monitor • https://github.com/platformio/platform-espressif8266/tree/develop/monitor Examples 1. Show available options for monitor $ platformio device monitor --help Usage: platformio device monitor [OPTIONS] Options: -p, --port TEXT Port, a number or a device name -b, --baud INTEGER Set baud rate, default=9600 --parity [N|E|O|S|M] Set parity, default=N --rtscts Enable RTS/CTS flow control, default=Off --xonxoff Enable software flow control, default=Off --rts [0|1] Set initial RTS line state, default=0 --dtr [0|1] Set initial DTR line state, default=0 --echo Enable local echo, default=Off --encoding TEXT Set the encoding for the serial port (e.g. hexlify, Latin1, UTF-8), default: UTF-8 -f, --filter TEXT Add filters / text transformation --eol [CR|LF|CRLF] End of line mode, default=CRLF --raw Do not apply any encodings/transformations --exit-char INTEGER ASCII code of special character that is used to exit the application, default=29 (DEC) --menu-char INTEGER ASCII code of special character that is used to control miniterm (menu), default=20 (DEC) --quiet Diagnostics: suppress non-error messages, default=Off -h, --help 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 home Helper command for piohome. Contents • platformio home • Usage • Description • Options • Examples Usage platformio home pio home Description Launch piohome Web-server. Options --port Web-server HTTP port, default is 8008. --host Web-server HTTP host, default is 127.0.0.1. You can open PIO Home for inbound connections using host 0.0.0.0. --no-open Do not automatically open PIO Home in a system Web-browser. --shutdown-timeout Automatically shutdown server on timeout (in seconds) when no clients are connected. Default is 0 which means never auto shutdown. Examples > platformio home ___I_ /\-_--\ PlatformIO Home / \_-__\ |[]| [] | http://127.0.0.1:8008 |__|____|_______________________ Open PIO Home in your browser by this URL => http://127.0.0.1:8008 PIO Home has been started. Press Ctrl+C to shutdown. Library Manager CLI Usage platformio lib [OPTIONS] COMMAND # To print all available commands and options use platformio lib --help platformio lib COMMAND --help Options -d, --storage-dir Manage custom library storage. It can be used later for the projectconf_lib_extra_dirs option from projectconf. Multiple options are allowed. -g, --global Manage global PlatformIO's library storage ( "projectconf_pio_core_dir/lib") where ldf will look for dependencies by default. -e, --environment Manage libraries for the specific project build environments declared in projectconf. Works for --storage-dir which is valid PlatformIO project. Demo [image] Commands platformio lib builtin Contents • platformio lib builtin • Usage • Description • Options • Examples Usage platformio lib builtin [OPTIONS] pio lib builtin [OPTIONS] Description List built-in libraries based on installed 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 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 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 ... 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 Usage platformio lib [STORAGE_OPTIONS] install [OPTIONS] [LIBRARY...] pio lib [STORAGE_OPTIONS] install [OPTIONS] [LIBRARY...] # install all project dependencies declared via "lib_deps" # (run it from a project root where is located "platformio.ini") platformio lib install [OPTIONS] # install project dependent library # (run it from a project root where is located "platformio.ini") platformio lib install [OPTIONS] [LIBRARY...] # install dependencies for the specific project build environment # (run it from a project root where is located "platformio.ini") platformio lib -e myenv install [OPTIONS] [LIBRARY...] platformio lib -d /path/to/platformio/project -e myenv 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/dir1 -d /path/to/dir2 install [OPTIONS] [LIBRARY...] # [LIBRARY...] forms platformio lib [STORAGE_OPTIONS] install (with no args, project dependencies) platformio lib [STORAGE_OPTIONS] install <id> platformio lib [STORAGE_OPTIONS] install id=<id> platformio lib [STORAGE_OPTIONS] install <id>@<version> platformio lib [STORAGE_OPTIONS] install <id>@<version range> platformio lib [STORAGE_OPTIONS] install <name> platformio lib [STORAGE_OPTIONS] install <name>@<version> platformio lib [STORAGE_OPTIONS] install <name>@<version range> platformio lib [STORAGE_OPTIONS] install <zip or tarball url> platformio lib [STORAGE_OPTIONS] install file://<zip or tarball file> platformio lib [STORAGE_OPTIONS] install file://<folder> platformio lib [STORAGE_OPTIONS] install <repository> platformio lib [STORAGE_OPTIONS] install <name>=<repository> (name it should have locally) platformio lib [STORAGE_OPTIONS] install <repository#tag> ("tag" can be commit, branch or tag) WARNING: If some libraries are not visible in pioide 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: • 1.2.3 - an exact version number. Use only this exact version • ^1.2.3 - any compatible version (exact version for 1.x.x versions) • ~1.2.3 - any version with the same major and minor versions, and an equal or greater patch version • >1.2.3 - any version greater than 1.2.3. >=, <, 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_config). • 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 cmd_lib. Options --save Save installed libraries into the projectconf dependency list (projectconf_lib_deps). You can save libraries for the specific project environment using -e, --environment option from platformio lib command. For example, platformio lib -e myenv install [LIBRARY...]. -s, --silent Suppress progress reporting --interactive Allow one to make a choice for all prompts -f, --force Reinstall/redownload library if it exists 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 • git+ssh://user@git.server.org/my-library • [user@]host.xz:path/to/repo.git 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 • 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: https://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 > platformio lib -g install ArduinoJson@5.6.7 Library Storage: /storage/dir/... Looking for ArduinoJson library in registry Found: https://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: https://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: https://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 https://github.com/adafruit/DHT-sensor-library/archive/master.zip Library Storage: /storage/dir/... LibraryManager: Installing master Downloading [####################################] 100% 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 cmd_lib. Options --json-output Return the output in JSON format 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, BBC micro:bit, DFRobot, RedBearLab, Microduino, LinkIt ONE ... 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, output, 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 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 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_config • 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 • 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_config 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 operator) By default (when neither + nor - is specified), the word is optional, but the libraries that contain it 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. ┌───────────────┬───────────────────────────────────────┐ │ │ │ --
AUTHOR
PlatformIO
COPYRIGHT
2014-present, PlatformIO 4.3 Aug 21, 2021 PLATFORMIO(1)