The Espressif ESP 32 System-on-chip is the big sister of the older ESP-8266 (as used in the NodeMCU and the Wemos D1 Mini.
ESP 32 has a Dual Core processor, both WiFi and Bluetooth, and many more built in peripherals. It still costs under ten dollars for a development board.
There are a number of similar-but-different development boards that combine system-on-chip, flash memory, USB interface and sometimes a battery charger, OLED screen or LoRa modem. They all work essentially the same but the pins are often in a different order. Pay attention to the markings on your board.
You can program the ESP-32 in a number of ways.
This page talks about using Arduino and C++.
The ESP-32 chip is not compatible with the AVR Microcontroller as used in the original Arduino, so you will need to install the Board Support Package for the ESP32, which teaches the Arduino Integrated Development Environment (IDE) how to program the ESP32.
Follow these instructions from espressif
Open Boards Manager from Tools > Board menu and install esp32 platform (and don’t forget to select your ESP32 board from Tools > Board menu after installation).
Open the Tools -> Board menu and look for the name of your
development board. If you don’t find your board’s name listed, select
ESP32 Dev Module
.
There are three or four popular brands of USB interface chip used by Arduino and other development boards. You will need to install the operating system device drivers for the appropriate chip. Most of the ESP32 boards use the Silicon Labs CP2012, others use the CH-340.
See this page for instructions on links for installing the appropriate driver(s).
In the Arduino IDE, open File -> Examples -> Basics -> Blink
Check your development board to find out which pin has a built in LED, or simply connect your own LED to pin 2.
If you get an error about LED_BUILTIN not being defined, then you
will need to define the BUILTIN_LED constant in the Blink sketch.
Do this by adding the line #define LED_BUILTIN 2
at around line 25
#define LED_BUILTIN 2
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
The USB connection to your development board is about 1 megabit per second. WiFi can be 100 times faster than this.
Rather than connecting your development board to your USB port, I recommend instead powering it from a USB powerbank or a phone charger, and using the Over-the-Air update facility.
This works by configuring the development board to join your wifi. The board will then appear in your Tools -> Ports menu.
Open the OTA example program from File -> Examples -> Examples for
ESP32 -> ArduinoOTA -> BasicOTA
. Customise the program to set ssid
and password
to the name and password of your wifi. Install this
program over the USB connection.
Once you have installed this program, you can disconnect the USB (you
still need to power the board from somewhere, perhaps a USB power
bank). You should now find an entry for your board in the Tools ->
Port
menu, listed under Network Ports
.
You can now download your sketches to your ESP32 Development Board over wifi, which is faster and more convenient than USB . You will need to copy the Setup and Loop code from the BasicOTA sketch into your sketch, so that the OTA update code is part of your sketch.