Wall-E and Eve
I worked with a partner to build a controller (Eve) and a remotely controlled robot (Wall-E) using two ESP32s. The two microcontrollers communicate using a secure MQTT communication link over the HIVE network. Eve's ESP32 serves as the MQTT publisher, and Wall-E's ESP32 serves as the subscriber, executing commands relayed from Eve.
Wall-E's physical components include 2 DC motors turning its wheels, a servo motor mounted at its neck to allow it to spin, and an HC-SR04 ultrasonic distance sensor as its eyes.
Single/double pressing a button on Eve's ESP32 commands Wall-E to do the following:
-
D35 single press: moves forward (video 1)/ forward backward sweep (video 2)
-
D35 double press: moves backward (video 1)/ spins in a circle (video 2)
-
D34 single press: neck rotates 120° and back
-
D34 double press: ultrasonic distance sensor is activated for 10 seconds, ESP32 buzzer beeps in the sound of Wall-E if an object is detected within a 27 cm range
​​
My partner and I ran two versions of the subscriber code to advance a couple of Wall-E's tasks as seen in video 2. As Wall-E's task changes, a NeoPixel LED on Eve changes color to indicate Wall-E's status.
The controller/publisher (Eve) code can be accessed here.​​​
Both versions of the robot/subscriber (Wall-E) code can be accessed here.
Main Micropython Skills Used:
-
MQTT server connection and subscribing/publishing to a topic
-
JSON command parsing (ex: motors_opposite, servo_rotate)
-
GPIO control
-
Ultrasonic sensor timing + pin configuration
​​I used SolidWorks to design Eve's body accurately to the movie and in a way that an ESP32 could be mounted between Eve's head and body. I had to include extra support material when 3D printing Eve's bottom half, as the supports weren't sufficient to hold up Eve's arms in my first trial.​​​ My teammate Matthew took the lead on building Wall-E out of laser-printed parts while I worked on the code for both ESP32s and the CAD for Eve.

Eve CAD:

