Build an IoT Controlled Rover Using the AtumX Subo/ESP32-S3 and MQTT

by Ideas by Suyash Desai in Circuits > Robots

141 Views, 1 Favorites, 0 Comments

Build an IoT Controlled Rover Using the AtumX Subo/ESP32-S3 and MQTT

IoT Controlled Car.png
WhatsApp Image 2026-07-13 at 2.33.31 AM.jpeg
WhatsApp Image 2026-07-13 at 1.40.41 AM (1).jpeg
WhatsApp Image 2026-07-13 at 1.40.41 AM (2).jpeg

Imagine controlling your robotic rover from anywhere in the world using nothing more than a web browser and an internet connection. No Bluetooth range limitations, no dedicated mobile app—just open a webpage, connect to your MQTT broker, and you're ready to drive your robot in real time.

In this project, we'll build a cloud-controlled IoT rover using the AtumX Subo Super Board (ESP32-S3) and the MQTT protocol. The rover connects to Wi-Fi and securely communicates with a cloud MQTT broker, allowing you to control it from your laptop, tablet, or smartphone from virtually anywhere with internet access.

The project includes a custom-built web dashboard featuring keyboard controls (WASD), on-screen buttons for mobile devices, adjustable speed control, and real-time command transmission. To enhance user interaction, the onboard RGB LED matrix displays different colors based on the rover's movement, providing instant visual feedback.

Unlike conventional Bluetooth or RF-controlled robots that are limited to a few meters of range, this rover is controlled through the internet. Whether you're in another room, another city, or even another country, you can drive the rover as long as both the rover and your control device are connected to the internet.

This project serves as an excellent introduction to IoT, cloud robotics, MQTT communication, and remote device control while providing a solid platform for future upgrades such as robotic arms, FPV cameras, AI vision, obstacle avoidance, GPS navigation, and autonomous operation.

Supplies

Screenshot 2026-07-13 014422.png
Screenshot 2026-07-13 014538.png
WhatsApp Image 2026-07-13 at 1.40.43 AM.jpeg

Electronics

  1. AtumX Subo Super Board (ESP32-S3)
  2. 2 × BTS7960 Motor Drivers
  3. 4 × DC Gear Motors(Johnson 12v HighTorque)
  4. Robot Chassis
  5. Li-ion Batteries(12v)
  6. Battery Holder
  7. Jumper Wires
  8. Wheels
  9. Castor Wheel
  10. USB Cable

Optional

  1. LEDs
  2. Active Buzzer
  3. Camera Module
  4. Ultrasonic Sensor

Software Required

  1. AtumX Trix IDE
  2. AtumX Subo Library
  3. Arduino IDE
  4. HiveMQ Cloud Account
  5. MQTT Explorer (optional)
  6. Modern Web Browser

Arduino Libraries

  1. WiFi
  2. WiFiClientSecure
  3. PubSubClient
  4. Subo Library

Assemble the Rover

Screenshot 2026-07-13 014604.png
Screenshot 2026-07-13 014637.png
WhatsApp Image 2026-07-13 at 1.40.43 AM (1).jpeg

Build the robot chassis.

Install:

Make a chassis using PVC or 3D printer.

  1. Motors
  2. Wheels
  3. Battery
  4. Motor Drivers
  5. Subo Super Board

Ensure everything is securely mounted before wiring.

Wiring the BTS7960 Motor Drivers

Screenshot 2026-07-13 014805.png
WhatsApp Image 2026-07-13 at 1.40.43 AM.jpeg

In this project, two BTS7960 High-Power Motor Drivers are used to independently control the left and right DC motors. Each driver requires two PWM signals from the AtumX Subo/ESP32 to control the motor's speed and direction.

Left BTS7960

  1. RPWM → GPIO 4
  2. LPWM → GPIO 39
  3. R_EN → 5V
  4. L_EN → 5V
  5. VCC → 5V
  6. GND → GND (Common Ground)
  7. B+ → Battery Positive (+)
  8. B− → Battery Negative (−)
  9. M+ → Left Motor Terminal
  10. M− → Left Motor Terminal

Right BTS7960

  1. RPWM → GPIO 13
  2. LPWM → GPIO 38
  3. R_EN → 5V
  4. L_EN → 5V
  5. VCC → 5V
  6. GND → GND (Common Ground)
  7. B+ → Battery Positive (+)
  8. B− → Battery Negative (−)
  9. M+ → Right Motor Terminal
  10. M− → Right Motor Terminal
Important: Ensure the Subo board GND, both BTS7960 GND pins, and the battery negative terminal are connected together (common ground). If a motor spins in the opposite direction, simply swap its M+ and M− connections.


Install Required Libraries

Screenshot 2026-07-13 020948.png


Install the following libraries through the Arduino Library Manager.

  1. PubSubClient
  2. WiFi
  3. WiFiClientSecure

Also install the AtumX Subo library provided by AtumX.

Create Your HiveMQ Cloud Broker

Screenshot 2026-07-13 021210.png


  1. Create a free HiveMQ Cloud account.
  2. Create a new MQTT Cluster.
  3. Wait until the cluster is running.
  4. Create MQTT credentials.
  5. Copy:
  6. Server Address
  7. Port (8883)
  8. Username
  9. Password

These credentials will be used in both the Arduino sketch and the web dashboard.

Why MQTT?


With MQTT: https://www.hivemq.com/mqtt/

  1. The rover can be controlled from anywhere in the world.
  2. Multiple devices can communicate through the same broker.
  3. Communication is encrypted using TLS.
  4. Very low latency makes driving smooth and responsive.

As long as both the rover and your control device are connected to the internet, distance is no longer a limitation.

Upload the Firmware

Open the Arduino sketch or Trix App.

Code & Details: https://github.com/astrix884/Cloud-Controlled-IoT-Rover.git

Replace:

  1. Wi-Fi SSID
  2. Wi-Fi Password
  3. MQTT Server
  4. MQTT Username
  5. MQTT Password

Upload the program.

Open the Serial Monitor.

You should see

WiFi Connected
MQTT Connected

Create the Web Dashboard

Screenshot 2026-07-13 014732.png
Screenshot 2026-07-13 021502.png

The dashboard is built using

  1. HTML
  2. CSS
  3. JavaScript
  4. MQTT.js

Features include:

  1. WASD Control
  2. Mobile Buttons
  3. Speed Slider
  4. Secure WebSocket MQTT Connection

Save the webpage and simply open it in any modern browser.

No installation is required. You can deploy it on netlify.

Drive the Rover

WhatsApp Image 2026-07-13 at 2.33.31 AM.jpeg
WhatsApp Image 2026-07-13 at 1.40.40 AM.jpeg
WhatsApp Image 2026-07-15 at 2.18.24 AM.jpeg
WhatsApp Image 2026-07-13 at 1.40.42 AM (1).jpeg
WhatsApp Image 2026-07-13 at 2.33.32 AM.jpeg

Watch Full Build Series On Instagram: Full Reel Series

Once both devices are connected to the internet:

Open the dashboard.

Use:

W → Forward

A → Left

S → Reverse

D → Right

Space → Stop

Adjust the speed using the slider.

The rover should respond almost instantly.

Conclusion

In this tutorial, we built a cloud-controlled IoT rover using the AtumX Subo Super Board and MQTT. By combining an ESP32-S3, secure cloud communication, and a browser-based dashboard, we created a responsive robot that can be driven from virtually anywhere with an internet connection.

This project is a great introduction to cloud robotics and provides a flexible platform for adding advanced features such as AI, computer vision, automation, and autonomous navigation. Whether you're a student, hobbyist, or maker, it offers a practical way to explore the power of IoT in robotics.

Happy building, and if you enjoyed this project, consider sharing your own improvements or adaptations! 🚀