2565浏览
查看: 2565|回复: 8

[项目] 旧物改造 | 创客奶爸带你制作遛娃神器

[复制链接]
微信图片_20210105172822.jpg


#设计灵感
有一天旺仔的奶奶带孩子去外面玩耍,碰到一起玩耍的小伙伴骑着小车子出来玩了,旺仔特别想要骑一下人家小盆友的车子,于是对方奶奶就让旺仔骑了,但旺仔一骑不要紧,万般不肯下来,我们家也有一辆这样的车子,是用手推的,旺仔爸爸就萌生了一种想法,改装一下车子,让小朋友喜欢玩,让奶奶不用推着走,于是就有了今天的作品
先来看一下演示视频:
#方案确定#
本次作品实现的主要目的是让小车子变成电动的,能够遥控,甚至可以随手拿出手机来操控,用一个电机带动车子前进后退,使用一个舵机控制车子左右转向
要给小车子加持电动功能的话,必须加入执行器电机,电机的选型尤为关键,并且要载人的话,就不能用很普通的电机了,于是在某宝淘了儿童踏板车的735电机
电机确定了之后就是如何选择电机驱动的问题了,735电机是有刷直流电机,最简单最直接的方法是用一个有刷直流电调驱动电机,通过车模或航模的遥控器给接收器发送数据从而控制车子行驶,然后还可以再增加一个舵机控制转向,这个方案显然是没有问题的,因为已经有很多这样成熟的案例可以借鉴了,尤其是在格斗机器人界内,这种玩法很普遍,之前旺仔爸爸参加过一次2kg级别的格斗机器人赛事,所以电装部分可以直接拿来使用
除此之外,还有没有其他方案了呢,肯定是有的,如果第一套方案算作是一个非编程版本的话,那么我们还可以做一个可编程版本的方案,实现的思路有两种,利用Arduino uno控制器结合2.4g遥控手柄来控制车子行驶或转向,第二种思路是利用esp32类型的可联网主控,通过手机与主控wifi或蓝牙连接从而达到无线通信遥控车子的目的,听起来是一种高大上的方式,旺仔爸爸丝毫没有犹豫就决定使用esp32作为可编程版本的主控,接下来本文通过两种改造方案来介绍此次的作品“溜娃神器”
#拆解#
不管是哪一种方案,第一步首先要做的就是对小车子进行拆解
微信图片_202101051728221.jpg


可编程和非编程的版本的共同之处就是行驶电机和转向舵机部分了,于是我们先从电机改造安装说起
如何安装和固定电机,并且能够驱动轮子转起来,是比较关键的地方
从下图中可以看出旺仔爸爸的解决方案
通过3D打印的轴套将法兰与轮子固定,将16齿同步轮安装在735电机轴上,通过同步带带动光轴上的80齿同步轮做减速运动
微信图片_202101051728222.jpg


用3D建模软件设计的轴套如下图所示
微信图片_202101051728223.jpg


设计完成之后进行切片打印
微信图片_202101051728224.jpg


下面为打印完成后的效果
微信图片_202101051728225.jpg


紧接着将轴套安装在轮子上,利用电钻开3mm的圆孔,并用螺丝固定
微信图片_202101051728226.jpg


微信图片_202101051728227.jpg


接着安装法兰和菱形的带座轴承

微信图片_202101051728228.jpg


微信图片_202101051728229.jpg


使用3mm的自攻螺丝将法兰与3D打印的联轴器固定,带座轴承通过4mm的螺丝和螺母固定在车体上
微信图片_2021010517282210.jpg


下面一步,我们需要安装电机,以及传动部件,下图为2GT5mm的同步带和16齿、80齿的同步轮
微信图片_2021010517282211.jpg


微信图片_2021010517282212.jpg


735电机使用下图的直角固定件固定在车子底盘上
微信图片_2021010517282213.jpg



微信图片_2021010517282214.jpg


执行器电机和行驶轮子改装后的最终样子如下图所示
微信图片_2021010517282215.jpg


行驶电机改造好后,接下来介绍转向舵机,本次作品采用的是一款DFrobot出品的270度金属数字舵机,工作电压4.8-7.2V,负载15Kg,作为小车的转向舵机足够了
微信图片_2021010517282225.jpg


有了舵机后,我们还需要1个舵臂和1个球头拉杆控制车子转向
微信图片_2021010517282226.jpg


微信图片_2021010517282227.jpg


舵机安装效果如下
微信图片_2021010517282228.jpg


转向部分的舵臂和球头拉杆安装如下
微信图片_2021010517282229.jpg


两个版本通用的电机部分和舵机部分改造好后,我们来分别了解每个版本是如何实现其他功能的
#非编程版本电装#
下面是非编程版本用到的电装清单
735直流电机*1
15kg270度金属舵机*1
有刷电机电调*1
富斯遥控器*1
富斯接收器*1
3s1800mah锂电池*1
舵机转接板*1
船型开关*1
五金件,导线,电源接头若干
微信图片_2021010517282216.jpg


富斯FS-i6 2.4G10通道遥控器
微信图片_2021010517282217.jpg


电路接线如下图所示,电源采用1800mah3s的锂电池,行驶电机的有刷电调连接接收器的2号通道,舵机连接接收机的4号通道,这里使用了一块专用的扩展板为舵机供电
微信图片_2021010517282218.jpg


接线完成后的效果如下图所示(舵机的图片漏拍了)
微信图片_2021010517282219.jpg


为了使用方便,在车体外壳上开孔安装了开关
微信图片_2021010517282220.jpg


最后我们来测试一下非编程版本的效果如何
非编程.gif


#可编程版本#
下面我们来了解可编程版本是如何实现功能的
首先我们来认识一下都用到了哪些电子硬件
主控我们选择的是esp32,使用它的wifi或蓝牙无线通信功能,随时随地拿出手机来操控车子,这样让我们的作品档次提升了不少

微信图片_2021010517282221.jpg


esp32的详细介绍可以点击下方连接了解
接着就是比较关键的行驶电机驱动,要承载一个小朋友的重量,电机驱动的工作电流一定要够大,为此我们选择了下面一款直流电机驱动,工作电压12-36V,工作电流12A(无散热)-20A(有散热)
微信图片_2021010517282222.jpg


直流电机驱动板有3个控制引脚,2个引脚控制方向,1个引脚控制速度,有5v电源输出,下面两图为引脚的功能介绍和具体使用方法
微信图片_2021010517282223.jpg


微信图片_2021010517282224.jpg


直流电机驱动的详细介绍可以点击下方连接了解

最后旺仔爸爸给车子附加了音乐功能和灯光功能,实现音乐功能使用了DFPlayer Mini mp3模块(需要自备一个micro sd卡),这个模块小巧且功能强大,直接使用串口控制,模块可以直接驱动一个8欧0.5w的喇叭
微信图片_2021010517282230.jpg


下图为MP3模块引脚的具体使用方法
微信图片_2021010517282231.jpg


mp3模块的详细介绍可以参考下面网址
灯光功能则使用了ws2812灯带
所有电子清单如下图所示,使用了一块大功率的转接板为舵机供电,主控esp32使用了一块扩展板方便接线,执行器电机还是使用的735电机
微信图片_2021010517282232.jpg


下面是编程版本的接线图
微信图片_2021010517282233.jpg


为了方便安装电子件设计了飞机造型的底板,同时兼做小朋友的脚踏板,设计图纸如下图所示
微信图片_2021010517282234.jpg


下面是利用激光切割机加工3mm椴木板的实物图
微信图片_2021010517282235.jpg


电路接线完成后效果如下图
微信图片_2021010517282236.jpg


微信图片_2021010517282237.jpg


打孔布线安装ws2812灯带为车子增加灯光功能
微信图片_2021010517282238.jpg


微信图片_2021010517282239.jpg


和非编程版本一样电源部分同样采用了1800mah3s锂电池,专门设计了电池外壳与飞机底板链接
微信图片_2021010517282241.jpg


微信图片_2021010517282240.jpg


组装完成后的最终效果展示
微信图片_2021010517282242.jpg


微信图片_2021010517282243.jpg


微信图片_2021010517282244.jpg


微信图片_2021010517282245.jpg


#程序设计#
程序设计主要涉及到两部分,一部分为blynk移动端的遥控组件设置,另一部分为esp32主控端的程序编写,我们先来对移动端的blynk进行设置
blynk设置
第一步登陆账号,如果是第一次使用需要先进行注册,如下图所示“Login”为登陆,Create New Account ”为注册
微信图片_2021010517282246.jpg


输入账号密码进行登陆
微信图片_2021010517282247.jpg


登陆成功后,点击“New Project”上面的+号新建项目
微信图片_2021010517282248.jpg


接着选择主控为ESP32 Dev Board
微信图片_2021010517282249.jpg


点击“CONNECTION TYPE”选择连接方式
微信图片_2021010517282250.jpg


本次任务,我们可以选择wifi和蓝牙两种方式,在操控响应速度方面蓝牙模式会更快一点,基本没有延迟,旺仔爸爸以蓝牙方式进行讲解,这里我们选择“BLE”模式
微信图片_2021010517282251.jpg


选择完成后,点击“Create Project”按钮,会询问是否向邮箱发送一封包含授权码的邮件,点击OK即可创建项目并收到这份邮件,当然你也可以在项目中找到该授权码,这个授权码是blynk移动端与ESP32控制板蓝牙连接的关键,在编程时会使用到
微信图片_2021010517282252.jpg


点击右上角的六边形可以进入项目设置界面,在最下方也可以看到授权码的信息,如下图所示
微信图片_2021010517282253.jpg


APP向左滑动可以添加组件,组件列表如下图所示,我们本次需要使用1个按键“Button”、2个“Styled Button”按键、2个摇杆“Joystick”以及1个蓝牙“BLE”组件
微信图片_2021010517282254.jpg


微信图片_2021010517282255.jpg


加载好的组件,如下图所示
我们把它横过来看,方便讲解,这样也是操控时的姿势,由于blynk还没有横屏的功能,所以有些字看着有些别扭,不过这丝毫不影响我们使用
微信图片_2021010517282256.jpg


为什么要用两个摇杆呢,是为了控制方便,我们用左边的摇杆控制前进、后退,用右边的摇杆控制转向,左边的摇杆设置为虚拟引脚v0和v1,右边的摇杆设置为虚拟引脚v2和v3,设置过程如下图所示
V2引脚控制舵机的旋转角度,由舵机控制车子转向
微信图片_2021010517282257.jpg


V0引脚控制前后方向
微信图片_2021010517282258.jpg


经过测试,V2控制转向的虚拟引脚的数值范围设置为60-120,可以控制车子左右灵活转向,V0虚拟引脚用来控制速度,数值范围设置为0-160时可以提供负载一个小朋友的动力
微信图片_2021010517282259.jpg


接着我们需要设置两种按键“Button”和“Styled Button”,这里为什么是两种按键呢,其实原理都是一样的, 都能实现我们想要的功能,只不过为了好看,美观,旺仔爸爸选择了不同的按键
3个按键分别为V4、V5和V6虚拟引脚,左边为V5,右边为V4,两个摇杆的中间为V6引脚,细心的伙伴应该会看出,有些按键设置的模式不同,没错,按键设置有“PUSH”“SWITCH”两种模式可选
V4虚拟引脚用来鸣笛,设置为“PUSH”模式,按一下播放一次鸣笛和灯带闪烁的效果,不按就复位
微信图片_2021010517282260.jpg


V5虚拟用来控制是否播放歌曲,设置为“SWITCH”模式,按一下锁定开始播放,再按一下停止播放
V6虚拟用来控制灯光,设置为“SWITCH”模式,按一下锁定亮灯模式,再按一下停止亮灯
微信图片_2021010517282261.jpg


微信图片_2021010517282262.jpg


最后还剩一个蓝牙模块需要设置一下准备工作就完成了,点击蓝牙模块会看到如下图所示的界面,接着点击“Connect BLE Device”
微信图片_2021010517282263.jpg


选择搜寻到的蓝牙名称,这里的名称是在程序里设定好的,找到你自己设定的名字即可,之后点击“ok”,等待连接成功
微信图片_2021010517282264.jpg



微信图片_2021010517282265.jpg


最后我们点击右上角的“三角”形就可以用运行这个程序了
blynk移动端的组件设置完成后,接着我们来编写esp32主控端的程序
本次项目的程序实现可以选择的编程环境有mind+,mixly,arduino
由于mind+编程环境esp32板卡下不支持blynk,arduino ide对于大多数人来说还是比较晦涩难懂,所以本次的程序设计旺仔爸爸采用mixly编程环境
mixly程序设计
第一步,我们先来了解Blynk的编程方法,打开mixly编程软件,右下角板卡选择arduino esp32,左侧模块栏中选择“网络”中的“Blynk物联网”,将本次需要用到的“Blynk BLE链接方式”模块拖至右侧程序编写区域,接着对“Blynk授权码”和“BLE 名称”进行修改,这里的授权码像钥匙一样,需要和“Blynk”移动端的保持一致
微信图片_2021010517282266.jpg


对“Blynk”设置好后,接着我们尝试来做一些小任务
比如,我们可以从左侧“网络”模块里“Blynk物联网”中选择“从App获取数据...”,本次项目用到最多的也就是这个模块了,我们掌握一个简单的应用后其他的基本上就全部理解了
微信图片_2021010517282267.jpg


我们可以尝试编写如下程序,当V4虚拟引脚接收到数据时会执行3件事情,先让串口在串口监视器中打印接收到的数据,这样会方便我们调试,第二步让MP3模块播放第4首歌曲,最后执行一个名叫“眨眼睛2”的自定义函数,如果不纠结MP3模块和自定义函数的话,这里的程序其实很好理解
微信图片_2021010517282268.jpg


MP3和灯带程序
那么MP3模块是怎么做到播放歌曲的呢,需不需要做哪些准备工作,显然是需要的
我们需要在左侧模块栏“执行器”中选择对MP3进行初始化程序块,这里旺仔爸爸要感谢一下裘炯涛老师,因为本来最新的mixly版本中,esp32还不支持Mini MP3模块,是裘老师特意帮忙制作了图形化库才让旺仔爸爸能够使用MP3模块,在调试blynk移动端的程序时裘老师也给旺仔爸爸提供了很大的帮助,特别感谢裘老师的支持,为裘老师对blynk生态做出的突出贡献点赞,裘老师也是一位奶爸,这个小车也可以给他们家宝宝玩哈
微信图片_2021010517282269.jpg


具体初始化的程序如下图所示,这里的MP3模块与esp32之间使用的是软串口通信的方式,注意接线时MP3模块和esp32需要交叉接线,也就是RX-TX,TX-RX
微信图片_2021010517282270.jpg


细心的伙伴肯定会有疑问,第几首歌曲是怎么回事呢,需要怎么设置,这个问题问的非常好,MP3模块全名叫DFPlayer Mini MP3模块,此模块是可以插一个micro sd卡的,我们要播放的歌曲放在这个sd卡中,MP3模块可以读取大部分格式的音频文件,但歌曲文件设置时歌曲需要按照“0001”这样的数字编号命名,并将所有歌曲放置在sd卡中文件名为mp3的文件中,这些准备工作设置好后就可以愉快的使用了,程序中的第4首歌曲为鸣笛的声音,初始化程序中播放的第5首歌曲为汽车启动的声音,另外需要注意的一点是,MP3模块播放歌曲的程序最好不要放在循环里一直执行,这样需要增加等待时间才能听到歌曲,可以放在某个函数中,满足条件执行就可以了

微信图片_2021010517282271.jpg


接着我们来探究“眨眼睛2”的自定义函数,眨眼睛其实就是对WS2812灯带的控制,程序如下图所示
微信图片_2021010517282272.jpg


上面的程序看不懂也没关系,我们来看一个最简单的例子,通过下面的程序我们可以让一串有16颗灯珠的灯带全部亮红色

微信图片_2021010517282273.jpg


控制灯带的程序块在左侧模块的“执行器”中选择
微信图片_2021010517282274.jpg


当然初始化程序也是必须要有的,如下图所示
微信图片_2021010517282275.jpg


如果把颜色改成黑色,呈现的效果就是熄灭所有灯珠
微信图片_2021010517282276.jpg


除了可以使用已经内置好的颜色以外,我们还可以通过RGB的色值来调色,理论上有256*256*256那么多种颜色,程序中还可以加入灯带的延时显示的时间让灯带有流水的效果
微信图片_2021010517282277.jpg


理解了简单的例子后,我们回过头再来看“眨眼睛2”的自定义函数就很容易理解了,从前面的讲述中我们可以知道,当V4虚拟引脚接收到数据时,也就是“Blynk”移动端V4这个按键被按下时,会发出鸣笛的声音,同时让灯带展示眨眼睛的效果,此时的自定义函数“眨眼睛2”就是让灯带亮白灯,并且有“忽闪忽闪”的效果,怎么样才能有“忽闪忽闪”的眨眼睛的效果呢,那就需要对灯带的亮度进行调节了,所以程序中先让灯带亮白色,并且亮度是由1-100逐渐变亮的,接着亮度再由100-1逐渐变暗,最后熄灭,这样渐渐变亮再渐渐变暗的过程重复执行了3次
自定义函数“眨眼睛2”掌握后,我们还有另外一个“眨眼睛”的自定义函数,原理是一样的,只不过灯带亮的是红色,一起来看一下“眨眼睛”的自定义函数程序
微信图片_2021010517282278.jpg


“眨眼睛”自定义函数理解了后其他的灯带程序就简单多了,比如下面的程序是检测V6虚拟引脚为“1”也就是ON时就亮白色的灯,相当于汽车晚上开的灯光,相反为“0”时也就是OFF时就灭灯
微信图片_2021010517282279.jpg


通过上述对ws2812灯带和MP3模块的介绍,相信大家对于丰富多样的灯带显示效果和MP3播放会有很多想法,期待大家去实现自己的想法哦
灯带和MP3的程序讲解我们就告一段落,接下来我们了解舵机的转向程序
舵机转向程序
使用V2虚拟引脚来控制舵机转向,我们需要在左侧模块栏“执行器”中找到控制舵机的程序块
微信图片_2021010517282280.jpg


接着可以尝试编写如下程序,当V2虚拟引脚接收到移动端发来的数据后做2件事情,第一件是通过串口监视器打印接收到的数据,第二件事情是让舵机以接收到的数据旋转至相应角度
微信图片_2021010517282281.jpg


为了车子能够正确的转向,经过测试,舵机的角度设置范围在60-120度之间比较合适,默认状态为90度,也就是默认直行,角度在91-120之间为左转,同时灯带执行左转向的程序,角度在60-89之间为右转,同时灯带执行右转向的程序,需要注意的是舵机安装在车子底盘上,测试时需要将车子反过来,在设置左转还是右转的角度时要以车子正面朝上的方式调节哦,防止调节反了,改进后的程序如下图所示
微信图片_2021010517282282.jpg


上述程序中涉及到了两个自定义函数,分别是“左转向”和“右转向”,下面我们对这两个自定义函数展开介绍一下,和之前的灯带显示程序类似,我们把16颗灯珠分成了左边8颗和右边8颗,我们以驾驶人坐在小车上的角度定义,左边的8颗灯珠编号为1-8,右边的8颗灯珠编号为9-16
喇叭转向.gif


转向.gif


当车子需要左转时就控制左边8颗闪烁起到示意转向的作用,这里对于灯带转向的效果参考了奥迪车转向灯的设计,呈现出了一种由里向外的流水效果
微信图片_2021010517282283.jpg


下面是“右转向”的自定义函数,与“左转向”的函数类似,只是灯的编号不同
微信图片_2021010517282284.jpg


前进后退程序
转向程序掌握后,我们来了解让车子前进后退的程序,车子的前进后退由V0虚拟引脚控制,程序分成3种情况处理,分别是前进“forward”,后退“backward”和停止“stop”,V0虚拟引脚的数值范围是0-100,当数值等于0时车子停止不动,也就是执行“stop”自定义函数,当数值大于51时执行前进“forward”自定义函数,当数值小于49时执行后退“backward”自定义函数
微信图片_2021010517282285.jpg


为了让车子能够调速,我们使用了大功率的电机驱动板,控制车子前进后退和调速的方式也很简单,两个数字管脚的高低电平变化控制电机正转和反转,从而让车子前进和后退,一个模拟管脚来调速,为了保证车子的安全性,我们让车子的速度不超过80
微信图片_2021010517282286.jpg


后退
微信图片_2021010517282287.jpg


前进
微信图片_2021010517282288.jpg


停止
微信图片_2021010517282289.jpg


通过下面的动图来看一下上述程序的测试效果
前进后退.gif



前进后退正面.gif


最后是音乐播放的程序,我们使用V5虚拟引脚的状态来控制是否播放音乐,当V5虚拟引脚的数值为“1”,也就是ON时,开始随机播放音乐并且执行“向内流水”的自定义函数,当V5虚拟引脚的数值为“0”,也就是OFF时停止播放音乐
微信图片_2021010517282290.jpg


微信图片_2021010517282291.jpg


有的伙伴会问有“向内流水”肯定会有“向外流水”吧,确实有的,“向外流水”的效果以红色呈现,在车子启动时展示
开关.gif


微信图片_2021010517282292.jpg


最后我们来看一下完整程序,由于程序很长,部分已经介绍过的程序旺仔爸爸就折叠起来了
微信图片_2021010517282293.jpg


#小结#
此次“溜娃神器”作品使用的锂电池并没有进行续航能力的实际测试,需要测试后给出参考数据,在作品改造过程中遇到了转向舵机和行驶电机不能同时工作的情况,经过裘老师帮忙,最后发现是esp32的引脚选择错误,这个经历告诉旺仔爸爸还要更全面的掌握主控板的各种参数
另外,本次设计制作来源于生活中的一次经历,作品改造的过程也让旺仔爸爸学到了很多知识技能,这次的项目涉及到了很多之前未接触过的知识,为了完成项目就需要带着问题去探索学习,把它掌握,与被动的接受书本知识相比较,以完成项目功能为目的去学习新知识,知识体系会更加的牢固,水平提升更快,总结一下就是,生活处处皆学问呀,细心观察,深入思考,尝试改变,保持终身学习的心态,从生活中来,到生活中去
欢迎有更多志同道合的奶爸奶妈一起交流,共同提高,也欢迎对本文批评指正,提出宝贵意见
更多精彩内容请关注旺仔爸爸造物社公众号
qrcode_for_gh_e8377c4fa7d1_258.jpg
造物让生活更美好,期待下一次与您相逢

hnyzcj  版主

发表于 2021-1-5 21:44:57

回复

使用道具 举报

TuTu  中级技师

发表于 2021-1-7 16:00:59

哇....太牛了! (旺仔真可爱
回复

使用道具 举报

Smaillive  学徒

发表于 2021-1-7 18:05:42

牛皮! 学习学习了
回复

使用道具 举报

帅猫  高级技师 来自手机

发表于 2021-1-10 14:48:56

Mr Guo 发表于 2021-1-5 17:52

#设计灵感有一天旺仔的奶奶带孩子去外面玩耍,碰到一起玩耍的小伙伴骑着小车子出来玩了,旺 ...

请问作者用的什么Blynk Server呢
回复

使用道具 举报

20060606  高级技匠

发表于 2021-1-10 14:58:57

您好,请问您的作品中法兰有什么作用?
回复

使用道具 举报

Mr Guo  初级技神
 楼主|

发表于 2021-1-10 23:32:13

帅猫 发表于 2021-1-10 14:48
请问作者用的什么Blynk Server呢

手机app商店下载blynk
回复

使用道具 举报

Mr Guo  初级技神
 楼主|

发表于 2021-1-10 23:35:20

20060606 发表于 2021-1-10 14:58
您好,请问您的作品中法兰有什么作用?

固定轮轴
回复

使用道具 举报

20060606  高级技匠

发表于 2021-1-11 16:06:04


谢谢!!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2021 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail