The ESP32 is a cutting edge microcontroller about the size of a stamp, which is strongly suited to IoT applications. The chip is made by Espressif and is the successor to their popular ESP8266 WiFi microcontroller. There are a couple of variants to the ESP32 but most feature dual 32bit processing cores as well as an ultra-low power core for a battery saving deep sleep. This point alone is pretty impressive, but there is more, the ESP32 features on-board WiFi and Bluetooth connectivity! It also has 4Mb (megabits not bytes) of memory which is pretty good by microcontroller standards.
There are a staggering amount of 3rd party development boards out there utilising the ESP32. Some are very good and some are not so good – this is largely down to documentation being sparse, the first boards that I bought had unreadable silkscreen and no documentation whatsoever! There is also an older revision of silicon which effectively breaks some features though I couldn’t say which ones. The WeMos Lolin32 boards are inexpensive (my first one cost £8.99!) and very good, and Adafruit and Sparkfun have made their own brand dev boards. The PyCom multi-network boards are also based on the ESP32. Some development boards have LiPo handling circuitry built in and some have an on board OLED which is pretty cool if you have a use for it.
The ESP32 is more challenging to get into as it is very new and some aspects of the firmware are still being developed. It uses 3v3 logic on all pins and has little to no protective circuitry built in, so it is easy to cook if you don’t take care. For anyone used to the Arduino platform, I would recommend that you get started using the Atom Text Editor with the PlatformIO package installed (both are free). There are many reasons to switch to Atom/PlatformIO but the main benefit here is ESP32 board libraries will be automatically kept up to date for you – I am pretty sure at the time of writing this that if you want to work with the Arduino IDE then you have to do some of the installation by running scripts with a command line interface on your computer, and this won’t keep things up to date. It isn’t worth me documenting the process here because firmware development is so fluid right now that things could change at any point. Platform IO is not a giant leap from the Arduino IDE by any means, so this is my recommended route if you are interested using the ESP32 for your projects.
One final note, keen developers have ported the MicroPython framework to the ESP32 and it works very well.