Skip to main content
Version: FILS English

Octane

A Wi-Fi controlled RC car with a design inspired by Rocket League cars.

info

Author: Salavastru Andrei
GitHub Project Link: https://github.com/UPB-PMRust-Students/project-AndreiSa05

Description​

Octane is a Wi-Fi controlled RC car powered entirely by an ESP32-S2 Mini. The car uses a motor driver to control two DC motors that handle both forward and backward movement. Users can control the car remotely by sending WASD commands over Wi-Fi from a browser interface. The ESP32-S2 receives these commands, interprets them, and drives the motors accordingly.

Motivation​

I chose this project because I’ve always been curious about how RC cars work. As a child, I loved playing with them, but I never truly understood how they were built or controlled. This project gave me the opportunity to explore that curiosity hands-on β€” combining programming with real hardware to build something functional and fun.

Architecture​

Schematic Diagram​

Schematic diagram

ESP32-S2 Mini​

  • Role: Serves as the central microcontroller for the car. It handles Wi-Fi communication, receives user input, processes that input, and controls the motors.
  • Connections: GPIO pins display Wi-Fi connection status via LEDs, and some GPIO pins send PWM signals to the motor driver’s enable pins.

LAPTOP​

  • Role: Acts as the remote control interface. Sends WASD movement commands over Wi-Fi to the ESP32-S2 Mini.
  • Connections: Communicates with the ESP32-S2 via HTTP over a shared Wi-Fi network. The control interface is a web page.

LEDs​

  • Interface: GPIO
  • Role: Show whether the ESP is connected to Wi-Fi.
  • Connections: Each LED is connected to a GPIO pin. A 220Ξ© resistor is placed between the GPIO and the LED to prevent damage.

MOTOR DRIVER ZKBM1​

  • Interface: PWM
  • Role: Controls the direction of the two DC motors based on the signals received from the ESP32-S2 Mini.
  • Connections: The driver uses four GPIO pins from the ESP32-S2: IN1 and IN2 for Motor A, IN3 and IN4 for Motor B. Each motor’s speed is adjusted using PWM signals, while direction is determined by the HIGH/LOW configuration of the control pins. The driver is powered directly from a battery pack connected to its VCC and GND terminals.

DC MOTOR x2​

  • Interface: Powered through motor driver
  • Role: Provide movement for the car - forward and backward
  • Connections: Each motor is connected to one output channel of the ZKBM1 motor driver. They receive power and directional signals through these channels.

BATTERY PACK x2​

  • Interface: Power supply
  • Role: Provides electrical power to both the motors and the ESP32-S2 system
  • Connections: A battery pack is connected to the VCC and GND inputs of the motor driver to power the motors, while the other is used to power the ESP32-S2 Mini.

Log​

Week 5 - 11 May​

Week 12 - 18 May​

Week 19 - 25 May​

Hardware​

The Octane project is built around an ESP32-S2 Mini, which handles both Wi-Fi communication and motor control. User commands (WASD) are received via Wi-Fi and translated into PWM signals sent to a ZKBM1 motor driver. A pair of status LEDs connected to GPIO pins provide feedback, indicating the Wi-Fi connection status. The ZKBM1 controls two DC motors, enabling movement through GPIO pins. Power is supplied by two battery packs: one powers the motor driver, and the other powers the ESP32-S2 Mini. Thus, the setup allows for wireless control using a microcontroller.

Schematics​

Place your KiCAD schematics here.

Bill of Materials​

DeviceUsagePrice
ESP32-S2 MiniMain microcontroller, handles Wi-Fi and motor control logic30.23 RON
Motor Driver ZKBM1Controls direction of two DC motors via PWM18.16 RON
DC Motors x2Provide propulsion β€” forward, backward7.84 RON
Battery Pack x2Powers the motor driver and ESP3211.98 RON
Female-Female Wires x20 Connect components Female-Female5.96 RON
Male-Male Wires x20Connect components Male-Male7.54 RON
220Ξ© Resistors x10Used with LEDs to limit current3.37 RON

Software​

LibraryDescriptionUsage
esp-idf-sysLow-level bindings to the ESP-IDFProvides access to ESP32 system APIs and runtime components
esp-idf-halHardware Abstraction Layer for ESP32 using ESP-IDFUsed for GPIO, PWM (via ledc) for motor and LED control
esp-idf-svcHigh-level service wrappers over ESP-IDF APIsUsed for managing Wi-Fi and networking
embedded-svcTraits and types for portable embedded servicesProvides abstractions for networking, HTTP servers, and more
logStandard Rust logging interfaceEnables logging throughout the application
anyhowError handling librarySimplifies error propagation and reporting
embuildBuild-time support for esp-idf projectsRequired for setting up and linking the ESP-IDF build system properly
stdRust standard library (enabled via esp-idf)Provides multithreading (thread), networking (TcpStream, TcpListener), and synchronization (Mutex, Arc) capabilities
  1. ESP Template