Skip to the content
PCBKitNew board
4 layers85.1 × 100.5 mmOnboard pcb, the printed circuit board in 3D

Onboard pcb

rober708/BIRD-E

The Bounded Infrared Recording Drone Ecosystem (BIRD-E) is a tethered quadcopter with an attached infrared camera, with livestream functionality and XBOX ground control. Senior design capstone at Purdue ECE.

Size
85.1 × 100.5 mm
Copper layers
4
Thickness
1.6 mm
Parts
103
Nets
106
Pads
455
Tracks, vias
1,326, 406
Pours
6
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
20 Jun 2026
Updated
21 Jul 2026

Overview

Onboard pcb is an open-source printed circuit board by rober708, from the rober708/BIRD-E repository on GitHub. It is a 4-layer board of 85.1 × 100.5 mm with 103 parts on 106 nets, routed with 1,326 tracks and 406 vias.

It is built around the MPL3115A2R1, TPS56637RPAR and TPS62142RGT, with the W25Q128JVSIQ, BNO055 and TPS2116DRL among its other parts. Its parts include 23 capacitors, 19 resistors, 14 connectors, 9 ICs and 3 inductors. It belongs with the robots and motor control boards and the RP2350 boards of this library.

Main components

9

README

README.md

BIRD-E (Bounded Infrared Recording Drone Ecosystem)

Purdue University — Senior Design Capstone Project (Team E04)

Semesters: Fall 2025 – Spring 2026

Mentors: Dr Phil Walter (Purdue), Shivam Duhan (Purdue), Jonathan Lane (Purdue -> Berkeley!)

The Bounded Infrared Recording Drone Ecosystem (BIRD-E) is a specialized, lightweight tethered quadcopter system equipped with night-vision capabilities. It is designed to provide rapid, temporary, and cost-effective aerial surveillance for fire departments, law enforcement, industrial engineers, and other managerial groups who may benefit from mobile sentries. By operating via a power tether, BIRD-E circumvents standard drone flight limitations of other drones in its price point (~$260).


Repository Structure

This repository consolidates all subsystems of the BIRD-E project:

  • Flight-Control/ [blocked]: Firmware for the RP2350a microcontroller managing flight dynamics and sensor polling (C/C++).
  • fifo-buffer/ [blocked]: Statically allocated FIFO buffer firmware module used in sensor data filtering.
  • force-sensor/ [blocked]: BLDC motor thrust calibration data and analytics scripts.
  • frame/ [blocked]: Chassis 3D CAD files (STEP, OBJ, STL format) for structural assembly.
  • onboard-PCB/ [blocked]: KiCad 9.0 schematic and power distribution PCB design files.
  • xbox-controller/ [blocked]: Laptop pilot-interface controller handler and ESP32 wireless transceiver scripts.

Technical Setup & Interfacing

1. Ground Dock & Power Delivery

  1. Place the ground dock station flat. Ensure the 16 AWG power tether wire is fully housed inside and connected to the battery.
  2. Connect the external high-capacity 12.6V lead-acid battery terminal block to the outside dock interface.
  3. Power on the ground battery. The drone's onboard power distribution network splits the voltage rails, indicating life via a 9-LED status bank.

2. Flight Control Firmware Compilation

The firmware is built using PlatformIO targeting the custom RP2350 proton board configuration with picosdk.

bash
# Navigate to the firmware directory
cd Flight-Control

# Build the firmware binary
pio run

# Flash the firmware via Picoprobe
pio run -t upload

3. Xbox Ground Station Interface

The pilot interfaces with the drone using a laptop running a Python-based PyGame client that streams controller commands wirelessly over Wi-Fi.

Prerequisites
  • Python 3.10+
  • Windows PowerShell (or Unix-based terminal)
Setup & Execution
  1. Connect the laptop to the local Wi-Fi Access Point hosted directly by the drone's companion computer.
  2. Plug the Xbox controller into the laptop via USB and turn it on.
  3. Set up the virtual environment and launch the interface:
bash
# Navigate to the controller directory
cd xbox-controller

# Create and activate virtual environment
python -m venv .venv
.venv\Scripts\activate  # On Linux/macOS use: source .venv/bin/activate

# Install required dependencies
pip install pygame==2.6.1

# Run the pilot-interface handler (Pi Zero 2W target)
python src/z2w/client_user.py
  1. Wait for the terminal debugger console to print: Communication Established.
Flight Controls Mapping
Control InputFunction / Command
Button A (Green)Runs pre-flight diagnostics and initiates automatic takeoff to base hover altitude.
D-Pad Up/DownIncreases or decreases the hover altitude set point.
D-Pad Left/RightControls yaw rotation speed (clockwise/counter-clockwise swivel).
Button B (Red)Commands automated soft landing (vertical speed $< 0.5\text{ m/s}$).
Button X (Blue)Emergency Abort. Instantly cuts duty-cycle on all PWM engine signals to 0% in $< 1\text{ s}$.

4. Thrust Calibration Analytics

To process thrust measurement data and generate calibration curves for BLDC motor PWM duty cycles:

bash
cd force-sensor
pip install pandas numpy matplotlib
python pwm_to_thrust.py

Hardware Architecture & Specifications

  • Microcontroller: RP2350a (Proton Board clone layout)
  • Companion Computer: Raspberry Pi Zero 2W (Wi-Fi AP host & command processing)
  • IMU: BNO055 (or MPU 9250 during testing)
  • Altimeter: MPL3115A2 / MPU L35115A2
  • Chassis: TBS Source One frame (modified with custom 3D printed components found in frame/)

Known Issues

  • BNO055 Sensor EOL: The BNO055 IMU is no longer manufactured; future builds should transition to an active alternative.
  • Takeoff Tilt: The drone exhibits initial tilt during takeoff before PID loops stabilize orientation in mid-air. Clear surrounding space prior to lift-off. Seriously. You will hurt your finger.
  • PCB USB-C Connection: The onboard custom PCB USB-C port has hardware interface issues (suspected resistor sizing). Programming can alternatively be done via debug pins.
  • Battery Connection: Though not a functionality issue, our drone didn't properly connect to the battery, and was held on with C-Clamps. This was dangerous, and would spark when connecting. Consider changing this.

Contributors

  • Andrew Robertson
  • Ryan Wurtz
  • Tiana Lin
  • Zachary Hsiung
  • Honorable Mentions (Not In The Team, but Large Contributors): Victor Merz (L3Harris), Niraj Menon (Purdue University)

Parts

103
QtyValueFootprintReferences
12100nCapacitor_SMD:C_0603_1608MetricC8, C11, C13, C14, C15, C16, C17, C18, C19, C20, C21, C32
710kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR7, R18, R19, R20, R26, R27, Rfbb1
6100nFCapacitor_SMD:C_0603_1608MetricC_D_MPL1, C_D_MPL2, CBNO0, CBNO3, Cboot_5, Cinx_5
5150Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR_LED4, R_LED5, R_LED6, R_LED7, R28
5LEDLED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolderD_PWR1, D4, D5, D6, D7
4100kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR29, R30, Rpg_3, Rpg_5
44.7uCapacitor_SMD:C_0603_1608MetricC5, C6, C9, C10
4Conn_01x02_PinConnector_Wire:SolderWire-0.1sqmm_1x02_P3.6mm_D0.4mm_OD1mmJ2, J3, J4, J5
4Conn_01x02_PinConnector_Wire:SolderWire-0.5sqmm_1x02_P4.8mm_D0.9mm_OD2.3mmJ10, J11, J12, J13
310uCapacitor_SMD:C_0603_1608MetricC12, C33, C34
31kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR4, R8, R23
20.1uFCapacitor_SMD:C_0603_1608MetricC35, C44
210uFCapacitor_SMD:C_0603_1608MetricC_D_MPL0, Cin_3
215pCapacitor_SMD:C_0603_1608MetricC30, C31
227Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR9, R10
25.1kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR24, R25
2Conn_01x03_SocketConnector_JST:JST_EH_S3B-EH_1x03_P2.50mm_HorizontalJ_PORT_0, J_STARBOARD_0
2MountingHoleMountingHole:MountingHole_3.2mm_M3H2, H4
2RESETButton_Switch_SMD:SW_SPST_PTS647_Sx38SW2, SW3
2Screw_Terminal_01x01TerminalBlock_Wuerth:Wuerth_REDCUBE-THR_WP-THRBU_74650173_THRJ1, J14
1100pFCapacitor_SMD:C_0603_1608MetricCff1
1120nFCapacitor_SMD:C_0603_1608MetricCBNO2
115uFCapacitor_SMD:C_0603_1608MetricCin_5
12.2uHInductor_SMD:L_0805_2012Metric_Pad1.05x1.20mm_HandSolderL1
120kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderRff1
122uFCapacitor_SMD:C_0603_1608MetricCout_3
13.3uInductor_SMD:L_0805_2012Metric_Pad1.05x1.20mm_HandSolderL3
13.3uHInductor_SMD:L_0805_2012Metric_Pad1.05x1.20mm_HandSolderL2
133Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR5
1390pFCapacitor_SMD:C_0603_1608MetricCss_3
147uFCapacitor_SMD:C_0603_1608MetricCout_5
16.8nFCapacitor_SMD:C_0603_1608MetricCBNO1
173.2kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderRfbt1
1ABM8-272-T3Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mmY1
1BAT60JFILMcustom_footprints:SOD323_STCR1
1BNO055custom_footprints:LGA28R50P4X10_380X520X100U4
1Conn_01x07Connector_PinSocket_2.54mm:PinSocket_1x07_P2.54mm_VerticalJ6
1Conn_01x08Connector_PinSocket_2.54mm:PinSocket_1x08_P2.54mm_VerticalJ7
1Conn_02x03_Counter_ClockwiseConnector_PinSocket_2.54mm:PinSocket_2x03_P2.54mm_Vertical_SMDJ9
1MPL3115A2Package_LGA:NXP_LGA-8_3x5mm_P1.25mm_H1.1mmU10
1NCP1117-3.3_SOT223Package_TO_SOT_SMD:SOT-223-3_TabPin2U13
1RP2350_80QFNPackage_DFN_QFN:QFN-80-1EP_10x10mm_P0.4mm_EP3.4x3.4mm_ThermalViasU3
1TPS2116DRLPackage_TO_SOT_SMD:SOT-583-8U14
1TPS56637RPARcustom_footprints:CONV_TPS56637RPARU2
1TPS62142Package_DFN_QFN:VQFN-16-1EP_3x3mm_P0.5mm_EP1.68x1.68mm_ThermalViasU1
1USBLC6-2P6Package_TO_SOT_SMD:SOT-666U12
1USB_C_Receptacle_USB2.0_14PConnector_USB:USB_C_Receptacle_G-Switch_GT-USB-7010ASVJ8
1W25Q128JVScustom_footprints:SOIC127P790X216-8NU11

Questions

How big is the Onboard pcb PCB?

It measures 85.1 × 100.5 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Onboard pcb use?

103 parts, built around the MPL3115A2R1, TPS56637RPAR, TPS62142RGT and W25Q128JVSIQ. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Onboard pcb KiCad files?

From the rober708/BIRD-E repository on GitHub, at the commit this page was made from: the board is onboard-PCB/onboard_pcb/onboard_pcb.kicad_pcb and its schematic onboard-PCB/Power_Distro/Initial_PCB_Oct_21.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Onboard pcb design in my own project?

Its repository states no licence, so its author keeps all rights: ask rober708 before reusing the design.

Similar boards

  • 4 layers20.3 × 99.1 mmProton, the printed circuit board in 3D

    Proton

    ewyrick-mark-1/Chromatone

    Chromatone is an embedded audio visualizer running on the Raspberry Pi RP2350. It samples audio through the ADC, performs a real-time FFT, detects musical notes, and drives an RGB LED output based on the results.

    119 parts1
  • 4 layers81.7 × 100.6 mmFinal Project PCB, the printed circuit board in 3D

    Final Project PCB

    ndesserich/ECE-36200-Final-Project-PCB

    A PCB that integrates an RP2350 and various peripherals to play games.

    80 parts1
  • 2 layers77.5 × 85.5 mmBT Audio Player PCB, the printed circuit board in 3D

    BT Audio Player PCB

    MAGG4444/BT_Audio_Player_PCB

    Bluetooth-enabled audio player PCB for wireless audio playback and easy device integration.

    69 parts
  • 4 layers92.8 × 57.2 mmProton, the printed circuit board in 3D

    Proton

    PurdueECE-362-SSTV-Project/SSTV-Hardware

    This repo contains the SCHEM and PCB files for the SSTV Receiver.

    105 parts
  • 4 layers63.5 × 25.4 mmCOMET, the printed circuit board in 3D

    COMET

    K-Eckert15/ARES

    ARES capstone with PHOBOS and DEIMOS subsystems

    73 parts1
  • 4 layers358 × 40 mmLongboi, the printed circuit board in 3D

    Longboi

    KungfuPancake/longboi

    Possibly the longest controller board to control the BoxTurtle AFC

    297 parts7Apache-2.0
  • 4 layers25 × 74 mmPTR mini pcb, the printed circuit board in 3D

    PTR mini pcb

    PTR-projects/PTR_mini_hardware

    Welcome to the KPPTR-hardware repository! This repository contains the design files for the hardware components used in the KPPTR project.

    140 parts1MIT