How It Works
Essentially, this robot has two independent systems that work together:
Motor Control
The first system is the motor control. The robot uses an ESP32 that connects to a free HiveMQ Cloud MQTT broker over WiFi. A web dashboard running in any browser publishes WASD movement commands to the broker. The ESP32 receives them and drives the motors. Because MQTT is cloud-based, the robot can be controlled from anywhere in the world as long as it has an internet connection.
Video and Audio
The second system handles the video and audio connection. To do this, the robot uses a phone on the robot that runs a broadcast page in its browser that accesses the camera and microphone via WebRTC. The web dashboard connects to the phone's stream peer-to-peer. Two-way audio lets you both hear the environment and speak through the phone's speaker. WebRTC signaling is handled through the same HiveMQ broker, and a Metered TURN server is used as a relay to make cross-network connections work reliably.
Overall, both systems connect through cloud services (free tiers because I like saving money 👀) so there is no server to manage and no ongoing cost for personal use.
What Needs Improvement
Battery — After test, I quickly found that a 9V block battery can't sustain motor current under load. A 6x AA pack or 7.4V 2S LiPo could be better. Powering the ESP32 separately from the motors also helps. Also, adding a charging port is great too.
WiFi setup — Credentials are hardcoded in firmware. Adding WiFiManager would let anyone configure the network without reflashing.
Web dashboard — Keyboard-only control doesn't work on mobile. On-screen D-pad buttons are needed for touch control.
Chassis — The SMARS is very small and is limited to what you can do without extra cadding. I believe a purpose-built chassis with a proper phone mount and enclosed battery compartment would be much more solid.
Donavan Borges
Victor Serrano
Tanuj Kashyap
Vitor Hugo Abreu Aguiar
Aditya
I WILL ADD MY CODE AND THE GITHUB REPO VERY SOON!