However fond of good old Arduinos based on ATmega328 and ATmega32u4 we might be, no one can now say they are state of the art. Sure, they might be the first choice to do something cheap and simple, but compared to most more modern designs, they are just too old and too weak. Slow, little flash memory, little RAM, no built-in connectivity: no Bluetooth or WiFi.

When a few years ago ESP8266 started to appear, everything changed. The tinkers finally got something small and cheap with WiFi. And then, the world has changed, since ESP32 it the market.

Geekcreit ESP32 development board

What is ESP32? It is ESP8266 on steroids combined with ease of usage! Main features are:

  • Built-in WiFi b/g/n support
  • Built-in Bluetooth v4.2 support
  • Dual core
  • Runs Real Time Operating System
  • 12 bit ADC (Analog-to-Digital-Converter) with 18 channels
  • 2x 8 bit DAC (Digital-To-Analog-Converter)
  • Touch sensors on GPIO pins
  • 4x SPI
  • 2x I2S
  • 2x I2C
  • 3x UART
  • SD card host controller
  • PWM controller
  • many other goodies in one package

The thing that ESP32 is missing is the internal flash memory. It does not have one, so external one has to be connected, but almost all development boards with ESP32 solve that problem for the user.

esp32 development board with OLED

And now the best part! ESP32 can be programmed just like Arduino boards. Using almost the same IDE (which sucks, use Visual Studio Code instead) libraries and environment you like to use. Plus, most of existing Arduino programs created for ATmega328 boards can be converted to ESP32 without much effort.

ESP32 development board with OLED and LoRa radio

To make ESP32 work under the Arduino environment, you will need ESP32 Arduino core. It can be downloaded and installed from GitHub.

Installation instructions are very well documented in EspressIf ESP32 project, so I will not repeat them. Just open the link https://github.com/espressif/arduino-esp32#installation-instructions and follow those steps.

Of course, some things will not work in the same way like on Arduino Uno. Serial ports have to be accessed in a different way, EEPROM is not there so flash memory has to be used instead. But it's not something that can not be solved in a reasonable length of time.

If you want to start with ESP32 and a simple project, why don't you use my ESP32 GPS Thingy which is a simple GPS tracker based on ESP32 and OLED display. Simple and fun!

Recommended ESP32 development boards: