×

Arduino清洁机器人和房间映射

消耗积分:0 | 格式:zip | 大小:0.27 MB | 2022-10-31

刘杰

分享资料个

描述

这个项目将指导你从头到尾构建这个机器人,如果不够详细,请给我留言,我有空时会更新项目。

制造这辆车后你将学到什么:

- 步进电机的工作原理以及如何在没有库的情况下手动向步进电机发送信号。

- 如何同时旋转多个步进电机。

- 将 arduino 数字引脚分配扩展到无限制的引脚数 :)

- 在 c++ 中使用类和指针的一些技术。

第 1 部分:组装车身

这辆车的设计很简单,如果你有一台 3d 打印机,那么你可以分开打印部件(这是在 220x220 3d 打印上打印的设计),如果你没有,你可以用丙烯酸树脂和手工工具制造它.

组装车轮:

poYBAGNY3vOABT6jAACKusAZHCc111.png
 

车轮尺寸为 40 毫米,您应该购买一些具有橡胶的相同直径的车轮,取出橡胶并组装到该车轮上,或者您可以使用该车轮进行一些修改以适应汽车。

组装垃圾箱:

垃圾箱到地面的距离约为 5 毫米,我建议你购买硅胶来连接底部垃圾,比如这个:

组装清洁棒:

只需在杆上钻孔并使用 502 胶水,如果您有 3D 打印机,则更容易。

pYYBAGNY3vmAK0vJAAD8HvnmvBQ183.png
 

可选:这辆车被设计为使用传感器,但如果你想使用物理切换图片中红色的工艺添加项目,

pYYBAGNY3vyAIqm5AACNyY9dw3o028.png
 

第 2 部分:电气接线

这是电气设计:https://oshwlab.com/tungbuivn/home-cleaner-bot

印刷电路板:

pYYBAGNY3v6AE0-7AAE463SqCvE400.png
 

组件和说明

工作原理:电源通过二极管和 uln2003 为步进电机提供电源,所有其他电源将通过 lm2596 为其余电气元件提供 5v。

成分及原因

为什么要使用步进电机?是的,使用步进电机将使您能够以您想要的准确角度控制汽车旋转轮,距离相同,您可以准确地移动汽车。但正如您在上面的短视频中看到的那样,速度很慢,28byj-48 的最大转速为 15rpm,视频中的速度为 7rpm。

lm2596:我用这个代替lm7805,因为如果你将传感器连接到endstop,电路会消耗更多的电量,lm7805会很快变热,无论它以500ma运行,但lm7805比lm2596更稳定,使用lm7805或lm2596取决于你的决定:)

原理图中的每个uln2003都有空闲的3pin,为什么不使用呢?是的,你可以试着给它接线,但我的,似乎 uln 2003 不能提供足够的功率来驱动电机。

传感器终点站设计为使用 IR-LED 和光电二极管,但您可以将 LDR 与激光灯一起使用,或者您认为它应该工作的任何东西。您可以搜索 hackster 以查找有关使用 IR-LED 和光电二极管的更多信息

Arduino 引脚连接

D2-D7:这将连接到 SRF05 传感器,这是汽车的眼睛。

D9 (PE1) : 送高电平信号给传感器供电,送低电平切断

A0-A3 (E1,E2,E3,E4):end-stop 的信号将发送到此引脚以通知 end-stop 状态。

D11-D13:此引脚用于控制 74HC795

头针连接

CN9:这是电源12V

CN10,CN11,CN12 用于连接 SRF05 或 SRF04 传感器

CNE1,CNE2,CNE3,CNE4 用于连接步进电机的末端停止

CN13 用于连接直流 5v 电机进行清洁工作

CN1、CN2、CN3、CN4、CN5、CN6、CN7、CN8 用于连接步进电机。

铣削PCB

pcb 设计为 2 层,但您可以用 1 层铣削它并将连接线焊接到另一侧。

如果您选择在孔 PCB 上焊接,它会更大更复杂:)

第 3 部分:编写代码来控制汽车

应用结构:

我们的主要汽车对象将包含几个子类,包括:

Driver Engine:将包含驱动汽车的代码,driver 将包含所有的车轮和眼睛,它将处理旋转和移动,例如:如果您想像现实世界的汽车一样移动汽车,那么您将实现 driver 来控制车轮。该对象还包含车轮归位位置的代码。在我的源代码中,我实现了全轮驱动引擎,如果你想控制真车,你需要实现其他类的前轮或后轮,但它更难,你需要一些知识汽车转向计算用于驱动汽车的每个车轮的旋转角度。

眼部经理:这辆车有三只眼睛,所以我们需要控制我们当时想用哪只眼睛,需要决定下一步要去哪里。

A:清洁机器人

我们的机器人会从 zizac 线开始打扫房间,在线结束后它会找到向左移动的路,如果找不到路则清洁完成。如果它可以左转,那么它将设置下一个目标方向为右并重新启动循环清洁。这很简单,对吧?:D

B:映射机器人

这还没有实现,但如果你想做一个,这里有一些建议。

我们知道的第一件事是:

在您打开汽车时,它的位置将是 (x,y)=(0,0) 并且无论汽车移动或左转或右转,您总是有它移动的距离和旋转角度,即意味着您始终拥有汽车的坐标,因此,我们拥有我们称之为 FreePoints 的积分集合

任何汽车改变它的方向,这意味着我们将计算前方的坐标,阻止汽车移动,所以我们有第二组点,我们称之为 WallPoints。

从上面的两组数据中,您将使用 delaunay 算法从 FreePoints 和 WallPoints 构建房间的平面,因此理论上,您可以随时将汽车从任何点移动到任何目的地点。

如果您已经拥有房间地图,您将需要参考一些寻路算法(例如 NPC 可以在游戏中从 A 移动到 B :))来控制汽车。

这是一些参考代码,它很小

https://github.com/mapbox/delaunator

 


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !