Sometime it's completely unnecessary, but who doesn't love creating custom hardware?Β πΒ
Project Overview:
In response to limited engineering resources at Attabotics, I took the initiative to design and develop LED-responsive totes to enhance tradeshow visibility for Attabotics in my own time. These totes were required to dynamically react to their environment and operate safely for the entire 3-day event without recharging.
Project Requirements:
Fully autonomous operation for 3+ days without recharging
Safe, reliable battery technology suitable for public environments
Visual responsiveness to robot interactions, without direct wired interfaces
Scalable, easily assembled design for a batch of 10+ units
Integration of both electronic and mechanical design considerations
Key Contributions & Outcomes:
Selected LiFePO4 batteries for optimal safety and power density
Designed and completed the entire PCB schematic in Altium within a day, using off-the-shelf components; included voltage monitoring and robust Molex connectors for assembly and maintenance
Developed the 3D-printed enclosure in Fusion 360 to facilitate easy assembly and secure integration of electronics
Implemented a Time-of-Flight (ToF) sensor system to detect tote state and trigger LED responses without relying on wireless protocols
Collaborated with a colleague who developed a state machine to process ToF sensor data and control LED states
Performed power budgeting to ensure the totes operated for the full duration of the show
Completed design, assembly, and testing of proof-of-concept prototypes in under 2 days with assistance from colleagues
All deployed totes functioned flawlessly, achieving 95% uptime and significantly improving booth visibility during the tradeshow
Skills Demonstrated:
PCB design, rapid prototyping, mechanical design, power systems, system integration, problem-solving under tight deadlines, and cross-disciplinary collaboration.
Project Overview:
As part of a side project for work and personal development, I designed a custom driver board to control four stepper motors for a proof-of-concept physical automated test. The test involved actuating a shelf to switch positions, allowing us to evaluate how well the robot could handle totes placed at different heights, helping improve system robustness.
Project Requirements:
Compact, reliable driver board to control 4 stepper motors
Integrated microcontroller with wireless connectivity
Quiet motor operation with adjustable parameters
Easy firmware upload without extra tools
Physical automated test system to reposition a shelf during robot testing
Communication options for future system integration
Key Contributions & Outcomes:
Designed the board around the ESP32, selected for its built-in Wi-Fi, Bluetooth, and familiar development environment
Used TMC2209 stepper drivers, known for quiet operation and UART-based tuning
Controlled motors using STEP and DIR signals, with tuning through a single UART connection
Included onboard voltage regulation for 5V and 3.3V, requiring only a VCC input
Added a CP2102 USB-to-Serial converter for direct firmware upload over USB
Integrated a CANBUS transceiver to support future communication with other systems
The board powered a physical automated test, moving a shelf to different heights during robot testing to check for detection and handling issues
Skills Demonstrated:
Hardware design, motor control, test system development, power systems, PCB design, and integration of electronics into physical test setups.
Assembled PCB
PCB Schematic
PCB Routing
Project Overview:
As a Director for the Senior Design category at the Canadian Engineering Competition (CEC) 2024, I helped organize a national mechatronics challenge where student teams had to build robots from provided kits within 8 hours. A key requirement was to provide all teams with a reliable, low-cost remote control system to ensure fairness across the competition.
Project Requirements:
Cost-effective remote control solution within a strict $10 per-unit budget
Simple, reliable hardware that teams could integrate quickly during the competition
Wireless control using familiar devices (PS3/PS4 controllers or smartphones)
Standardized module to ensure consistent technical expectations for all teams nationwide
Design-for-manufacturing approach to build 8 complete modules within budget
Key Contributions & Outcomes:
Designed a custom Remote Control Module based on the ESP32 WROOM32E, providing Bluetooth and BLE connectivity
Developed a straightforward interface where button or joystick inputs map directly to GPIO pins, simplifying integration for teams
Included hardware features such as:
Integrated voltage regulator for stable operation
USB-UART bridge for easy programming via USB-C
ESD protection and GPIO protection for robustness
Custom 3D-printed enclosure to protect the electronics
Applied design-for-manufacturing principles:
Optimized BOM to meet cost targets
Careful part selection and trade-offs to balance performance and budget
Excluded non-essential features like DAC outputs and indicator LEDs to avoid complexity
Iterated through three design revisions before final production
Successfully produced and assembled 8 fully functional modules
All modules worked flawlessly during the competition, with no failures or disconnections reported
First instance of custom hardware being introduced to the CEC Senior Design challenge
Skills Demonstrated:
Hardware design, system integration, budget management, design-for-manufacturing, rapid prototyping, and supporting national-level technical competitions.
As a follow-up to my ATmega328p Robot Controller Board, I reflected upon what could be improved on the previous iteration. One of the main areas that I identified was a bottleneck/challenge was the microcontroller with the lack of IO, hardware peripherals, and processing power. Because of this, I decided to use the ESP32 MCU from ESPRESSIF which uses a Tensilica LX6 chip and includes integrated WiFi and Bluetooth.
This board is also based the L298N motor controller IC and has the appropriate voltage regulators, as well as a CANBUS Transceiver built into the board. It controls up to 4 DC brushed motors with quadrature encoders. This board also incorporates the CP2102 USB-Serial adapter meaning that firmware can be uploaded over the USB port.
Some lessons learned is the limitations of the L298N driver as it is an older chip and is quite inefficient and has its downsides. In the future, I want to look into more modern and better motor driver ICs that have external MOSFETs as opposed to integrated FETs in the driver IC.
PCB Schematic
PCB Render
This is currently a work-in-progress project but I wanted to design a motor controller that had external FETs to get better experience at using MOSFETs to control high power and high current applications. The plan for this controller is to control the inexpensive but challenging to control a DC "CIM motor". As such, this motor controller is designed for 100As at 12V.
This board uses the STM32F103 which is a cheap and powerful MCU with useful integrated peripherals. This board uses two half bridges with a total of 8 FETs that give it a rated capacity of 200As in total.
The board will be programmed with HAL library on the STM32 platform and I plan to include the following features such as PWM control, CANBUS, Current and Voltage monitoring, USB.
For my technical team AC Robotics, I was tasked with creating a PoC integrated motor controller solution for the initial prototype of our robot dog project: XP1 CANIS. We were initially having issues controlling several motors with encoders over one MCU, so we wanted to experiment with having one integrated controller per motor, and then having a central processor control each individual integrated controller over a communication bus such as RS485 or CANBUS.Β
For this PoC, I decided to use the RP2040 due to the chip shortage at the time for ATmega, and STM controllers, as well for the price since we would need a board per motor. This was a challenging project, fitting and routing the PCB within mechanical constraints and space, while also being able to deliver the power requirements and communication requirements for this integrated controller.
This project incorporated the appropriate voltage regulators for the ICs, a small motor controller IC with integrated FETs, a RS485 Transceiver, and the corresponding headers to connect the various components together.
I did make a mistake where I did not do the USB traces properly, so I had issues where the pads and traces would consistently rip off the board, hence the electrical tape connecting the USB! Another alternative was chosen and we are currently deciding on whether to get an after market solution or rethink the development of a better integrated controller to have precise control and speed for applications such as a robot dog.
PCB Schematic
PCB Layout
PCB Render
In 2021, the Raspberry Pi foundation announced the RP2040 which was their attempt at entering the microcontroller environment for both education and embedded applications.Β The RP2040 is a budget dual-core M0+ ARM Cortex controller that runs at 133MHz and contains a variety of hardware peripherals and various unique features for around $1 USD.
I wanted to get familiar with the chip as it could be a potentially good alternative for future embedded/hardware projects given the price to performance of this chip.
I decided to create a small breakout board with the RP2040 to run an nRF24Β Transceiver in conjunction with keyboard switches to create a basic wireless application and user interface to be used for various potential applications.
Due to the simplicity of the RP2040 from the user design perspective, the only items required for a bare-bones setup were a regulator, flash memory, and just a USB port since the MCU has integrated USB interface. I also tried various ways of programming the MCU including MicroPython, Arduino Core, and the native SDK with C++.
PCB Schematic
PCB Render
With the STM32 as a popular industry choice for microcontroller, I wanted to get some experience designing reference boards for STM32 chips. I decided it would be fun to design a "remote controller" board for robot interfacing applications or general controller design for future projects. I decided it would also be fun to incorporate the joysticks from the popular Joycons on the Nintendo switch.
This board is designed with an MCU from the STM32 F0 series which is the lower cost and lower power M0 ARM Cortex controllers. I experimented with placing the IC at 45 degrees to observe how it would change/simplify routing as I saw an experimental video regarding this topic. This board has the appropriate voltage regulation for the various peripherals and controllers, as well as an USB-Serial converter to be programmed directly over Serial without the use of an ST-LINK. However, it does have breakouts for SWD, an nRF24 wireless transceiver, and general I/O breakout.
Through this project, I was initially going to use an Arduino core to be able to program this board with the Arduino IDE. However, this project led me to look into programming the STM32 using HAL and led me into learning more how to program the STM32 chipset using HAL as well as through native C/C++ instead of an Arduino core.
Schematic
PCB Render
PCB Routing
I noticed that many "basic two drive robot" starter kits consisted of typically an Arduino and L298N motor controllers and wondered why there wasn't a board that integrated all of the several components onto one board to save on space and cost.
As a personal project, I decided to create the custom hardware with the ATmega328p integrated with 2 L298N drivers and the additional peripherals to support a general purpose robot board that could be used to create fast robots or for educational/STEM purposes. This board can support up to 4 motors with quadrature encoders. Since the L298N is an older driver, a multiplexer is used to control the directionality of the motors due to the limited IO and peripheral capability of the ATmega328p.
This board is also equipped with breakouts for a nRF24 wireless breakout board, I2C OLED screen, and WS2812b LED strips, and a USB-Serial converter. It has the appropriate regulators to feed the 5V, 3.3V and VCC power lanes and can be powered from one VCC input.Β
Through this project, I discovered various limitations of handling 4 motor control with quadrature encoders on a microcontroller from 2008 in which the clockspeed, (8MHz), hardware peripherals, and overall capabilities are limited.
PCB Schematic
Soldered PCB