Embedded firmware
C and C++ on STM32, ESP32, AVR and PIC32. Bare metal and FreeRTOS, interrupts, DMA, timers, PWM, ADC and register-level code under real-time constraints.
Smart fan · 6 RTOS tasks, 25 kHz PWM, DMA UART
Embedded Systems Engineer · Berlin
Embedded systems engineer with 4+ years in industry and autonomous robots since 2010. I design and bring up boards, write real-time firmware in C and C++ on bare metal and FreeRTOS, and build the software around the device: embedded Linux services, OTA updates, IoT connectivity, web dashboards and Python test automation.
I design and bring up boards and write the firmware that runs on them. I am just as productive on software-only work: embedded Linux services, OTA updates, data processing, test automation and simulation.
C and C++ on STM32, ESP32, AVR and PIC32. Bare metal and FreeRTOS, interrupts, DMA, timers, PWM, ADC and register-level code under real-time constraints.
Smart fan · 6 RTOS tasks, 25 kHz PWM, DMA UART
Schematics and PCBs in Altium Designer, components chosen for cost and EMC, board bring-up with oscilloscope, logic analyser and SWD, 3D printing, SolidWorks.
Digital piano · 100+ units sold in year one
ARM Linux gateways in the field, systemd services, Yocto-based images, OTA updates with Mender: signed images, A/B rollback, provisioning, recovery.
Labforward · gateways at customer laboratories
MQTT with Mosquitto, REST, Wi-Fi, Bluetooth, BLE and NFC, OTA on ESP32, web dashboards, and communication protocols with strict validation.
Smart fan dashboard and MQTT · smart escape rooms
Software-only work too: Python and C++ tools, TypeScript data processing services, unit tests under sanitizers and CI pipelines that build every target.
Labforward data services · 47 unit tests, 4 CI jobs
Autonomous robots in C and Python: IMU and encoder odometry, PID control, mapping with localization, camera-based victim detection, Webots simulation.
RoboCup and FIRA since 2010 · 1st place FIRA 2025 as mentor
Each project page covers the problem, how the system works, the hard parts and the evidence: tests, logged traces and measured numbers.

A 12 V PC fan that sets its own speed from the room temperature. The STM32 runs the control on FreeRTOS; an ESP32 next to it serves a web dashboard, OTA updates and MQTT. Hardware, firmware, tests and CI in one repository.

Feedforward from a measured curve, feedback only where the sensor is valid, and a supervisor with a defined safe state. Every fault found came out of a logged trace.

Maze robots that map an unknown arena, mark every victim they find and drive back to the start. Omnidirectional base, wall-referenced PID, stack-based search, camera victim detection.
Python on Webots. Leaderless role assignment computed identically on every robot, ball prediction, PD steering.
Programmed with my own code to fly a course of gates marked with tags. The code is not cleared for publication.
A robot software project on ROS 2. The code is not cleared for publication.
Control panel electronics and PIC firmware for the Middle East's first digital piano. More than 100 units sold in the first year.
RoboCupJunior Rescue as a competitor from 2010. Then technical lead and mentor of competition teams, and technical committee member and chair at RoboCup and FIRA events.
Daegu, South Korea. Youth coach of the winning team.
MentorSão Luís, Brazil. Team mentor.
MentorRoboCupJunior SoccerSim. Also Best Technical Challenge and Best Poster.
MentorRescue New Simulation, Mini-Challenge. Joint team DaidalosClan + phoenix.
MentorJunior Rescue world championship with team Sina.
CompetitorJunior Rescue. Plus 2nd place in 2010 and 2014.
CompetitorWhich role, which year. Results on the bars come from the certificates.
Labels on the bars are competition results: as a competitor with team Sina, then for the teams I mentored.