2018-11-27 10:53:44 [显示全部楼层]
4090浏览
查看: 4090|回复: 2

[项目] 支持MIDI-OVER-BLUETOOTH的MIDI控制型88键簧风琴

[复制链接]
我的高中项目计划是将一架立式钢琴变成由MIDI控制的自动钢琴。
然而,我偶然接触到了簧风琴,并从对它一无所知发展到对其声音和历史产生了浓厚的兴趣。
因此,我把计划改成了将埃斯蒂 (Estey) 簧风琴变成MIDI控制型簧风琴。

首先,我将解释一下簧风琴是什么、它是如何工作的,以及如何通过机械操控琴键。
然后,我将介绍它的驱动电子设备。最后,我会介绍解码MIDI和按指令按动琴键的软件。



1步:什么是簧风琴?

支持MIDI-OVER-BLUETOOTH的MIDI控制型88键簧风琴图1支持MIDI-OVER-BLUETOOTH的MIDI控制型88键簧风琴图2

簧风琴,又称脚踏式风琴,是一种通过振动黄铜簧片发声的乐器。它与手风琴、口琴的发音原理完全相同,因此三者音色十分相似。
和教堂里的大型管风琴类似,大多数簧风琴都有数个可以改变声音音调的音栓。就像一架管风琴有多组音管,即管列 (rank) ,大多数簧风琴也有多组簧片,可以通过变更拉出的音栓实现开闭。每组簧片都有独特的音调,因此可以通过选择打开哪些组来调和乐器整体的音调和音量。
如果你想像我一样改装出你自己的簧风琴,那么你或许会想要找到能够让电脑拉出和推回音栓的方法。否则,你将不得不在弹奏期间手动完成此操作或从头到尾使用同一音调。

然而,我做出的簧风琴非常独特:它就像现代钢琴一样,有88个键。而且其套用的是立式钢琴的外壳,除非进行弹奏,否则无法从视觉上把它与立式钢琴区分开来。
我的簧风琴在两块与第二组簧片内部接合的颊板上各有一个旋钮滑块。这是其唯一拥有的“音栓”。左侧滑块负责打开和关闭对应键盘下半音区的第二组簧片,而右侧滑块控制的是键盘上半音区的簧片。通过变换这些音栓,你可以改变簧风琴的声音,因为第二组簧片与第一组有所不同:在低音音区,第二组比第一组高八度,而在高音音区,第二组经过了有意微调。第二组簧片使我的簧风琴听起来非常像手风琴!
此外,还有强弱音音活板(未图示)。这些基本上都是大块活板,可以遮盖或露出不同数量的簧片。当簧片未被遮盖时,簧风琴的音色比强弱音音活板关闭时更清脆、响亮。通过控制簧风琴的气压和强弱音活板的位置,可以显著改变簧风琴的声音和音量。我的簧风琴配有一个叫做自动强弱音的装置,当送入簧风琴的空气气压增加时,强弱音音装置会自动打开。

2步:概览
支持MIDI-OVER-BLUETOOTH的MIDI控制型88键簧风琴图3

这是一个庞大而复杂的项目。在详述之前,我想我应该总地介绍一下将要用到的组件以及它们的用途。之后我会为每个组件列出一个或多个专门的步骤并详细说明。
请查看上方标明控制系统所有组件的框图。

(在本教程中我会多次提及:请查看图片/图表。与文字相比,它们能更好地描绘事物,如下所示。)

让我们从后往前造起来吧。簧风琴琴键需要物理拉动。我在簧风琴联动装置前方的导轨上安装了电磁铁,用来从下方拉动琴键。我们将用Arduino来打开和关闭这些电磁铁,为此,你需要一个简易的金氧半场效晶体管 (MOSFET) 电路,从Arduino低电流/电压输入/输出 (I/O) 引脚开启和关闭高电流/电压电磁铁。为实现这一点,我设计了定制印刷电路板 (PCB) 。每块板可控制16根电磁铁。所有Arduino都将运行解码MIDI数据(通过蓝牙传输)的软件,相应地打开和关闭电磁铁,进而控制相应的琴键。
MIDI数据流的传输路径是通过蓝牙发送到蓝牙串行通讯 (COM) 端口,然后到三个控制琴键的Arduino,从而打开和关闭正确的电磁铁,拉动琴键。


3步:物料清单和成本
支持MIDI-OVER-BLUETOOTH的MIDI控制型88键簧风琴图4
支持MIDI-OVER-BLUETOOTH的MIDI控制型88键簧风琴图5
支持MIDI-OVER-BLUETOOTH的MIDI控制型88键簧风琴图6

总的来说,这个项目的成本和我预想的差不多。以下是本项目所需的所有材料:

· 簧风琴!如前所述,我在Craigslist网站上免费获得了一个。
· 电磁铁 (ZYE1-0530Z)  x95
· 1N4001二极管 x100
· IRLZ44N MOSFET  x100
· Arduino Mega 2560翻版  x3
· HC-06蓝牙COM端口
· 12V 40A电源模块 (PSU)  x2
· 定制电磁铁驱动器PCB   x15
· 220 Ohm电阻 100x
· 10K Ohm 单列直插式 (SIP) 电阻 15x
· 铝合金导轨8'(家得宝 (Home Depot) )
· 二极接线板3.5mm 100x
· 杜邦线和连接器(就不列出每件小件了)


此外,还有一些额外的费用。首先,这里假设你已经有了制作原型的基本材料,如电路试验板等。我还将添加音栓的伺服控制,以及一个装有Arduino控制型速度控制器和Arduino强弱音音活板控制的真空发动机。我预计这将会给项目增加大约100美元的成本。你可能还需要硬件MIDI输入:我用的是一个蓝牙串行接收器和一个叫作Hairless MIDI的软件,它可以将MIDI数据发送到标准串行端口。如果你想要添加一个硬件MIDI端口,那么买一个MIDI Arduino扩展板或自己做一个都将花费大约15美元。

4步:簧风琴联动装置介绍
支持MIDI-OVER-BLUETOOTH的MIDI控制型88键簧风琴图7


在按下簧风琴琴键时,联动装置会让气流通过特定的黄铜簧片,从而弹出与该琴键对应的正确音符。
请查看上图。按下琴键时,它会向下推动中心的小圆棍,进而推动底部的阀板pallet,阀门的别称)打开(上图底部方框处)。联动装置下方是由脚风箱产生的局部真空,当阀门打开时,气流从大气进入,通过与联动装置基座齐平的簧片(图中的扁平木块)然后排出风箱。


5步:拆下联动装置
簧风琴的“联动装置”包括琴键、簧片、它们之间的所有部件以及联动装置所在的基座(实际上是一种音板)。为了完成任何涉及该联动装置的工作,我们必须将其拆下。
通常情况下,我不会详细解释这类操作,因为坦白说,如果你正在尝试做这个项目,你应该自己想出拆下联动装置的简易方法。但是有一些巧妙的方法可以将所有部件组合在一起,从而尽可能地隐藏螺丝,所以我会稍微点拨一下。
首先,取下背板。这样就可以够到面板连接外壳的位置。卸下面板和键盖。然后拆下琴键前键盖盖住的琴键返回横杆。接下来,移除两个颊板。它们由一个单螺旋、销钉和钻孔固定在一起。这是一个有窍门的装置,取下单螺旋后,就可以轻松地将颊板直接向上拉。
现在,你可以拆下连接到联动装置的各种踏板,拧下将其安装到底座上的所有螺钉,然后将其拆下,小心地放在空的平面上。


6步:机械改装第一部分:电磁铁介绍!
支持MIDI-OVER-BLUETOOTH的MIDI控制型88键簧风琴图8
支持MIDI-OVER-BLUETOOTH的MIDI控制型88键簧风琴图9
支持MIDI-OVER-BLUETOOTH的MIDI控制型88键簧风琴图10

我们将使用被称为电磁铁 (solenoid) 的电磁装置来拉动琴键。虽然电磁铁本身就是一个很大的主题,但在核心上,它们非常简单。电磁铁由线圈和线圈内的金属棒组成。当线圈接通电源时,称作柱塞 (plunger) 的金属棒将进行线性移动。

上图可能会比我用文字说明电磁铁如何拉动琴键更清晰明了。需要指出的一点是,此图仅适用于白键。黑键更复杂,因为它们不会一直延伸到键盘前端;我们稍后会聊到黑键。
我用的是ZYE1-530Z电磁铁,其规格是1A @ 12VDC。对本项目而言,这些电磁铁物美价廉(每个售价2.15美元至2.60美元,具体取决于你的购买渠道和数量),且很容易在网上买到。我以220美元的价格从中国的eBay供应商处订购了95件,并且无需支付送货费。每个售价2.31美元——不是最便宜的,但也相当便宜了。
如果你最终没有选用ZYE1-530Z电磁铁,那么我在下文简要说明了选择电磁铁的过程。


选择要用的电磁铁时,需考虑以下几点:

· 类型:电磁铁分推式、拉式和推拉式。区分标准就是电磁铁的哪一端可以连接到其他部件。推式电磁铁的推端有螺纹轴,拉式电磁铁的拉端有U型夹,推拉式电磁铁两者兼具。在本项目中,你需要一个拉式或推拉式电磁铁,因为我们将从下方拉动琴键。
· 交流 (AC) 或直流 (DC) 对于此应用,我们想使用小型直流电磁铁。交流电磁铁通常用于更大规模的工业应用中。
· 电压:对于此应用,可能需要额定电压为12V或24V的电磁铁。低电压的电磁铁将消耗更多电流和/或没有足够的电力来拉动按键。
· 电流消耗:你需要检查电磁铁上的数据表以核对其电流额定值。电流越大,电磁铁的电力可能就越强,但电力消耗也就越多,从而需要越大的电源。根据欧姆定律,如果向电磁铁提供高电压,它会消耗更多电流;如果提供较低的电压,它会消耗较少的电流。用直白一点的话来说,即在电磁铁电阻保持不变的情况下,电压和电流成正比。
· 驱动力:这是最重要的考虑因素之一。通常,电磁铁的数据表将以牛顿 (N) 为单位给出各冲程 (stroke) (即到电磁铁中间位置的距离)的力,一般是在不同的功率水平。电磁铁数据表(通常包括标题)还会给你一个也用牛顿表示的夹持力。这个数字对选择本项目适用的电磁铁至关重要。接下来我将演示如何计算特定电磁铁是否能够按下簧风琴琴键。


计算按下簧风琴琴键所需的力:
1. 首先,你需要测出在风琴上以较快速度按下琴键需要多少质量。我借助的工具是硬币——这是一种简单、快速且相当精确的测量较小重量的方法。
2. 测出该质量后,将其换算成千克 (kg) 。
3. 电磁铁具有以牛顿为单位的力,并且我们已在上一步中得到了以千克为单位的质量,该质量是在地心引力作用下合理按压琴键所需的质量。因此,我们可以将该质量乘以引力常数,得到该质量在地心引力作用下施加在琴键上的力的大小:(力,N)=(按键所需质量,kg)(9.8m/s)
现在你知道按键所需力的大小了!去寻找吸持力大于你计算出的力的电磁铁。理想情况下,该电磁铁的力需要比快速、精准按键所需的力大数倍。


步骤7:机械改装第二部分:电磁铁改装
支持MIDI-OVER-BLUETOOTH的MIDI控制型88键簧风琴图11
支持MIDI-OVER-BLUETOOTH的MIDI控制型88键簧风琴图12


电磁铁会发出非常响亮的咔嗒声。这当然不适用于我们的项目。因此我们要对它们进行改装,使其声音变小。
电磁铁中有两个主要位置会产生咔嗒声。上图已用红圈圈出了这两个点。
螺母(图中左侧红圈处)在脱离时会敲击电磁铁底部。我们可以通过从电磁铁推端卸下螺母来轻松解决这个问题。之所以不需要螺母是因为电磁铁柱塞连接琴键,而琴键上盖有键盖。这意味着柱塞无论如何都无法进一步向上升。
电磁铁柱塞在接合时会从内部敲击电磁铁底部(图中右侧红圈处)。我们需要在这两个部件之间放一些东西,以避免接合时金属与金属碰触。我在电磁轴上使用了非常小的热缩管。它很难被发现,请看上图。
拆下螺母并套上热缩管后,电磁铁只在接合时发出轻微的砰声,脱离时则没有任何声音。在此之前,电磁铁会发出刺耳的金属咔嗒声,而其上装的铝会使情况变得更糟糕。


8步:机械改装第三部分:黑键!
支持MIDI-OVER-BLUETOOTH的MIDI控制型88键簧风琴图13


支持MIDI-OVER-BLUETOOTH的MIDI控制型88键簧风琴图14



支持MIDI-OVER-BLUETOOTH的MIDI控制型88键簧风琴图15


与可以直接从前端拉动的白键不同,黑键的前端比白键靠后(这很明显,如果你见过钢琴键盘)。因此,我们不能像拉动白键一样拉动黑键。
我的解决方案是将黑键实际延伸到白键前端的下方。这需要对风琴键盘进行重大修改,但是一旦组装完毕,就看不出它的变化了,因为延伸部分已完全隐藏于白键下。


我通过以下操作延长了黑键:
1. 从每个黑键的侧面引出一条通道。我做了一个夹具以提升此操作的速度和效率;只花了大约一个小时就把所有的黑键处理完了。
2. 把冰棍棒放入引出的通道里。此冰棍棒必须定位在可延伸到琴键支架前端但又够不到前端的位置。
3. 从每个黑键的相邻白键中刻出材料,这样冰棍棒延伸部分可以安放于白键之间并自由移动
从上图所示的联动装置部分可以看到,电磁铁连接黑键的方式与连接白键的方式几乎一样,只是用了更长的线。这是因为电磁铁太宽,不能放在同一排。因此,黑键在白键下方另有一排电磁铁。


9步:安装电磁铁
支持MIDI-OVER-BLUETOOTH的MIDI控制型88键簧风琴图16
支持MIDI-OVER-BLUETOOTH的MIDI控制型88键簧风琴图17
支持MIDI-OVER-BLUETOOTH的MIDI控制型88键簧风琴图18
支持MIDI-OVER-BLUETOOTH的MIDI控制型88键簧风琴图19


一旦你得到了一个已延长黑键的联动装置,以及经改装后不再发出咔嗒声的电磁铁,那么你实际上可以将它们安装到一起了。我的键盘正好宽48英寸,所以我使用的是家得宝公司的8英尺铝制L形支架,将其切成两半就可以得到两个48英寸的部件。
其中一个支架用于白键,另一个用于黑键。白键电磁铁横杆连接到键架下侧,另一个横杆连接到联动装置基座底部(再次提醒,请看图片,它们比我用文字更能说明这些事情)。
电磁铁有M3安装孔,所以我在eBay上以8美元的价格购买了200个3毫米M3螺栓。与Aubuchon上47美元的售价相比,这是一笔相当不错的交易!
我在钻床上使用了一种夹具,这样所有的孔与L形支架边缘的距离都相同。我还使用了一个略大的钻头,以便事后将电磁铁移动一个规格,扩大容差。


10步:连接电磁铁与琴键
支持MIDI-OVER-BLUETOOTH的MIDI控制型88键簧风琴图20
支持MIDI-OVER-BLUETOOTH的MIDI控制型88键簧风琴图21
支持MIDI-OVER-BLUETOOTH的MIDI控制型88键簧风琴图22


既然电磁铁已装到联动装置上,那么是时候将它们真正连接到琴键上了。
听起来很简单?事实并非如此……我们必须将电磁铁连接到琴键上,并保持琴键和电磁铁之间没有间隙。任何间隙都会导致金属互相敲击,产生噪音,还会使人在手动弹奏时感受到琴键间的不一致。记住,我们希望的是尽可能减少对联动装置的影响。
我设计了一个连接琴键的绝妙方法。请查看图片,它们比文字描述更加明了。


白键:
首先,在每个键上钻两个孔:一个从琴键下方向上钻一半左右,另一个从琴键左侧钻一半左右。这两个孔在琴键内部构成L形。见上图。
现在,你可以将线段弯曲成L形并粘到琴键上。只需弯成L形并将其粘进去!请注意,为将线固定到位,你可能需要扩宽孔洞。
接下来,为每个电磁铁剪一小段线(约1/2英寸),再将其作为引脚插入U形夹。然后把它绕成L形,如此一来,电磁铁的U形夹就配备了一个引脚。
现在,把琴键放回键架上,并将其排成一行,使线处于它应在的位置上(直接向下方电磁铁延伸,且内部穿有引脚)。标记从电磁铁下来的线经过引脚的位置。将线稍微弯曲到该点以下,使其从键盘前端向外伸出。
现在把线置于电磁铁的U形夹中,它的弯曲部分则直接位于我们用线段制成的“引脚”下面。再次拉动琴键。在保持电磁铁柱塞指向朝下且垂直向后30º左右的同时,将电磁铁线向下弯曲到我们制作的穿过电磁铁U形夹的线圈前方。
向前拉动电磁铁使其面朝下。但如果你拉得太远,这个装置会形成间隙。这是我们所要避免的。如果你没有将它拉得足够远,电磁铁柱塞又会在电磁铁内部遇到过大的摩擦力,从而卡住琴键。这种情况也要避免。所以你需要把电磁铁柱塞弯曲到这个最佳位置。


黑键
黑键的处理过程基本上和白键相同,除了其线段更长且附在冰棍棒上。查看上面的图片,看看它是如何附在冰棍棒上的。这些图片一目了然。
关于黑键要指出的一点是,你可以通过向前或向后弯曲琴键拉线来调整电磁铁柱塞的松紧程度。这一点很棒,因为你可以在不取出柱塞的情况下完成此操作,而白键则不行。


11步:控制电子器件第一部分:MOSFET介绍
支持MIDI-OVER-BLUETOOTH的MIDI控制型88键簧风琴图23

所以现在我们有了可以拉动琴键的电磁铁。耶!
但仍然没有办法用Arduino控制那些电磁铁来制作有意义的音乐。这时候就该MOSFET上场了。简而言之,MOSFET是一种特殊类型的晶体管,可以打开和关闭较大的电压和电流。在我们的应用中它们实际上是可以由另一台电子设备控制的开关,而在本项目中该电子设备即Arduino。
MOSFET有三个引脚:源极 (Source) ,漏极 (Drain) 和栅极 (Gate)(缩写为S、D、G)。当你向栅极施加一个高于某个阈值的电压时,它会“打开”并将电流从源极(-)导向漏极(+)。
附图展示了我们将在各个电磁铁上使用的简易电路。如你所见,它还包含其他几个组件。以下是各个组件的作用:
简而言之(再次),二极管用于保护MOSFET免受由电感负载(如电磁铁)产生的电压尖峰的影响。R2是一个下拉电阻,用于确保电磁铁在因任何原因与Arduino断开连接时进入关闭状态。R1非必需项,它是一个限流电阻,可确保MOSFET不会从Arduino耗费太多电力并烧毁其引脚
所以现在我们只需制作88个这样的电路!


12步:控制电子器件第二部分:MOSFET驱动板
支持MIDI-OVER-BLUETOOTH的MIDI控制型88键簧风琴图24
支持MIDI-OVER-BLUETOOTH的MIDI控制型88键簧风琴图25
支持MIDI-OVER-BLUETOOTH的MIDI控制型88键簧风琴图26


在最后一步用电路试验板或万能电路板制作88个电路是不专业且不切实际的,这不是一个好的长期解决方案。因此,我设计了一个可以打开和关闭16个电磁铁的PCB。
此外,该PCB还有两个额外的MOSFET——每个MOSFET控制8个通道的总功率。原打算将其用于脉宽调制 (PWM) 功率控制机制,但并未实现,因为没有这方面的需求。因此,现在只需上拉这些MOSFET上的栅极。或者,你可以通过在这两个MOSFET接入的源极和漏极孔(底部两个)之间焊接跳线来节省一些MOSFET和线。如果你要采取这个方法,那就无需装这两个MOSFET了

上面的第一张图片是一半PCB的电路图。两半的电路是一样的。第二张图片展示了PCB设计本身,第三张是根据设计制作的印刷电路上的测试组件,用于确保各组件间保持合理间距。

如果你想自己制作这些,请参看附上的Fritzing设计文件。请注意,我实际上没有在MOSFET中进行焊接,它们是推入配合的;文件中的孔过小,导线无法从中穿过。如果你想要焊接MOSFET,那么修改这一点也不难。
我用的材料是FirstPCB.com制造的。他们的做工很好,而且价格便宜:花50美元通过航空邮件用2天运到我家门口(由于海关原因,变成了一周……)
如果你要自己制作这些部件,则需要订购比默认厚度更厚的铜。我选择了2盎司铜,你使用的铜不能低于此标准。如果要在驱动板上开启所有琴键,那么电路真的会很快被烧毁,因为一个电磁铁就消耗了1.3A的电力。通过把驱动板分成两部分并尽可能地扩宽电路使得这一现象得到了缓解,但问题仍然存在。注意:不要尝试演奏一次性按下所有琴键的MIDI文件。你可能会把你的驱动板烧坏。
请查看附图,了解我应用的其他制造设置(我的FirstPCB.com订单页面的屏幕截图)。


13步:控制电子器件第三部分:焊接MOSFET驱动板
支持MIDI-OVER-BLUETOOTH的MIDI控制型88键簧风琴图27
支持MIDI-OVER-BLUETOOTH的MIDI控制型88键簧风琴图28支持MIDI-OVER-BLUETOOTH的MIDI控制型88键簧风琴图29

支持MIDI-OVER-BLUETOOTH的MIDI控制型88键簧风琴图30


我开发了一种非常有效的驱动板焊接工艺:我大约在焊接了两个焊点的一秒钟左右想到了这个方法。即便如此,焊接这6个驱动板还是花了我好几个小时。
快速焊接它们的诀窍是先焊接最短的部件,再焊接最高的部件。我还运用了装配线的方式进行焊接:例如先把所有电阻焊接到6块驱动板上,而不是完全装配好一个再开始下一个。


我焊接组件的顺序是:
1. 220 ohm电阻和单个10K电阻
2. 二极管
3. SIP电阻
4. 螺丝接线端
5. 排针插座


然后你可以把驱动板放入MOSFET。由于孔不够大,所以我没有进行焊接,只是将它们塞了进去。这样我就可以轻松更换MOSFET,因为它们是最有可能随机坏掉的组件。
注意:正如我在上一步中所说的,你可以不装两个垂直的MOSFET,而是在两个底部引脚之间焊接跳线。如果你采取的是这种方法,那么你在接线时就无需将杜邦线连到“5V”引脚(如驱动板标记所示),也无需在跳线处安装MOSFET了。


14步:接线第一部分:安装
支持MIDI-OVER-BLUETOOTH的MIDI控制型88键簧风琴图31
支持MIDI-OVER-BLUETOOTH的MIDI控制型88键簧风琴图32


现在所有组件都已准备齐全,是时候把它们组装起来并连接所有组件了!
我将所有控制电子设备(Arduino和驱动板)安装到一个4英寸宽的电路板上,该板与联动装置的长度相等。现在,我们可以轻松处理控制电子设备(当联动装置位于外壳之外时)。
这部分最终将被安装在簧风琴外壳底部(演奏者膝盖前方)。这使我们能够更轻易地展开控制电子设备维修工作,同时也算是一个仍取出联动装置的简单方法。
还有两个大型电源需要安装在某个地方。当联动装置不在外壳中时,我就把它们放在联动装置的两侧。当联动装置被装进外壳时,则把它们安在外壳下方(参见图片,尤其是下一步中的图片)
所有Arduino和控制板都可以用木螺钉和尼龙支架安装。


15步:接线第二部分:电磁铁线、电源线和电源
支持MIDI-OVER-BLUETOOTH的MIDI控制型88键簧风琴图33
支持MIDI-OVER-BLUETOOTH的MIDI控制型88键簧风琴图34
支持MIDI-OVER-BLUETOOTH的MIDI控制型88键簧风琴图35
支持MIDI-OVER-BLUETOOTH的MIDI控制型88键簧风琴图36


首先,你必须将88对电线从电磁铁连接到它们各自对应的螺丝接线端。电磁铁没有极性,因此将哪条电磁铁线连接到正极和负极并不重要。此外,确保在连接电磁铁时跳过电源输入连接(查看上方的驱动板引脚分配图即可明白我说的是什么)。

接下来,你要将电源线从电源连接到驱动板。我将这些电源放在控制电子设备的两端。左侧三块驱动板由左侧电源供电,右侧三块驱动板由右侧电源供电。将驱动板分成两半,分开供电是为了增强其载流量。确保电源线排放得井井有条,并且尺寸合适。每根线最多可为8个电磁铁供电,则8 x 1.3A = 10.4A。这股电流可不小,所以千万别在此处吝啬。我使用的是14Ga.(线号)汽车电线,有可能大材小用了,但它就在我手边。

由于电源是交流硬连线式,因此你需要连接交流电源。我在键盘下方的一侧为两块电源安装了一个灯开关(如图所示;忽略USB端口,那是我添加蓝牙之前的端口),并从该开关盒接出一条标准的三插设备电源线。这就得到了一条看起来既漂亮又专业的接线,并且你可以通过开关轻松地打开或关闭此乐器。


16步:接线第三部分:杜邦连接器!

支持MIDI-OVER-BLUETOOTH的MIDI控制型88键簧风琴图37
支持MIDI-OVER-BLUETOOTH的MIDI控制型88键簧风琴图38

现在你需要将控制板连接到Arduino。我们将使用杜邦电缆来执行此操作。这些是小型压接连接器,可以安装在不同数量的引脚的外壳内。每个Arduino都是使用引脚22-53作为输出引脚(最后一个除外,它仅使用22-37)。这些引脚位于Arduino的底部排针插座上,该插座的规格是2x18。不幸的是,2x18的排针插座有点难找,所以你可以像我一样改用2x20杜邦连接器外壳。在驱动板上,你需要2x10杜邦连接器外壳。查看驱动板引脚分配图,弄清楚哪些输出与哪些输入相对应,然后动手插入杜邦电缆。电缆只需按进外壳即可。
除了驱动板电缆,我们还需要将我们的midi线路以及电源与所有Arduino相连接。为此,我使用了一些旧的电话线(4线)。电话线内的红线连接到电源的+12V和每个Arduino的VIN引脚。蓝色线连接到PSU的地线和Arduino的接地引脚。黄色线用于MIDI数据传输,连到蓝牙接收器上的TX引脚和Arduino上的RX1引脚。
一旦你搞定了这些,就可以进入软件部分了!


17步:Arduino代码
簧风琴的运行代码非常简单。其使用以下代码解码MIDI数据:
http://forum.arduino.cc/index.php?topic=22447.0(感谢Arduino论坛用户leKuk),同时负责开闭相应的数字引脚。
三个Arduino的运行代码唯一不同之处在于它们的引脚号和它们响应的MIDI音符号之间的“偏移量”。
这是Arduino 1上playNote(演奏音符)函数的后半部分:
此处的“偏移量”是1:附在MIDI音符21对应琴键上的电磁铁连接Arduino的引脚22。因此,在给定MIDI音符的基础上,我们必须加一才能得到正确的Arduino输出引脚。
通过更改这些偏移量,我们可以改变Arduino被设定响应的MIDI范围。由于三个Arduino分别控制风琴的不同部分,因此它们的偏移量也有所差别。


18步:对蓝牙模块进行编程
现在,三个Arduino正在运行软件,但由于尚未设置蓝牙模块,因此无法接收MIDI数据。
HC-06的默认通信速度为9600波特。这对MIDI来说太慢了。我使用的波特率一直都是38400,这是最接近实际MIDI波特率 (31250) 的速度。
要改变HC-06的通信速度,我们必须将其设置于AT模式。这是一个有点过分讲究细节的过程,特别是如果你没有USB转TTL的转换器/电缆(如果你没有,那么你可以使用Arduino)。我就不解释具体如何操作了,你可以访问以下网址,遵照HC-06的使用说明:https://www.instructables.com/id/AT-command-mode-o...
请记住,我们的目标是将波特率设为38400,并(可选)按照你的想法设置名称。


19步:软件及如何发送MIDI到软件
为了能够切实演奏收到的任何文件,你需要安装一个名为“Hairless MIDI (Bridge)”的软件。该软件将MIDI从系统总线或程序输出中拖出,并通过你选择的串行端口发送出去。
我使用的是Mac电脑,一旦你与蓝牙模块(密钥是1234)实现配对,它就会转换为一个标准的硬件串口(我不知道这是否适用于Windows或Linux系统,我没有做相关测试)。然后我们打开Hairless MIDI bridge,选择该串口(它通常显示为“/dev/name-DevB”,其中“name”是你在上一步中为蓝牙模块设置的名称),选择输入系统总线(Mac上为“IAC System Bus”)并启用该桥。务必在Hairless-MIDI的首选项菜单中将波特率设置为38400。
现在你可以使用任意一个MIDI演奏软件了,而为了输出,请选择Hairless-MIDI桥接的系统总线。我用来演奏MIDI文件的软件是Aria MaestosoRondo。Rondo已正式停用,但如果你通过电子邮件向开发人员说明你的项目,他仍可能会向你提供许可证密钥。我想公开向开发者表示感谢:他是一个非常好的人,他免费给了我一张许可证。


20步:基于PID控制的压力调节器

支持MIDI-OVER-BLUETOOTH的MIDI控制型88键簧风琴图39
支持MIDI-OVER-BLUETOOTH的MIDI控制型88键簧风琴图40
支持MIDI-OVER-BLUETOOTH的MIDI控制型88键簧风琴图41

目前我正在研究一个可以用真空吸尘器驱动的压力调节器或控制器。~~此乐器将于9月23日至24日在Maker Faire上展出,我真的希望能在此之前做出成品,这样我就不必两天里每天花5个小时用脚踏泵给它充气了。~~编辑:该乐器已在前面提到的创客节展出。下文可能读起来像是还没有展出。
真空吸尘器通常将水柱抬高60英寸左右(一种压力测量方式)。根据所需的体积,簧风琴需要大约2至5英寸水柱的压力才能运行。显然,我们需要大幅减小吸尘器的压力。在测试过程中,我取下了风箱前端的一条皮带并将真空软管卡在前端的孔中。然后用强力胶带把它包起来并敞开剩余的孔以获取正确的压力。这种“受控”的漏洞系统运作良好,因此我将用它来控制簧风琴的压力。
我做了一个盒子,它的两端有真空管大小的孔,顶部有一个狭逢,还有一个可以通过伺服系统滑动开闭的盖子(见上图)。一个孔连接真空吸尘器,另一个孔连接簧风琴。当顶部的滑块打开时,空气更多地会通过顶部的狭缝而不是簧风琴,从而减小了簧风琴所受压力。如果滑块关闭,则情况相反,簧风琴所受压力增加。基本上,我也可以通过MIDI控制整个乐器的响度。我还没有真正把这个系统连接起来,但是我会在接下来的一周内完成以赶上创客节的展出。
我在某一时刻计划做的另一件事是制作一个音栓变换装置,这样就可以通过MIDI控制两个音栓。音栓改变声音的效果十分显著,一旦它们在我的掌控之中,那么整个乐器就能够统一由MIDI控制了。
实际上我很久以前就已经做到了伺服驱动单个音栓,但却没有永久安装它们,因为我急于让琴键开始弹奏。
祝你有美好的一天,感谢阅读此长文!如果你有任何疑问或要使用此教程做点什么,请给我留言。


21步:进一步探索

在某一时刻,我计划制作一个音栓变换装置,这样就可以通过MIDI控制两个音栓。音栓改变声音的效果十分显著,一旦它们在我的掌控之中,那么整个乐器就能够统一由MIDI控制了。
实际上我很久以前就已经做到了伺服驱动单个音栓,但却没有永久安装它们,因为我急于让琴键开始弹奏。

你可以在此处查看整个项目的扩展照片库:https://photos.app.goo.gl/0T7G6j06BgIUvHqB3



gada888  版主

发表于 2018-11-28 15:58:28

支持,支持
回复

使用道具 举报

robo027  初级技匠

发表于 2019-4-30 01:59:23

工程浩大!膜拜 膜拜!
回复

使用道具 举报

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

本版积分规则

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

硬件清单

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

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

mail