Projects

As an electronics hobbyist, I’ve had the pleasure of completing some pretty cool side projects and university/diploma projects. They are listed in reverse chronological order.

Pico-BLDC-Controller

Status GitHub Repo

I’m designing a custom hotplate magnetic stirrer to integrate into our lab’s Opentrons robot at the Manufacturing Future Lab, University College London.

As this is my first time designing motor control systems, specifically for a BLDC motor, I’m using a half-bridge configuration to control the three-phase input.

I am quite nervous designing anything that handles more than 5V. The motor we have in the lab is a 260W 30V/7A Maxon motor.

I’m using a Raspberry Pi microcontroller, specifically the new RP2350 dual-core model running at 150 MHz, because its design is much simpler than that of an STM32 MCU. I’ve come across many discussions claiming the RP2350 is not ideal for controlling BLDC motors, particularly when reading the current output. It’s considered “slow” in converting ADC values compared to the STM32. However, I plan to open-source the design entirely, and I hope someone with more expertise can use it to develop firmware that addresses this issue.

For the pre-driver, I’ve chosen the Texas Instruments DRV8350S. This IC significantly reduces the component count and complexity of the design. I won’t need to implement filtering, snubbers, or anything like that—just the pre-driver and the MOSFET gate. Mah brain is not build for complicated things (XuX)

On the software side, I’m implementing the SimpleFOC library to save development time. Maybe if the motor runs well, I’ll create the firmware from scratch?

The schematic is complete-ish. I have sent it to multiple colleagues and online forums for feedback. I spent a lot of time going back and forth on my component choices, but it was a great learning process. I’ll post updates along the way.

You can download my schematic by clicking this link: Download PDF.

Top view of the Pico BLDC Controller PCB

Bottom view of the Pico BLDC Controller PCB

RVDR V2.0

Static Badge

Completed in 2023 - not to be confused with RVDR+

This is the second revision of the Road Vehicle Data Recorder (RVDR). It’s a smaller version of the original with a few key changes:

  • Replaced the GNSS module with a u-blox CAM-M8 series module that has a built-in antenna (an external antenna is optional).
  • Replaced multiple sensor ICs with a single TDK ICM-20948 9-Axis MEMS motion tracker (though this is technically a downgrade from the previous 10-DOF sensor).
  • Reduced the size to match that of a Raspberry Pi Zero W.
  • Added an option on the back of the board to select the communication protocol: UART, SPI, or I2C.

RVDR V2.0 top view RVDR V2.0 3D render RVDR V2.0 bottom view

RVDR V2.0 PCB layout

TIP

There are a few things I can do to improve the design, like implementing a single voltage shifter IC (e.g., Analog Devices MAX3378EE) rather than using multiple MOSFETs for level-shifting. This would free up space for more sensors. Perhaps this is something I could explore in the third revision.

The Kenit Numpad

Static Badge

Meet “The Kenit” Numpad (I ran out of ideas for what to name it). This time, I experimented with the KiCad “Rounded Tracks” plugin. Does it have any practical benefit? Probably not, but does it look cool? Definitely!

The Kenit Numpad assembled

The Kenit Numpad PCB top view

The Kenit Numpad PCB bottom view

1-تواه/‎Tuah-One

Static Badge

1-تواه‎/Tuah-One! A custom 75% mechanical keyboard project based on an open-source schematic. After months of design, it was put into production in April this year. And… that’s it. The chip shortage and the high cost of producing a small quantity made it very, very expensive.

I tried to arrange the diode array in a manner that resembles traditional Malay carving (ukiran tradisional Melayu)—a repeated shape with slight differences in a repeating arrangement. It may not look like much, but I tried.

Tuah-One keyboard PCB layout

Close-up of Tuah-One diode array Close-up of Tuah-One microcontroller

Fully assembled Tuah-One keyboard

“1-تواه‎/Tuah-one” means “lucky one”—well, not exactly. A quick Google Translate shows “tuah” is “good luck,” written in Jawi (the Malay alphabet system before the Latin alphabet was introduced). It’s paired with pixelated art of “Hang Tuah,” a Laksamana (Admiral) in 15th-century Melaka, considered by Malays to be one of history’s greatest silat masters. Hang Tuah is wearing a traditional Malay headgear called “Tengkolok” or “Tanjak,” hence the triangular look (I tried :P).

Pixel art of Hang Tuah on the PCB Close-up of the Hang Tuah pixel art

Update - 21/06/2025

After 3 years of planning, designing, fabricating, assembling, testing, and a sprinkle of procrastination, here it is: Tuah-one/1-تواه! My attempt at an “Ukiran Melayu” inspired design.

Now the keyboard sits inside my office closet (10 months and counting) and never sees the sunlight. [insert sad violin music]

Tuah-One keyboard on a desk

Side profile of the Tuah-One keyboard Back of the Tuah-One keyboard

Another shot of the assembled Tuah-One

TIP

One last thing… I’m selling this. Seriously. If any buyers or companies want to license my design, I’m open to talk. 😂

Individual Project Dissertation

Static Badge

Associated with - The University of Manchester

Design and Application of a Tuneable Optical Filter for High-Speed Optical Communication Systems (MATLAB)

I designed the arrangement of passive optical filters (Fibre Bragg gratings) in an optical fiber for a high-speed communication system. I then simulated it with different wavelength bands to obtain over 95% transmission. This experiment focused on the near-infrared (800nm+) and visible light (400-700nm) spectrums.

MATLAB simulation graph of the optical filter

Simulation results graph 1 Simulation results graph 2

Embedded Systems Project

Static Badge

Associated with - The University of Manchester

I led software development for a buggy capable of autonomously following a line using reflective optical sensors. We approached the problem systematically by prioritizing simpler tasks first.

Line-following buggy hardware

Close-up of the buggy's sensor array

RVDR V1.0

Static Badge

Associated with - German-Malaysian Institute

I led software and PCB development for a “black box” device for a logistics fleet. The device consists of a camera module, GPS (GNSS), an IMU sensor, and an OBD-II reader to send live data to an MQTT client (Losant IoT) for real-time data visualization.

RVDR V1.0 PCB layout

RVDR V1.0 prototype Assembled RVDR V1.0 board RVDR V1.0 in use

Java Programming - Multithreading Operation

Static Badge

Associated with - German-Malaysian Institute

Coursework: Build an Alarm Clock

I modeled a multithreaded alarm clock in Java. This approach allows for concurrent operations to maximize CPU utilization.

#####

The code is too long, and I no longer understand Java. 😐

results matching ""

    No results matching ""