6426| 1
|
[入门教程] 基于microbit的自制机械臂 | 开源机器人——“搬呀” |
本帖最后由 Mr Guo 于 2021-7-29 23:49 编辑 #项目起源# 2020年在杭州湾举办的第八届STEAM教育大会上公布了虚谷计划开源机器人项目,下图为旺仔爸爸参与的开源机器人圆桌论坛活动 本次大会中旺仔爸爸制作的可编程开源机器人有幸在现场参与了展示 会议结束后,旺仔爸爸就制作了开源机器人“冲鸭”和“飞呀”两个版本,关于两个版本的详细介绍可以点击链接查看 本次我们继续分享一个开源机器人的项目,作为“冲鸭”和“飞呀”的同胞兄弟,这次我给它起名为“搬呀”(此项目在21年的1月份完成,但一直没来及写教程,最初的名字是搬砖呀,后来受雷宇激光陈典满老师的启发改名搬呀,感谢陈老师) 我们先通过视频来了解一下“搬呀”与“冲鸭”、“飞呀”有何不同 #视频展示# #方案介绍# 从视频中我们知道,与“冲鸭”、“飞呀”这类型攻击型机器人不同的是,“搬呀”是一个拥有机械手臂实现搬运功能的机器人,这也是名字“搬呀”的由来 实现搬运的功能,常见的方法是使用机械抓来抓取,而我们本次分享的是另外一种吸盘式搬运机器人,使用气泵 将吸盘与物体之间的空气抽去,形成真空,在大气压的作用下将物体吸附起来 本次“搬呀”使用的是一款微型气泵,它的控制方式非常的简单,只需要普通的直流电机驱动即可工作,气泵与吸盘如下图所示 解决了比较关键的抓取问题,接下来我们需要将吸盘安装在可以伸缩的机械臂中实现自由抓取物体 这次我们使用了一个国外开源的机械臂图纸(感谢前辈的贡献),为了保证舵机的流畅运行,避免出现堵转卡顿情况,我们使用了一款DFRobot出品的离合舵机,舵机如下图所示 这款离合舵机内部没有限位,可以360°旋转(仅限于手动旋转),不会存在卡死问题,同时舵机的功率极小,用普通的电池或者USB供电,就能使其流畅运作,当舵机在正常运行期间有外力改变其角度时, 通过离合功能舵机能自动复位并继续工作,弥补了普通舵机在运作期间受外力改变角度容易损坏的缺点。 有了离合舵机的加入,保障了“搬呀”稳定运行 与“冲鸭”、“飞呀”相同的是,“搬呀”也是一辆可以行走的小车,只不过是将可搬运的机械臂安装在了车体上 既然是车体,驱动车轮行驶的电机驱动自然少不了,保证一辆小车正常行驶至少需要两路电机驱动,再加气泵的一路电机驱动,也就是说本次作品至少需要三路电机驱动,于是我们决定采用一款板载4路电机驱动和8路舵机端口的micro:bit扩展板作为“搬呀”的控制器,扩展板如下图所示 关于此次“搬呀”制作方案的其余部分沿用了“冲鸭”的方法,这里就不重复介绍了,我们通过下面的制作过程详细了解 #设计制作# 先来看一下制作“搬呀”都用到了哪些器材 #硬件清单# Micro:bit*1 Micro:bit扩展板*1 TT直流减速电机*2 微型气泵*1 180°离合舵机*2 2.4G遥控手柄*1 2.4G接收器*1 吸盘*1 软管*1(3mm*5mm*1000mm) 3.7V锂电池*1 充放电模块*1 充电接口*1 轮胎*2 万向轮*1 导线、五金件若干 椴木板*1(400mm*600mm) #图纸设计# 我们使用LaserMaker制图软件设计图纸,为了使开源机器人家族的外观尽可能保持一致,“搬呀”沿用了“冲鸭”、“飞呀”的造型,不同的是将原来用来击打的手臂换成了有灵活自由度的机械臂,图纸如下 下面是切割完成后的实物 #电路设计# 图纸设计并加工完成后,我们按照下面的接线图搭建电路,两个TT直流减速电机连接Micro:bit扩展板的M1和M2电机端口,作为行驶电机;微型气泵连接M3电机端口;两路舵机连接Micro:bit扩展板的S1和S2舵机端口;2.4G接收器的DAT、CMD、CS、CLK分别连接Micro:bit扩展板的P0、P1、P2、P8引脚,接线示意图如下 另外我们还需要制作一个锂电池的充放电电路,这里使用了一个充放电模块,模块的充电电压4.5-8V,输出电压可调范围是4.3-27V,此次使用的扩展的输入电压范围是3.5-5.5V,注意不要超过5.5V,接线图如下 #组装# 电路搭建完成后,接着我们就可以开始组装了 第一步,将两个TT直流减速电机和一个万向轮安装在底盘中 为了让固定TT直流减速电机的竖板更加牢固可以在底部使用插销加固 第二步,使用3mm直径的铜柱、螺丝、螺母将Micro:bit扩展板和2.4G接收器安装在上顶板中 第三步,用扎带将微型气泵固定在上顶板的背面,连接电机的导线从圆孔中穿出 第四步,将机械臂按照下图的样子组装完成(这里考虑到篇幅的原因就不详细介绍机械的组装步骤了),值得注意的是,两个舵机的初始角度不同,安装时需要将其调整在合适的位置,所以在安装之前最好先上电复位一下,具体的操作方法可以在程序设计章节查看 随后,将吸盘安装在机械臂的前端 接着,将机械臂安装在上顶板中,在背部用四颗螺丝固定,再将软管与微型气泵连接,细节如下图 第五步,在上顶板和下面的底盘中间安装四颗尼龙柱以及前后左右的竖板,然后用螺丝、螺母固定 最后将两个轮胎安装在TT直流减速电机上,“搬呀”就组装完成了 来看一下它的靓照吧 组装完成,我们开始编写程序 #程序设计# 本次程序编写,我们使用Mind+图形化编程环境,打开软件,点击左下角的扩展,在主控板一栏选择Micro:bit主控 在扩展板一栏选择Micro:bit电机舵机专用扩展板 在通信模块一栏选择PS2手柄 上述模块加载完毕后,我们选择对应的串口就可以开始编写程序了 遥控程序 首先,我们来编写“搬呀”的2.4G手柄遥控的程序,2.4G手柄在程序中的名字叫PS2手柄,它其实是SONY公司很早之前的一款游戏手柄,业余玩家搞定了通讯协议后用来遥控玩具,于是就沿用了原来名字。我们在使用PS2手柄时需要对接收器连接主控的引脚初始化,接着在程序中设置不间断的循环检测PS2手柄的“三角形键”有没有被按住,如果被按住在串口监视器中打印字符串“hello”,程序如下图,下载运行后会在右侧串口监视器中看到结果 通过上述程序,我们已经学会了PS2手柄和控制器的通信方法了,其实PS2手柄中除了可以使用“三角形键”以外,下图中列出的键都可以供我们使用 每个键都有四种状态供我们选择,我们可以根据需求选择不同的按键及状态来完成丰富的功能 有的小伙伴会问上面我们只是介绍了PS2手柄中按键的用法,PS2手柄中的两个摇杆如何使用呢?摇杆的用法也非常的简单,我们将前面的程序进行修改,如下图 程序下载并运行后会在串口监视器中看到如下图的结果,当我们向右推动右边的摇杆时,串口监视器中的数值会逐渐增大到最大值255;当我们向左推动右边的摇杆时,串口监视器中的数值会逐渐减小到最小值0,而我们手松开后,摇杆会回到中位,这时候的数值为128 对应的,我们也可以向上或向下推动摇杆,这时候的数值范围也在0-255之间变化,我们可以通过下面的示意图更加直观的了解 掌握了PS2手柄按键和摇杆的编程方法,我们就可以使用PS2手柄来控制“搬呀”了,比如我们可以编写下面的程序 程序下载后,当我们按下PS2手柄的“三角形键”时,“搬呀”会向前直行,当我们松开“三角形键”时,“搬呀”停止前进,在程序中我们增加了前进“forward”、停止“stop”的函数,并且在前进的同时还会在Micro:bit的点阵屏中显示向上的箭头 既然我们可以使用PS2手柄的按键控制“搬呀”前进,那么我们也可以使用摇杆控制“搬呀”,我们继续修改程序,将检测按键是否按下的程序修改为检测“左侧Y值”<110,如果<110也就是向上推动左边的摇杆,“搬呀”前进,否则电机停止。另外程序中有一点不同的是我们设置了一个速度“speed”变量,这样只需要改动这个变量的数值就可以更改速度的数值了 现在,我们已经可以使用PS2手柄控制“搬呀”前进了,那么后退、左转、右转应该也不是什么难事,不过在继续编程之前,我们还需要了解一下“搬呀”的左右电机、舵机以及气泵的安装位置,这样有助于我们调试程序 根据上述方法,我们编写剩下的几个控制函数,程序如下图 接着,我们再封装一个遥控的函数,作用是将几个前后左右运动的函数串联起来 我们只需要在主循环中调用封装好的“遥控”函数就可以实现PS2手柄遥控“搬呀”任意方向移动了 遥控“搬呀”的程序实现后,下面我们学习微型气泵的使用方法 微型气泵程序 根据前面提到的电机、舵机、气泵位置示意图,我们知道微型气泵连接的是M3号电机接口 知道接口后,可以编写下面的程序,当PS2手柄“左侧1”键按下时,M3电机启动,也就是微型气泵开始工作,按键松开后微型气泵停止工作 “左侧1”按键位于PS2手柄的左前方,每个按键的位置可以参考下图 有的小伙伴会有疑问了,如果要抓取物体是不是要一直按照“左侧1”这个按键,那岂不是非常不方便,确实如此,于是我们继续修改程序,这时我们在程序中增加了一个“count”变量用来计数,当“左侧1”按键每按下一次(注意这里的状态是按下不是按住),“count”变量加1,然后判断“count”变量除以2后的余数的奇偶性来决定微型气泵是否工作,这样就可以实现按键按下一次后微型气泵开始工作,再按一次后微型气泵停止工作 微型气泵的函数设置完成后,接着可以在主循环中调用了 到现在为止,“搬呀”已经具备了灵活遥控和抓取的功能,只不过具有抓取功能的吸盘还不能靠机械臂来控制它,接下来最后一步就是机械臂的编程方法了 机械臂程序 本次“搬呀”的作品,我们使用了两个离合舵机,一个舵机负责机械臂的上下升降运动,一个舵机负责机械臂的前后运动 经过测试,我们得知左侧的舵机S1实现机械臂前后运动,右侧的舵机S2实现机械臂上下升降 我们编写如下程序对舵机进行测试,程序中设置左侧“方向上、下键”控制左侧舵机动作,右侧“三角键”和“X键”控制右侧舵机动作 经过测试,我们发现左侧舵机的行程区间在110°-35°(110°最近35°最远),右侧舵机的行程区间10°-75°(10°最高75°最低),根据下面的表格可以详细了解 知道了舵机的行程范围,我们修改程序 程序中,我们增加了舵机行程范围的边界条件以及在Micro:bit点阵屏中的指示内容 至此为止,“搬呀”的所有功能都已实现,我们来看全部程序,由于篇幅原因,部分在前面介绍过的程序这里做了折叠处理 #总结# 这次我们通过“搬呀”的作品掌握了微型气泵的工作原理,知道了使用舵机控制机械臂的巧妙方法,掌握了遥控小车的运动编程方法 当然还有很多改进的地方,比如机械臂的负载能力有限,需要更换负载能力更强大舵机,扩展板只支持小功率的电机,在抓取大型物体时需要更换更大功率的电机驱动扩展板来完成任务 总之,让我们在不断的优化、迭代的过程中提高自己,保持终身学习的能力,造物让生活更美好,我们下期再见 更多精彩内容欢迎关注旺仔爸爸公众号 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed