PlatformIO in VSCode – how to develop Arduino software like a pro

Many people start with the Arduino IDE – and that's perfectly fine.
It's quick to set up, easy to use, and perfect for your first projects.

But at some point, you reach a point where you think:
“Why is my project becoming so disorganized?”
Why is compiling so slow?
“Can't I work with multiple boards or libraries without creating chaos?”

The answer: Yes – with PlatformIO.

In this article, I will show you, what PlatfromIO is, how it works, and why it's combination with VSCode maybe is the most important step in moving from a hobbyist environment to a professional development workflow.

What exactly is PlatformIO?

PlatformIO is a modern development environment for embedded systems – i.e., microcontrollers such as Arduino, ESP32, STM32, RP2040, etc.

It is:

  • A build environment

  • Project and dependency management

  • A package manager for libraries

  • Fully integrated into VSCode (or alternatively CLI-based)

In short:
PlatformIO is what professional developers would use – if you want to remain Arduino compatiblebut finally need a clean, scalable workflow.

Why not just stick with the Arduino IDE?

FeatureArduino-IDEPlatformIO
Multiple boards in parallelDifficultEasy
Project structureChaoticClean
Intellisense / AutocompletionLimitedFully
Version control (e.g., Git)HardEasy
Library-ManagementManual & often messyAutomatic & declarative
command lineHardly usableFully integrated
Tests / DebuggingAlmost not at allIntegratable (e.g., unit tests, breakpoints)

So if you want to program Arduino “like a pro,” PlatformIO is the next logical step.

How to switch: Install PlatformIO in VSCode

Step 1: Install VSCode

Available for Windows, macOS, Linux → https://code.visualstudio.com/

Step 2: Install PlatformIO Extension

  • Open VSCode → Extensions → search for “PlatformIO IDE” → install

  • After that, a new PlatformIO icon (with the alien head 👽) will appear on the left.

Step 3: Create a new project

  • Click on “New Project.”

  • Choose:

    • Board (e.g., Arduino Uno, ESP32, STM32…)

    • Framework (e.g., Arduino or bare metal)

    • storage location

Tip: You can change your board or add new targets at any time – PlatformIO automatically loads the appropriate toolchain setup!

What is different from the Arduino IDE?

1. Project structure

Your projects automatically have:

  • /src/ → your actual code

  • /lib/ → Own libraries

  • /include/ → Header files

  • platformio.ini → Central project configuration (comparable to a Makefile)

No more copy-paste chaos – everything is neatly separated.

2. Configuration via platformio.ini

Instead of cryptic settings in the IDE, here you will find a file that contains everything:

[env:uno]
platform = atmelavr
board = uno
framework = arduino
upload_port = COM4
monitor_speed = 9600

This allows you to, for example:

  • Define multiple boards in the same project

  • Set libraries and build flags

  • Set up upload ports and monitors

  • Enable OTA or debugging

3. Better autocompletion & code quality

PlatformIO takes full advantage of VSCode's IntelliSense feature:
You get:

  • Clean code completion

  • Error message already during writing

  • Direct navigation in functions, headers, and variables

It feels 10 times more professional – especially for larger projects.

4. Build & upload with a click or terminal

You can:

  • Build, flash, debug with the alien head button in the sidebar

  • Or work in the console with pio run, pio upload, pio monitor arbeiten

The CLI tool pio is powerful – you can even automate projects or build them using scripts.

Why this switch is really worthwhile

If you only do small Blinky projects, you may not need PlatformIO.

But as soon as you:

  • use multiple boards

  • Uses libraries from the Internet

  • Want to version projects?

  • build a larger code base

  • share your projects with others

  • really want to understand how embedded development works

... PlatformIO is the platform of your choice.

You gain structure, control, efficiency—and learn how professional development environments work along the way.

Conclusion: Better projects require better tools.

If you are seriously developing embedded software – including in the Arduino universe – PlatformIO is your next logical step.
It brings you:

  • order

  • efficiency

  • control

  • professionalism

And incidentally, it helps you to better understand what you are actually developing.

“Get out of the comfort zone of the Arduino IDE – and into the world of real development tools.”

FAQ – Frequently asked questions

Is PlatformIO suitable for beginners?

Yes – if you're willing to rethink things for a moment. The first few minutes will feel unfamiliar, but after that you'll never miss the Arduino IDE again.

Can I continue to use my existing Arduino projects?

Yes. Simply Insert it into /src and adjust if necessary (e.g. #includepath). Some libraries require different names, but this is usually specified in the documentation.

Which boards are supported?

Hundreds – from Arduino to ESP32, STM32, Teensy, RP2040, ESP8266, and ATtiny. Commercial boards too.

Do I have to use the command line?

No – but you can. And you should if you want to automate your workflow or understand it more deeply.