Embedded Programming
Group Assignment - Test the Toolchains and Workflows for Various Microcontrollers
For this assignment, my groupmates (Max Negrin, McKinnon Collins, and Oliver Abbot) and I worked with various microntrollers to create circuits and test their workflows. I worked with the Raspberry Pi Pico 2 W RP2350, and utilized the microcontroller to create a night light circuit.
The Raspberry Pi Pico 2 is a compact microcontroller board built around the RP2350 chip, which provides dual-core processing, improved memory, and enhanced I/O capability. It is designed for embedded systems and prototyping, offering flexible GPIO and support for MicroPython or C/C++ to control electronic components and build efficient hardware projects.
Understanding the Pico 2 W
To develop an understanding of the microcontroller, I found the datasheet online, and consulted seller pages which summarized its features/specs. Using this information, I created the chart below.
| Feature | Raspberry Pi Pico 2W |
|---|---|
| Chip | RP2350A |
| CPU | Dual ARM Cortex-M33 (Armv8-M), or Dual RISC-V Hazard3 (RV32IMAC+) |
| CPU Clock | 48MHz, up to 150MHz |
| RAM Size | 520 KByte SRAM |
| Flash Size | 4 MByte Q-SPI Flash |
| Security | ARM TrustZone, 8KB OTP, Secure Boot |
| Wireless | IEEE 802.11 b/n/g (2.4GHz), Bluetooth 5.2 |
| Programming Language | MicroPython, CircuitPython, C, C++ |
| MCU Voltage | 3.3VDC |
| GPIO Voltage | 3.3VDC |
| GPIO | 26 x Digital Input/Output (Total) |
| PWM | 16 |
| Programmable IO | 3 x PIO v2 Blocks (12 PIO State Machines) |
| Debugging | ARM Serial Wire Debug (SWD) |
Setting up the Pico 2 W
To set up the Pico 2 W to work with MicroPython, I first downloaded the Pico 2 W UF2 firmware from the official micropython website (specifically from this page). Then, I put the microcontroller in BOOTSEL mode by holding the BOOTSEL button and then plugging it in. This opened a drive in my MacBook called RP2350. I then dragged the .uf2 file into the new drive. Once the drive disappeared, I could confirm that the Pico 2 W was successfully configured to run MicroPython.
To make working with MicroPython a lot easier, I installed the MicroPico VSCode extension (created by paulober). This extension allowed me to create and configure Python projects directly from the command palette, as well as freely load and run code onto my microcontoller. To create a new project, I first accessed the command palette by pressing Command + Shift + P, and then ran MicroPico: Create New Project. This generated a base file structure with all necessary MicroPython components.
Creating the Night Light Circuit
The idea for this circuit was heavily inspired by a list of ideas created by ChatGPT. The circuit itself and the corresponding code was based off of this video.
Here are the required components:
- x 1 Raspberry Pi Pico 2 W RP2350
- x 5 Male-to-Male Header Wires
- x 2 Female-to-Female Header Wires
- x 1 LDR Sensor Module
- x 1 LDR Photo Resistor
To start, I grasped an understanding of the circuit's wiring by consulting the Pico 2 W's pinout.

With this, I was able to wire the circuit.