RC Robot Tutorial

This commit is contained in:
2025-07-21 02:53:25 -04:00
parent 54c2219049
commit bfdec7603d
8 changed files with 246 additions and 192 deletions

View File

@@ -125,6 +125,27 @@ The following images illustrate various PWM duty cycles registered by oscillosco
<br/><br/><br/><br/>
Fusion of Software with Hardware
--------------------------------
On one hand, we have the hardware designed so that the joystic x- and y- axis, and DC motors are wired to the proper GPIOs on the
ESP32-C3 WROOM microcontroller. On the other hand, we have the software that reads the joystick x- and y- axis, sends the data
to the receiver device, and converts that to PWM values on the receiver device.
In essense, the direction and speed of the bitByte Rider car is controlled by the two variables. On the remote controller device,
the joystic x- and y- axis values are sent to the receiver device in a raw format (i.e. analog voltages, "as-is"). On the receover
device, these two values are converted to the two PWM values; one for each pair of DC motors on left and right side.
When the joystick is pushed forward, the X-axis voltage remains at 1.65V (neutral), while the Y-axis voltage rises to 3.3V. The
receiver on the RC car interprets this input and generates 100% PWM duty cycle signals on both sides, driving the car forward at
full speed.
Similarly, when the joystick is pushed fully to the left or right, the X-axis voltage shifts while the Y-axis remains neutral. For a
left turn, the receiver translates the signal into 100% PWM on the left-side motors and 0% on the right-side motors, causing the car
to pivot. The opposite occurs for a right turn, with 100% PWM on the right and 0% on the left, enabling precise directional control.
The table below summarizes the reserved GPIOs.
+------+-----+---------------------------------------------------------+----------------+
| GPIO | Pin | Function | Notes |
+======+=====+=========================================================+================+
@@ -143,9 +164,6 @@ The following images illustrate various PWM duty cycles registered by oscillosco
| 7 | 6 | PWM for counter-clockwise rotation of left-side motors | LEDC_CHANNEL_3 |
+------+-----+---------------------------------------------------------+----------------+
Fusion of Software with Hardware
--------------------------------
The *struct* for storing motors PWM values.
.. code-block:: c

View File

@@ -168,7 +168,24 @@ Right DC Motors spin clockwise</p></td>
<p><span class="caption-text">DC Motor PWM duty cycle 90.8%</span><a class="headerlink" href="#id3" title="Link to this image"></a></p>
</figcaption>
</figure>
<br/><br/><br/><br/><table class="docutils align-default">
<br/><br/><br/><br/></section>
</section>
<section id="fusion-of-software-with-hardware">
<h2><span class="section-number">2.2. </span>Fusion of Software with Hardware<a class="headerlink" href="#fusion-of-software-with-hardware" title="Link to this heading"></a></h2>
<p>On one hand, we have the hardware designed so that the joystic x- and y- axis, and DC motors are wired to the proper GPIOs on the
ESP32-C3 WROOM microcontroller. On the other hand, we have the software that reads the joystick x- and y- axis, sends the data
to the receiver device, and converts that to PWM values on the receiver device.</p>
<p>In essense, the direction and speed of the bitByte Rider car is controlled by the two variables. On the remote controller device,
the joystic x- and y- axis values are sent to the receiver device in a raw format (i.e. analog voltages, “as-is”). On the receover
device, these two values are converted to the two PWM values; one for each pair of DC motors on left and right side.</p>
<p>When the joystick is pushed forward, the X-axis voltage remains at 1.65V (neutral), while the Y-axis voltage rises to 3.3V. The
receiver on the RC car interprets this input and generates 100% PWM duty cycle signals on both sides, driving the car forward at
full speed.</p>
<p>Similarly, when the joystick is pushed fully to the left or right, the X-axis voltage shifts while the Y-axis remains neutral. For a
left turn, the receiver translates the signal into 100% PWM on the left-side motors and 0% on the right-side motors, causing the car
to pivot. The opposite occurs for a right turn, with 100% PWM on the right and 0% on the left, enabling precise directional control.</p>
<p>The table below summarizes the reserved GPIOs.</p>
<table class="docutils align-default">
<thead>
<tr class="row-odd"><th class="head"><p>GPIO</p></th>
<th class="head"><p>Pin</p></th>
@@ -214,10 +231,6 @@ Right DC Motors spin clockwise</p></td>
</tr>
</tbody>
</table>
</section>
</section>
<section id="fusion-of-software-with-hardware">
<h2><span class="section-number">2.2. </span>Fusion of Software with Hardware<a class="headerlink" href="#fusion-of-software-with-hardware" title="Link to this heading"></a></h2>
<p>The <em>struct</em> for storing motors PWM values.</p>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="k">struct</span><span class="w"> </span><span class="nc">motors_rpm</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">motor1_rpm_pwm</span><span class="p">;</span>

File diff suppressed because one or more lines are too long

View File

@@ -1,4 +1,4 @@
# Sphinx build info version 1
# This file records the configuration used when building these files. When it is not found, a full rebuild will be done.
config: 564111c68e4938e1ff35159ef0a02532
config: e22baa48f9e7069a3e9b5dc9ddc22300
tags: 62a1e7829a13fc7881b6498c52484ec0

View File

@@ -695,6 +695,38 @@ Right DC Motors spin clockwise
<br/>
<br/>
<br/>
</section>
</section>
<section id="fusion-of-software-with-hardware">
<h3>
Fusion of Software with Hardware
<a class="headerlink" href="#fusion-of-software-with-hardware" title="Link to this heading">
&para;
</a>
</h3>
<p>
On one hand, we have the hardware designed so that the joystic x- and y- axis, and DC motors are wired to the proper GPIOs on the
ESP32-C3 WROOM microcontroller. On the other hand, we have the software that reads the joystick x- and y- axis, sends the data
to the receiver device, and converts that to PWM values on the receiver device.
</p>
<p>
In essense, the direction and speed of the bitByte Rider car is controlled by the two variables. On the remote controller device,
the joystic x- and y- axis values are sent to the receiver device in a raw format (i.e. analog voltages, &ldquo;as-is&rdquo;). On the receover
device, these two values are converted to the two PWM values; one for each pair of DC motors on left and right side.
</p>
<p>
When the joystick is pushed forward, the X-axis voltage remains at 1.65V (neutral), while the Y-axis voltage rises to 3.3V. The
receiver on the RC car interprets this input and generates 100% PWM duty cycle signals on both sides, driving the car forward at
full speed.
</p>
<p>
Similarly, when the joystick is pushed fully to the left or right, the X-axis voltage shifts while the Y-axis remains neutral. For a
left turn, the receiver translates the signal into 100% PWM on the left-side motors and 0% on the right-side motors, causing the car
to pivot. The opposite occurs for a right turn, with 100% PWM on the right and 0% on the left, enabling precise directional control.
</p>
<p>
The table below summarizes the reserved GPIOs.
</p>
<table class="docutils align-default">
<thead>
<tr class="row-odd">
@@ -877,15 +909,6 @@ Right DC Motors spin clockwise
</tr>
</tbody>
</table>
</section>
</section>
<section id="fusion-of-software-with-hardware">
<h3>
Fusion of Software with Hardware
<a class="headerlink" href="#fusion-of-software-with-hardware" title="Link to this heading">
&para;
</a>
</h3>
<p>
The
<em>