还记得Maker Faire Shenzhen 2018年上展出的八足机器人吗?超级壮观那个!项目创作者陈子平已加入柴火认证会员圈子,成为柴火认证会员中的一员啦。今天给大家分享一个他自制的全自动演奏钢片琴项目。
柴火认证会员圈子一直都是大牛云集,聚集了全球9个国家,国内32个省级行政区域的1000+位来自30多个专业背景和20多个行业背景的会员。他们或是通过柴火新一代信息技术培训/Arduino认证考试并进行项目认证加入了这个圈子,或是符合条件直接进行认证而入伙。如果你也想在这个大牛云集的圈子,获得更多会员专属福利(社区曝光、宣传、商业机会、技能干货等等),欢迎点击了解更多入会详情。
今天的【柴火认证会员项目show】栏目,柴火菌就跟大家分享这个精彩的项目。以下为子平提供的超级无敌细致的项目教程,感谢分享,开源即爱。Open source is love.
🤖️🤖️
🎵音乐演奏走起来🎵
图1成品展示
在传统的音乐教学中存在有很多问题,比如乐器购买昂贵、普通钢琴有键数多学习时间长、请私人老师收费比较高、需要通过不断的模仿练习才能掌握真正的演奏的技术,这些因素都阻碍了一大批喜欢音乐的人士尝试入门,但在科技发达的现在,我觉得这些都不应该成为阻碍大家的学习热情。我认为通过科技的力量改变人们传统意义上由人手把手教授音乐的格局,实现自动演奏教学。于是萌生了制作这个项目的念头——制作一台能够自动演奏的机器人。
接下来是制作过程:
图2 材料清单
在项目选材方面分为四大部分:乐器部分、演奏部分、控制部分、软件信号部分。首先,在乐器选择部分是最关键的,要原理比较贴近钢琴,但键数不要太多使人容易理解,同时也不能太少局限性会比较大,还有就是成本因素,综合考虑我选择钢片琴作为主要的乐器,其声音非常的悦耳动听,很是喜欢。这款钢片琴有30个音,尺寸也不大,可以折叠能够携带方便。
图3 钢片琴实物
先将钢片琴实物进行尺寸测量,再进行3D建模,方便后续设计演奏部分的敲锤机构,我用的建模软件是Solidworks。
图4 钢片琴建模
然后是演奏部分的设计,钢片琴采用琴锤进行敲击发声,所以只要控制敲锤即可,其中要考虑敲击的动力部件、锤击的高度距离、锤击深度、锤击复位、响应的灵敏度等问题。将3D模型进行转换成平面2D导入CAD中进行平面的机构设计。
图5 机构设计
机构设计需要经过不断的测试与修改,其中锤击高度、锤击深度、锤击复位、响应的灵敏度等问题需要考虑进去,设计出合理的尺寸,找到最合理的结构,再通过Solidworks将敲锤机构建模,观看整体效果。敲锤机构包含:锤子、电磁阀、电磁阀连接头、电磁阀支架、敲锤支架、配重螺母、旋转轴承、敲锤连接轴、光轴、垫片等部件组成。所有整体的制造我采用激光切割,如果有不合理的地方能够进行快速迭代,而且激光切割还具有快速、精确、成本低廉等优点。
动力部件选择用24V的电磁阀,响应速度快、力量足。当电磁阀通电,将带动敲锤连接轴向下旋转运动,使敲锤向下形成敲击,当电磁阀断电,由于配重螺母和电磁阀的弹簧的反作用,使敲锤复位。
图6 敲锤机构建模
其中敲锤在响应速度方面涉及了一个动平衡的问题,就是敲锤与机构在不安装电磁阀时,要做到两头质量相等,同时还要考虑惯性问题,如果锤子质量过大会产生明显的振动,当锤臂反弹时会影响控制效果,产生抑制现象。这时就要修改模型参数将填充率降低,减少配重,但如果填充率过低则会产生敲锤质量过低,敲击时产生振动损耗,导致音质不够厚实的问题,填充率设置在65%是比较合理的。
敲锤机构设计好后,接下来将进行敲锤机构的制作。
图7 敲锤打印中
首先3D打印机打印好敲锤。
图8 切割好的光轴
接下来,切割3mm光轴,因为买来光轴是1米长度的,需要将其切割成25mm一段,一共30段。
图9 CAD排板
从CAD设计图中将敲锤的零部件逐一导出,再进行排板,使木板的利用率达到最大,减少浪费。
图10 导入激光切割软件
导入激光切割机软件,对切割的参数、位置进行设置。
图11 去年自己制作的大型激光切割机
图12 激光切割中
将文件导入激光切割机,放置好木板进行加工。
图13 准备组装
将激光加工的木板、切割好的光轴、轴承、螺丝、螺母、敲锤、502胶水、电磁阀、3D打印的部件、以及各种工具准备好,开始组装。
图14 拆出零部件
将激光切割好的零部件拆出。
图15 组装摆锤部分
将摆锤后板、敲锤顶板、底板、后板、敲锤压紧板拼接起来。
图16 组装摆锤部分
盖上另外一块摆锤侧板。
图 17 点胶
将3D打印的敲锤装入,用手指按压两侧,使其形成紧配合,点上502胶水
图 18 点胶
板件相交的部位都要点胶,包括摆锤后板。
图19 拼接测试底座
摆锤部分组装好后放置在一边,准备组装测试底座。
图20 测试底座
组装好测试底座,并点上502胶水,放置一边等待固化。
图21 装入3mm光轴
将切割好的3mm光轴装入摆锤中心轴孔内,装入时一定要紧配。
图22 装入3mm光轴
光轴两端露出尺寸要平均,可以用卡尺进行测量。
图23 安装轴承
将轴承(3mm内孔*3mm厚度*8mm外径)装入两块主侧板。
图24 安装轴承
安装轴承要注意,靠摆锤的那一面要向外。
图25 安装垫片
光轴两侧安装3mm垫片。
图26 安装两侧板
将两块主侧板装入光轴。
图27 连接测试底座
将侧板连接板拼接上,然后与测试底座相连。
图28 点胶
侧板连接板与侧板用胶水固定。
图29 点胶
底座与摆锤机构用胶水固定。
图30 点胶
取出2个M4螺母,用胶水将两个螺母固定。
图31 配重螺母
连续做4个,形成摆锤的配重螺母。(PS:原本计划想用CNC加工铝板的,但后面经过测试发现用螺母更经济方便。)
图32 安装配重螺母
用M3螺丝穿入M4螺母。
图33 安装配重螺母
一侧装入两个配重螺母。
图33 安装配重螺母
另一侧也装入两个配重螺母,一共4个。
图34 安装配重螺母
中间直接将M3螺丝穿入即可,无需安装配重螺母。
图35 安装M3螺母
安装M3螺母。
图35 平衡测试
安装好后最关键的一步就是机构的平衡测试,把敲锤按至最底部,检查整个摆锤是否处于平衡状态,机构转动是否灵活,这一步决定了敲锤机构控制的灵活程度。
图36 点胶
平衡测试完成后,再对配重螺母进行点胶,使其固定住,防止敲击时产生振动发声。
图37 安装电磁阀连接头
3D打印的连接头装入电磁阀。
图38 安装电磁阀支架
3D打印的支架装入电磁阀。
图39 安装电磁阀
用螺丝将电磁阀固定在测试底座上。
图40 安装电磁阀
用M3螺丝作为电磁阀的连接轴,穿过摆锤的滑槽与电磁阀接头的孔相连。
图40 连接细节图
图41 固定敲锤
用螺丝固定敲锤。螺丝孔有滑槽,也可对敲锤伸出尺寸进行适当调节。
图42 敲锤机构完成图
敲锤机构组装完成,由于每个机构制作出来多少会有一点误差,需要进行装配调试,再次对机构进行检查,测试运动是否灵活,电磁阀行程与摆锤滑槽位置是否合适,如果不合适则需要对电磁阀的位置作出细微调整。
图43 敲锤机构测试
进行敲击测试,测试环节可以使用24V直流电源连接开关的形式进行,还可以编写一个Arduino随机敲击的程序,控制敲锤进行敲击,测试其随意触发的性能。对敲击力度、反应速度、敲击噪声进行验证。
图44 装置建模
测试完成后可以对敲锤机构进行设计定稿,并完成整个装置的建模设计,观看整体的完成效果。
图45 批量打印部件
批量打印电磁阀连接头、敲锤、电磁阀支架等部件。
图46 批量制作敲锤机构
重复之前的步骤,批量制作出其余的敲锤机构。
图47 安装敲锤机构
将30个敲锤机构安装在垫板框架上面。
图48 安装主体框架
将激光切割的主体板件进行拼接。
控制部分我采用Arduino mega2560主板,通过Arduino接受电脑发送来的MIDI信号,转化为IO口的高低电平,经过电磁阀驱动板控制电磁阀敲击琴键。装置主体由激光切割的木板拼接而成,将内部的支撑隔板设计成了“S”型,便于后续布线。
图48 安装24V直流电源
安装24V开关电源。
图49 安装24V直流电源
对供电线路进行接线。24V电源连接电磁阀驱动板,驱动板对电磁阀供电。
图50 安装5V直流电源
安装5V直流电源,5V电源主要给Arduino进行供电。
图51 安装220V电源开关
在装置左侧安装220V电源开关,对接入的220V交流电源进行控制。
图52 安装5V电源开关
在装置左侧安装5V电源开关,对接入Arduino的5V电源进行控制。
图52 安装航空接头
装置后部安装航空接头,接入220V交流电源。
图53 电源连接线
制作电源连接线。
图54 安装电磁阀驱动板
用螺丝固定电磁阀驱动板。
图55 安装电磁阀连接板
用螺丝固定电磁阀连接板。每一个XH接头都对应一个电磁阀,通过底部的电源线与驱动板的端口相连。PS:电磁阀比较多为了便于后续的接线与维修,最好对每一个电磁阀编号,配一个独立的接口。
图56 安装Arduino Mega2560主板
用螺丝固定Arduino主板。
图57 信号线接头
用万用板与排针制作一个信号线接头,方便连接。
图58 信号线接头
将接头装入Arduino IO口。
图59 连接信号线
将Arduino IO口与电磁阀驱动板控制端相连,当Arduino IO口输出高电平,电磁阀驱动板对应输出口输出24V电压,驱动电磁阀动作。
图60 连接24V输出线
电磁阀驱动板的输出端与电磁阀连接板相连。
图61 控制线路完成图
控制线路连接完成。
图62 主体完成后对外壳进行喷漆
安装顶板,对主体外壳进行喷漆。
图63 安装上下琴锤模块
把电磁阀的电源线放入顶板对应的孔中,注意不要一次全部塞入。
图64 安装接头
把电磁阀的电源线插入连接板。
图65 安装顶板
将顶板盖上用螺丝固定。
图66 上下琴锤模块安装完毕
将电源线逐步放入孔里。
图67 组装完毕
将钢片琴放入装置里面,全自动演奏机组装完毕。
图69 Arduino Mega2560
图70 MIDI library库
使用Arduino Mega2560进行控制,查找MIDI library库进行安装。
图71 打开示例程序
库安装完成后,文件选项-示例-找到MIDI library库的示例程序,点击打开Callbacks例程,并对其进行修改。
图72 添加控制引脚
对应每一个音调添加控制引脚,钢片琴C5音符,则声明int C5整型变量赋值为控制的数字引脚22,以此类推,对30音的音符进行赋值。
图73 添加响应输出
找到Void handleNoteOn函数,新建一个switch选择分支,添加MIDI编码数字,在对应的编码下面添加对应的音符引脚,写上digitalWrite(音符,HIGH),意思是当有MIDI信号过来,则输出对应的引脚高电平,产生敲击动作。
图74 添加响应输出
找到Void handleNoteOff函数,新建一个switch选择分支,添加MIDI编码数字,在对应的编码下面添加对应的音符引脚,写上digitalWrite(音符,LOW),意思是当有MIDI信号过来,则输出对应的引脚低电平,敲锤回位。这样程序就编写完成了!
图75 Ableton Live 10软件界面
最后就剩下软件信号部分了,主体软件我选用Ableton Live 10,这款软件可以将MIDI的编码,转化为MIDI信号,通过Arduino接收就能够实时演奏歌曲啦。Ableton Live 10使用非常方便,功能也很强大,演奏过程中可以实时对速度、音调进行控制,另外还有扩展功能连接其他乐器设备。
图76 偏好设置
Ableton Live 10软件还需要进行MIDI信号输出的设置,在偏好设置中选择输入与输出Ableton Live 10,Input:Ableton Live 10轨道打开、同步打开、外部控制打开,Output:Ableton Live 10轨道打开、同步打开。在播放MIDI音乐时就能输出信号。
图77 hairless-midi软件
其实这样连接上Arduino还是不会产生任何动作的还缺少一个重要的串口输出的辅助软件,电脑端还需要安装hairless-midi将MIDI信号转换成串口信号输出给Arduino。
图78 hairless-midi设置
下载完成后,对软件进行设置波特率115200,数据位8位,奇偶校验位None,停止位1,流量控制None。
回到主界面串口下拉选择Arduino Mega2560 COM3(端口号),MIDI In下拉选择Ableton Live 10。
当Ableton Live 10播放MIDI音乐时,通过hairless-midi软件就能将信号实时传送给Arduino,在经过Arduino输出电平信号控制电磁阀,电磁阀带动敲锤演奏音乐。
这样就大功告成了,全自动演奏的钢片琴就可以弹奏自己喜欢的歌曲啦!最后为了更好的提高音乐演奏的技能,可以买两台钢片琴一台用于自动演奏,一台用于模仿学习。本人也是音乐方面的初学者,很多知识还在学习中,如有不正确的地方,还请各位大佬评论区积极指正!
🤖️🤖️🤖️
新一代信息技术赋能|人才升级|产业创新
硬件入门|物联网应用实战|社区联名
提升技能 尽在👇人才赋能课程
人才升级 推动双创事业合作
国际权威认证 技能加持合作(点击图片获取合作详情&报名)
新基建 撬动产业数字化方案(点击图片获取详情&报名)
----END----
Chaihuo x.factory|深圳,河北