8550| 8
|
[项目] 旧物改造 | 创客奶爸带你制作遛娃神器 |
#设计灵感 有一天旺仔的奶奶带孩子去外面玩耍,碰到一起玩耍的小伙伴骑着小车子出来玩了,旺仔特别想要骑一下人家小盆友的车子,于是对方奶奶就让旺仔骑了,但旺仔一骑不要紧,万般不肯下来,我们家也有一辆这样的车子,是用手推的,旺仔爸爸就萌生了一种想法,改装一下车子,让小朋友喜欢玩,让奶奶不用推着走,于是就有了今天的作品 先来看一下演示视频: #方案确定#本次作品实现的主要目的是让小车子变成电动的,能够遥控,甚至可以随手拿出手机来操控,用一个电机带动车子前进后退,使用一个舵机控制车子左右转向 要给小车子加持电动功能的话,必须加入执行器电机,电机的选型尤为关键,并且要载人的话,就不能用很普通的电机了,于是在某宝淘了儿童踏板车的735电机 电机确定了之后就是如何选择电机驱动的问题了,735电机是有刷直流电机,最简单最直接的方法是用一个有刷直流电调驱动电机,通过车模或航模的遥控器给接收器发送数据从而控制车子行驶,然后还可以再增加一个舵机控制转向,这个方案显然是没有问题的,因为已经有很多这样成熟的案例可以借鉴了,尤其是在格斗机器人界内,这种玩法很普遍,之前旺仔爸爸参加过一次2kg级别的格斗机器人赛事,所以电装部分可以直接拿来使用 除此之外,还有没有其他方案了呢,肯定是有的,如果第一套方案算作是一个非编程版本的话,那么我们还可以做一个可编程版本的方案,实现的思路有两种,利用Arduino uno控制器结合2.4g遥控手柄来控制车子行驶或转向,第二种思路是利用esp32类型的可联网主控,通过手机与主控wifi或蓝牙连接从而达到无线通信遥控车子的目的,听起来是一种高大上的方式,旺仔爸爸丝毫没有犹豫就决定使用esp32作为可编程版本的主控,接下来本文通过两种改造方案来介绍此次的作品“溜娃神器” #拆解#不管是哪一种方案,第一步首先要做的就是对小车子进行拆解 可编程和非编程的版本的共同之处就是行驶电机和转向舵机部分了,于是我们先从电机改造安装说起 如何安装和固定电机,并且能够驱动轮子转起来,是比较关键的地方 从下图中可以看出旺仔爸爸的解决方案 通过3D打印的轴套将法兰与轮子固定,将16齿同步轮安装在735电机轴上,通过同步带带动光轴上的80齿同步轮做减速运动 用3D建模软件设计的轴套如下图所示 设计完成之后进行切片打印 下面为打印完成后的效果 紧接着将轴套安装在轮子上,利用电钻开3mm的圆孔,并用螺丝固定 接着安装法兰和菱形的带座轴承 使用3mm的自攻螺丝将法兰与3D打印的联轴器固定,带座轴承通过4mm的螺丝和螺母固定在车体上 下面一步,我们需要安装电机,以及传动部件,下图为2GT5mm的同步带和16齿、80齿的同步轮 735电机使用下图的直角固定件固定在车子底盘上 执行器电机和行驶轮子改装后的最终样子如下图所示 行驶电机改造好后,接下来介绍转向舵机,本次作品采用的是一款DFrobot出品的270度金属数字舵机,工作电压4.8-7.2V,负载15Kg,作为小车的转向舵机足够了 有了舵机后,我们还需要1个舵臂和1个球头拉杆控制车子转向 舵机安装效果如下 转向部分的舵臂和球头拉杆安装如下 两个版本通用的电机部分和舵机部分改造好后,我们来分别了解每个版本是如何实现其他功能的 #非编程版本电装#下面是非编程版本用到的电装清单 735直流电机*1 15kg270度金属舵机*1 有刷电机电调*1 富斯遥控器*1 富斯接收器*1 3s1800mah锂电池*1 舵机转接板*1 船型开关*1 五金件,导线,电源接头若干 富斯FS-i6 2.4G10通道遥控器 电路接线如下图所示,电源采用1800mah3s的锂电池,行驶电机的有刷电调连接接收器的2号通道,舵机连接接收机的4号通道,这里使用了一块专用的扩展板为舵机供电 接线完成后的效果如下图所示(舵机的图片漏拍了) 为了使用方便,在车体外壳上开孔安装了开关 最后我们来测试一下非编程版本的效果如何 #可编程版本# 下面我们来了解可编程版本是如何实现功能的 首先我们来认识一下都用到了哪些电子硬件 主控我们选择的是esp32,使用它的wifi或蓝牙无线通信功能,随时随地拿出手机来操控车子,这样让我们的作品档次提升了不少 esp32的详细介绍可以点击下方连接了解 接着就是比较关键的行驶电机驱动,要承载一个小朋友的重量,电机驱动的工作电流一定要够大,为此我们选择了下面一款直流电机驱动,工作电压12-36V,工作电流12A(无散热)-20A(有散热) 直流电机驱动板有3个控制引脚,2个引脚控制方向,1个引脚控制速度,有5v电源输出,下面两图为引脚的功能介绍和具体使用方法 直流电机驱动的详细介绍可以点击下方连接了解 最后旺仔爸爸给车子附加了音乐功能和灯光功能,实现音乐功能使用了DFPlayer Mini mp3模块(需要自备一个micro sd卡),这个模块小巧且功能强大,直接使用串口控制,模块可以直接驱动一个8欧0.5w的喇叭 下图为MP3模块引脚的具体使用方法 mp3模块的详细介绍可以参考下面网址 灯光功能则使用了ws2812灯带 所有电子清单如下图所示,使用了一块大功率的转接板为舵机供电,主控esp32使用了一块扩展板方便接线,执行器电机还是使用的735电机 下面是编程版本的接线图 为了方便安装电子件设计了飞机造型的底板,同时兼做小朋友的脚踏板,设计图纸如下图所示 下面是利用激光切割机加工3mm椴木板的实物图 电路接线完成后效果如下图 打孔布线安装ws2812灯带为车子增加灯光功能 和非编程版本一样电源部分同样采用了1800mah3s锂电池,专门设计了电池外壳与飞机底板链接 组装完成后的最终效果展示 #程序设计# 程序设计主要涉及到两部分,一部分为blynk移动端的遥控组件设置,另一部分为esp32主控端的程序编写,我们先来对移动端的blynk进行设置 blynk设置第一步登陆账号,如果是第一次使用需要先进行注册,如下图所示“Login”为登陆,Create New Account ”为注册 输入账号密码进行登陆 登陆成功后,点击“New Project”上面的+号新建项目 接着选择主控为ESP32 Dev Board 点击“CONNECTION TYPE”选择连接方式 本次任务,我们可以选择wifi和蓝牙两种方式,在操控响应速度方面蓝牙模式会更快一点,基本没有延迟,旺仔爸爸以蓝牙方式进行讲解,这里我们选择“BLE”模式 选择完成后,点击“Create Project”按钮,会询问是否向邮箱发送一封包含授权码的邮件,点击OK即可创建项目并收到这份邮件,当然你也可以在项目中找到该授权码,这个授权码是blynk移动端与ESP32控制板蓝牙连接的关键,在编程时会使用到 点击右上角的六边形可以进入项目设置界面,在最下方也可以看到授权码的信息,如下图所示 APP向左滑动可以添加组件,组件列表如下图所示,我们本次需要使用1个按键“Button”、2个“Styled Button”按键、2个摇杆“Joystick”以及1个蓝牙“BLE”组件 加载好的组件,如下图所示 我们把它横过来看,方便讲解,这样也是操控时的姿势,由于blynk还没有横屏的功能,所以有些字看着有些别扭,不过这丝毫不影响我们使用 为什么要用两个摇杆呢,是为了控制方便,我们用左边的摇杆控制前进、后退,用右边的摇杆控制转向,左边的摇杆设置为虚拟引脚v0和v1,右边的摇杆设置为虚拟引脚v2和v3,设置过程如下图所示 V2引脚控制舵机的旋转角度,由舵机控制车子转向 V0引脚控制前后方向 经过测试,V2控制转向的虚拟引脚的数值范围设置为60-120,可以控制车子左右灵活转向,V0虚拟引脚用来控制速度,数值范围设置为0-160时可以提供负载一个小朋友的动力 接着我们需要设置两种按键“Button”和“Styled Button”,这里为什么是两种按键呢,其实原理都是一样的, 都能实现我们想要的功能,只不过为了好看,美观,旺仔爸爸选择了不同的按键 3个按键分别为V4、V5和V6虚拟引脚,左边为V5,右边为V4,两个摇杆的中间为V6引脚,细心的伙伴应该会看出,有些按键设置的模式不同,没错,按键设置有“PUSH”“SWITCH”两种模式可选 V4虚拟引脚用来鸣笛,设置为“PUSH”模式,按一下播放一次鸣笛和灯带闪烁的效果,不按就复位 V5虚拟用来控制是否播放歌曲,设置为“SWITCH”模式,按一下锁定开始播放,再按一下停止播放 V6虚拟用来控制灯光,设置为“SWITCH”模式,按一下锁定亮灯模式,再按一下停止亮灯 最后还剩一个蓝牙模块需要设置一下准备工作就完成了,点击蓝牙模块会看到如下图所示的界面,接着点击“Connect BLE Device” 选择搜寻到的蓝牙名称,这里的名称是在程序里设定好的,找到你自己设定的名字即可,之后点击“ok”,等待连接成功 最后我们点击右上角的“三角”形就可以用运行这个程序了 blynk移动端的组件设置完成后,接着我们来编写esp32主控端的程序 本次项目的程序实现可以选择的编程环境有mind+,mixly,arduino 由于mind+编程环境esp32板卡下不支持blynk,arduino ide对于大多数人来说还是比较晦涩难懂,所以本次的程序设计旺仔爸爸采用mixly编程环境 mixly程序设计第一步,我们先来了解Blynk的编程方法,打开mixly编程软件,右下角板卡选择arduino esp32,左侧模块栏中选择“网络”中的“Blynk物联网”,将本次需要用到的“Blynk BLE链接方式”模块拖至右侧程序编写区域,接着对“Blynk授权码”和“BLE 名称”进行修改,这里的授权码像钥匙一样,需要和“Blynk”移动端的保持一致 对“Blynk”设置好后,接着我们尝试来做一些小任务 比如,我们可以从左侧“网络”模块里“Blynk物联网”中选择“从App获取数据...”,本次项目用到最多的也就是这个模块了,我们掌握一个简单的应用后其他的基本上就全部理解了 我们可以尝试编写如下程序,当V4虚拟引脚接收到数据时会执行3件事情,先让串口在串口监视器中打印接收到的数据,这样会方便我们调试,第二步让MP3模块播放第4首歌曲,最后执行一个名叫“眨眼睛2”的自定义函数,如果不纠结MP3模块和自定义函数的话,这里的程序其实很好理解 MP3和灯带程序 那么MP3模块是怎么做到播放歌曲的呢,需不需要做哪些准备工作,显然是需要的 我们需要在左侧模块栏“执行器”中选择对MP3进行初始化程序块,这里旺仔爸爸要感谢一下裘炯涛老师,因为本来最新的mixly版本中,esp32还不支持Mini MP3模块,是裘老师特意帮忙制作了图形化库才让旺仔爸爸能够使用MP3模块,在调试blynk移动端的程序时裘老师也给旺仔爸爸提供了很大的帮助,特别感谢裘老师的支持,为裘老师对blynk生态做出的突出贡献点赞,裘老师也是一位奶爸,这个小车也可以给他们家宝宝玩哈 具体初始化的程序如下图所示,这里的MP3模块与esp32之间使用的是软串口通信的方式,注意接线时MP3模块和esp32需要交叉接线,也就是RX-TX,TX-RX 细心的伙伴肯定会有疑问,第几首歌曲是怎么回事呢,需要怎么设置,这个问题问的非常好,MP3模块全名叫DFPlayer Mini MP3模块,此模块是可以插一个micro sd卡的,我们要播放的歌曲放在这个sd卡中,MP3模块可以读取大部分格式的音频文件,但歌曲文件设置时歌曲需要按照“0001”这样的数字编号命名,并将所有歌曲放置在sd卡中文件名为mp3的文件中,这些准备工作设置好后就可以愉快的使用了,程序中的第4首歌曲为鸣笛的声音,初始化程序中播放的第5首歌曲为汽车启动的声音,另外需要注意的一点是,MP3模块播放歌曲的程序最好不要放在循环里一直执行,这样需要增加等待时间才能听到歌曲,可以放在某个函数中,满足条件执行就可以了 接着我们来探究“眨眼睛2”的自定义函数,眨眼睛其实就是对WS2812灯带的控制,程序如下图所示 上面的程序看不懂也没关系,我们来看一个最简单的例子,通过下面的程序我们可以让一串有16颗灯珠的灯带全部亮红色 控制灯带的程序块在左侧模块的“执行器”中选择 当然初始化程序也是必须要有的,如下图所示 如果把颜色改成黑色,呈现的效果就是熄灭所有灯珠 除了可以使用已经内置好的颜色以外,我们还可以通过RGB的色值来调色,理论上有256*256*256那么多种颜色,程序中还可以加入灯带的延时显示的时间让灯带有流水的效果 理解了简单的例子后,我们回过头再来看“眨眼睛2”的自定义函数就很容易理解了,从前面的讲述中我们可以知道,当V4虚拟引脚接收到数据时,也就是“Blynk”移动端V4这个按键被按下时,会发出鸣笛的声音,同时让灯带展示眨眼睛的效果,此时的自定义函数“眨眼睛2”就是让灯带亮白灯,并且有“忽闪忽闪”的效果,怎么样才能有“忽闪忽闪”的眨眼睛的效果呢,那就需要对灯带的亮度进行调节了,所以程序中先让灯带亮白色,并且亮度是由1-100逐渐变亮的,接着亮度再由100-1逐渐变暗,最后熄灭,这样渐渐变亮再渐渐变暗的过程重复执行了3次 自定义函数“眨眼睛2”掌握后,我们还有另外一个“眨眼睛”的自定义函数,原理是一样的,只不过灯带亮的是红色,一起来看一下“眨眼睛”的自定义函数程序 “眨眼睛”自定义函数理解了后其他的灯带程序就简单多了,比如下面的程序是检测V6虚拟引脚为“1”也就是ON时就亮白色的灯,相当于汽车晚上开的灯光,相反为“0”时也就是OFF时就灭灯 通过上述对ws2812灯带和MP3模块的介绍,相信大家对于丰富多样的灯带显示效果和MP3播放会有很多想法,期待大家去实现自己的想法哦 灯带和MP3的程序讲解我们就告一段落,接下来我们了解舵机的转向程序 舵机转向程序使用V2虚拟引脚来控制舵机转向,我们需要在左侧模块栏“执行器”中找到控制舵机的程序块 接着可以尝试编写如下程序,当V2虚拟引脚接收到移动端发来的数据后做2件事情,第一件是通过串口监视器打印接收到的数据,第二件事情是让舵机以接收到的数据旋转至相应角度 为了车子能够正确的转向,经过测试,舵机的角度设置范围在60-120度之间比较合适,默认状态为90度,也就是默认直行,角度在91-120之间为左转,同时灯带执行左转向的程序,角度在60-89之间为右转,同时灯带执行右转向的程序,需要注意的是舵机安装在车子底盘上,测试时需要将车子反过来,在设置左转还是右转的角度时要以车子正面朝上的方式调节哦,防止调节反了,改进后的程序如下图所示 上述程序中涉及到了两个自定义函数,分别是“左转向”和“右转向”,下面我们对这两个自定义函数展开介绍一下,和之前的灯带显示程序类似,我们把16颗灯珠分成了左边8颗和右边8颗,我们以驾驶人坐在小车上的角度定义,左边的8颗灯珠编号为1-8,右边的8颗灯珠编号为9-16 当车子需要左转时就控制左边8颗闪烁起到示意转向的作用,这里对于灯带转向的效果参考了奥迪车转向灯的设计,呈现出了一种由里向外的流水效果 下面是“右转向”的自定义函数,与“左转向”的函数类似,只是灯的编号不同 前进后退程序 转向程序掌握后,我们来了解让车子前进后退的程序,车子的前进后退由V0虚拟引脚控制,程序分成3种情况处理,分别是前进“forward”,后退“backward”和停止“stop”,V0虚拟引脚的数值范围是0-100,当数值等于0时车子停止不动,也就是执行“stop”自定义函数,当数值大于51时执行前进“forward”自定义函数,当数值小于49时执行后退“backward”自定义函数 为了让车子能够调速,我们使用了大功率的电机驱动板,控制车子前进后退和调速的方式也很简单,两个数字管脚的高低电平变化控制电机正转和反转,从而让车子前进和后退,一个模拟管脚来调速,为了保证车子的安全性,我们让车子的速度不超过80 后退 前进 停止 通过下面的动图来看一下上述程序的测试效果 最后是音乐播放的程序,我们使用V5虚拟引脚的状态来控制是否播放音乐,当V5虚拟引脚的数值为“1”,也就是ON时,开始随机播放音乐并且执行“向内流水”的自定义函数,当V5虚拟引脚的数值为“0”,也就是OFF时停止播放音乐 有的伙伴会问有“向内流水”肯定会有“向外流水”吧,确实有的,“向外流水”的效果以红色呈现,在车子启动时展示 最后我们来看一下完整程序,由于程序很长,部分已经介绍过的程序旺仔爸爸就折叠起来了 #小结# 此次“溜娃神器”作品使用的锂电池并没有进行续航能力的实际测试,需要测试后给出参考数据,在作品改造过程中遇到了转向舵机和行驶电机不能同时工作的情况,经过裘老师帮忙,最后发现是esp32的引脚选择错误,这个经历告诉旺仔爸爸还要更全面的掌握主控板的各种参数 另外,本次设计制作来源于生活中的一次经历,作品改造的过程也让旺仔爸爸学到了很多知识技能,这次的项目涉及到了很多之前未接触过的知识,为了完成项目就需要带着问题去探索学习,把它掌握,与被动的接受书本知识相比较,以完成项目功能为目的去学习新知识,知识体系会更加的牢固,水平提升更快,总结一下就是,生活处处皆学问呀,细心观察,深入思考,尝试改变,保持终身学习的心态,从生活中来,到生活中去 欢迎有更多志同道合的奶爸奶妈一起交流,共同提高,也欢迎对本文批评指正,提出宝贵意见 更多精彩内容请关注旺仔爸爸造物社公众号 造物让生活更美好,期待下一次与您相逢 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed