Diving into the microcontroller ecosystem with the Seeed Xiao RP2040. From analyzing datasheets to programming a multi-threaded "Quatro-Blinky" in Arduino and MicroPython.

Assignment Goals
  • Datasheet Analysis: Browse through the data sheet for a microcontroller.
  • Programming: 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).
  • Extra Credit: Try different languages &/or development environments.
Assignment Overview 1 Assignment Overview 2

01 · Datasheet Deep Dive: RP2040

Since I used the RP2040 Raspberry Pi controller in the XIAO package to make my embedded controller board, I studied the RP2040.

The RP2040 is a Raspberry Pi microcontroller chip, and it’s designed to be a kind of “Swiss Army knife” for makers. Unlike the bigger Raspberry Pi computers that run Linux, the RP2040 is built to do one thing really well: connect code directly to the physical world, whether that’s blinking LEDs, spinning motors, or sampling sensors.

RP2040 Block Diagram
RP2040 Block Diagram showing dual cores and peripherals.
Key Features
  • Dual Core: Two Arm Cortex-M0+ processor cores running at up to 133 MHz. This allows splitting tasks, e.g., one core listening to sensors while the other handles communication.
  • Memory: 264KB of on-chip SRAM and support for up to 16MB of external flash.
  • Peripherals: 2x UART, 2x SPI, 2x I2C, 16 PWM channels, and a USB 1.1 controller.
  • PIO (Programmable I/O): A reconfigurable hardware engine to handle custom protocols or tricky timing, freeing up the main processors.

Cheap, efficient, and flexible, the RP2040 is designed for makers. It packs serious capabilities into a few millimeters of silicon — just enough power and memory to let your projects “talk” to the physical world with ease.

02 · Board Assembly & Soldering

2.1) Assemble the PCB board for the XIAO package: The PCB was milled in the lab, and the copper layer was quite thin. In my first attempt at filling a rectangle with lead, I kept the hot soldering iron on the copper rectangle for too long and burnt right through. Thankfully that was connecting to a XIAO pin that was not useful for this project, so no real harm done.

Burnt PCB pad

2.2) Soldering the XIAO: Soldered all the pins of the XIAO package that contains the Raspberry Pi RP2040 controller to the PCB. As you can see, my first attempt in soldering wasn’t great, didn’t look pretty. Used the multi-tester to check for connectivity of my soldering job.

Soldering the XIAO

2.3) Components: Soldered the tiny 10k resistors and the display unit using the prop-up pins.

Soldering resistors and display

2.4) Reflection: Got to say, Anthony did a great job explaining the nuances of soldering. He went through the different techniques and materials. I haven’t soldered a board in some 3 decades, it was great fun getting the XIAO package onboard the PCB and getting the resistors and display mounted.

03 · Programming & Testing

2.5) Testing: Quentin helped test the program by connecting his laptop to the XIAO USB-C port and ran the program. The LED’s blinked and the “Hello World” flashed and the touch sensors detected capacitance that was plotted by the program.

Testing the board

Thanks Quentin for your assistance!!

Final working board