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

Share on facebook
Share on twitter
Share on linkedin
Share on pinterest
Share on email
Share on whatsapp
drapeau france
level beginner
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 memoryUSB-Serial
SparkFun ESP32 ThingSparkFun ESP32 Thing4MB
Electronic SweetPeas - ESP320Electronic SweetPeas – ESP32016MB ?
Nano32 from MakerAsia4MB
wemos lolin32WEMOS LoLin324MB
espea32 esp32ESPea32 available on Tindie4MBCP2104
Noduino Quantum esp32Noduino Quantum16MBCP2102
node32s esp32 development boardNode32s4MB
Hornbill ESP32 DevHornbill ESP32 Dev4MB
hornbill esp32 minimaHornbill ESP32 Minima4MB
IntoRobot Fig4MB

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.

ide arduino esp32 demo led blink geekcreit breadboard

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.

Click to rate this post!
[Total: 0 Average: 0]

Are you having a problem with this topic?

Maybe someone has already found the solution, visit the forum before asking your question
Ask your question

Share on facebook
Share on twitter
Share on linkedin
Share on pinterest
Share on email
Share on whatsapp

Did you like this project ? Don't miss any more projects by subscribing to our weekly newsletter!

  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: