Programming ESP32 boards with Arduino IDE on macOS, Windows 7/8/10, Linux ARM (Raspberry Pi, Orange Pi)

esp32 geekcreit wroom

The Espressif Development Kit for ESP32 boards is available on GitHub for macOS, Windows, 32-bit Linux, 64-bit and ARM chips (Raspberry Pi, Orange Pi, etc …). It is still under development but can be installed to program ESP32-based development boards directly from the Arduino IDE. In this tutorial, we will install it on masOS. We will see in the next tutorials how to do on Windows 10, Linux and ARM platforms (Raspberry Pi, Orange Pi …). This tutorial is taken from the official documentation available on the GitHub project repository here.

Install the ESP32 Development Kit on Windows 7,8,10 (32-bit or 64-bit)

Before starting the installation, quit the Arduino IDE if it is started. If you do not already have the IDE for macOS, go get it here. Start the Arduino IDE the first time so that the Arduino folder is created in the My Documents folder. Close the IDE.

If you have a Git utility on your machine, you can use it to clone the project repository. Otherwise, go to GitHub here. Click Clone or download and then click Download ZIP.

github download esp32 dev kit for windows


Open File Explorer and go to your Documents. Create the following folders to obtain the following My Documents\Arduino\hardware\esp32  tree. It is important to respect the case and this tree. The path is hard-coded in the kit. Unzip and move the contents of the downloaded Zip into the esp32 folder.

decompression git kit developpement esp32

Go to the tools directory and run the get.exe program

esp32 tools launch get_exe

This program finishes retrieving and installing the necessary resources.

get_exe progression

Start the Arduino IDE. A new menu containing the ESP32 cards is available in the tools.

esp32 board cartes ide arduino windows 10 64-bits

Installing the ESP32 Development Kit on MacOS

Before starting the installation, quit the Arduino IDE if it is started. If you do not already have the IDE for macOS, go get it here.

Open the Terminal, copy and paste the following command in the Terminal. Confirm to start the installation.

Please note that some commands (git clone, pyton may take a long time because the sources are downloaded from the internet.
mkdir -p ~/Documents/Arduino/hardware/espressif && \
cd ~/Documents/Arduino/hardware/espressif && \
git clone esp32 && \
cd esp32/tools/ && \

Start the Arduino IDE. Installation is complete. If everything is correct, you must have an extra menu in the cards

ide arduino esp32 board cartes liste

Install the kit on Linux ARM (Raspberry Pi, Orange Pi …)

Exit the Arduino IDE. If you have not already installed the Arduino IDE on your Raspberry Pi, follow this tutorial.

Open the Terminal, paste the following set of commands and press the Enter key on the keyboard to start the development kit installation. The operation may last a few minutes depending on the resources already installed on your distribution.

sudo usermod -a -G dialout $USER && \
sudo apt-get install git && \
wget && \
sudo python && \
sudo pip install pyserial && \
mkdir -p ~/Arduino/hardware/espressif && \
cd ~/Arduino/hardware/espressif && \
git clone esp32 && \
cd esp32/tools/ && \

Arduino IDE is ready!

ide arduino esp32 arm linux raspberry raspbian pixel

Install the ESP32 SDK on 32-bit or 64-bit Linux

Follow exactly the same installation procedure as on Linux for ARM processors.

Supported ESP32 development boards

In the current version, in addition to generic boards (ESP32 Dev Module up to 4MB), the kit supports the following ESP32 development boards

Flash memory USB-Serial
SparkFun ESP32 Thing SparkFun ESP32 Thing 4MB
Electronic SweetPeas - ESP320 Electronic SweetPeas – ESP320 16MB ?
Nano32 from MakerAsia 4MB
wemos lolin32 WEMOS LoLin32 4MB
espea32 esp32 ESPea32 available on Tindie 4MB CP2104
Noduino Quantum esp32 Noduino Quantum 16MB CP2102
node32s esp32 development board Node32s 4MB
Hornbill ESP32 Dev Hornbill ESP32 Dev 4MB
hornbill esp32 minima Hornbill ESP32 Minima 4MB
FireBeetle-ESP32 4MB
IntoRobot Fig 4MB

As the ESP32 offers 26 I / O instead of 11 on the ESP8266, the dimensions of the development cards are more impressive. Some manufacturers offer a limited number of I / O. The Swedish Electronic SweetPeas ESP320 has only 11E / S and 1 analog input for a size of only 27.5 x 17.8 mm.

Both Hornbill cards are the subject of a participatory fundraising campaign on Crowd Supply. The ESP32 Dev is a standard but narrower development board. The Minima is intended for the realization of clothing applications. The support of bluetooth is an undeniable advantage for this type of application. It could be a good substitute for LilyPad and LilyTiny boards that are starting to age.

The vast majority of these cards are (yet) quite difficult to get (at a reasonable price). Prices have gone over the 7-euro mark in recent months. This is fortunate because it was difficult to justify a price higher than 10 € against the Raspberry Pi Zero or the Orange Pi Zero. One finds for example the Wemos LoLin32 for about €6,45 (excluding postage). There are also generic models (Geekworm, often referred to as Geekcreit) for a similar price.

Available examples

Some examples come with the development kit:

  • AnalogOut
    • LEDCSoftwareFade
    • SigmaDelta
  • Timer
    • RepeatTimer
  • Touch
    • TouchInterrupt
    • TouchRead

If you have passed next to it, the ESP32 is able to manage LCD touchscreens. Here is an (impressive) example of what it is possible to do. The project is available on GitHub or the blog of Marc Merlin.

First test: flashing a Led

The ESP32 is programmed exactly like an ESP8266. For this first article, we will simply check that everything is properly installed. Create a new project and paste the following code that flashes a connected LED between pin 15 and the GND. For this article, I used a generic card manufactured by Geekcreit.
 * ESP32 Dev Board Test
 * Led blinking
 * -
int ledPin = 15;

void setup()
    pinMode(ledPin, OUTPUT);

void loop()
    Serial.println("Hello ESP32!");
    digitalWrite(ledPin, HIGH);
    digitalWrite(ledPin, LOW);

From the list of adapters, select ESP32 Dev Module. The modules generally support a download speed of 921600 baud which is very appreciable.

ide arduino esp32 demo led blink geekcreit

That’s it.

As you can see, the programming remains quite classic. However, not all libraries developed for the ESP8266 are (yet) compatible. ESP Easy for example does not work yet.

Subscribe to the weekly newsletter

No spam and no other use will be made of your email. You can unsubscribe anytime.

  1. I’m using Raspberry Pi3 Debian on a ESP32-WROOM-32.
    I get these error messages:

    Arduino: 1.8.1 (Linux), Board: “ESP32 Dev Module, QIO, 80MHz, 4MB (32Mb), 921600, None”

    fork/exec /home/pi/Arduino/hardware/espressif/esp32/tools/xtensa-esp32-elf/bin/xtensa-esp32-elf-g++: no such file or directory

    Error compiling for board ESP32 Dev Module.
    Invalid library found in /home/pi/Arduino/hardware/espressif/esp32/libraries/BLE: /home/pi/Arduino/hardware/espressif/esp32/libraries/BLE
    Invalid library found in /home/pi/Arduino/hardware/espressif/esp32/libraries/BLE: /home/pi/Arduino/hardware/espressif/esp32/libraries/BLE

    The xtensa-esp32-elf directory does not get created. And the BLE directory is empty.

    Where do I get those files for Raspberry Pi3 Debian?


    • Hello Rick. I’m sorry, I do not have a Debian distribution installed to test. From the message it seems that the bluetooth library is not installed on your distribution. Do not you prefer to use Raspbian? The Raspberry Pi Foundation deals with all the integration work of libraries. It’s less work: D

  2. Hi there!
    Thank you so much for your very helpful and detailed tutorial! I as able to get my windows environment setup properly, and could compile the WifiScan example just fine, BUT I need to have this working on my Raspberry Pi 3 as well, however I keep running into issues. At the moment, I’m stuck with the following error after it nearly completes the compilation of the WifiScan example:
    /home/pi/Arduino/hardware/espressif/esp32/tools/sdk/include/soc/soc/io_mux_reg.h: In function ‘PIN_PULLUP_DIS’:
    /home/pi/Arduino/hardware/espressif/esp32/tools/sdk/include/esp32/esp_assert.h:23:28: error: first argument to ‘__builtin_choose_expr’ not a constant
    Have you any idea how to fix this issue?
    Again, thanks so much!

  3. Hi: I am trying to install Arduino 1.8.7 on my Rasbperry Pi so I can use my ESP32.
    I followed your instructions (and saw all the installation info flash by), but when I reboot and click on the Arduino icon, I come up with Arduino 1.0.5. (and no ESP32 in the menu.) What suggestions do you have?

    I have followed other guidelines. I see the arduino-1.8.7 in my downloads folder but all my attempts have failed to install it.


  4. Everything went through without a problem but in my arduino no new entry is available.

Leave a Reply

DIY Projects
%d bloggers like this: