ESP32 Programming

With the many number of ways to develop on the ESP32 I wanted to find the clear choice for my needs.  Below is my take on the situation, and my choice.


Bare Bones ESP-IDF

The ESP-IDF is the development kit provided by Exspressif itself.  It works great, gives you access to all the features and functionality possible.  But…  It’s C, so unless you are a C whiz, it’s probably not the best choice.

For IDEs, you can use it from Eclipse easily as well as from the command line.  It comes with lots of examples as well.  Many other development platforms for the ESP32 use the ESP-IDF at their core.

For example, all of these systems deploy some kind of operating system as part of the flashing process.  I suspect that it is usually the FreeRTOS distribution that is in the ESP-IDF, but I don’t know for sure yet.  The exception is definitly Simba, Simba is it’s own RTOS.

Arduino IDE

As always, the Arduino IDE is there, and works.  However, access to BLE isn’t built into the Arduino dev kit for ESP32 yet.  If you know Arduino it’s probably your best bet for getting things up and running.


NKolban has started work (and is pretty far along) on a javascript based dev environment for the ESP32.  It sounds pretty sweet, the bare bones are on the esp32 to get it booted up, and in the background it uses the Duktape javascript interpreter / compiler which he says compiled almost seamlessly with the ESP-IDF.  Once you get the binary loaded onto your esp32 it starts a webserver and you can write code on the esp32 using the built-in javascript ide via a web browser.  Unfortunately it looks like he hasn’t worked on it in a while, maybe there is a fork that has progressed?  But it doesn’t look like it.

Mongoose OS

Is quite nice, but you have to pay for it…  Bummer.


While this appears to work, I find confusing and difficult to use.  I am sure if I got over the learning curve I could get into it, but for now, I’m exploring other options.


There appears to be a number of MicroPython tools for the esp32.  Here is a short list:


Simba is a tool that provides a common platform that Applications then run on.  Think of it like a very stripped down Linux for the esp32 (actually, consider it a RTOS for different micro controllers since that is what it is.  Although the platform could be language agnostic and there is Pumbaa, which is a tool to run Python on Simba.

Similar to the ESP-IDF, Simba can run on it’s own or in the Arduino or IDEs.

Simba looks interesting but I don’t grasp the benefits yet, other than the write once, run in many places part.


MicroPython on top of Simba.