The struct serves as the data payload for sending control signals from the transmitting device to the receiver using ESP-NOW.
In addition, it may contain additional data such as telemetry, battery status, etc. The sensors_data_t struct encapsulates all control commands and sensor states
relevant to the vehicle’s operation. It’s intended to be sent from a transmitting device (like a remote control) to a receiver
@@ -70,14 +70,14 @@ powerful in systems programming, embedded projects, and when dealing with raw bi
ESP-NOW.
x_axis and y_axis fields capture analog input from a joystick, determining direction and speed.
nav_bttn represents a joystick push-button.
led allows the transmitter to toggle an onboard LED and is used for status indication (e.g. pairing, battery warning, etc).
motor1_rpm_pwm to motor4_rpm_pwm provide individual PWM signals to four DC motors.
This enables fine-grained speed control, supports differential drive configurations, and even allows for maneuvering in multi-directional platforms like omni-wheel robots.
At the heart of this project is a customizable remote-controlled car that responds to real-time control inputs, capable of handling speed adjustments,
directional changes, and even extended features like lights or sensors. The foundational setup uses ESP-NOW for transmitter and receiver devices,
allowing you to wirelessly guide the car’s behaviour. While the design and physical appearance of the RC car can vary wildly depending on your
@@ -47,7 +47,7 @@ setup where a transmitter sends data to a receiver to define the car’s speed a
implementation focuses on movement, additional features like lights, sensors, or telemetry can easily be integrated by expanding the source code. This
modular design gives users the freedom to customize both the appearance and behaviour of their RC car, resulting in endless creative possibilities.
To enable real-time remote operation of the RC car, the system translates joystick x- and y- axis inputs into PWM (Pulse Width Modulation) signals that control the DC motors.
These PWM values are stored in a predefined data structure, which is then transmitted wirelessly using ESP-NOW — a low-latency, connectionless
communication protocol developed by Espressif. Both the transmitter and receiver modules are based on ESP32-C3 microcontrollers.
@@ -85,16 +85,16 @@ allows the RC car to respond instantly to user input, managing speed and directi
The following table summarizes GPIOs and pins reserved for operations purposes.
The GPIO numbers correspond to those on the ESP32-C3 WROOM microcontroller. The Pin number corresponds to the pin on the Breadboard and Power adapter development board.
The GPIO0 and GPIO1 assigned to measuring the voltage of x- and y- axis of the Joystick. Lastly, there is a group of GPIO pairs responsible for PWM for DC motors.
The pairs of DC motors on the left side are wired to the dedicated PWM channels. This means that ESP32-C3 Breadboard DevBoard can control rotation speed and direction of DC motors in pairs only (i.e. left and right side).
Consequently, only four PWM channels are sufficient for controlling the direction of the RC car.
Based on this constraint, the RC car can only move front, back, and turn/rotate left and right. Any other movements are not possible (i.e. diagonal or sideways).
@@ -170,7 +170,7 @@ Right DC Motors spin clockwise
-