Work & Personal Projects

 

Welcome! Here you’ll find a selection of my technical projects. You can also visit my YouTube channel ▶️ for more additional projects, and check the
About section to learn what drives and inspires my work.

 Here are some of my projects. Feel free to visit my YouTube channel and explore the About section.

NANO ATOM

Nano Atom is a mobile robot designed to emulate professional ROS robots for universities preparing students for future robotics careers.

Built upon the lessons and mistakes of its predecessors, it combines complexity and simplicity at the same time. Uses modular ROS-based architecture on Raspberry Pi 4 with navigation (Gmapping, AMCL, TEB), perception (YDLidar, OV5647 camera) and PS4 pad.

Low-level control handled by STM32F103 using Jitbus over UART for closed-loop PID control of DC motors with quadrature encoders, IMU (BNO055), and LED system (WS2805); designed in C++, EasyEDA and SolidWorks for cost-effective manufacturing.

ROS C++ Circuit Design EasyEDA SolidWorks

ATOM2

General-purpose robot successor to Atom. Developed in ROS with hardware interface for control on Raspberry Pi via PS3 pad. Permanent magnet BLDC hub motors controlled by BLD-300B driver.

Low-level control handled by ATmega328 using rosserial over USB for PWM control and quadrature encoder estimation with analog/digital filtering.

Designed in SolidWorks and hand-built. Showcased to attendees at the Global Robot Expo 2019.

ROS C++ Circuit Design Hand-built SolidWorks

ATOM

Four-wheeled skid-steer mobile robot developed in C on an STM32F407 using the uVision IDE, controlled via a Flysky RC transmitter.

Configured peripherals including timers for PWM generation and PPM processing, USB over CDC for communication, GPIOs, clocks, and SPI for the VL53L0X LiDAR sensor.

Created four custom DC motor controllers using Altium. Designed in SolidWorks and hand-built. Showcased to attendees at the Global Robot Expo 2018.

C STM32 Circuit Design Altium Hand-built SolidWorks

MINI ATOM

Four-wheeled mecanum mobile robot and evolution of Super Atom prototype. Developed with ROS on a Jetson Nano for control (hardware interface, gamepad), perception (RPLIDAR, IMX219 camera, BNO055 IMU), and autonomy (GMapping, AMCL, move_base).

Added Cozmo-inspired screen animations and voice recognition, but they were not included in the final version.

Low-level control handled by a Teensy 3.6 using rosserial over USB for closed-loop PID motor control with quadrature encoders and L298 drivers. Used LM358 for microphone amplification, PAM8403 for 5W speaker, and WS2812 LED strip. Mechanically designed in SolidWorks and 3D printed.

ROS C++ Teensy Circuit Design 3D Print SolidWorks

SUPER ATOM

Next-generation Atom2 prototype. Applied various filtering techniques to quadrature encoder readings, including digital Butterworth filters, debouncing with operational amplifiers, and analog filters.

Worked with different motor drivers such as JYQD-V7.3E2, generics ESCs and Flipsky FSESC. Modelated in PSIM a SPMSM motor control using FOC with SVPWM.

The project was discontinued because the proposed solution required a significant additional investment in hardware. However, this robot inspired the development of the Mini Atom concept.

Discontinued Teensy Matlab Signal processing SolidWorks

Spiderbot

Designed a hexapod robot inspired by the PhantomX Hexapod as an introduction to mechanical design using SolidWorks. Motion was driven by MG996R servos controlled via a USB 32-channel servo controller, with plans to integrate Arduino UNO and Orange Pi within a limited budget.

Encountered jerky movements due to poor position referencing and lack of feedback. Developed a web-based interface for motor calibration and interpolation, and implemented a Python library for control.

The project was discontinued due to servo limitations, but served as the foundation for future locomotion projects.

Discontinued Python JS Embedded 3D Print SolidWorks

Clawsy

Built and led a team for the Olympic Robotic Challenge, where a single robot had to complete five tasks without modifications: line following, maze solving, remote-controlled soccer, can retrieval, and sumo. We successfully completed all challenges and placed third.

I led the technical side, developing in C++ on an Arduino Mega and integrating hardware such as ultrasonic sensors, opto-couplers, motor drivers, servos, and hand-drafted mechanical system (plan and profile).

Team Lead Arduino Circuit design Hand drafting 3D Print

BNO055 ROS Driver ⭐ 60+ stars

Expose ROS topics and services for data acquisition and calibration of BNO055. Composed by a API library and ROS wrapper. Use pySerial for UART communication thought USB to Serial FTDI conversor.

Python pySerial UART IMU Documentation

Jitbus Protocol

Communication protocol for lightweight struct serialization on embedded systems. Based on the Strategy design pattern, allowing implementation across different interfaces (UART, USB, CAN) and platforms (Arduino, Linux, STIM32).

Written in C++ with templates, circular buffers and CRC; provides Python library using Boost.

C++ Strategy Pattern Protocol Design CRC Circular buffers

Gazebo Models and Worlds

Custom Gazebo simulation environments focused on replicating real-world scenarios for embedded mobile robots.

Designed to test localization and navigation systems in realistic layouts, including walls, obstacles, and constrained spaces. 

Optimized models in SolidWorks and Blender for better visual quality and real-time simulation performance

Gazebo Simulation Blender SolidWorks

Nano Atom Library

Low-level firmware and ROS driver for Nano Atom, based on modular C++ libraries and implemented on STM32F103 and Raspberry Pi 4.

The firmware manages closed-loop PID motor control with quadrature encoders, IMU integration (BNO055), LED control (WS2812), and Jitbus communication over UART.

The ROS driver implements hardware interface abstraction using the low-level system’s API via Jitbus.

C++ Teensy PID DC motor Hall encoder

Teensy Motor Control Library

Generic motor control library for embedded robotics, developed in C++ for Teensy microcontrollers. Implements closed-loop PID control of DC motors with quadrature encoder feedback and supports multi-motor configurations.

Provides seamless ROS integration via rosserial. Features real-time PWM generation, encoder pulse processing, and tunable PID parameters.

C++ Teensy PID DC motor Hall encoder

Voice Control Interface

Voice control system for robotics applications using Python. Implements speech recognition with PyAudio, SpeechRecognition, and PocketSphinx for command parsing and natural language interaction.

Integrates with ROS for robot control. Modular design allows easy adaptation to various robotic platforms.

Python ROS SpeechRecognition MIC

Gamepad Controller

Generic pad controller developed in C++ for joystick-based teleoperation of robots in ROS.

Built on joy package, enabling configurable mapping of joystick inputs to velocity commands (geometry_msgs/Twist).

Designed for flexible integration with different pads (PS4, PS5) for any mobile robotic platform.

C++ ROS DS4DRV PS4

USB to CAN controller

Custom USB-to-CAN bridge implementing the Jitbus protocol for STM32F103 microcontrollers. Developed in C using STM32 HAL and Keil uVision. Enables communication between a PC and a CAN-based embedded system using Jitbus over USB CDC with DMA.

Designed for robust and low-latency communication with support for command parsing, buffer management, and status reporting.

C STM32 USB CAN DMA

75W DC Motor Driver

Designed a MOSFET H-Bridge for PWM control of DC motors, incorporating an ADuM110N galvanic opto-isolator. PCB designed in Altium and fabricated by AllPCB. Through-hole layout for manual soldering. Integrated in the Atom robot for 4-wheel traction.

Motor Control MOSFET Isolated ground Altium Hand-built

USB to CAN Controller

Designed a converter using an STM32F103 MCU and an MCP2515 CAN controller. Firmware written in C using STM32CubeMX, with configuration of UART, DMA, CAN, timers, and clocks. PCB designed in EasyEDA and fabricated by JLCPCB. SMD layout for manual soldering.

C ARM USB CAN EasyEDA Hand-built

Li-ion Battery Manager

Designed a 3S lithium-ion battery management system using Samsung INR18650 cells, delivering 12.6–8.4 V and supporting a continuous current of 10 A.

Based on S-8254A for battery protection and selected for its balance of cost, performance, and availability in the supply chain. Chosen GL12P03 MOSFETs for optimal drain-source resistance balancing minimal power loss and required drain current.

Designed in EasyEDA and hand-soldered using a digital microscope. Used for Nano Atom robot.

BMS MOSFET Circuit protection EasyEDA Hand-built

10W Lighting Controller

Designed a LED brightness controller enabling light intensity regulation and daisy-chaining for multi-controller management over a single-wire bus from any MCU.

Built around the PT4115 LED driver with ESD- and thermal-aware PCB layout design, the controller uses a WS2811 to generate the PWM signal. This allows chaining with standard RGB LED strips and control via a Teensy, Arduino, or any compatible microcontroller.

Designed in EasyEDA and manually assembled using a hot air rework station. Used for Mini Atom robot.

LED driver One-Wire Layout Aware EasyEDA Hand-built

15W Buck Power Supply

Designed a Buck DC-DC converter with an input voltage range of 8 to 13 V, providing a stable 5 V output at up to 3 A current, with a voltage ripple of ±0.015 V.

The PCB layout is optimized to ensure proper thermal management and reduce electromagnetic interference (EMI) on critical signal traces.

Designed in EasyEDA, hand-soldered, and validated as a stable power source for a Raspberry Pi used in the Nano Atom robot.

DC/DC Inductor Layout Aware EasyEDA Hand-built

FTDI232 Converter

Designed a USB-to-serial converter using the FT232 chip and a PTC resettable fuse aimed to create a genuine FTDI-compatible converter.

Designed in EasyEDA, hand-soldered, and proven reliable over several years across multiple projects, including the Nano Atom robot, BNO055 IMU, and Jitbus protocol development.

Functional design FTDI EasyEDA Hand-built

ATmega328 Board

Built an Arduino Micro Pro clone based on the ATmega328P to validate SMD PCB design and manufacturing processes using EasyEDA.

This project served as a proof of concept for manual SMD soldering skills, verified the PCB fabrication quality, and confirmed MCU integration and schematic for future, more complex designs.

Experimental MCU EasyEDA Hand-built

Screen case

Designed a 3D-printed PLA enclosure for a 9-inch LCD screen, using FDM technology. Employed heat-set inserts to securely fasten the assembly components.

The case includes a compartment for storing the remote control and provides access to key ports such as HDMI and VGA.

Additionally, the design features four mounting points for panel integration. It was used as the main display for the Atom robot.

Assembly-ready Functional design 3D Print SolidWorks

Mecanum Wheel

Created a 3D-printed PLA mecanum wheel as an experimental prototype to test material resistance and explore a low-cost alternative to commercial wheels for the Atom robot.

Designed the hub, rollers, and roller holders. The main challenge was the roller geometry, which caused issues with surface adhesion and vibrations.

Prototype Mecanum design 3D Print SolidWorks

Cat Bowl Stand

Built a mechanism to adjust the height and angle of my cat’s food bowl. This design has been proven effective with my cat for over three years.

The design is based on a joint that allows position adjustment by tightening a screw. The base is designed to hold two aluminum bars that act as counterweights to prevent the structure from moving.

The bowl holder is detachable from the base to allow for different sizes of bowl supports.

Ready to use Functional design 3D Print SolidWorks

USB Hanger

Built a structural part to hang multiple USB cables as an initiative to improve accessibility in my daily project work. Proven reliable over several years.

Designed in SolidWorks and 3D printed using Cura. The piece features the embossed text ‘Robotic Arts,’ representing all my work.

Ready to use Functional design 3D Print SolidWorks

Catamaran USV

Design of an Unmanned Surface Vessel for river water quality monitoring, for a university research project in which I ultimately did not take part in.

The project included buoyancy calculations, manufacturing methods, and autonomous navigation. The hulls were designed to be 3D-printed in parts, ensuring watertightness and buoyancy. Propulsion was planned using two external underwater motors to avoid leaks and ease maintenance.

The deck was designed in water-resistant varnished wood, with 3D-printed rubber-sealed corners. A Raspberry Pi running ArduPilot and ROS was intended to be integrated for remote control.

Conceptual Catamaran design 3D Print SolidWorks

Hyperion Gun Machine

Built a NERF turret inspired by MW2’s Sentry Gun for autonomous Elite dart shooting via OpenCV, with optional manual IMU pad control

Autonomous mode runs a Qt app with OpenCV to detect shapes/colors via webcam, sending commands over USB to a Bluetooth transmitter.

Manual mode uses an STM32F407 to read IMU data and control the turret, featuring an LCD and 7-segment display for temperature and darts fired, communicating via HC-05 Bluetooth.

The turret uses two MG996R servos controlled by a USB 32-channel servo controller with UART, receiving commands through HC-05 Bluetooth.

C C++ STM32 OpenCV Qt Bluetooth Serial

Arduino LED Matrix Console

Built a game console shield for the Arduino UNO featuring a retro 8-bit spaceship that navigates and destroys enemies and terrain.

Implemented LED multiplexing using an SN74LS151 and GPIO pins to control an 8×8 LED matrix. Inputs are handled via mechanical switches, and data transmission uses infrared emitter and receiver diodes.

Developed firmware based on time-sliced, event-driven programming to manage inputs and animations. Designed a custom IR communication protocol to enable multiplayer functionality.

C++ Arduino UNO Circuit design LED Matrix IR protocol

LED Guitar

Built light accessories that reacted to the rhythm of my acoustic guitar to experiment with analog/digital circuits and 3D design.

Used an electret mic amplified with an LM358 and a SN74LS151 multiplexer for LED shift control. A WS2812 LED strip served as a VU meter, and an RGBD LED controlled color transitions inside the guitar. The system, managed by an Arduino Pro Micro, was assembled on perfboard.

Designed all parts in SketchUp and printed them using Cura. Included a microphone mount inside the guitar and a control box with a panel.

C++ Arduino Pro Mini Circuit design 3D print SketchUp

Music Box

Building a 60W RMS wooden speaker with jack input, Bluetooth connectivity, and USB playback, offering up to 8 hours of battery life.

Integrated a TPA3116-based power amplifier driving two 30W RMS coaxial speakers. Audio was supplied by an MP3/Bluetooth decoder module. To prevent power-on pop, implemented a delayed relay circuit. Powered by a 7-cell lithium battery pack with BMS protection.

The enclosure was designed in SolidWorks and intended to be crafted from wood using artisanal components.

In progress Component Design Circuit integration SolidWorks
© Robotic Arts 2013 – 2025  All rights reserved