Week 04: Embedded Programming¶
This week explores embedded systems, architectures, programming workflows, and practical microcontroller implementation in global session with Prof. Neil. The following page is from: https://fabacademy.org/2026/classes/embedded_programming/index.html
My SSTM¶

Topics Overview¶
Embedded Systems Basics¶
- Internal vs External
- Special-purpose vs General-purpose
- Real-time vs Asynchronous
Start with local sessions¶
During Week 04 started, I learned the fundamentals of embedded programming and how software interacts directly with hardware through microcontrollers by global sessions then with my local instructor.
I understood the difference between general-purpose systems and embedded systems, and how embedded systems are designed for specific tasks with efficiency and reliability in mind. I explored key computer architectures such as Von Neumann and Harvard, and learned how instruction sets like RISC and CISC affect processor performance.
In addition, I practiced writing firmware, compiling code, uploading programs to a microcontroller, and debugging errors. I learned how to control hardware components using GPIO pins and techniques like PWM.
After my local session, two hour vidoes (the first below link) shared by Rico was very useful and also refered the second link too. 1. https://youtu.be/mfiRJ1qgToc?si=7aWL3jxEOS-QX1UN 2. https://www.youtube.com/watch?v=DPqiIzK97K0

Group Assignment¶
We work on Compare the Toolchains & Workflows¶
Demonstrate and compare the toolchains and development workflows for available embedded architectures Documenting comparison of¶
- Installation
- Programming
- Debugging
- Communication methods
Individual Assignment¶
Read Datasheet & Program a Microcontroller¶
https://fabacademy.org/2026/classes/embedded_programming/index.html

Study the datasheet¶
Microcontroller & Module Comparison Table¶
All the name of the listed equipments are from Fab Academy – (Embedded Systems Page) as Reference
This table summarizes the main differences, capacities, compatibility, modern relevance, similarities, and key features of commonly used microcontrollers and modules. *
Core Technical Comparison From Their DataSheet¶
| MCU / Module | Architecture | CPU Speed | Flash | SRAM | Wireless | USB | ADC | PWM | Modern Use | Main Strength |
|---|---|---|---|---|---|---|---|---|---|---|
| RP2040 (XIAO) | ARM Cortex-M0+ (Dual Core) | 133 MHz | 2 MB | 264 KB | ❌ | ✔ Native | 12-bit | ✔ | Very Modern | Dual-core, PIO programmable IO |
| ESP32-C3 XIAO | RISC-V (Single Core) | 160 MHz | 4 MB | 400 KB | WiFi + BLE | ✔ Native | 12-bit | ✔ | Very Modern | Secure IoT, low power |
| ESP32-WROOM-32 | Xtensa LX6 (Dual Core) | 240 MHz | 4 MB | 520 KB | WiFi + BLE | ❌ | 12-bit | ✔ | Modern | High performance IoT |
| ESP8266 (ESP-01) | Xtensa LX106 | 80–160 MHz | 1 MB | 160 KB | WiFi | ❌ | 10-bit | Limited | Older | Low-cost WiFi |
| ATSAMD11C | ARM Cortex-M0+ | 48 MHz | 16 KB | 4 KB | ❌ | ✔ Native | 10-bit | ✔ | Entry-Level | Small & low power |
| ATSAMD11D (D11D-echo) | ARM Cortex-M0+ | 48 MHz | 16 KB | 4 KB | ❌ | ✔ Native | 10-bit | ✔ | Educational | USB device projects |
| ATSAMD21E (D21E-echo) | ARM Cortex-M0+ | 48 MHz | 256 KB | 32 KB | ❌ | ✔ Native | 12-bit | ✔ | Very Common | Arduino Zero class |
| ATSAMD51 | ARM Cortex-M4F | 120–200 MHz | 512 KB–1 MB | 192 KB | ❌ | ✔ Native | 12-bit | ✔ | Advanced | DSP + Floating Point |
| ATtiny412 | AVR 8-bit | 20 MHz | 4 KB | 256 B | ❌ | ❌ | 10-bit | ✔ | Minimal | Very small control tasks |
| ATtiny45 | AVR 8-bit | 20 MHz | 4 KB | 256 B | ❌ | ❌ | 10-bit | ✔ | Legacy | Simple embedded control |
Main Differences From Listed¶
| Category | ESP Series | RP2040 | SAMD Series | ATtiny Series |
|---|---|---|---|---|
| Wireless | ✔ WiFi / BLE | ❌ | ❌ | ❌ |
| Processing Power | High | Medium-High | Medium | Low |
| Power Consumption | Moderate | Low | Very Low | Very Low |
| USB Native | Some versions | ✔ | ✔ | ❌ |
| IoT Ready | ✔ | With external module | Needs module | ❌ |
Compatibility¶
| Board | Arduino IDE | MicroPython | CircuitPython | PlatformIO |
|---|---|---|---|---|
| RP2040 | ✔ | ✔ | ✔ | ✔ |
| ESP32 | ✔ | ✔ | Limited | ✔ |
| ESP8266 | ✔ | ✔ | ❌ | ✔ |
| ATSAMD21 | ✔ | ❌ | ✔ | ✔ |
| ATSAMD51 | ✔ | ❌ | ✔ | ✔ |
| ATtiny412 | ✔ | ❌ | ❌ | ✔ |
| ATtiny45 | ✔ | ❌ | ❌ | ✔ |
*Table prepared taking the datasheet from https://fabacademy.org/2026/classes/embedded_programming/index.html in ChatGPT tabular form created with prompt: change the data and compare the following electronics and give table
Similarities¶
- All are microcontrollers (except ESP modules which include radio SoC)
- All support GPIO digital I/O
- All support PWM
- Most support I2C, SPI, UART
- All programmable via C/C++
- Used in embedded systems & prototyping
Modern Relevance Ranking (2026 Perspective)¶
| Very Modern | Modern | Educational | Legacy |
|---|---|---|---|
| ESP32-C3 | ESP32-WROOM | ATSAMD21 | ESP8266 |
| RP2040 | ATSAMD51 | ATSAMD11 | ATtiny45 |
Main Features Overview¶
RP2040 - Dual-core ARM - Programmable IO (PIO) - Excellent for real-time control - No wireless
ESP32 Family - Built-in WiFi & BLE - High clock speed - Best for IoT - Higher power consumption
ATSAMD Series - Native USB - Low power - Stable ARM architecture - Good for USB devices
ATtiny Series - 8-bit AVR - Minimal memory - Ultra-low cost - Good for small control tasks
Conclusion on the electronics from the datasheets analysis¶
- Best for IoT: ESP32
- Best for Real-Time & GPIO control: RP2040
- Best for USB Devices: ATSAMD21
- Best for Simple Control / Low Cost: ATtiny
- Most Powerful ARM: ATSAMD51
My first microcontroler job as embedded systems¶
- Write a program using input/output
- Demonstrate communication (wired/wireless)
- I wrote a simple input/output program using Tinkercad simulation and the Arduino IDE to test an LED with an Arduino board. (The code is generated in chatGpt with prompt, write ardiuno code for traffic single line LEDs)
LEDs for traffic light designed on tinkercad¶

- The program was designed to control an LED connected to a digital output pin (I use pin #9, #10 and #11), allowing it to turn on and off based on programmed instructions.
My first green light coming out¶
- Using Tinkercad helped me simulate the circuit virtually before uploading the code to the physical Arduino hardware through the Arduino software. This project helped me understand basic input/output concepts, digital pin configuration (more of my time here), and how microcontrollers interact with external components like LEDs, the flowchart concept with the codes then finally 😁, I did my first ebedded system using ardiuno UNO, LEDs connectors and resistorswhich made me surprise and teach alot of things.
Source: https://www.notion.so/Week-4-Embedded-Programming-3059bb27ac9880639568fc21d44dd548
The flow chart is done in MSPowerPoint¶
My design to ardiuno UNO from thinkercad¶
Supported Boards¶
- XIAO RP2040 / ESP32-C3
- ATSAMD11C / D21E
- ATtiny412 / 1614 / 3216
- ESP8266 / ESP32
- AVR128DB32
Reflection¶
I am ready to learn/unlearn about embedded systems, programming, and debugging this week. All things surprised me and am still run 🏃♀️
Refernces:¶
- Basic components and their introductions here (provided to me by instructor Rico): https://www.youtube.com/watch?v=mfiRJ1qgToc
- Other good refernce from Mathew https://www.youtube.com/watch?v=DPqiIzK97K0
- Chat GPT with prompt: “give the following main electronics items differences, capacities, compatibility, modern relevance, similarities in tabular form”*