Installed and in useWeather lights
An ESP32 lighting system that turns the morning forecast into colour, brightness and animation, without needing to open a phone.
From data buses to inverse kinematics.

A Ben Eater-based computer extended with joystick and servo interfaces, plus independently derived arm kinematics calculated in assembly.
This was one of my early personal projects: build a computer, understand its buses and addressing, then use it to solve and control something physical.
The computer ran at 1 MHz. To drive the arm’s servos, I connected a 16-channel I2C-to-PWM device and bit-banged the I2C signalling through the VIA. A joystick interface used voltage thresholds and a dead zone to turn analogue movement into digital direction inputs.
Ben Eater’s design supplied the computer foundation. The peripheral interfaces and arm program were my additions.
I did not want to rely only on a lookup table of precomputed servo angles. I independently worked through a geometric inverse-kinematics solution using two intersecting circles to locate the elbow, then calculated the relative shoulder and elbow angles.
To evaluate that solution on the computer, I first built arithmetic routines and Taylor-series-based trigonometric calculations in assembly. It was an opportunity to understand how mathematical operations can be built from much smaller machine-level steps.
The arm moved, but the servos were not consistently stable. I could not fully determine whether the problem came from signalling, power or PWM configuration, and I did not have a logic analyzer to diagnose it properly.
That limitation is part of the outcome. The project taught me a great deal about low-level software and circuit debugging even though it did not become a precision arm.
I built and extended a working computer and implemented the arm mathematics on it. Servo jitter remained unresolved. The circuit-debugging experience later helped me investigate problems in other embedded builds.