Determine the specific functionalities your development board should support, such as processing power, memory capacity, input/output interfaces, and communication protocols.
The answer given here is a continuation from week 6 which was about electronic design of a development board. The schematic and the pcb was achived in KiCad.
The XIAO RP2040 microcontroller development board supports the following functionalities:
Click the link below to view the data sheet of the SEED XIAO-RP2040
LinkChoose a microcontroller that aligns with your project needs. Consider factors like architecture, clock speed, available peripherals, power consumption, and package type.
The XIAO RP2040 aligns with the project needs based on the following:
This microcontroller is ideal for a prototyping development board due to its versatile interfaces, compact size, and sufficient processing power.
Create a schematic diagram incorporating the microcontroller and essential components such as power supply circuits, oscillators, reset circuits, and necessary interfaces. Ensure proper decoupling capacitors and include programming headers.
XIAO RP2040 designed in KiCAD
The schematic above incorporates the following components:
The design includes essential components and follows best practices for noise filtering and interfacing.
Translate the schematic into a PCB layout, adhering to best practices like keeping trace lengths short, separating analog and digital grounds, and positioning components logically. Perform a Design Rule Check (DRC).
XIAO-RP2040 designed in PCB Editor
The PCB layout adheres to best practices:

What is Mods CE in the Context of G-code Generation?
Mods CE (Community Edition) is a web-based, open-source platform developed by the MIT Center for Bits and Atoms (CBA) for the Fab Lab community. It generates G-code for CNC machines, 3D printers, and other fabrication tools by connecting modular workflows. Each module performs a specific task, such as reading files, processing images, generating toolpaths, or outputting G-code. In this project, Mods CE is used to generate G-code for milling the PCB of the XIAO RP2040 development board.
The layout is practical for a single-layer design, though a double-layer board could improve signal integrity with a ground plane.
Decide on a fabrication method (in-house production or professional board house).
The board was fabricated using an in-house method using a PCB Milling machine
In-house PCB Milling Machine at UNIPOD Rwanda


Video Milling PCB inhouse at UNIPOD Rwanda>
This method allows quick iteration for prototyping.
Solder the components onto the fabricated PCB, use appropriate soldering techniques, and inspect solder joints.
The assembly process includes:
The assembly is successful, with all components securely attached.
Develop a testing plan to verify each functionality, use debugging tools, and ensure all interfaces operate as intended.
The testing plan to verify functionality includes:


// LED Blink Test on GPIO 16 (SCK)
const int ledPin = 16; // GPIO 16 for green LED on XIAO RP2040
void setup() {
// Initialize the LED pin as an output
pinMode(16, OUTPUT); //Set GPIO 16 (SCK) as an output
}
void loop() {
digitalWrite(ledPin, HIGH); // Turn LED on (note: onboard LED may be active-low)
delay(100); // Wait for 0.1 second
digitalWrite(16, LOW); // Turn LED off
delay(100); // Wait for 0.1 second
}

// LED Blink Test on GPIO 16 (SCK)
const int ledPin = 16; // GPIO 16 for green LED on XIAO RP2040
#define BUTTON_PIN 12
#define LED_PIN A3 //the XIAO RP2040 LED pin is connected to Pin 13
void setup() {
// Initialize the LED pin as an output
pinMode(16, OUTPUT); //Set GPIO 16 (SCK) as an output
pinMode(BUTTON_PIN, INPUT_PULLUP);
pinMode(LED_PIN, OUTPUT);
}
void loop() {
digitalWrite(ledPin, HIGH); // Turn LED on (note: onboard LED may be active-low)
delay(100); // Wait for 0.1 second
digitalWrite(16, LOW); // Turn LED off
delay(100); // Wait for 0.1 second
if (digitalRead(BUTTON_PIN) == LOW) {
digitalWrite(LED_PIN, HIGH);
} else {
digitalWrite(LED_PIN, LOW);
}
Design Files for Download
Download ZIP