ESP32 or Arduino Nano: which board to use in your robot
The differences that matter between the ESP32 and the Arduino Nano for a workbench robot: memory, 3.3 V and 5 V logic, analog inputs, Wi-Fi, language and how the program gets onto the board.

Both boards drive the robot arm the same way: four servos, an ultrasonic sensor, two joysticks and a buzzer fit on either one. What changes is how much room is left over, the pin voltage and how the program gets there.
Arduino Nano
The Nano uses the ATmega328P microcontroller, the same one as the Arduino Uno, running at 16 MHz.
- Memory: 32 KB of flash for the program, 2 KB of which are taken by the bootloader, and 2 KB of SRAM for variables.
- Voltage: it works at 5 V. The HC-SR04 ultrasonic sensor and the servo signal talk to it with no level shifting.
- Analog inputs: eight, A0 to A7, with 10 bits (values from 0 to 1023). A6 and A7 are analog-only; they cannot be used as digital pins.
- Language: Arduino C++. The program is compiled on the computer and uploaded through the USB port.
It is an inexpensive, rugged and very well documented board. For a joystick-controlled arm, it has capacity to spare.
ESP32
The ESP32 is in another class: two cores at up to 240 MHz, 520 KB of SRAM, and Wi-Fi and Bluetooth on the same chip. The most common development boards come with 4 MB of flash.
- Voltage: it works at 3.3 V. A 5 V signal on a pin can damage the board. In practice, the ultrasonic sensor’s Echo pin needs a voltage divider, and the joystick should be powered from 3.3 V.
- Analog inputs: 12 bits (values from 0 to 4095), with one catch: the ADC2 converter cannot read while Wi-Fi is on. The joysticks go on ADC1, on GPIO 32 to 39.
- Language: it has room for MicroPython, Python for microcontrollers. The program is sent as text, with no compiling, and is stored on the board as main.py.
What changes in the block coding IDE
The cards are the same on both boards. What changes is where the program goes:
- ESP32: the IDE generates the program in MicroPython and sends it over the USB cable straight from the browser (Chrome or Edge on a computer). The board needs MicroPython flashed on it first.
- Arduino Nano: the IDE generates the complete C++ code, using the Servo library. You copy the code or download the .ino file and upload it with the Arduino IDE.
The pin list on each card changes too: the IDE only offers the pins that exist on the chosen board.
Which one to choose
| Situation | Best choice |
|---|---|
| A class that will move on to C++ and Arduino | Nano |
| All parts at 5 V, with no voltage divider wanted | Nano |
| Uploading the program without installing anything on the computer | ESP32 |
| Teaching Python after the blocks | ESP32 |
| Plans to use Wi-Fi, a dashboard or control from a phone | ESP32 |
| A large program, with many saved positions | ESP32 |
Neither choice is final: the same card program generates code for both. You can start on one and switch boards later, changing only the pins.
Next step
In the block coding IDE, see the suggested wiring table for each board, and read the article on which pins to use for each part.