Team MasterDoom · University of Pennsylvania ESE 5160
Custom Embedded PCB & Firmware
An embedded systems project centered on a custom SiWG917 PCB and the firmware/system integration around it. The repository documents Altium schematic/layout work, board fabrication and assembly, bench bring-up, power validation, MQTT communication, LCD/joystick UI, camera capture, and a FastAPI/YOLOv3 inference tradeoff.
Altium DesignerSiWG917PCB DesignJLCPCBHardware Bring-UpMQTT
Overview
Project Strengths
- Custom SiWG917 PCB spanning hierarchical schematics, PCB layout/routing, component placement, power architecture, USB/protection, battery charging, regulated 3.3 V and 5 V rails, and peripheral interfaces.
- Manufacturing preparation followed by board fabrication, assembly, optical inspection, manual soldering/rework, and electrical validation.
- Bring-up workflow centered on subsystem checks, test points/jumpers, power-mode validation, oscilloscope captures, electronic-load testing, thermal imaging, and programming/debug attempts.
- Firmware and system integration across MQTT messaging, ST7735R LCD UI, joystick input, camera capture/upload, Node-RED dashboard flow, and OTA-oriented command handling.
My Contribution
- Designed and brought up the custom SiWG917 PCB through schematic capture, layout, 3D verification, power-path validation, thermal checks, and rework.
- Integrated and debugged firmware paths across MQTT/networking, LCD UI, joystick input, camera upload, and game-state behavior.
- Validated board power behavior and documented the engineering tradeoffs behind reference-hardware firmware execution.
- Team MasterDoom included Yunzhe Deng and Jilu Wang; the site presents the work as a team ESE 5160 project.
System / Architecture
Architecture
- 01Problem / goal: build a connected embedded poker assistant while designing a custom SiWG917 PCB rather than treating the project as only development-board firmware.
- 02PCB design: integrate MCU, 3.3 V and 5 V power, battery charging, USB/protection, SD card support, LCD/camera interfaces, motor/encoder-related interfaces, test points, and jumpers.
- 03Manufacturing and assembly: prepare manufacturing outputs, fabricate and assemble the board, inspect it, and rework population/orientation issues recorded in bring-up notes.
- 04Hardware bring-up: validate power paths and subsystems with oscilloscope captures, electronic loads, thermal imaging, peripheral checks, and programming/debugging attempts.
- 05System integration: continue final firmware execution on reference SiWG917 development hardware after custom-board flashing remained unreliable, while retaining the custom PCB as a validated hardware artifact.
Implementation
Implementation
- Created Altium Designer schematic/layout/manufacturing artifacts for the custom SiWG917 board and reviewed the design through PCB layout and 3D render evidence.
- Validated 3.3 V and 5 V rails under 50 mA through 600 mA electronic-load tests, oscilloscope startup/steady-state captures, and thermal imaging.
- Retained main-controller firmware modules for board/BSP mapping, GPIO/I2C/SPI wrappers, ST7735R display rendering, joystick ADC/switch input, MQTT, vision bridge, simulation, and strategy logic.
- Retained camera-node firmware for OV2640 register/SPI/I2C control, image capture, HTTP upload, retry handling, and local JPEG inspection.
- Moved card recognition off-device after SiWG917 memory constraints made useful on-device YOLO detection impractical; FastAPI/YOLOv3 results return through MQTT.
Visual Evidence
Hardware and system artifacts
Results / Validation
- Custom PCB was designed, fabricated, assembled, visually inspected, reworked, and electrically validated.
- 3.3 V and 5 V power rails were tested with oscilloscope captures and electronic-load testing from 50 mA through 600 mA.
- Working prototype architecture demonstrated on reference SiWG917 development hardware with OV2640 capture, MQTT messaging, LCD output, joystick input, Node-RED dashboard interaction, and OTA-oriented firmware logic.
- The public repository preserves the custom-board flashing issue explicitly rather than implying that final firmware ran from the custom PCB.
Challenges / Decisions
- Custom-board firmware flashing remained unreliable, so final application development continued on reference SiWG917 development hardware.
- MCU memory limits pushed the card-detection workload off-device to FastAPI + YOLOv3.
- End-to-end integration depended on Wi-Fi, HTTP upload, inference service availability, MQTT broker reliability, and display-state synchronization.
- The public firmware snapshot is curated and excludes generated SDK trees, build output, credentials, and third-party font data without clear redistribution permission.