
Embedded Electronics Projects
Thermotherapy Device (CAPSTONE)

This project focuses on the design of the user interface and wireless communication subsystem for a multi board medical therapy device, completed as part of a team capstone project. The board integrates two microcontrollers with distinct roles. An STM32 serves as the primary control processor, responsible for sensor acquisition and closed loop temperature control using PID based heating and cooling. An ESP32 S3 is used for Bluetooth Low Energy (BLE) communication, user input handling, and display control.
The ESP32 S3 was selected for its increased memory capacity, which allows it to reliably handle intermittent BLE traffic, frequent display updates, and bidirectional communication with the STM32 without resource contention. The wireless subsystem includes a custom RF front end, consisting of a compact chip antenna, a controlled impedance feedline, and a U.FL connector to allow S parameter measurements and antenna characterization. A configurable dual π matching network was included to support impedance tuning during bring up.
Power integrity and protection were key considerations in the design. The board uses distributed decoupling across multiple VDD domains, ferrite bead isolation for the LCD supply, and a dedicated power rail for the LCD backlight. TVS diodes were placed on externally accessible LCD lines to reduce susceptibility to ESD events. Debugging and validation were prioritized through the inclusion of a JTAG interface, exposed test points on high speed SPI and clock lines, optional external SPI RAM, and 0 ohm resistors to allow signal damping and reconfiguration during early testing.
The PCB layout was designed with RF and signal integrity constraints in mind. This included impedance controlled RF routing, strict antenna keep out enforcement across all layers, extensive ground stitching and shielding vias, minimized trace lengths and layer transitions, and layout choices made with manufacturability in mind. Firmware development is being carried out in parallel using a clearly defined multi MCU task structure to support structured system bring up following hardware validation.
Status: Board bring-up and firmware development complete. Changes for Rev 2 have been identified.
Remote controlled rover with 3 axis robot arm

This project is broken down into 3 stages:
1. The development of the chassis, which includes the physical body, the circuitry that powers the motors that drive it, and the firmware to allow rudimentary movement using on board buttons. The chassis also includes an ultrasonic sensor that stops the rover if there is an obstacle <10cm in front of it.
2. The second phase is where I developed the 3 axis arm, designing and printing the sections, routing the motors and their input devices, and programming the motors to turn at specified rates. It is controlled using a joystick for the X and Y movements, and a potentiometer is used to control the end effector.
3. The third aspect is the wireless controller. Initially, I was panning on having the rover be controlled by Bluetooth, due to the use of HC-05 Bluetooth modules that I had on hand. During testing, I realized the HC-05 modules did not communicate with each other reliably, possibly because they were outdated models. Instead, I ordered some ESP 32's and decided to use Wi-Fi to pair the controller to the rover, as Wi-Fi communication allows for greater range and allow the transfer of larger data packets. This is needed as several motors need to receive their respective input data simultaneously to control the rover and its arm. Do to the change, this phase is still in development.
FPGA Video Decoder

As part of an FPGA based video decoding project, I developed custom hardware accelerators for the computationally intensive stages of an MJPEG decoder using AMD Vitis HLS and the Kria KV260 platform. The design focused on accelerating the Inverse Discrete Cosine Transform (IDCT) and YCbCr to RGB color conversion stages by implementing them as dedicated FPGA IP cores with AXI4-Stream and AXI-Lite interfaces, enabling high throughput data transfer between software and hardware. Functional correctness was verified through C simulation, RTL co-simulation, waveform analysis, and synthesis report evaluation prior to deployment.
The generated accelerator IPs were integrated into a complete hardware architecture using Vivado Block Design, incorporating multiple DMA engines, AXI interconnects, and the Zynq UltraScale+ processing system. The design utilized three parallel IDCT accelerators to process Y, Cb, and Cr channels simultaneously before feeding a dedicated color conversion accelerator, creating a hardware accelerated video processing pipeline. The resulting bitstream was deployed to the Kria platform using PYNQ and validated through Jupyter based testing to confirm correct operation of the FPGA subsystem.
To complete the system, I modified the software stack to communicate directly with the FPGA accelerators through DMA transfers, memory mapped control registers, and Linux kernel drivers. Hardware generated outputs were integrated into a C-based MJPEG decoder running on the embedded ARM processor, enabling successful playback of decoded video using a hardware/software codesign approach. The project provided hands on experience with FPGA architecture development, high level synthesis, AXI-based communication, Linux driver interaction, and embedded video processing systems.
Transistor Level PLL Design

As part of a senior Analog Integrated Circuits course, I designed and simulated a transistor level phase locked loop (PLL) using LTSpice and 180 nm CMOS device models.
Having previously worked primarily with PCB level components and embedded systems, this project provided an opportunity to explore how complex digital and analog functions are implemented directly from MOSFETs, exposing me to many of the fundamental building blocks used in integrated circuit design.
The PLL was constructed from custom transistor level subsystems, including CMOS logic gates, edge triggered D flipflops, XOR gates, current mirrors, a charge pump, and a Hogge phase detector. Throughout development, transient and AC simulations were used to evaluate timing behavior, current matching, and loop performance. Device dimensions and bias conditions were iteratively optimized to improve switching characteristics and overall circuit operation.
One key optimization involved redesigning the custom XOR gate by adjusting MOSFET sizing to better balance PMOS and NMOS drive strength. This reduced rise times from approximately 72 ps to 8 ps while maintaining correct logic functionality. The completed project provided hands on experience with CMOS design, transistor sizing, timing analysis, current mirrors, charge pumps, and PLL architectures, while strengthening my understanding of how higher level digital systems are implemented at the device level.
LTE RF Uplink Transceiver Design

In my 4th year Radio and Wireless Systems course, I designed and analyzed a 1.95 GHz LTE RF uplink transceiver using Keysight SystemVue.
The project involved developing receiver and uplink architectures capable of meeting specified sensitivity, dynamic range, and modulation quality requirements through the selection and optimization of key RF building blocks, including low noise amplifiers (LNAs), mixers, voltage controlled oscillators (VCOs), and IF amplifiers.
The transceiver was evaluated using industry standard RF performance metrics including noise figure, intercept point (IIP3), error vector magnitude (EVM), adjacent channel power ratio (ACPR), peak-to-average power ratio (PAPR), and constellation analysis. Receiver noise, gain, and linearity budgeting were performed to balance communication performance with practical component requirements. In parallel with the simulation work, RF laboratory equipment including spectrum analyzers and RF vector signal generators were used to characterize modulated communication signals and observe the effects of noise and distortion on system performance. The final design successfully met the project's communication requirements while providing hands on experience with LTE transceiver design, RF system analysis, and wireless link characterization.
5 V Buck

As part of expanding my RC Rover project, I designed and tested a 12 V to 5 V buck converter to power the rover’s control electronics, including the Arduino and L298N motor driver logic, from a more reliable and longer lasting Li-Po battery instead of disposable alkaline cells.
The converter was verified to deliver stable 5 V output within 5% tolerance under the expected load conditions, ensuring sufficient current for all onboard logic components. Integration with the full rover system is planned for the next development phase, moving the design closer to a fully rechargeable, modular power architecture.
Robot Arm

My Robot arm is my first major embedded project.
From the design I made for the Rapid prototyping centre, I have modified the tolerances to work with my home 3D printer, as well as making modifications for this new design to be run by a motor, controlled by a joystick. Communication is done over UART.
Staying true to the original design, all parts are designed to snap together using interference fits, avoiding the need for screws or adhesives.
To avoid support material, all parts with odd shapes were redesigned as multiple parts that snap together
The brain behind this project is an Arduino mega, with code that was designed from scratch.
The components included in the electrical design for this project include a 50 RPM DC motor, a joystick, and a motor controller.
Linear Regulator

As a part of my 2nd year circuits lab, I had the opportunity to design the schematic for a linear regulator PCB. This included selecting components (based on availability in the lab), designing the PCB layout, then soldering the components to the PCB.
OctoPrint

To make my 3D printing operation more efficient, I used a raspberry Pi to install OctoPrint. I customized it with the ability to trace the print, ensuring I wouldn't run failed prints. I als installed a web cam so I can actively monitor the progress of the print, in real time.
Battery Powered Fan

My Battery operated fan was my first project to be entirely from scratch, from the designs to the circuitry. Originally made as a Mother's day gift, this product provides both function and originality.
Designed to house a battery and switch, including sections to hold small items, which doubles as an effective way to reduce material required for the design.
Software Projects
Canny Edge Detector

To better understand image processing, I developed a canny edge detection program from scratch in Python. I then compared the quality of the image reconstruction of the program to existing canny edge detectors, and refined it to enhance a desired trait. The trait I was aiming to maximize was the identification key edges only, to produce a sharp and easily recognizable image.
A report I created explores the calculus & code behind the program, identifying what mathematical formulas are responsible for different effects, and how to best target these effects in the program. The report is available here
Dice Roll App

To bring my app development skills to the Android scene, I decided to make an interactive app. The dice roll app works by clicking a button, which then rolls and displays a random number from 1-6.
This project helped me develop the foundational skills I later applied in working on the Android app for Wmrth (a previous co-op position I had).
Arcade Games
It was nostalgia for old timey arcade style games that initially drew me to create these games.
With the use of Visual Studio and C++, I was able to recreate the classic games of snake, pong and hangman.
Restaurant Menu and Ordering System
Applying object oriented programming principles, I was able to create interactive restaurant menu and ordering system in Python, with the ability to select items, add a tip, and it would return the cost with tax.
Turtle Racer

With the desire to create a program with a visual aspect, I put together a turtle racing simulation in Python, with the ability to bet on which coloured turtle you think will win the race.
I applied the turtle and random library for this program, the latter to ensure the betting system remained interesting.

Space Explorer - NASA Space Apps

Designed and programmed an endless racer space game with my team as our entry for the 2020 NASA Space Apps challenge.
The purpose of the challenge was to provide a fun, interactive way to teach children about space travel.
I used Unity, C++ and GUI to create the game.

Designs
Solder Stand

As I began putting together my electrical workstation, I noticed I forgot to purchase a stand to hold my solder rolls. Knowing what a pain it would be to solder without a solder stand, I decided to design a custom one for my workstation.
Phone Stand

Tired of always looking down at my phone, I designed and printed a phone stand custom built to place my phone on a desk, angle it at the level I want, able to display my phone both horizontally and vertically, as well as allow it to charge.
This was so effective I printed a second, one to keep at home, one for travel.
Catapult


To hone my CAD abilities, I decided to create a catapult in Fusion360, designing individual parts, putting them together in an assembly, and then running the program to ensure the assembly worked.
USB Casing


When the case of my Dad's USB came apart, and he came to me to fix it, I decided to surprise him by making a new case design. To improve upon the old case, I made it larger, and added a ring at the back to make it easier to carry around.
Fan Blade


The 3 leaf fan blade is one of the most intricate singular parts I have designed and printed. I gave the blades of the fan a tilt to allow them to create more of a flow, as well as making it as light as possible, to increase RPM.
