你好
在本文中,我想描述组装第一个Arduino机器人的过程。 该材料将对像我这样的其他新手有用,他们希望进行某种“自驾车”。 本文是对工作阶段的描述,并补充了我对各种细微差别的补充。 本文末尾提供了指向所得代码的链接(很可能不是最理想的)。

我尽可能地让儿子(8岁)参与进来。 他到底发生了什么而没有发生什么-为此,我强调了文章的一部分,也许有人会派上用场。
机器人概述
首先,简单介绍一下机器人本身(
想法 )。 一开始我并不想真的收集一些典型的东西。 同时,这组组件非常标准-底盘,引擎,超声波传感器,线传感器,LED和高音扬声器。 首先,从“汤套”中发明了一种保护其领土的机器人。 他去了入侵者,后者越过了圆圈,然后回到了中心。 但是,在此版本中,需要画一条线,并需要额外的数学来不断地停留在圈子中。
因此,经过深思熟虑,我改变了主意,决定制造一个“猎人”机器人。 开始时,他绕着轴旋转,在附近选择了一个目标(人)。 如果发现“受害者”,则“猎人”会打开闪光灯和警报器,然后开始骑行。 当一个人离开/逃跑时,机器人会选择一个新目标并继续前进,依此类推。 这样的机器人不需要受限的圆周,并且可以在开放区域中工作。
如您所见,这非常类似于追赶游戏。 尽管最终机器人并没有足够快,但它确实与周围的人互动。 孩子们特别喜欢它(但是,有时候他们似乎要踩踏它,已经跳动了……)。 我认为这是推广技术设计的好方法。
机器人结构
因此,我们决定了这个主意,让我们继续进行
布局 。 元素列表由机器人应具备的能力构成。 一切在这里都很明显,因此请立即查看编号:

机器人的“大脑”-arduino uno(1)板; 是从中国订购的。 就我们的目的而言,这已经足够了(我们专注于使用的引脚数)。 我们从同一组中取出完成的底盘(2),在底盘上安装了两个驱动轮(3)和一个后部(自由旋转)(4)。 套件中还包括一个现成的电池仓(5)。 机器人的前部是超声波传感器(HC-SR04)(6),后部是引擎驱动器(L298N)(7),中间是LED闪光灯(8),侧面一点是高音扬声器(9)。
在构建阶段,我们看:
-使一切都适合
-保持平衡
-合理放置
部分地,我们的中国同事已经为我们做到了。 因此,沉重的电池仓位于中央,大约在其下方是驱动轮。 所有其他板都很轻巧,可以放在外围。
细微差别:
- 机架中的机箱上有很多工厂孔,但是其中有什么逻辑-我仍然没有弄清楚。 发动机和电池组没有问题地被固定,然后“装配”开始于钻一个新孔以固定一个或另一块板。
- 储藏室的黄铜架子和其他紧固件得到了相当大的救助(有时他们不得不下车)。
- 我将每个板子的轮胎穿过夹子(同样,我在储藏室中找到了轮胎)。 非常方便,所有电线都很漂亮,不会挂出。
个别块
现在,我将详细介绍各个方面。
电池仓显然,机器人必须具有良好的能源。 选项可能有所不同,我选择了4节AA电池。 它们总共提供约5 V的电压,并且该电压可以直接施加到arduino板的5V引脚上(绕过稳定器)。
当然,我有些警惕,但是这种解决方案是可行的。
由于到处都需要电源,为方便起见,我在机器人的中央制作了两个连接器:一个“分布”地面(右),第二个“ 5 V”(左)。
引擎和驱动程序首先,关于安装引擎。 该安装座是工厂制造的,但公差较大。 换句话说,引擎可以左右摆动几毫米。 对于我们的任务而言,这并不重要,但可以影响到某处(机器人将开始驶离)。 以防万一,我将引擎设置为严格平行并用胶水固定。

如前所述,为了控制引擎,使用了L298N驱动程序。 根据文档,他为每个发动机配备三个销钉:一个用于改变速度,另一个用于旋转方向。 有一点很重要。 事实证明,如果电源电压为5 V,则速度控制根本无法工作! 也就是说,要么根本不扭曲,要么最大程度地扭曲。 这是一个功能,由于这个原因,我“杀死”了两个晚上。 最后,我在其中一个论坛的某个地方找到了提及。
一般而言,转动机器人时我需要低转速-因此有一定的时间扫描空间。 但是,由于什么都没想到,所以我不得不以不同的方式来做:转弯-停止-转弯-停止等。同样,它不是那么优雅,而是有效的。
我还要在此补充说明,每次跟踪之后,机器人会选择一个随机的新转弯方向(顺时针或逆时针)。
超声波传感器
另一块铁,我不得不在其中寻找折衷的解决方案。 实际障碍物上的超声波传感器会给出不稳定的数字。 实际上,这是预料之中的。 理想情况下,它可以在具有光滑,平坦和垂直表面的比赛中使用,但是如果有人的腿在他前面“忽悠”,那么您需要引入其他处理方法。
通过这种处理,我将中
值滤波器设置为三个样本。 根据对真实孩子的测试(测试中没有一个孩子受伤!),结果足以对数据进行标准化。 这里的物理过程很简单:我们有从
必要的物体反射(给出所需的距离)并从更远的物体(例如墙壁)反射的信号。 第二个是45、46、230、46、46、45、45、310、46形式的测量中的随机爆发。
经过所有处理,我们得到了到最近物体的距离。 如果它小于某个阈值,那么我们将打开警报并直接转到“入侵者”。
闪光器和警笛也许是以上所有方面中最简单的元素。 可以在上面的照片中看到它们。 这里没有铁的任何内容,所以现在让我们继续进行
代码 。
管理程序
我看不到详细编写代码的目的,谁需要它-链接位于文章结尾,那里的所有内容都很可读。 但是总体结构很容易解释。
我必须了解的第一件事:机器人是实时设备。 更准确地说,请记住,因为以前,现在我仍然做电子产品。 这意味着我们立即忘记了我们喜欢在示例草图中使用的
delay()调用,它只是在指定的时间段内“冻结”了程序。 相反,如经验丰富的人士所建议,我们为每个块引入计时器。 已经过了所需的时间间隔-他们执行了操作(增加了LED的亮度,打开了引擎,等等)。
计时器可以互连。 因此,例如,高音扬声器与闪光灯同步工作。 这使程序更加容易。
自然地,我们将所有内容划分为单独的功能(闪光,声音,旋转,向前移动等)。 如果您不这样做,那么您将不了解来自何处或来自何处。
教育学的细微差别
上面描述的所有事情,我都是在晚上的业余时间里做的。 在休闲模式下,我在机器人上花了大约三个星期。 这可能已经结束,但我也答应过要告诉您有关与孩子一起工作的信息。 在这个年龄有什么可行的?
按照指示工作我们首先分别检查了每个细节-LED,高音扬声器,电机,传感器等。有大量现成的示例-有些直接在开发环境中,而另一些可以在Internet上找到。 这无疑是令人愉快的。 我们获取代码,连接零件,确保其正常工作,然后我们已经开始为我们的任务进行更改。 根据计划,在我的一些控制下,孩子使自己成为了人际关系。 很好 您必须能够按照说明进行清晰的工作。
工作顺序(“从私人到一般”)这是一个难点。 有必要教导说,大型项目(“制造机器人”)由小任务(“连接传感器”,“连接电动机” ...)组成,而这些任务又由更小的步骤组成(“查找程序”,“连接板“,”下载固件“ ...)。 执行或多或少可以理解的下层任务,我们“关闭”中层任务,总体结果已经由它们组成。 他解释说,但是,我认为意识不会很快到来。 大概到青春期。
安装方式钻孔,螺纹,螺钉,螺母,焊接和松香的味道-没有松香的地方。 这个孩子获得了“用烙铁工作”的基本技能-我设法焊接了多个接头(我做了一点帮助,我不会躲起来)。 不要忘记安全说明。
电脑工作我为机器人编写了一个程序,但是我设法获得了一些相关的结果。
第一:英语。 它只是从学校开始的,所以我们“吱吱作响”整理出pishalka,migalka,yarkost和其他翻译是什么。 我们至少了解这一点。 我故意不使用我的母语英语单词,因为我们还没有达到这个水平。
第二:有效工作。 他们教热键组合如何快速执行典型操作。 定期地,当他们编写程序时,我们和儿子一起换了地方,我说了需要做的事情(更换,搜索等)。 我不得不一次又一次地重复:“双击”,“按住Shift”,“按住Ctrl”等等。 这里的学习过程并不很快,但是,我认为,这些技能将逐渐被搁置。
隐藏文字您可以说以上内容几乎是显而易见的。 但是,老实说,今年秋天,我有机会在同一所学校读9年级的计算机科学。 这太恐怖了。 学生不了解Ctrl + Z,Ctrl + C和Ctrl + V,使用Shift键按住或双击一个单词进行文本选择等基本知识。 尽管事实上他们是计算机科学专业的三年级学生,但自己得出一个结论。
第三:触摸打字。 我将代码中的注释委托给打字的孩子(让他练习)。 立即用右手,使手指逐渐记住按键的位置。
如您所见,我们仍然才刚刚开始。 我们将进一步磨练我们的技能和知识,并将在生活中派上用场。
顺便说一下,关于前景...
进一步发展
机器人被制成,骑行,眨眼并发出吱吱声。 现在怎么办 受已取得成就的启发,我们计划进一步完善它。 有一种制作遥控器的想法-例如月球车。 坐在条件控制台上来控制机器人在完全不同的地方移动的运动会很有趣。 但这将是一个不同的故事...
最后,事实上,本文的英雄(点击视频):

感谢您的关注!
→
链接到代码