PlatformIO + ESP32: 6 top reasons for learning it 

 July 2, 2019

By  Peter

In this post, I write about my top six reasons why I decided to learn how to use PlatformIO IDE, especially (but not only) to use with my ESP32 projects.

Here’s my reasons, in no particular order.

Reason 1

Why use PlatformIO, reason 1: my projects are getting larger.

The first reason is that my Arduino and ESP32 projects are getting larger. I find that the Arduino IDE is starting to show its constraints, especially because as the projects are getting larger, they are getting more complicated.

PlatformIO, on the other hand, when used with an editor like Atom or MS Code, makes it easy to handle much larger projects.

As you probably know, Microsoft Visual Studio (the commercial version of MS Code) is an integrated development environment that has been used to create gigantic projects (for example, the Microsoft Windows operating systems, and Microsoft Office).

So I’m sure it’s going to be able to handle my projects 🙂

Reason 2

Reason 2: I want better control of project dependencies

The second reason the need for better control of project dependencies.

Again, because my projects are becoming more complicated, I started having more frequent issues with incompatibilities between libraries of different versions.

I needed a way to control my project dependencies in a centralized way, and PlatformIO solves this problem via the project configuration file.

As part of the curriculum of ESP32 Unleashed (a new course I’m about to publish in early July, 2019), I’m going to show you how to use the project configuration file to mark the exact version of a particular library that you want to use or even a particular platform.

Dependencies control is done at the project level, which is awesome. Each project has its own dependencies, and the tool manages them independently of other projects.

Reason 3

Reason 3: In PlatformIO, projects are self-contained.

The third reason is that in PlatformIO, projects are self-contained.

Everything that you need to compile the project is stored inside the project directory. I can share this directory with other people, and they will be able to work with my project and to compile it.

I can copy it to another computer, and I will be able to get to work immediately, without having to worry about do the setup manually. PlatformIO takes care of that automatically.

Life is so much better when projects are self-contained.

Reason 4

Reason 4: the amazing integration of the toolchain components.

My fourth reason is the amazing integration of the toolchain components.

With PlatformIO and MS Code, I’ve got the compiler, the terminal, the serial monitor, the version control system, the editor itself, and a lot more, all nicely integrated into a single tool.

This creates a single unified experience for me as a programmer.

When I use the Arduino IDE, I need to have other tools set up, like a separate terminal, and Git for versioning. This just adds to my workload and to the configuration that I have to do.

Reason 5

Why use PlatformIO, reason 5: curiosity.

A very important reason for deciding to use PlatformIO in this project is curiosity.

Where would we be without it?

PlatformIO has been on my radar for more than a year and I decided that I needed a non-trivial project to force me to use it exclusively for several weeks.

Learning by doing is the best way to learn it isn’t it?

I admit that it was scary to start with.

When you start work with a powerful tool like PlatformIO, not to mention MS Visual Code, for the first time it is overwhelming because of the steep learning curve.

And this is why I needed a project that was too big for the Arduino IDE. The same project was perfect for PlatformIO. It made me stick with the new tool long enough to understand its power, and actually become fairly capable of using it.

Reason 6

Reason 6: I want to learn better programming skills and habits.

The sixth reason is that I wanted to learn better programming skills and habits.

The Arduino IDE is great for learning electronics and basic programming but I feel that I have become lazy using.

The Arduino IDE is great for hiding a lot of the complexity of programming embedded systems but I began to feel the need for more power.

This is in part due to the power of the ESP32.

The capabilities of the ESP32 are perfect for larger projects, at least larger compared to what we are used to with the Arduino Uno.

And to make those projects possible, I felt that I needed more support from the IDE.

The Arduino IDE just wasn’t up to it.

To create larger projects, learning better programming skills, and habits, become very important.

And learning PlatformIO, and using a fully integrated development environment for embedded systems programming, that takes advantage of modern tools, is the first step towards that goal.

What about you?

Why are you interested in learning PlatformIO?

Let us know in the comments below.


Peter Dalmaris is an educator, electrical engineer, electronics hobbyist, and Maker. Creator of online video courses on DIY electronics and author of three technical books, and has recently released his book Maker Education Revolution.   As a Chief Tech Explorer since 2013 at Tech Explorations, the company he founded in Sydney, Australia, Peter’s mission is to explore technology and help educate the world.  Tech Explorations offers educational courses and Bootcamps for electronics hobbyists, STEM students and STEM teachers. A life-long learner, Peter’s core skill is in explaining difficult concepts through video and text. With over 15 years of tertiary teaching experience, Peter has developed a simple yet comprehensive style in teaching that students from all around the world appreciate.  His passion for technology and in particular for the world of DIY open source hardware has been a dominant driver that has guided his personal development and his work through Tech Explorations. Peter’s current online courses have helped over 60,000 people from around the world to be better Makers. 

Peter Dalmaris

{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}

Subscribe to our newsletter now!