platformio-core
v6.1.19Features
-
Multi-platform build system supporting Windows, macOS, Linux, and ARM-based systems.
-
Unified package manager for automated installation of toolchains, frameworks, and libraries.
-
Advanced Library Dependency Finder (LDF) that automatically resolves and manages project dependencies.
-
Support for over 40 development platforms including Atmel AVR, Espressif (ESP32/ESP8266), and STM32.
-
Integration with 20+ frameworks such as Arduino, ESP-IDF, Zephyr, and FreeRTOS.
-
Built-in Unified Debugger providing a zero-configuration debugging experience for 300+ boards.
-
Static Code Analysis tools for automated firmware inspection and quality assurance.
-
Remote Development capabilities for deploying and testing firmware on remote devices.
-
Unit Testing framework supporting local and on-target test execution.
-
Serial Port Monitor for real-time communication with embedded hardware.
-
Firmware File Explorer and memory inspection tools for resource optimization.
-
Declarative project configuration via the ‘platformio.ini’ file.
-
Seamless integration with popular IDEs like VSCode, Eclipse, and Sublime Text.
-
Continuous Integration (CI) support for automated build and test pipelines.
-
Support for multiple architectures including ARM, AVR, RISC-V, and FPGA.
PlatformIO Core is built on a decentralized, modular architecture implemented in Python. It functions as an orchestration layer that abstracts the complexities of different hardware platforms and software development kits (SDKs). The system relies on a declarative configuration model where the platformio.ini file defines the project environment, including boards, frameworks, and library dependencies. This configuration triggers the Core to dynamically fetch required toolchains and libraries from the PlatformIO Registry, ensuring a reproducible build environment across different developer machines.
Core Components
- Build System: A SCons-based engine that handles compilation, linking, and firmware image generation across diverse toolchains.
- Package Manager: Manages the lifecycle of development platforms, toolchains, and libraries, handling versioning and updates.
- Library Dependency Finder (LDF): Analyzes source code to identify and include necessary libraries automatically, resolving complex dependency trees.
- Unified Debugger: A standardized interface for GDB-based debugging that works across various hardware probes and microcontrollers without manual configuration.
Use Cases
This library is ideal for:
- Cross-Platform Development: Managing embedded projects that need to be compiled for multiple different microcontrollers (e.g., AVR and ESP32) using a single codebase and configuration.
- Automated CI/CD: Integrating embedded firmware builds and unit tests into automated pipelines like GitHub Actions, GitLab CI, or Jenkins to ensure code quality.
- Library Management: Simplifying the process of finding, installing, and updating third-party libraries without manual file management or vendor-specific IDEs.
- Professional Embedded Engineering: Developing commercial-ready products by leveraging modern toolchains, static analysis, and unit testing methodologies.
Getting Started
To get started with PlatformIO Core, you can install it via Python’s package manager using pip install platformio. Once installed, you can initialize a new project by running pio project init --board <board_id> in your terminal, which generates the essential directory structure and the platformio.ini configuration file. For detailed guidance on commands and configuration, refer to the official PlatformIO Core Documentation and the Quick Start Guide.
Related Projects (20)
View All 20 Projects →
AgentDeck
AgentDeck is a multi-surface physical control interface for AI coding agents, enabling real-time steering of agents like Claude Code and Codex via hardware. It supports 13 different display surfaces simultaneously, utilizing a Node.js or Swift-based bridge to coordinate between terminal-based agents and devices like the Stream Deck+, Android tablets, and ESP32 displays. The system includes a sophisticated performance evaluation framework (APME) that uses local SQLite storage to track and optimize agent efficiency.
EverBlu Cyble Enhanced RF Meter Reader
This firmware extracts water and gas usage data from Itron EverBlu Cyble meters using ESP32 or ESP8266 microcontrollers and a CC1101 radio transceiver. It implements the proprietary RADIAN protocol on the 433 MHz band, offering seamless integration with Home Assistant through both MQTT AutoDiscovery and a native ESPHome external component.
PicoSound Audio Library for RP2040
PicoSound is a dual-core audio engine for the Raspberry Pi Pico (RP2040) that offloads audio processing to Core1 to ensure glitch-free playback. It supports an 8-channel mixer, synthesized waveforms, and WAV file streaming via LittleFS or PROGMEM, targeting both Arduino IDE and PlatformIO environments.
ESPHome Tesla BLE
This project enables ESP32 microcontrollers to manage Tesla vehicle charging and monitor telemetry over Bluetooth Low Energy using the ESPHome framework. It supports key pairing, charging current adjustment, and vehicle wake management while utilizing FreeRTOS for task handling on the ESP32 platform.
TinyBling - CH32V003 NeoPixel Pendant
TinyBling is a wearable electronic pendant featuring 16 WS2812C-2020 addressable LEDs driven by a CH32V003 RISC-V microcontroller. It utilizes custom assembly-optimized bit-banging to control NeoPixels without hardware SPI, supporting various light animations and interactive games. The project is designed for compact PCB manufacturing and runs on a rechargeable LIR2032 coin cell.
Home Assistant ePaper Remote
A dedicated e-Ink remote control for Home Assistant built for ESP32-S3 devices like the M5Paper and Lilygo T5. It utilizes the Home Assistant WebSocket API for real-time state updates and control without requiring additional server-side plugins.
OpenSpool
OpenSpool is an open-source filament management system that uses NFC tags to automatically sync spool settings with 3D printers. Built on the ESPHome framework for ESP32 microcontrollers, it integrates with printers via MQTT to automate filament identification and configuration.
CH32V003 USB Meter
An open-source USB power meter based on the CH32V003 RISC-V microcontroller and INA219 sensor. It monitors voltage, current, and power (up to 100W/20V/5A) and displays data on a 0.96-inch OLED screen. The project features a compact design with PD 2.0 pass-through support and includes comprehensive hardware, firmware, and 3D enclosure files.