These four parts cover a large share of hobby, student and small-production projects. They differ much more than their prices suggest.
At a glance
| ATmega328P | ESP32-WROOM-32E | STM32F103C8T6 | RP2040 | |
|---|---|---|---|---|
| Core | 8-bit AVR | Dual-core Xtensa LX6 | ARM Cortex-M3 | Dual-core ARM Cortex-M0+ |
| Max clock | 20 MHz | 240 MHz | 72 MHz | 133 MHz |
| Flash | 32 KB | 4 MB (module) | 64 KB | External QSPI flash |
| RAM | 2 KB | 520 KB | 20 KB | 264 KB |
| Supply | 1.8 to 5.5 V | 3.3 V | 2.0 to 3.6 V | 3.3 V I/O |
| Wireless | None | Wi-Fi and Bluetooth | None | None |
ATmega328P
The chip behind the classic Arduino Uno. It is simple, runs directly from 5 V, and its DIP-28 version plugs into a breadboard. It also has 1 KB of EEPROM for settings.
Choose it for: learning, simple control and sensing, 5 V systems, and low-power battery devices. Its limits are 2 KB of RAM and modest speed.
ESP32
A fast dual-core processor with Wi-Fi and Bluetooth (Classic and Low Energy) built in. The WROOM module includes the flash, antenna and RF matching, so you don't design the radio section yourself.
Choose it for: anything connected — IoT sensors, web dashboards, BLE devices. Note that it is a 3.3 V part, and it draws significant peak current when transmitting, so give it a solid supply and good decoupling.
STM32F103C8T6
A 32-bit Cortex-M3 with a strong set of peripherals: several timers, ADCs, USB full-speed device and CAN. It is the chip on the well-known "Blue Pill" board.
Choose it for: motor control, industrial and automotive-style interfaces (CAN), USB devices, and projects that need precise timers. It is a good step from Arduino into professional ARM development.
RP2040
Raspberry Pi's microcontroller: two Cortex-M0+ cores, plenty of RAM, and programmable I/O (PIO) blocks that can implement custom or unusual protocols in hardware. It has no internal flash — a small external QSPI flash chip holds the program.
Choose it for: custom protocols and LED or display driving with PIO, MicroPython projects, and low-cost designs that need more RAM than an AVR.
How to decide
- Need Wi-Fi or Bluetooth? ESP32.
- 5 V logic, minimal parts, simple job? ATmega328P.
- CAN, USB or precise motor control? STM32F103.
- Custom timing-critical I/O or lots of RAM at low cost? RP2040.
Then check the package you can solder: DIP is breadboard-friendly, TQFP and LQFP need a fine tip, QFN needs hot air or reflow, and modules are the easiest way to use a radio chip.
See Microcontrollers for current stock and packages.