第十课 探索火星漫游车的视觉系统——伺服电机与倾斜机构

欢迎回来,年轻的探险者们!在今天的冒险中,我们将深入探索火星漫游车的视觉系统。 就像我们的大脑依赖眼睛和脖子来帮助我们观察和导航一样,我们的火星漫游车也需要类似的系统来穿越险恶的火星地形。 今天,我们将构建的正是这样的系统!

火星漫游车的视觉系统主要包括两个部分:一个作为“眼睛”的摄像头和一个作为“脖子”的倾斜机构,使其可以上下移动。 通过这节课的学习,我们将赋予我们的漫游车“看”与“点头”的能力!

首先,我们将构建倾斜机构——一个能让摄像头上下旋转的装置,就像给我们的火星漫游车装上了脖子,使其能够上下点头。

接下来,我们将了解伺服电机——这个微小而强大的“肌肉”,它驱动倾斜机构的运动。我们将探讨伺服电机的工作原理,并学习如何通过Arduino编程来控制它。

就像我们的脖部肌肉控制头部的运动,让眼睛获得更好的视野,伺服电机也将控制倾斜机构的运动,使火星漫游车的摄像头能够更好地观察火星地貌。

所以,探险者们,请系好安全带,让我们开始为火星漫游车装备专属视觉系统的任务吧!

目标

  • 练习在火星漫游车模型上安装并操作倾斜机构。

  • 理解伺服电机的工作原理及应用。

  • 学习如何通过Arduino编程控制伺服电机的运动。

所需材料

  • Arduino UNO开发板

  • 伺服电机

  • 云台与摄像头

  • 火星漫游车模型(已配备TT电机、悬挂系统、超声波和红外避障模块、RGB LED灯带)

  • Arduino IDE

  • 电脑

步骤

步骤1:什么是伺服电机?

你是否曾看过木偶剧?如果看过,你一定会惊叹于木偶师如何仅凭拉动几根线就能让木偶的手臂、腿部和头部如此灵活地移动。从某种意义上说,伺服电机就像我们的木偶师。

_images/puppet_show.png

伺服电机是一种特殊类型的电机,不像轮子那样不停地旋转。相反,伺服电机可以移动到特定的位置并保持在那里。想象一下,你在玩“西蒙说”的游戏,西蒙说:“将你的手臂抬到90度!”你能做到吗?这就像伺服电机一样,你可以精确地控制手臂移动的角度。

_images/servo1.png
  • 棕色线:GND

  • 橙色线:信号引脚,连接到主板的PWM引脚。

  • 红色线:VCC

就像你可以控制手臂达到特定的位置一样,我们也可以用伺服电机控制项目中物体的精确位置。在火星漫游车中,我们将使用伺服电机来控制倾斜机构的上下运动,就像你点头时控制头部的上下运动一样。

接下来的步骤中,我们将深入探讨伺服电机的内部结构,看看它是如何工作的。准备好了吗?让我们出发吧!

步骤2:伺服电机是如何工作的?

那么,伺服电机是如何发挥魔力的呢?让我们一起深入伺服电机,揭开它的奥秘!

如果我们透过伺服电机的外壳,我们会看到几个重要的部件。伺服电机的核心是一台普通电机,类似于驱动火星漫游车车轮的电机。在这个电机上,有一只大齿轮与电机轴上的小齿轮连接,这样电机的快速旋转就能转化为较慢但更强大的运动。

_images/servo_internal11.png

但这并不是伺服电机特别的地方。伺服电机的魔力在于一个小小的电子元件——“电位器”和“控制电路”。当伺服电机移动时,电位器会旋转并改变其电阻,而控制电路则通过测量电阻的变化,准确地知道伺服电机的当前角度。很聪明,对吧?

为了控制伺服电机,我们向它发送一种特殊的信号——脉宽调制信号(PWM)。通过改变这些脉冲的宽度,我们可以精确控制伺服电机的运动,并让它保持在指定的位置。

接下来,我们将学习如何使用Arduino来控制伺服电机。准备好用代码施展魔法了吗?出发!

步骤3:通过Arduino控制伺服电机

好了,探险者们,现在我们知道了伺服电机的工作原理,接下来让我们学会如何用我们的魔法棒——Arduino来控制伺服电机!

控制伺服电机就像给它指路。记住我们之前提到的脉宽调制(PWM)信号吗?我们将使用这些信号告诉伺服电机去哪里。

幸运的是,Arduino为我们提供了一个方便的内置库—— Servo 。通过这个库,我们可以创建一个 Servo 对象,指定与之连接的引脚,然后使用简单的 write() 命令来设置角度。

以下是代码示例:

#include <Servo.h>

Servo myServo;  // 创建伺服电机对象

void setup() {
    myServo.attach(6);  // 将伺服电机连接到引脚6
}

void loop() {
    myServo.write(90);  // 告诉伺服电机移动到90度
}

在这段代码中, myServo 是我们的伺服电机对象, attach(6) 表示将伺服电机连接到引脚6, write(90) 则告诉伺服电机转动到90度。

做得好,探险者们!你们已经学会了如何通过Arduino控制伺服电机。你们也可以尝试不同的角度!

步骤4:组装视觉系统

现在,你们准备好组装火星漫游车的视觉系统了。

备注

  • 在将ESP32 CAM插入摄像头适配器时,请注意其方向。确保它与ESP32适配器正确对接。

  • 组装步骤:

    25-26

  • 组装步骤:

    27-33

步骤5:理解倾斜机构的运动限制

尽管伺服电机的设计允许其在0到180度之间旋转,但你可能会发现,当旋转角度超过某个临界值(比如150度)时,它会停止响应。你有没有想过为什么会这样?让我们在接下来的冒险中一起探索这个谜团吧!

你能想象一只鸟试图把脖子扭得太过,结果撞到自己的身体,无法再转动吗?我们的火星漫游车的倾斜机构也面临着类似的问题。当伺服电机使倾斜机构向下运动时,它可能会碰到火星漫游车的车身,导致无法继续运动。

如果我们在代码中写下一个无法到达的角度,强行让伺服电机转动,可能会导致伺服电机卡住,甚至损坏自己!我们可不希望发生这种情况,对吧?所以,让我们通过一个小实验来了解伺服电机的运动限制。

我们将使用一个for循环,让伺服电机从0到180度旋转,并在串口监视器中记录下每个角度。

  • ESP32-CAM和Arduino板共享相同的RX(接收)和TX(传输)引脚。因此,在上传代码之前,需要先通过将开关滑动到右侧来释放ESP32-CAM,避免任何冲突或潜在问题。

  • 上传代码后,打开 串口监视器 。如果没有显示任何信息,请按下 重置按钮 ,重新运行代码。

  • 你将看到伺服电机开始旋转,串口监视器将显示当前角度。

_images/servo_range.png

在我的火星漫游车上,倾斜机构能够旋转到大约140度,然后就会碰到车身,无法继续旋转。

所以,探险者们,请时刻记住要尊重火星漫游车的运动极限,确保它的安全和正常运行!

步骤6:分享与反思

做得好,探险者们!今天,你们不仅为火星漫游车构建了倾斜机构,还学会了如何控制伺服电机来驱动它。这是我们火星漫游车任务中的一大进步。

现在,让我们分享一下自己的经验,并回顾我们学到的内容。

在设置倾斜机构或编写伺服电机控制代码时,你们遇到过哪些挑战?是如何克服这些挑战的?

记住,每一次挑战的克服都会让我们变得更加聪明,也会让我们的火星漫游车变得更加优秀。所以,不要犹豫,快来分享你的故事、想法和解决方案吧。你永远不知道,你的创新解决方案可能会帮助到其他探险者!