Assignment Requirements
Group assignment
- Demonstrate and compare the toolchains and development workflows for available embedded architectures
- Document your work to the group work page and reflect on your individual page what you learned
Individual assignment
- Browse through the datasheet for a microcontroller
- Write and test a program for an embedded system using a microcontroller to interact (with local input &/or output devices) and communicate (with remote wired or wireless connections)
Group assignment
Progress Status
This is for reporting progress (not for visitors to click).
Group page link + notes added.
Missing final photos and conclusions.
Upload .zip with source files.
Assignment Requirements
Learning outcomes
- Implement programming protocols..
Have you answered these questions?
- Linked to the group assignment page✅
- Browsed and documented some information from a microcontroller's datasheet✅.
- Programmed a board to interact and communicate✅.
- Described the programming process(es) you used✅.
- Included your source code✅.
- Included ‘hero shot(s)’✅.
Introduction to Embedded Programming
This week was also full of challenges. We were able to meet virtually with Maestro Roberto, from the node, who gave us clearer guidance on the topic we had to address during the week. Thanks to his guidance, we understood that the work was divided into a group part and an individual part, which implied better organization and distribution of tasks.
Group work
During Week 4, which focused on Embedded Programming, my colleague Grace Schwan and the team organized ourselves to demonstrate and compare toolchains and development workflows across different microcontroller families. To better distribute the workload, each team member focused on a specific microcontroller.
In my case, I documented the operation and development environment of the ESP32-C3, while my colleague worked with the RP2040. Afterward, we shared our findings with the team to analyze and compare them with other selected architectures, allowing us to identify similarities, differences, and advantages of each platform.
For more information about our group work and detailed comparison, please visit our group project page .
Group Assignment Conclusion – Microcontroller Comparison
RP2040 is well balanced: it has dual-core processing, good speed (up to 133 MHz), and enough memory (264 KB SRAM + 2 MB Flash) for medium projects. It’s ideal for local control (LEDs, buttons, sensors, PWM, ADC) and quick development with Arduino or MicroPython.
ESP32-C3 is a good option when wireless connectivity is required, since it includes Wi-Fi and Bluetooth (BLE). It is strong enough for basic IoT applications, and its main advantage is the ability to connect to a network or a phone. The workflow usually includes network setup (Wi-Fi credentials or BLE services).
ESP32-S3 is the most powerful option: it offers higher speed and significantly more memory available on the board (large Flash + PSRAM). This is helpful for heavier tasks, larger libraries, or advanced features, while still maintaining Wi-Fi/BLE connectivity.
ATSAMD11 is the most basic and limited in terms of resources (lower speed and memory). However, it is very useful for learning because it encourages writing efficient firmware and often involves a more “technical” workflow using ARM tools and SWD debugging. It is a good option to demonstrate a workflow different from simply uploading via USB.
Individual assignment
ESP32-C3 Microcontroller
I chose to study the ESP32-C3 because it combines a compact design with integrated wireless connectivity, making it very powerful for IoT and smart device development. Unlike many basic microcontrollers, it includes built-in Wi-Fi and Bluetooth Low Energy, which allows direct internet communication without requiring additional modules.
The ESP32-C3 is based on a RISC-V architecture, offering efficient performance and low power consumption, which makes it ideal for embedded systems and energy-efficient applications. It is well suited for portable projects, home automation, sensor networks, and real-time data monitoring.
Additionally, it supports multiple programming environments such as Arduino IDE, MicroPython, and ESP-IDF, making it flexible for both beginners and advanced users who want to explore different development platforms.