tags : Electronics, Computer Architecture, Robotics, Hardware stuff
FAQ
STM32 vs ESP32
Feature | STM32 | ESP32 |
---|---|---|
Architecture | ARM Cortex-M (32-bit) | Tensilica Xtensa LX6 (dual-core 32-bit) |
Manufacturer | STMicroelectronics | Espressif Systems |
Primary Focus | Processing power, peripheral variety | Wireless connectivity (WiFi/BT) |
Wireless Capabilities | Requires external modules | Built-in WiFi and Bluetooth |
Price Range | $1-15+ depending on model | $3-10 depending on module |
Power Efficiency | Generally better for non-wireless applications | Optimized for wireless with sleep modes |
Development Environment | STM32CubeIDE, Keil, IAR | Arduino IDE, ESP-IDF, PlatformIO |
Memory | Varies widely (8KB-2MB Flash, 2KB-640KB RAM) | Typically 4MB Flash, 520KB SRAM |
Industrial Temperature Range | Most variants available | Limited options |
Ecosystem Maturity | Mature, extensive documentation | Newer but rapidly growing |
Use Case Sweet Spot | Industrial control, precise timing applications | IoT, wireless networking projects |
What IDE to use?
- https://arduino.github.io/arduino-cli/1.2/
- https://platformio.org/
- Your favorite text editor
- I don’t like arduino IDE that much
Terminologies/Jargons
Microcontroller Architectures and Families
Term | Full Name | Description |
---|---|---|
AVR | Alf and Vegard’s RISC processor | 8-bit microcontroller architecture developed by Atmel (now Microchip) |
PIC | Peripheral Interface Controller | Family of microcontrollers made by Microchip Technology |
ARM | Advanced RISC Machines | Company and processor architecture widely used in embedded systems |
STM32 | ST Microelectronics 32-bit | Family of 32-bit ARM Cortex-M microcontrollers from ST Microelectronics |
ESP32 | Espressif Systems Platform 32 | Dual-core microcontroller with integrated Wi-Fi and Bluetooth |
ESP8266 | Espressif Systems Platform 8266 | Low-cost Wi-Fi microchip with TCP/IP stack |
nRF52 | Nordic RF 52 series | Bluetooth Low Energy SoCs from Nordic Semiconductor |
RISC-V | Reduced Instruction Set Computer - V | Open-source instruction set architecture |
ATmega328P | Atmel mega 328P | 8-bit AVR microcontroller used in Arduino UNO |
ATtiny | Atmel tiny | Smaller, simpler AVR microcontrollers with fewer features |
RP2040 | Raspberry Pi Microcontroller | Dual-core ARM Cortex-M0+ microcontroller developed by Raspberry Pi Foundation |
Architecture Types
Term | Description |
---|---|
RISC | Reduced Instruction Set Computer - Simpler processor design with fewer instructions |
CISC | Complex Instruction Set Computer - More complex processor with many specialized instructions |
Harvard | Architecture where program and data memory are separate |
Modified Harvard | Architecture that allows some controlled access between program and data memory |
Von Neumann | Architecture where program and data share the same memory |
SoC | System on Chip - Integrated circuit with all components of a computer or electronic system |
Communication Protocols
Term | Full Name | Description |
---|---|---|
UART | Universal Asynchronous Receiver/Transmitter | Serial communication protocol using TX/RX lines |
USART | Universal Synchronous/Asynchronous Receiver/Transmitter | Enhanced UART with synchronous mode option |
I2C | Inter-Integrated Circuit | Two-wire serial bus for connecting low-speed peripherals |
TWI | Two Wire Interface | Another name for I2C, used primarily by Atmel |
SPI | Serial Peripheral Interface | Synchronous serial communication for short-distance communication |
CAN | Controller Area Network | Robust vehicle bus standard for connecting microcontrollers |
USB | Universal Serial Bus | Standard for connecting computers and electronic devices |
BLE | Bluetooth Low Energy | Wireless technology for short-range communication with low power requirements |
WiFi | Wireless Fidelity | Wireless networking technology based on IEEE 802.11 standards |
MQTT | Message Queuing Telemetry Transport | Lightweight messaging protocol for small sensors and mobile devices |
LoRa | Long Range | Long-range, low-power wireless platform |
RS-232/485 | Recommended Standard 232/485 | Standard for serial communication transmission of data |
Peripherals and Hardware Features
Term | Full Name | Description |
---|---|---|
GPIO | General Purpose Input/Output | Digital pins that can be configured as input or output |
ADC | Analog-to-Digital Converter | Converts analog signals to digital values |
DAC | Digital-to-Analog Converter | Converts digital values to analog signals |
PWM | Pulse Width Modulation | Technique for getting analog results with digital means |
JTAG | Joint Test Action Group | Standard interface for debugging and programming microcontrollers |
SWD | Serial Wire Debug | Two-pin alternative to JTAG for debugging ARM processors |
PIO | Programmable Input/Output | Flexible I/O system on the RP2040 (Raspberry Pi Pico) |
Timer | Timer/Counter | Hardware module that counts clock cycles for timing operations |
RTC | Real-Time Clock | Keeps track of current time |
WDT | Watchdog Timer | Timer that resets the system if the program hangs |
FPU | Floating Point Unit | Hardware that performs operations on floating point numbers |
DSP | Digital Signal Processor | Specialized processor for digital signal processing operations |
UART | Universal Asynchronous Receiver/Transmitter | Hardware for serial communication |
PLL | Phase-Locked Loop | Circuit that generates an output signal whose phase is related to the phase of an input signal |
Development Approaches and Environments
Term | Full Name | Description |
---|---|---|
HAL | Hardware Abstraction Layer | Software layer that bridges hardware and operating system |
Specific Development Boards
Term | Description |
---|---|
Arduino UNO | Popular development board based on ATmega328P |
Arduino Nano | Compact version of the Arduino UNO |
Raspberry Pi Pico | Development board based on RP2040 microcontroller |
ESP32-DevKit | Development board for the ESP32 microcontroller |
NodeMCU | Development board based on ESP8266 |
STM32 Nucleo | Development board for STM32 microcontrollers |
BBC micro:bit | Educational development board based on nRF51822 |
Teensy | Development board based on ARM Cortex-M4 |
Adafruit Feather | Family of development boards with standardized form factor |
SparkFun RedBoard | Arduino-compatible development board |
Tools and Equipment
Term | Full Name | Description |
---|---|---|
Oscilloscope | - | Instrument that displays signal voltages as a function of time |
Logic Analyzer | - | Device that captures and displays digital signals |
Multimeter | - | Instrument that measures voltage, current, and resistance |
Bus Pirate | - | Universal bus interface tool for debugging |
UART-to-USB | - | Bridge for connecting UART interfaces to USB |
ST-Link | - | Programming and debugging interface for STM32 microcontrollers |
J-Link | - | Debug probe for ARM cores |
OpenOCD | Open On-Chip Debugger | Open-source tool for on-chip debugging, in-system programming |
History & Lineage of Microcontrollers
Popular Microcontroller Families
Family | Year Introduced | Architecture | Notable Examples | Bit Width | Key Features | Community/Support | Best For | Things to Be Aware Of |
---|---|---|---|---|---|---|---|---|
AVR | 1996 | Harvard | ATmega328P (Arduino UNO, 2005) | 8-bit | - Simple architecture | Very large (Arduino) | Beginners | - Limited memory |
ATtiny Series (1999) | - Excellent documentation | Many tutorials | Battery-powered | - Lower processing power | ||||
- Low power modes | Simple projects | - Slowly being phased out | ||||||
- Direct memory access | ||||||||
PIC | 1976 | Harvard | PIC16F (1993) | 8-bit to 32-bit | - Wide variety | Strong but smaller than Arduino | Industrial applications | - Steeper learning curve |
PIC18F (2000) | - Industrial reliability | Long-term projects | - Less hobbyist-friendly IDE | |||||
PIC32 (2007) | - Low power | - Often requires paid tools | ||||||
- Many peripherals | ||||||||
ARM Cortex-M | 2004 | Modified Harvard | STM32 (2007) | 32-bit | - High performance | Growing rapidly | Complex projects | - More complex |
NXP LPC (2003) | - Rich peripheral set | Good documentation | Performance-critical applications | - Steeper learning curve | ||||
SAM (2006) | - Advanced timers | - More difficult debugging | ||||||
RP2040 (Pi Pico, 2021) | - DMA controllers | |||||||
nRF52 | 2015 | Modified Harvard | nRF52832 (2015) | 32-bit | - Built-in Bluetooth 5.x | Good Nordic support | Wearables, Bluetooth IoT | BLE complexity, More expensive than basic MCUs |
nRF52840 (2017), nRF52833 (2019) | - Ultra-low power | |||||||
- ARM Cortex-M4F | ||||||||
ESP | 2014 | Modified Harvard | ESP8266 (2014) | 32-bit | - Built-in WiFi/BT | Large and active | IoT projects | - Higher power consumption |
ESP32 (2016) | - Dual-core (ESP32) | Many libraries | Wireless connectivity | - Documentation can be inconsistent | ||||
ESP32-C3 (2020) | - Low cost | - Complex WiFi stack | ||||||
- Deep sleep modes | ||||||||
MSP430 | 2000 | Von Neumann | MSP430G2 (2010) | 16-bit | - Ultra-low power | Texas Instruments support | Battery/energy harvesting | - Smaller community |
MSP430FR (2014) | - FRAM options | Energia platform | Low-power sensing | - Fewer ready-made libraries | ||||
- Analog peripherals | - Limited processing power | |||||||
- Simple instruction set | ||||||||
RISC-V | 2010 | Harvard/Von Neumann | GD32V (2019) | 32-bit/64-bit | - Open architecture | Growing but still smaller | Future-proofing | - Still emerging ecosystem |
ESP32-C3 (2020) | - Growing ecosystem | Open-source projects | - Fewer off-the-shelf examples | |||||
SiFive FE310 (2017) | - Modern design | - Some debugging challenges | ||||||
- Customizable | ||||||||
8051 | 1980 | Harvard | AT89S52 (1995) | 8-bit | - Simple architecture | Legacy resources | Learning computer architecture | - Outdated architecture |
STC microcontrollers (2005) | - Historical significance | Industrial support | Simple control systems | - Limited memory addressing | ||||
- Still used in industry | - Fewer modern tools | |||||||
- Highly deterministic |
Historical Timeline & Significance
Era | Significant MCUs | Year | Impact | Legacy |
---|---|---|---|---|
1970s | Intel 8048 | 1976 | First single-chip microcontroller | Set foundation for embedded computing |
Intel 8051 | 1980 | First widely adopted MCU | 8051 architecture still influences many modern designs | |
1980s | Motorola 68HC11 | 1984 | Advanced integrated peripherals | Established MCU programming paradigms |
PIC16C | 1985 | RISC architecture for MCUs | Pioneered flash-based microcontrollers | |
1990s | AVR series | 1996 | Flash memory + RISC | AVR became foundation for Arduino |
PIC16F | 1993 | Low-cost flash MCUs | Brought MCUs to hobbyists | |
8051 derivatives | 1995+ | Widespread adoption | Enabled early DIY electronics | |
2000s | ARM7TDMI | 2001 | 32-bit becomes accessible | ARM dominance begins |
Arduino launch | 2005 | AVR-based development board | Hobbyist revolution | |
ARM Cortex-M3 | 2004 | Modern 32-bit architecture | Arduino ecosystem transformed accessibility | |
2010s | ARM Cortex-M4 | 2010 | DSP + FPU capabilities | Advanced signal processing becomes accessible |
ESP8266 | 2014 | $2 WiFi MCU | IoT revolution | |
ESP32 | 2016 | Dual-core WiFi+BT | WiFi integration becomes standard | |
STM32F7/H7 | 2015-2016 | High-performance MCUs | 32-bit becomes affordable for all applications | |
2020s | RP2040 (Pi Pico) | 2021 | $4 dual-core with PIO | Open architectures gain traction |
ESP32-C3 | 2020 | RISC-V based WiFi/BT | RISC-V enters mainstream | |
ESP32-S3 | 2021 | AI acceleration | AI capabilities in MCUs |
How to study microcontrollers?
Other notes
8-bit vs 32-bit
Pro 8-bit: Good for learning fundamentals (AVR/Arduino, PIC) Pro 32-bit: Not harder than 8-bit, more future-proof, competitive pricing Industry view: 8-bit primarily for high-volume cost-sensitive products
Application-Specific Options
Bluetooth: Nordic (best documentation), alternatives: TI, STM32WB, Silabs WiFi: ESP32 (largest hobbyist community) General purpose: STM32 (industry standard) Recommendation: Choose based on project requirements, not preference
Development Methods
Bare-metal: Best for fundamental understanding (no Arduino framework) Framework-based: Easier entry but may hide important concepts Best practice: Start with framework, progress to bare-metal
Skills Progression
Basic peripherals: GPIO, Interrupts, Timers, ADC, PWM Communication protocols: UART, I2C, SPI Advanced topics: RTOS (only after mastering basics)
Learning Roadmap
this is based on the hardware i currently have in lab.
Phase 1: Arduino Nano (8-bit AVR) - Fundamentals (1 month)
-
Week 1-2: AVR Basics
- Setup development environment (Arduino IDE → PlatformIO → AVR-GCC)
- Direct register manipulation (no Arduino framework)
- GPIO control, timers, and interrupts
-
Project: Electronic Dice
- Roll electronic dice using a button press
- Display results on LEDs in binary pattern
- Use timer interrupts for button debouncing
- Implement true random number generation using analog noise
-
Week 3-4: Communication & Peripherals
- UART, SPI, and I²C implementation from scratch
- ADC and sensor integration
- Power management and sleep modes
-
Project: Weather Monitor
- Connect temperature/humidity sensor via I²C
- Implement custom low-level I²C driver (no Wire library)
- Use sleep modes for power efficiency
- Create serial protocol for data reporting
Phase 2: Raspberry Pi Pico (32-bit ARM) - Modern MCU (1-2 months)
-
Week 1-2: ARM Architecture
- Setup Pico SDK environment (C/C++)
- Understand ARM interrupt model
- Multicore programming basics
-
Project: Digital Synthesizer
- Generate waveforms using PWM and DMA
- Use second core for effects processing
- Implement MIDI input over USB
- Create modular architecture for different sound modules
-
Week 3-6: Advanced Peripherals
- PIO (Programmable I/O) programming
- DMA for efficient data transfers
- USB interface implementation
-
Project: Logic Analyzer
- Use PIO to capture digital signals at high speed
- Implement circular buffer with DMA
- Create USB interface for PC visualization
- Add protocol decoder for common interfaces (I²C, SPI)
Phase 3: ESP32 (32-bit Xtensa) - Connectivity & RTOS (2 months)
-
Week 1-2: Wireless & ESP-IDF
- Move from Arduino framework to ESP-IDF
- Wi-Fi and BLE configuration
- Web server and RESTful API development
-
Project: Home Environmental Controller
- Monitor multiple environmental factors
- Create elegant web interface
- Implement secure API for remote control
- Use BLE for local control from smartphone
-
Week 3-4: Zephyr & Task Management
- Zephyr tasks, queues, and semaphores
- Memory management in multi-threaded environments
- Power optimization for battery operation
-
Project: Wireless Sensor Network
- Create mesh network of ESP32 devices
- Implement efficient sleep/wake cycles
- Use MQTT for cloud connectivity
- Visualize data with dashboard
-
Week 5-8: Advanced Integration
-
Capstone Project: Automated Garden System
- Arduino Nano: Soil sensors and pump control (low-power sentinel)
- Raspberry Pi Pico: Camera processing for plant health analysis
- ESP32: Connectivity hub and user interface
- Custom PCB design for permanent installation
- Smartphone app for monitoring and control
-