在Arduino上创建第一个机器人的经验(机器人“猎人”)

你好

在这篇文章中,我想描述使用 Arduino 组装我的第一个机器人的过程。 这些材料对于像我这样想要制作某种“自动运行的购物车”的初学者很有用。 这篇文章描述了我对各种细微差别的补充的工作阶段。 文章末尾给出了最终代码(很可能不是最理想的)的链接。

在Arduino上创建第一个机器人的经验(机器人“猎人”)

只要有可能,我都会让我的儿子(8 岁)参与其中。 到底什么对它有效,什么无效——我已经专门用了这篇文章的一部分来讨论这个问题,也许它对某人有用。

机器人的一般描述

首先,简单介绍一下机器人本身(这个想法)。 我一开始并不想组装一些标准的东西。 同时,这套组件非常标准——底盘、发动机、超声波传感器、线路传感器、LED、高音扬声器。 最初,机器人就是从这套“汤具”中发明出来的,用来守护自己的领地。 他向越过圆圈线的违规者驶去,然后返回中心。 然而,这个版本需要一条画线,加上额外的数学运算才能始终留在圆圈中。

因此,经过一番思考,我改变了想法,决定做一个“猎人”机器人。 一开始,它绕轴旋转,选择附近的目标(人)。 如果检测到“猎物”,“猎人”就会打开闪光灯和警报器,并开始向它驶去。 当人走开/逃跑时,机器人会选择一个新目标并追逐它,依此类推。 这样的机器人不需要有限的圈子,可以在空旷的地方工作。

正如您所看到的,这很像一场追赶游戏。 尽管最终机器人的速度不够快,但它诚实地与周围的人互动。 小孩子特别喜欢(但有时又好像要踩到一样,心跳加速……)。 我认为这是普及技术设计的一个很好的解决方案。

机器人结构

所以,我们已经决定了这个想法,让我们继续吧 布局。 元素列表由机器人应该能够执行的操作组成。 这里的一切都很明显,所以让我们立即看一下编号:

在Arduino上创建第一个机器人的经验(机器人“猎人”)

机器人的“大脑”是一块 arduino uno 板 (1); 是从中国订购的一套。 对于我们的目的来说,这已经足够了(我们关注的是使用的引脚数量)。 我们从同一套件中取出了一个现成的底盘 (2),其上连接有两个驱动轮 (3) 和一个后轮(可自由旋转)(4)。 该套件还包括一个现成的电池盒 (5)。 机器人前面有一个超声波传感器(HC-SR04)(6),后面有一个电机驱动器(L298N)(7),中间有一个LED闪光灯(8),还有一个小侧面有一个高音扬声器(9)。

在布局阶段,我们查看:

- 以便一切都合适
- 保持平衡
- 合理布局

我们的中国同事已经为我们做了部分工作。 因此,笨重的电池舱被放置在中央,驱动轮大约位于其下方。 所有其他板都很轻,可以放置在外围。

细微差别:

  1. 套件中的底盘有很多工厂孔,但我仍然没有弄清楚它们的逻辑是什么。 发动机和电池组的固定没有问题,然后“调整”开始,钻新孔以固定这个或那个板。
  2. 存储区域的黄铜架和其他紧固件很有帮助(有时我们不得不把它们拿出来)。
  3. 我将每块板上的母线穿过夹具(再次,我在储藏室中找到了它们)。 非常方便,所有电线都很好地放置,不会晃动。

单独的块

现在我将通过 我会亲自告诉你每一个。

电池仓

显然,机器人必须拥有良好的能源。 选项可能有所不同,我选择了 4 节 AA 电池的选项。 它们总共提供大约 5V 电压,并且该电压可以直接施加到 arduino 板的 5V 引脚(绕过稳定器)。

当然,我有一些谨慎,但这个解决方案是相当可行的。

由于到处都需要电源,为了方便起见,我在机器人的中心制作了两个连接器:一个“分配”地面(右侧),第二个 - 5 V(左侧)。

在Arduino上创建第一个机器人的经验(机器人“猎人”)

电机及驱动器

首先,关于安装发动机。 该安装座是工厂制造的,但具有较大的公差。 换句话说,发动机可能左右摆动几毫米。 对于我们的任务来说,这并不重要,但在某些地方它可能会产生影响(机器人将开始向侧面移动)。 为了以防万一,我将发动机严格平行设置并用胶水固定。

在Arduino上创建第一个机器人的经验(机器人“猎人”)

正如我上面所写,为了控制电机,使用了 L298N 驱动器。 根据文档,每个电机都有三个引脚:一个用于改变速度,一对引脚用于旋转方向。 这里有一点很重要。 事实证明,如果电源电压为 5 V,那么速度控制根本不起作用! 也就是说,要么根本不转,要么转到最大。 这个功能让我“消磨”了好几个晚上。 最后,我在一个论坛上的某处发现了一个提及。

一般来说,我在转动机器人时需要较低的转速,以便它有时间扫描空间。 但是,由于这个想法没有任何结果,我不得不采取不同的做法:一个小转弯 - 停止 - 转弯 - 停止,等等。同样,不是那么优雅,但可行。

我还要在这里补充一点,每次追逐后,机器人都会选择一个随机方向进行新的转弯(顺时针或逆时针)。

超声波传感器

在Arduino上创建第一个机器人的经验(机器人“猎人”)

我们必须寻找折衷解决方案的另一个硬件。 超声波传感器在真实障碍物上产生不稳定的数字。 事实上,这是预料之中的。 理想情况下,它可以在比赛中光滑、均匀和垂直的表面上发挥作用,但如果有人的腿在它面前“闪现”,就需要引入额外的处理。

这样的处理我设置 中值滤波器 三项罪名。 基于对真实儿童的测试(测试期间没有儿童受到伤害!),事实证明这足以使数据标准化。 这里的物理原理很简单:我们有从 物体(给出所需的距离)并从更远的物体(例如墙壁)反射。 后者是 45、46 形式的测量中的随机发射, 230,46 46,45 45 310、 46... 中值滤波器滤除的就是这些。

经过所有处理后,我们得到了到最近物体的距离。 如果小于某个阈值,那么我们就会打开警报,径直驶向“入侵者”。

闪光器和警报器

也许是上述所有元素中最简单的元素。 它们可以在上面的照片中看到。 这里没有什么可写的,所以现在让我们继续讨论硬件 代码.

控制程序

我不认为详细描述代码有什么意义,谁需要它 - 链接位于文章末尾,那里的所有内容都非常可读。 但最好能解释一下一般结构。

我们必须了解的第一件事是机器人是实时设备。 更准确地说,要记住,因为以前和现在我仍然从事电子行业工作。 所以,我们立即忘记了挑战 延迟(),他们喜欢在示例草图中使用它,并且它只是将程序“冻结”指定的时间段。 相反,正如经验丰富的人建议的那样,我们为每个块引入计时器。 所需的时间间隔已过 - 操作已执行(增加 LED 的亮度、打开引擎等)。

定时器可以互连。 例如,高音扬声器与闪光灯同步工作。 这稍微简化了程序。

自然地,我们将一切分解为单独的功能(闪光灯、声音、转弯、前进等)。 如果你不这样做,那么你将无法弄清楚什么来自何处以及来自何处。

教育学的细微差别

我在晚上的空闲时间做了上述所有事情。 悠闲地,我在机器人上度过了大约三个星期的时间。 这本来可以结束,但我也答应告诉你有关与孩子一起工作的事情。 这个年纪能做什么呢?

按照指示工作

我们首先分别检查每个细节 - LED、高音扬声器、电机、传感器等。有大量现成的示例 - 一些在开发环境中,其他可以在互联网上找到。 这当然让我很高兴。 我们获取代码,连接部件,确保其工作正常,然后开始更改它以适应我们的任务。 孩子在我的监督下根据图表进行连接。 这很好。 您还需要能够严格按照指示进行工作。

工作顺序(“从特殊到一般”)

这是一个难点。 您需要了解一个大项目(“制造机器人”)由小任务(“连接传感器”、“连接电机”...)组成,而这些任务又由更小的步骤组成(“找到一个机器人”)。程序,”“连接板。””,“下载固件”...)。 通过执行或多或少可以理解的较低级别的任务,我们“关闭”中层的任务,并由此形成总体结果。 我解释过,但我认为不会很快实现。 大概是在青春期的某个地方。

安装

钻孔、螺纹、螺钉、螺母、焊接和松香的气味——如果没有它们,我们会怎样? 孩子获得了“使用烙铁工作”的基本技能 - 他成功焊接了几个连接(我帮了一点忙,我不会隐藏它)。 不要忘记安全说明。

电脑工作

我为机器人编写了程序,但仍然取得了一些令人满意的结果。

第一:英语。 他们在学校刚刚开始学习,所以我们很难弄清楚 pishalka、migalka、yarkost 和其他音译是什么。 至少我们明白这一点。 我故意不使用母语英语单词,因为我们还没有达到这个水平。

第二:高效工作。 我们教授热键组合以及如何快速执行标准操作。 当我们编写程序时,我和儿子会定期交换位置,我说需要做什么(替换、搜索等)。 我不得不一遍又一遍地重复:“双击选择”、“按住Shift”、“按住Ctrl”等等。 这里的学习过程并不快,但我认为技能会逐渐沉积在“皮层下”。

隐藏文字可以说,上面的内容几乎是显而易见的。 但是,说实话,今年秋天我有机会在一所学校教九年级的计算机科学。 那太糟了。 学生不知道 Ctrl + Z、Ctrl + C 和 Ctrl + V、按住 Shift 的同时选择文本或双击单词等基本知识。 尽管事实上他们已经是学习计算机科学的第三年了……得出你自己的结论。

第三:盲打。 我把代码中的注释委托给孩子去敲(让他练习)。 我们立即正确地放置了双手,使手指逐渐记住了琴键的位置。

正如您所看到的,我们才刚刚开始。 我们将继续磨练我们的技能和知识;它们将对生活有用。

顺便说一句,关于未来……

进一步发展

机器人被制造出来,可以驱动、闪烁和发出蜂鸣声。 现在怎么办? 受到我们所取得成就的启发,我们计划进一步完善它。 有一个想法是制作一个遥控器——就像月球车一样。 坐在遥控器前控制在完全不同的地方行驶的机器人的运动会很有趣。 但这将是一个不同的故事......

最后,其实就是本文的英雄(视频点击):

在Arduino上创建第一个机器人的经验(机器人“猎人”)

谢谢你!

链接到代码

来源: habr.com

添加评论