top of page
Robot
Electromechanical

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 fabrication complete; electrical bring up, RF tuning, and firmware development underway.

​

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.

5 V Buck

Robot Arm

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.

My Robot arm is my first major project on the list.

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. The electronic system works by employing SPI.

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.

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. 

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. 

Stirring Robot

Building on my success with the Robot arm, I decided to make a new iteration with a purpose.

After jokingly asking me to make a robot to help them with cooking, I decided to design and build a robot for my parents, to help them with stirring, a very menial cooking motion.

Having finished a sketch of how it'll work, I created the circuit for the mechanism to turn it, controlled by a potentiometer, to control the speed of the two motors.

My next step with this project is to design and 3D print the physical components required, and begin testing it.

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.

Work: Work
Software

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

download.png

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.

​

Link: https://play.unity.com/mg/other/untitled-30754

Other Designs

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

download.png

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

download.png

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

download.png

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.

bottom of page