Group assignment week 2
demonstrate and compare the toolchains and development workflows
for available embedded architectures
Microcontrollers
XIAO RP2040
This controller supports micropython.
XIAO with C
XIAO with C
Contributed by Tyler Barron
Development Workflow for RP2040 Using Arduino IDE
- Dowload and Open Arduino IDE.
- Navigate to File > Preferences then paste the following link into the "additional board managers URL": https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
- Navigate to Sketch > Include Library > Manage Libraries. Search for and add "Adafruit SSD1306."
- Under the 'Select Board' drop down menu, search for and select "Seeed Xiao RP2040," then choose the appropriate port.
- Connect the QPad, and input code from the following link: QPad Arduino Code
- Click the upload arrow.
- Observe changes and debug as necessary.
ATSAMD21
This controller is more powerful, but requires a bootloader to start loading code
Development Environments
The main environment that we looked at is the Arduino IDE
Arduino has two main IDEs: IDE 1.x.x and IDE 2.x. The IDE 2.x. is the later release and has more features. The features that 2.x. has that 1.x.x doesn't include autocomplete code, syntax highlighting, a built-in debugger, an integrated serial monitor and plotter, easier access to libraries, and syncs with the cloud. While the 1.x.x IDE works, it is recommended to use the 2.x as these features help with more complicated projects and debugging. The 1.x.x editor contains four main areas (toolbar with buttons, message area, text editor, text console) and the 2.x contains an additional sidebar. Uploading works the same for both IDEs. 1. Connect arduino to computer. 2. Select board and port through toolbar. 3. Upload file to board.
Contributed by Stasya Selizhuk
QPad21 (ATSAMD21)
The QPad21 is a custom ATSAMD21E board designed by Quentin Bolsee.
Full documentation can be found on Quentin's GitHub.
The SAMD21 is a 32-bit ARM Cortex-M0+ microcontroller, more powerful than the RP2040 in some respects,
but it requires a bootloader and a heavier toolchain compared to simpler AVR-based boards.
Hardware Overview
- Micro USB connector — provides 5V input and data for programming/debugging.
- 3.3V regulator + capacitors — converts 5V to 3.3V with power conditioning.
- 10-pin SWD header — programming/debugging interface.
- Resistors + LED — status indication.
- OLED screen + capacitive button pads — simple interface elements.
- ATSAMD21E MCU — ARM Cortex-M0+ with more memory, faster clock, and more peripherals than AVR.
Soldering and Assembly
Components included: USB micro-B connector, 3.3V regulator + capacitors, 10-pin SWD header,
resistors, LED, and OLED. Tools used: soldering iron, flux, tweezers, hot air, solder paste.
After assembly, we verified continuity with a multimeter and confirmed 3.3V regulation from USB power.
Development Workflow for SAMD21 Using Arduino IDE
- Open Arduino IDE → Preferences → add the following Board Manager URL:
Fab SAM Core JSON
- In Tools → Board Manager, install the Fab SAM core.
- Under Tools → Board, select the appropriate SAMD21 variant (e.g. SAMD21E17 = Generic x21E).
- Bootloader installation (first-time only):
Connect a CMSIS-DAP programmer (e.g. Atmel ICE, Seeed XIAO, or other).
Select the correct board + programmer, then choose Burn Bootloader.
- Once the bootloader is installed, the board can be programmed directly over USB
using the regular Upload button in Arduino IDE.
- If USB is disabled or unstable, you can upload sketches directly with the programmer.