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

@@ -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>