Embedded systems
Software and control designed around real devices, bounded compute, sensors, timing, and actuators.
Projects
- 5-inch Carbon-Fiber FPV DroneA 5-inch carbon-fiber quadcopter I designed and built. I sized its propulsion and power from thrust, weight, and current calculations, configured and tuned Betaflight (PID loops, flight modes, GPS features, return-to-home), and evaluated GPS accuracy, RF link quality, and flight performance under GNSS jamming and IMU/GNSS integration constraints.
- easyPIDA hardware-agnostic Arduino PID controller library with independent instances, timing controls, anti-windup, derivative filtering, state introspection, and an optional relay autotuner.
- Brainiacs Autonomous Race CarA WRO Future Engineers vehicle dividing Jetson Nano perception from Arduino Mega real-time control, with OpenCV traffic-sign logic, PID steering, an MPU6050 IMU, and TCS34725 color sensing.
- PID Light TrackerAn Arduino project that uses light sensing and two servo axes to follow a light source with PID control.
- OmniSign — Lebanese Sign Language translationA real-time translation system for Lebanese Sign Language spanning camera input, visual recognition, language output, and deployment across mobile, web, and offline embedded environments.
- Smart Interactive Desk (BEMO)A prototype that combines computer vision, ESP32 control, motorized height and tilt, immediate LED feedback, and a dashboard for longer-term patterns.
- Upstream fixes to Betaflight, PX4, and OpenFrontBug fixes contributed to three upstream open-source projects: a Redpine CC2500 debug-mode fix and a W25M flash read fix in Betaflight, an EKF2 range-height reset fix in PX4, and two HUD fixes in OpenFront.
- Water-shooting robotAn early Arduino mechatronics project: a stepper-driven lift sets nozzle height, a servo aims, a solenoid valve fires timed bursts, and a simple ballistic and water-level model estimates the required height for each target.
Writing
- Engineering a five-inch FPV drone from first principlesBuilding a five-inch FPV drone is an exercise in coupled constraints: every part you choose changes what the others have to do.
- Designing a PID library for real embedded controlThe PID equation is short. A controller that behaves predictably on an Arduino needs much more than three gains.
- Building an autonomous race car in twenty daysA small autonomous vehicle forced perception, control, power, mechanics, and team decisions into one unforgiving loop.
- What a two-axis light tracker teaches about PID controlA small Arduino robot turns control theory into something visible: error, overshoot, noise, saturation, and settling all happen in front of you.
- Building real-time Lebanese Sign Language translationLebanese Sign Language has a data problem before it has a model problem.
- Connecting posture estimation to a motorized deskA posture-aware desk closes a physical loop between vision, control, and motion.
- What small upstream fixes teach about firmwareFive pull requests to Betaflight, PX4, and OpenFront, and the habit they share: make the mechanism explicit before touching the code.
- A first mechatronic loop without a pumpAn early Arduino project that hit targets with gravity-fed water bursts, and taught that the plant changes after every action.