ESP32 Unleashed, Master tools
The right tools for the job
In the first article of this series, I wrote about my ESP32 IoT project, and how a project like that is the perfect opportunity for anyone interested in working with the ESP32 to truly understand and use its power.
I also gave you a fun example of what you can do with the ESP32 when you combine several Cloud services.
You can speak to it.
Buttons and even touchscreens are, “like”, so 2018.
My mind is buzzing with ideas of other things that I can do with my ESP32 IoT gadget. I can use it as a platform to create gadgets that use sensors, Bluetooth, Wifi, and the internet.
Perhaps a tricorder?
What about adding a weather forecast indicator (there are public weather APIs you can use for something like this)?
Or perhaps redo my Arduino remote control car based on the ESP32 and BLE, no external radio modules.
If you could do anything with your ESP32, something challenging and impressive, what would it be?
Remember: with the ESP32 you can think BIG.
The ESP32 contains lots of resources, which allow your projects to control lots of local hardware and lots of internet services.
But going BIG requires appropriate tools.
I’m afraid that the Arduino IDE will not be enough.
The Arduino IDE got you to where you are now, but it can’t get you to where you are going.
To get to the next stage in your Maker career, you need a tool that can better handle the size and complexity of your projects.
PlatformIO is that tool.
PlatformIO is an open source development platform that works with over 200 embedded devices and any programming language you can imagine.
When you combine it with a powerful editor, like Microsoft Visual Studio Code or Atom, you end up with a seriously streamlined and flexible toolchain to support your projects.
I spent a lot of time working with PlatformIO and MS Code. Now, with hindsight, I can safely present my six reasons why I think that this is perhaps the best programming environment for the ESP32:
1. My Arduino and ESP32 projects are getting larger
The Arduino IDE can't scale.
2. I want better control of project dependencies
As my projects become 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. PlatformIO solves this problem via the project configuration file.
3. PlatformIO projects are self-contained
Everything needed to make the project compile 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 again, no worries having to set up my working environment again.
4. Nice integration of toolchain components
The compiler, the terminal, the serial monitor, the version control system, the editor, and much more, are nicely integrated.
5. Curiosity about PlatformIO
PlatformIO has been on my radar for more than a year. I needed a non-trivial project to force me to use it exclusively for several weeks.
I admit it was scary at first. 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. This is why having a project that was too big for the Arduino IDE made me stick with it long enough to understand its power.
6. Learning better programming skills and habits
The Arduino IDE is great for learning electronics and basic programming, but I feel that I have gotten lazy using it. It is great for hiding a lot of the complexity of programming embedded systems.
But, I began to feel the need for more power. This, in part, is due to the ESP32.
It's capabilities welcome larger projects, and to make those project possible I felt that I needed more support from the IDE.
The Arduino IDE felt inadequate.
To create larger projects, learning better programming skills and habits become very important.
Learning PlatformIO and using a full IDE is the first step towards that goal.
You might be wondering: is PlatformIO is just too complicated to learn. You got along with the Arduino IDE just fine up to know, so why learn yet another tool?
I don’t want to say that learning PlatformIO is easy, because it isn’t. To this, add MS Code, a very impressive tool, which, like PlatformIO, can take years to master.
However, based on my experience, you can create amazing projects using a sound workflow and a disciplined approach, by learning how to use just 20% of these tools features.
And learning how to use 20% of the tool’s capabilities through the ESP32 Unleashed course will only take a few hours, tops.
Here’s an example of what you can do with MS Code.
What you are looking at in the screenshot above, is a view of my project. It shows the main.cpp file in the main pane and a list of project files in the smaller left pane.
In this view, I have selected a function in my program (timerWrite()), and drilled in the source code of the file in which this function is implemented.
This way, I can learn about the inner workings of this function to help me use it appropriately in my program.
Of course, if I was using the Arduino IDE, I could simply browse my file system for the implementation file of timerWrite(), or look it up in the Github repository (just a Google search away).
But, with MS Code providing this source code lookup capability and PlatformIO embedding all project dependencies in the project itself, all this information is literally a single click away.
Imagine how much time this single feature can save you?!
I the next article, I write about another important learning from this course: how to split your growing program into multiple files, the right way so that you can manage its size and complexity.
I was also inclined to write about source control, but that will have to wait for the course itself. I don’t want to overwhelm you.
Until then, happy making!
"ESP32 Unleashed" series
Ready for some serious learning?
A new learning adventure awaits you.
Create an application that will stretch your existing knowledge and skills.
ESP32 Unleashed is a project course
This course is perfect for people familiar with the ESP32, especially graduates of ESP32 For Busy People.
It is a guided project, designed to teach you how to use modern tools to create modern embedded applications based on the ESP32.
Just click on the big red button to learn more.
Jump to another article in this series.