A fully custom-designed Raspberry Pi RP2040 development board — built from scratch with onboard flash, USB-C, SWD debug header, and a full GPIO breakout. Designed to be compact, breadboard-friendly, and maker-ready.
- Overview
- Features
- Hardware Specifications
- Pin Mapping
- Schematic & PCB
- Bill of Materials (BOM)
- Getting Started
- Programming the Board
- Project Files
- 3D Model & Enclosure
- Contributing
- Author
- License
This project is a custom-designed development board centered around the Raspberry Pi RP2040 dual-core ARM Cortex-M0+ microcontroller. It was designed entirely from scratch — from schematic to PCB layout — using EasyEDA, with a focus on:
- Clean power delivery with proper decoupling
- Full GPIO breakout with double-row headers
- USB-C for power and programming
- Onboard SWD debug interface
- Compact, professional form factor with optional 3D-printed enclosure
- ⚡ RP2040 — Dual-core ARM Cortex-M0+ @ up to 133 MHz
- 🔌 USB-C Connector — For power input and UF2 firmware flashing
- 💾 Onboard Flash — SOIC-8 NOR Flash (W25Q16 or compatible) for program storage
- 🔋 3.3V LDO Regulator — Clean, stable 3.3V rail (SOT-23-4P package)
- 🧩 Full GPIO Breakout — All 29 GPIOs exposed via dual-row 2.54mm pin headers
- 🛠️ SWD Debug Header — 3-pin SWD (SWCLK, SWDIO, GND) for OpenOCD / Picoprobe
- 🔄 BOOTSEL & RUN Buttons — For easy firmware flashing and reset
- 🌀 Crystal Oscillator — Onboard 12 MHz crystal for accurate USB & clock timing
- 📐 3D-Printable Enclosure — Matching shell designed in 3D (STEP file included)
- 🏷️ Silkscreen Labels — Clear GPIO numbering and power rail markings
| Parameter | Value |
|---|---|
| Microcontroller | Raspberry Pi RP2040 |
| CPU | Dual-core ARM Cortex-M0+ |
| Clock Speed | Up to 133 MHz |
| SRAM | 264 KB |
| Flash | External SPI NOR Flash (SOIC-8) |
| Supply Voltage | 5V via USB-C |
| I/O Voltage | 3.3V |
| GPIO Count | 29 (all broken out) |
| USB | USB 1.1 Full-speed (via USB-C) |
| Debug Interface | SWD (3-pin header) |
| Crystal | 12 MHz |
| PCB Layers | 2-Layer |
| PCB Dimensions | ~56mm × 42mm (approx.) |
| PCB Color | Blue |
| Header Pitch | 2.54mm |
| Pin | Function |
|---|---|
| GND | Ground |
| 16 | GPIO16 |
| 17 | GPIO17 |
| 18 | GPIO18 |
| 19 | GPIO19 |
| 20 | GPIO20 |
| 21 | GPIO21 |
| 22 | GPIO22 |
| 23 | GPIO23 |
| 24 | GPIO24 |
| 25 | GPIO25 |
| 26 | GPIO26 (ADC0) |
| 27 | GPIO27 (ADC1) |
| 28 | GPIO28 (ADC2) |
| Pin | Function |
|---|---|
| 3.3V | Power Output |
| 0 | GPIO0 (UART0 TX / I2C0 SDA) |
| 1 | GPIO1 (UART0 RX / I2C0 SCL) |
| 2 | GPIO2 (SPI0 SCK / I2C1 SDA) |
| 3 | GPIO3 (SPI0 TX / I2C1 SCL) |
| 4 | GPIO4 (SPI0 RX) |
| 5 | GPIO5 (SPI0 CS) |
| 6 | GPIO6 |
| 7 | GPIO7 |
| 8 | GPIO8 |
| 9 | GPIO9 |
| 10 | GPIO10 |
| 11 | GPIO11 |
| 12 | GPIO12 |
| 13 | GPIO13 |
| 14 | GPIO14 |
| 15 | GPIO15 |
| GND | Ground |
| Pin | Function |
|---|---|
| SWCLK | Serial Wire Clock |
| SWDIO | Serial Wire Data |
| GND | Ground |
| RUN | Reset (active low) |
The board was designed using EasyEDA (LCEDA). Design files are included in the repository:
├── Gerber_PCB1_RP2040/ # Gerber files for PCB fabrication
│ ├── Gerber_TopLayer.gbr
│ ├── Gerber_BottomLayer.gbr
│ ├── Gerber_BoardOutline.gbr
│ ├── Gerber_TopSilkLayer.gbr
│ └── ...
├── PickAndPlace_PCB1_ # Pick and place file for SMT assembly
├── BOM_RP2040_Dev_Board_PCB1 # Bill of Materials (Excel)
└── 3D_step_file.step # 3D STEP model of the board
Upload the Gerber_PCB1_RP2040.zip to any PCB manufacturer:
Recommended fabrication settings:
| Setting | Value |
|---|---|
| Layers | 2 |
| Thickness | 1.6mm |
| Surface Finish | HASL (LeadFree) |
| Copper Weight | 1 oz |
| Color | Blue |
Full BOM is in
BOM_RP2040_Dev_Board_PCB1.xlsx
| Ref | Component | Package | Value / Part No. |
|---|---|---|---|
| U2 | RP2040 | QFN-56 | Raspberry Pi RP2040 |
| U3 | USB-C Connector | SMD | USB Type-C Receptacle |
| U4 | LDO Regulator | SOT-23-4P | e.g. ME6206 / XC6206 3.3V |
| U5 | Flash Memory | SOIC-8 | W25Q16JVSSIQ (2MB) |
| U6 | Crystal | SMD | 12 MHz Crystal |
| H1 | Header 1×2 | 2.54mm THT | Power/GND Breakout |
| H2 | Header 2×20 | 2.54mm THT | Bottom GPIO |
| H4 | Header 2×(n) | 2.54mm THT | Top GPIO |
| H5/H6 | Header 1×4 | 2.54mm THT | SWD Debug |
| C1–C16 | Decoupling Caps | 0402/0603 | 100nF / 10µF |
| R1–R7 | Resistors | 0402 | Various (1kΩ, 27Ω, etc.) |
- Soldering iron + solder
- PCB (ordered from Gerber files)
- All BOM components
- USB-C cable
- PC with Raspberry Pi Pico SDK or MicroPython
- Solder SMD components first — Start with ICs (U2 RP2040, U4, U5), then passives (capacitors, resistors)
- Solder the crystal (U6) and USB-C connector (U3)
- Solder through-hole headers last (H2, H4, H1, H5, H6)
- Inspect all joints under magnification
- Power up via USB-C and check 3.3V rail before connecting peripherals
- Hold BOOTSEL button and plug in USB-C
- The board appears as a mass storage device (
RPI-RP2) - Drag and drop your
.uf2firmware file - The board resets and runs your firmware
- Download MicroPython UF2 for RP2040
- Flash via UF2 method above
- Use Thonny IDE or any serial terminal to interact
# Install Pico SDK
git clone https://github.com/raspberrypi/pico-sdk
cd pico-sdk && git submodule update --init
# Build a project
mkdir build && cd build
cmake -DPICO_SDK_PATH=../../pico-sdk ..
make -j4Connect a Picoprobe or J-Link to the SWD header (H5/H6):
openocd -f interface/picoprobe.cfg -f target/rp2040.cfgRP2040-Dev-Board/
│
├── 📁 Gerber_PCB1_RP2040/ # Gerber files for fabrication
├── 📄 BOM_RP2040_Dev_Board_PCB1.xlsx # Bill of Materials
├── 📄 PickAndPlace_PCB1_.csv # Pick & Place file for SMT
├── 📄 3D_step_file.step # 3D STEP model
├── 📁 3DShell_PCB1/ # 3D printable enclosure files
├── 🖼️ FW.JPG # PCB layout render
├── 🖼️ SW.JPG # 3D perspective render
├── 🖼️ TW.JPG # 3D top view render
├── 🖼️ SSV.JPG # Enclosure 3D view
└── 📄 README.md # This file
A matching 3D-printed enclosure was designed for this board. The shell exposes:
- USB-C port on the left side
- SWD/RUN header on the right side
- All GPIO pins through the top
Files: 3DShell_PCB1/ and 3D_step_file.step
Print with PLA or PETG, 0.2mm layer height, 20% infill recommended.
Contributions, issues and feature requests are welcome!
- Fork the repository
- Create your feature branch:
git checkout -b feature/my-improvement - Commit your changes:
git commit -m 'Add some improvement' - Push to the branch:
git push origin feature/my-improvement - Open a Pull Request
Electronics & Telecommunication Engineering
Dr. D. Y. Patil Institute of Engineering Management and Research
Akurdi, Pune
This project is licensed under the MIT License — see the LICENSE file for details.
MIT License
Copyright (c) 2024 Mohit Jagtap
Permission is hereby granted, free of charge, to any person obtaining a copy
of this hardware design and associated documentation files, to use, copy, modify,
merge, distribute, sublicense, and/or sell copies of the design, subject to the
following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the design.
⭐ If this project helped you, please consider giving it a star! ⭐
Made with ❤️ in Pune, India 🇮🇳