This LEGO Toy Became an RC Submarine with an Arduino Nano ESP32 and a 400g Moving Weight That Controls Pitch

Published  September 7, 2026   0
User Avatar Vedhathiri
Author
LEGO RC Submarine With Arduino Nano ESP32

The Brick Experiment Youtube Channel has built RC Submarine 5.0, a LEGO-based remotely controlled submarine designed to improve on the previous version while making underwater operation easier and more convenient. The submarine uses a 39 cm-long acrylic hull with two propellers for propulsion and differential steering, while a water pump and ballast tank control its buoyancy and depth. One of its most unusual features is a 400-gram movable steel weight inside the hull. A motor moves the weight through a geared mechanism, shifting the submarine’s center of gravity and changing its pitch. The system provides a pitch range of about ±13 degrees, allowing the submarine to tilt its nose up or down and improving maneuverability underwater. The finished submarine has a displacement of 2.95 kg, a 12 cm diameter hull, a 140 ml ballast capacity and a tested depth of 1.5 metres.

The electronics are built around an Arduino Nano ESP32, which serves as the main controller. It receives commands from a Graupner R700 40 MHz radio receiver, while a Honeywell SSCMANV030PA2A3 absolute pressure sensor measures depth and an MPU6050 6-axis IMU measures the submarine’s pitch. Both sensors use the same I²C bus, while the radio receiver sends a PPM signal to the Arduino. Two DRV8833 dual motor-driver boards control four LEGO DC motors: two drive the left and right propellers, one moves the internal weight for pitch control, and another drives the water-pump ballast system. Power comes from a LEGO rechargeable battery box containing an 1100 mAh 2S LiPo battery. The estimated maximum current consumption is about 923 mA, just below the battery box’s 1 A continuous output rating.

From an engineering perspective, the interesting part of RC Submarine 5.0 is the combination of mechanical control and embedded feedback systems. Instead of relying only on manual radio commands, the submarine uses pressure feedback for automatic depth control and IMU measurements for automatic pitch control. During testing, the creator found that the ballast system had no direct flow or ballast-level sensor, so its position had to be estimated from pump runtime; water pressure affected the pump’s flow rate, requiring software compensation. The moving weight also lacks direct position feedback, which can occasionally cause the submarine to lose level pitch. Other limitations include a relatively slow ballast pump, slow reverse movement and the complexity of building the submarine. The radio link was tested to more than 1.5 metres underwater, while the creator reports a battery runtime of about two hours and a top speed of 0.7 knots (1.3 km/h). Overall, the project demonstrates how an Arduino ESP32, pressure sensor, IMU, motor drivers and feedback control can be combined with mechanical buoyancy and center-of-gravity control to create a functional underwater RC robot.

Add New Comment

Login to Comment Sign in with Google Log in with Facebook Sign in with GitHub