Physical motion
Real-world movement becomes rotational and acceleration data through the MPU6050 inertial measurement unit.
Mission entry / 01
Built around MPU6050-based inertial sensing and realtime visualization using Processing and embedded microcontrollers. The project explores sensor fusion, drift behaviour, coordinate systems, calibration, and low-latency rendering pipelines while translating raw physical motion into an inspectable digital environment.

B.01
The project began as an attempt to build a realtime digital twin using low-cost inertial sensors and live telemetry. Physical motion from the sensor is translated into orientation data, transmitted over serial, and reconstructed visually in a custom 3D environment.
It was one of my first electronics projects that grew beyond a quick experiment. I ended up reverse engineering the mathematical principles on pen and paper, rediscovering my love-hate relationship with matrices along the way. It also became the project that led to the creation of C Labs, my YouTube channel.
C.01
Real-world movement becomes rotational and acceleration data through the MPU6050 inertial measurement unit.
The ESP32 continuously polls gyroscope and accelerometer data while applying calibration offsets and sensitivity scaling.
Orientation and motion data are serialized into lightweight realtime packets and streamed over USB serial.
A Processing-based runtime receives, validates, and reconstructs the telemetry stream into usable orientation state.
The reconstructed orientation is visualized as a live 3D object, exposing drift, latency, noise, and motion behaviour in realtime.
D.01
First power-on test was absolute chaos. The visualization was drifting and wobbling all over the place and I was convinced I had bought a busted sensor from China. That turned into my introduction to gyroscope drift and the surprisingly difficult problem of long-duration orientation stability on cheap IMUs. Sensor fusion helped massively.
The early motion tracking looked ridiculously shaky. I like to think my hand control is fairly decent, so there was no way I was physically moving the sensor that badly. Turns out the MPU6050 sensitivity settings were completely wrong for what I was doing. Tweaking the measurement range immediately made the telemetry feel far more stable and believable.
Sensor fusion alone still was not enough to fully deal with accumulated drift. This somehow brought me straight back to Wii Sports Resort and the MotionPlus era. Implementing stationary startup calibration to measure gyro bias before runtime made a huge difference to long-term stability.
Arduinos are lovely when you're blinking LEDs for the first time, but once realtime telemetry and visualization entered the picture the poor thing was fighting for its life. Porting the project to ESP32 hardware massively improved responsiveness, update frequency, and overall smoothness.
E.01