

Arduino and ESP32 boards are development boards: ready-made circuit boards built around a microcontroller chip, so you can program and test the chip without designing your own circuit.
The name "Arduino" belongs to the board; the chip on it (the ATmega328P on the Uno) is the microcontroller. Likewise an ESP32 DevKit is the board and the ESP32 is the chip. A laptop's processor is only the "thinking" part and needs separate memory, storage and an operating system. Every project then follows one loop: sense (read a button or sensor), think (your code decides) and act (drive an LED, buzzer or motor).
| Microprocessor | Microcontroller | Development board | |
|---|---|---|---|
| What it is | Only the CPU (processing core) | CPU, memory and I/O pins together on one chip | A microcontroller on a circuit board with support parts |
| Needs around it | RAM, storage, I/O chips, an operating system | Little: power, a clock and your program | A USB cable and a computer |
| Examples | Intel Core i5 in a laptop | ATmega328P, ESP32 chip | Arduino Uno, ESP32 DevKit |
| Runs and used for | An OS and many apps: PCs, phones, servers | One program, forever: washing machines, remotes, sensors | The program you upload: learning and prototyping |
The bare chip is tiny and fiddly. The board adds everything you need to start in minutes:
The Arduino Uno R3 is the classic first board: simple, 5 V and backed by thousands of tutorials. Other family members include the Nano (thumb-sized), the Mega 2560 (54 digital pins), the Leonardo and Micro (can act as a USB keyboard or mouse) and the newer UNO R4 (faster, with USB-C).
| Feature | Arduino Uno R3 |
|---|---|
| Microcontroller | ATmega328P (8-bit AVR), 16 MHz |
| Logic voltage | 5 V |
| Power input | USB Type-B (5 V), or 7 to 12 V on the barrel jack or VIN |
| Digital I/O | 14 pins (6 with PWM); built-in LED on pin 13 |
| Analog inputs | 6 pins, 10-bit (values 0 to 1023) |
| Memory | 32 KB flash, 2 KB SRAM, 1 KB EEPROM |
| Current per pin | 20 mA recommended (40 mA absolute limit) |
The ESP32, made by Espressif, is a low-cost microcontroller with Wi-Fi and Bluetooth built in, which makes it the usual choice for IoT (internet-connected) projects. It is much faster than an Uno but works at 3.3 V. You meet it on development boards such as the ESP32 DevKit. Related chips include the ESP8266 (older, Wi-Fi only) and the newer ESP32-S3 and ESP32-C3.
| Feature | ESP32 DevKit (30-pin) |
|---|---|
| Chip | ESP32, dual-core Xtensa LX6, up to 240 MHz |
| Logic voltage | 3.3 V (pins are not 5 V tolerant) |
| Memory | 520 KB SRAM, about 4 MB flash (varies by board) |
| Wireless | Wi-Fi 802.11 b/g/n (2.4 GHz) and Bluetooth (Classic and BLE) |
| Pins | 25 usable GPIO; PWM on almost any output pin |
| Analog | 12-bit ADC inputs (0 to 4095); 2 DAC outputs (GPIO25, GPIO26) |
| Power input | 5 V via USB or VIN; an onboard regulator makes 3.3 V |
The Arduino IDE is a free program that puts a code editor, a compiler and an uploader in one window. A program written in it is called a sketch and is saved as a .ino file. The same IDE programs the Uno and the ESP32. To install it, download Arduino IDE 2.x from arduino.cc/software, run the installer and plug your board in with a USB data cable. Every sketch has two parts: setup() runs once at power-up and loop() repeats forever.
Simplified illustration of the IDE 2 window, not a screenshot. Your version may look slightly different.
1 Menu bar: File > Examples holds ready-made programs and Tools sets the Board and Port.
2 Toolbar: Verify (check mark) finds errors, Upload (arrow) sends the program to the board, the drop-down picks board and port, Serial Monitor shows what the board prints and Serial Plotter graphs numbers.
3 Sidebar: Boards Manager (adds ESP32) and Library Manager.
4 Code editor.
5 Output panel and status bar, showing errors and the selected board and port.
If all four pass, the board is healthy and any later problem is in your wiring or code.
Note: ESP-IDF. ESP-IDF (Espressif IoT Development Framework) is Espressif's official C/C++ toolchain for ESP32, built on FreeRTOS. It gives fine control over Wi-Fi, Bluetooth, power modes and over-the-air updates, so it is used for advanced and production work. It has a steeper learning curve and runs from the command line or VS Code. The Arduino core for ESP32 is itself built on ESP-IDF, so start in the Arduino IDE and move to ESP-IDF when you need that control. See the ESP-IDF documentation.
Pick the Uno for learning and simple 5 V projects. Pick the ESP32 when you need wireless, more speed or more memory.
| Feature | Arduino Uno R3 | ESP32 DevKit |
|---|---|---|
| Chip and speed | ATmega328P, 8-bit, 16 MHz | ESP32, 32-bit, dual-core, up to 240 MHz |
| Memory | 2 KB SRAM, 32 KB flash | 520 KB SRAM, about 4 MB flash |
| Wireless | None | Wi-Fi and Bluetooth |
| Logic voltage | 5 V | 3.3 V (not 5 V tolerant) |
| Analog | 6 inputs, 10-bit; PWM output only | Many 12-bit inputs (ADC2 limited with Wi-Fi); 2 DAC outputs |
| Beginner friendliness | Very forgiving: 5 V, simple, huge shield ecosystem | More to watch: 3.3 V, boot pins, Wi-Fi limits |
| Battery life | Not designed for it | Deep-sleep modes suit battery projects |
| Project idea | Better choice | Why |
|---|---|---|
| First LED, button and sensor experiments | Uno | Simple, forgiving, and every tutorial uses it |
| 5 V sensors, relay boards, LCD and motor shields | Uno | Native 5 V logic and a huge shield ecosystem |
| Home automation, cloud data logging, dashboards | ESP32 | Wi-Fi is built in |
| Phone control (Bluetooth), web server, MQTT | ESP32 | Bluetooth and networking are built in |
| Battery-powered wireless sensor node | ESP32 | Deep sleep plus wireless |
| Fast sampling, audio, complex code | ESP32 | Dual core at 240 MHz and far more RAM |
Either board handles LEDs, buttons and basic sensors. Many students start on the Uno and add an ESP32 for IoT; the code is Arduino C/C++ on both, so what you learn carries over.
Each row gives the problem and where to look, not the answer. Change one thing at a time and test after each change.
| Problem | Where to check |
|---|---|
| No port under Tools > Port | Data or charge-only cable? ON LED lit? Does your computer know the board's USB chip? |
| Upload fails ("not in sync", timeout) | Do the selected board and port match what is plugged in? Anything on the serial pins during upload? |
| ESP32: upload stops at "Connecting..." | What does the board expect from you as the upload starts? Check its buttons and the ESP32 steps above. |
| Upload works but nothing happens | Does the pin in the code match the wiring? Set as input or output? Does the built-in LED respond? |
| LED stays off | Which leg faces the pin? What is between the pin and ground? Is the resistor value sensible? |
| Serial Monitor shows garbage or nothing | Compare the monitor's speed with Serial.begin(). Right port? Is anything printed at all? |
| Sensor or button readings jump around | What does the pin read with nothing attached? Common ground? How firm are the connections? |
| Board resets randomly or gets hot | What else draws current from the supply? Does it happen when a motor switches on? Any parts touching? |
| Compile error ("not declared", "No such file") | What does the first red line say? Spelling and capitals? Library installed and included? Right board selected? |
| ESP32: analog readings wrong once Wi-Fi starts | Which ADC group is that GPIO in? See the ADC notes on the ESP32 page. |
| ESP32: will not boot or upload after adding a module | Which pins are read at reset? Is your module on one of them? |
| ESP32: module acts oddly or a pin stopped working | What voltage does the module's signal pin output, and what is the ESP32 pin rated for? |
| ESP32: Wi-Fi will not connect | Which band does your network use? Are name and password exact? What does the Serial Monitor print? |
Specs follow the manufacturers' published figures; check the datasheet before designing a real product.
Official Arduino Uno Rev3 page with datasheet, pinout and tutorials: Arduino Uno Rev3 documentation