WilliamWong

Soldering Samurai

Scroll
About Me

Hi, I'm William! I'm 100% human, not AI (I think).

I'm from Atlanta, Georgia. I studied electrical engineering at the University of Southern California, where I picked up a B.S. and an M.S. in EE. Outside of building whatever thingamabob I've come up with next, I play golf, fish, and the occasional spikeball (won 2nd place once in a middle school tournament), and grind video games (currently Elden Ring). I'm also a board game enthusiast: Risk and Ticket to Ride are my go-tos. And of course, I eat: top 40 Beli eater in Georgia.

Education

University of Southern California · Electrical Engineering

B.S. Electrical and Computer Engineering
M.S. Electrical Engineering

WorkThree roles, three engineering problems.
Work / 01YU-PING

Electrical Design Intern

Kaohsiung, Taiwan · Summer 2025

In Kaohsiung, I modeled switchgear, panelboards, and conduit runs in Revit against NEC clearances, ran Navisworks clash detection to resolve about 30 HVAC and plumbing conflicts, and wrote Excel macros to catch voltage and phase issues in commissioning logs.

RevitNavisworksNECClash DetectionCommissioningExcel
Work / 02Droxo Tech logo

Hardware Engineering Intern

Tainan, Taiwan · Summer 2024

At Droxo I designed a spray-flow sensor board in KiCad with flowmeter input, current monitoring, and transient protection, calibrated a diaphragm pump across different nozzles, and traced 25 field failures back to a thermal hotspot that led to a copper-pour redesign.

KiCadFlowmeterCurrent MonitorTransient ProtectionThermalCopper Pour25 Field Failures
Work / 03SkyMul logo

Electrical Engineering Intern

Peachtree Corners, GA · Summer 2023

At Skymul I designed DRV8353 gate-drive circuitry in Altium for a rebar-tying drone, sized bulk capacitance in LTspice, routed high-current motor phases and CAN on a four-layer board, then ran a 40-point validation matrix to qualify the actuator driver for flight.

AltiumDRV8353LTspiceCANMotor Phase4-Layer PCB40-Point Validation
Current ProjectStatus / In Progress

AutomaticPill Sorter

An automatic pill dispenser that fills a weekly pill organizer for you. Load each hopper with one specific pill, enter what you need to take that day, and the disc rotates each loaded hopper into position to dispense it instead of you sorting pills into the organizer by hand. A custom PCB I designed drives the motor and tracks which hopper is lined up.

Current Challenge

Getting the correct pill out of the correct hopper is solved. What's not solved is the next step: routing that pill into a specific compartment of a weekly pill organizer instead of one shared output, at a size that still fits on a nightstand. I don't have a pick-and-place mechanism worked out yet for that part.

Next: Projects

Things I've builtbecause I'm bored

More details can be found on my GitHub, linked at the bottom.

01

USC Formula SAE · Electronics Team

The car doesn't move until every wire on this list checks out.

I designed the tractive-system low-voltage harness (120 sealed contacts, twisted-pair CAN), validated the shutdown circuit across 50 simulated fault conditions with the AIR opening in under 10ms, sized the precharge resistor to limit inrush to 8A into the 400µF DC-link, and logged pack voltage, phase current, and brake pressure over CAN at 100Hz.

120 Sealed ContactsTwisted-Pair CAN50 Fault ConditionsAIR < 10ms8A Inrush400uF DC-Link100Hz CAN Log
02

5V Buck-Boost Converter

Feed it a dying battery or an overachieving wall adapter, it hands back the same unbothered 5V either way.

Built around TI's TPS63070 single-inductor buck-boost, regulating anywhere from 3V to 16V input down (or up) to a steady 5V, with a TI LM66200 ideal-diode controller in front for reverse-polarity protection instead of the usual Schottky-diode voltage drop, and a status LED wired straight off the regulator's power-good pin.

TPS63070LM662003-16V InputIdeal Diode5V Output
03

Cocktail Machine

Built so I never have to make eye contact with anyone at 2am.

An ESP32-S3 brain, four TB6612FNG motor drivers, and just enough plumbing to keep the whole thing from flooding my desk.

ESP32-S34× TB6612FNG
04

GNSS Receiver

A GNSS receiver project built around the u-blox ZED-F9P, patient enough to wait for enough satellites to agree on where it actually is.

Breaks out a u-blox ZED-F9P onto a carrier board with UART, SPI, and I2C headers, a coin-cell-backed RTC for faster fixes on power-up, and a DSEL jumper to flip the module between SPI and UART. Onboard LEDs track power, PPS timing pulses, RTK fix status, and the geofence output, with SAFE and INT lines broken out for whatever needs to react to them. Still working out exactly how precise "precise" turns out to be.

u-blox ZED-F9PRTKPPSUART / SPI / I2CGeofenceBattery-Backed RTC
05

12V Motor Driver

Just enough decoupling to keep the magic smoke where it belongs.

A TB6612FNG breakout for driving a 12V DC motor forward, reverse, and everywhere in between, across two independent channels.

TB6612FNG12V DC Motor2 Channels
06

USB-C PD Trigger

Politely asks a USB-C charger for way more power than it should reasonably hand over, and usually gets it.

Negotiates up through the PD voltage ladder to 20V, then holds it steady out to a barrel jack for whatever needs feeding.

USB-C PD20V
07

SirGrab

A multi-joint robotic arm that reaches down, grips whatever's in front of it, and moves it somewhere else, which is either the beginning of automation or the beginning of a very expensive game of fetch.

Seven degrees of freedom driven by eight TD-8120MG servos off a custom PWM driver board built on Adafruit's design, with an Arduino Uno R4 as the brain and Google MediaPipe doing the actual hand-tracking that tells it where to reach.

Arduino Uno R4MediaPipe7-DOF8x TD-8120MGCustom PWM Driver
08

CPRPal

Keeps better rhythm than most drummers I know.

My USC capstone project: CPRPal sits on the chest during compressions and paces you with its LED ring at the AHA-recommended 100 to 120 compressions per minute.

100–120 CPMLED Ring
09

O'Hare Air

Named after the guy in The Lorax who got rich selling bottled air. This one just tells you the truth about the room instead.

A desktop air quality monitor shaped like a flower, built around a ScioSense ENS161 (eTVOC, eCO2, and its own onboard 1-5 AQI-UBA rating) and an ENS210 for temperature and humidity. A 28BYJ-48 stepper sweeps a needle across five positions matching the sensor's AQI-UBA output, an RGB LED fades green to red with it, and the board hosts its own Wi-Fi dashboard with live charts, 7-day on-device history, and CSV export, no app or cloud involved. Two PCB generations exist: a shield that plugs onto an ESP32-S3 dev board, and a from-scratch board built around a bare ESP32-H2 module for a much smaller footprint.

ENS161 + ENS210AQI-UBA 1-528BYJ-48 StepperWi-Fi Dashboard7-Day HistoryTwo PCB Generations
10

BLDC Motor Controller

Two round boards that only agree on one thing: exactly where the rotor is, a hundred thousand times a second.

A two-board stack sized to sit directly behind the motor it drives, joined face-to-face through a Molex board-to-board connector. The MCU board runs an STM32F4 through a timer-driven commutation loop, reading absolute rotor position off an AS5048A magnetic encoder (14-bit, no back-EMF guesswork at standstill) and motion data off an onboard ISM330DHCX IMU, with an SK6805 RGB ring reporting status at a glance. The power board does the muscle work: a TMC6300 integrated gate driver/bridge switches the three phases directly, three INA240 amplifiers close the current loop, four sense networks watch bus and phase voltage, and a TCAN1462 CAN FD transceiver lets several controllers daisy-chain off one bus. USB-C and a J-Link SWD header handle bring-up.

STM32F4AS5048A EncoderISM330DHCX IMUTMC6300 Gate Driver3x INA240CAN FD Daisy-ChainMolex Board-to-Board
11

Tea Cozy Hotplate

The heating element is just the PCB itself, etched into a spiral and told to misbehave a little.

A USB-C powered hotplate sized for a single cup of tea, closed-loop controlled to within about 2°C. An STM32F103C8T6 reads a thermistor bonded under a 3.75Ω spiral coil etched directly into the board copper (no separate heating element), and PWMs two low-side AO3400A MOSFETs to hold it there, with a second thermistor watching the driver FETs for thermal headroom. A ten-segment WS2812B bar doubles as a 0-90°C dial in 10-degree steps, nudged up or down by two buttons, and the board exposes both SWD and UART headers with BOOT0/Reset buttons for field reflashing without opening a case.

STM32F103C8T6Spiral PCB Heater Coil10x WS2812B DialDual NTC ThermistorsUSB-C Powered±2°C Closed-Loop