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 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.
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.
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.
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.
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.
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.
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).
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.
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.