设为首页收藏本站

ChoirBot,桌子上的迷你机械乐队

virtualwiz 发表于 2016-3-14 23:40:55 | 显示全部楼层 [复制链接]
43 13662
本帖最后由 virtualwiz 于 2016-3-16 17:51 编辑

CM160314-143754001.gif





步进电机,作为一种相当普遍使用的机电设备,具有相当灵活的调速性能,工作时也会产生转动的嗡嗡声。既然这种电机的声音可以被控制,那就一定有变成乐器的潜质

其实不光是步进电机,各种电机都可以变成乐器。曾经在YouTube上看见歪果仁将音频信号送入电机驱动,直流电机直接像扬声器似的唱了起来。再比如,玩过四轴的朋友们一定听过无刷电调、电机上电的铃声。甚至还有人利用闭环控制,让摩托车发动机奏响了星球大战主题曲…让在场观众长跪不起…..
于是我决定做个小项目,让四枚步进电机分别担当主音、贝司、节奏、弦乐的角色,随时可以在办公桌上来一场小型音乐会----听起来就像机器人组成的唱诗班,命名为
ChoirBot

-->点这里,传送到Bilibili视频专辑<--




想看更多~请往下翻~~


1,科普在先
它是怎么出声音的?
骑过摩托车没?设想你正在一条长长的路上骑行,突然将油门拧到底!脑补一下发动机的声音,是不是某种频率逐渐上升的音调?要是你忽大忽小地拧油门,控制得足够快、足够准确,你也可以用摩托车的发动机来演奏一曲,哈哈。这和步进电机演奏乐曲的道理是差不多的,只不过这回是Arduino在骑摩托车:lol

为什么用步进电机?
有两种方法让电机唱歌。
   --->  一种是将音频信号经过某种放大,直接送给电机。
   --->  另一种是用传感器获取电机的转动声,通过快速傅里叶变换(FFT)算出声音的频率,再通过比例、微分、积分(PID)计算,控制电机加速、减速到匹配的频率。
直流电机也是可以的,若是使用上述第一种方法,驱动电路非常简单,成本也低。但是电机不是处于正常(直流)的工作状态,电机轴不转,声音很小,而且没什么机械感。要是采用第二种方法,复杂程度就不用说了,对电机性能、单片机运算速度要求高,而且系统太复杂很容易受干扰,四个电机一起唱就是真的作死啦。
步进电机就不同了,静态时会刹车不受自身惯性影响,而且工业用的电机驱动非常成熟,只要送入一定频率的调速脉冲,就可以随便控制电机以任何步进速率运转,而且声音也富有机械感,像机器人在唱歌。

我喜欢的歌曲都可以直接播放吗?
不一定都可以。首先你要找到这首歌的MIDI格式文件(.mid)。这种文件跟我们平常听的mp3有很大不同,MIDI文件中存储的是一行行的指令,比如
第一秒,选择第8通道,启动A5这个音符,用小提琴的音色,力度127;第1秒半踩下延音踏板;第二秒关闭所有音符……
就是一连串这些指令构成了MIDI音乐文件,一般一首歌只有十几至一百多KB,而且在不同的声卡上,播放效果有很明显的区别。
一些吉他谱的格式,比如gp5,实际上也是midi文件,可以互相转换。要是在网上找不到你喜欢的Midi文件,你又恰巧懂乐理,可以用编曲软件自己制作。



2,准备材料
有请主角出场——步进电机四枚
IMG_4208.png

控制板,开关等。每个电机需要一枚Pro Mini,或者Nano也可以。我还额外用了一个Bluno,既可以用作蓝牙接收装置,也可以用作液晶屏界面的控制器。
IMG_4214.png IMG_20160305_212430.png IMG_4215.png

12V开关电源,和7805三端稳压器。我用7805给5个单片机供电的时候,发现管子的温度相当高,所以又用了一个开关稳压模块,将输入电压降至9V左右,再均匀分配给独立7805和Bluno上的稳压管,减少了电源部分的发热量。
IMG_20160307_205804.png IMG_20160307_210046.png

电机驱动,要选择这种带脉冲输入的。这种黑盒驱动比较贵,我用的是不带外壳的板子,带有电流、细分调节、刹车电流设置等不少功能。
IMG_4238.png

螺丝、扎带(大量)等辅助材料,画板一块
IMG_4218.png IMG_4216.png

74HC04 六通道反相器一片,后面我会说明用途
IMG_4217.png


3,问题与构思

IMG_20160305_204055.png
正式开始制作之前我进行了一些测试,发现了一些问题。我会写出解决方法供参考。
IMG_20160305_210432.png
一开始我想用1片Bluno控制全部四个电机,结果无论程序代码怎么调整、优化,都表现得非常不稳定,发出异常响声或者直接卡死。这个问题至今无解,怀疑是ATMega328P的RAM不够。
于是买了5片DF的Cheapduino,8MHz的芯片,又发现无法使用tone()函数(后来搜索了一下,Arduino NG上执行tone()函数确实有问题)。
最终也是为了便于安装,使用了Pro Mini,与Uno相同是ATMega328的芯片,所有功能都正常。
IMG_20160309_151301.png IMG_20160306_123608.png QQ图片20160314195212.jpg
调试阶段遇到的另一个问题是,当我把Romeo的RX与4片Nano并起来的时候,发现它们都不工作了,但是将Romeo与Mega的RX相连是可以正常工作的。不知原因,用示波器观察RX上的波形,BLE芯片给328P的是3.3v的电平。连接Nano后电平被直接拉到了5V。简单的解决方法是,用一片74HC04反相器(Vcc=5V)将3.3v的信号反相两次,即可变成5V电平。
QQ图片20160314195205.jpg QQ图片20160314195638.jpg


4,开工

2016-03-14 21:06:57屏幕截图.png
写这个固件的时候参考了Arduino官方社区的 greg-kennedy的帖子 http://forum.arduino.cc/index.php?topic=79326.0,他提出了Arduino制作简易合成器的方法。
为四片Pro Mini烧写固件。在这个项目中,4片芯片的串口RX是连在一起的,为什么能够发出不同声部的音乐呢?
秘密在此处:程序开头的地方有一个myChannel的宏定义,它定义的是芯片将会接收哪一个MIDI通道上的内容。(一般最多有16个通道)
明白了吧?比如下载第一个芯片时,设置成0x00,第二片设置成0x01............第四片设置成0x03。只有这里需要手动改一下。


2016-03-14 21:13:08屏幕截图.png

先组装电机的控制板。取4片Pro Mini,焊上侧面的所有排针,用芯片座将它们固定在洞洞板上。
LZ没有正好一样大的,只好将更长的芯片座剪开。
IMG_4220.png IMG_4222.png
将所有芯片的RX引脚连在一起,并与Vcc,Gnd一起引出。并将D6引脚(程序中可设置) 引出到电路板正面,作为信号输出。
IMG_4223.png
将电机和驱动也连接好,固定在画板上。可以参考购买的电机驱动的说明书。
每个板子上都有安装螺丝的孔。但我觉得扎带比较方便,就没有用螺丝。
IMG_4221.png

当你固定完四个电机后,如果你不需要蓝牙和液晶屏的部分,这个程序已经可以让你的乐队试着演奏一曲了。具体怎么演奏请往后看。
IMG_4219.png

如果用Bluno作为蓝牙接收器就需要一片74HC04六非门,来转换一下BLE芯片的逻辑电平。
将RX信号输入任意一个非门A,再将A的输出连接B的输入,B的输出引出,相当于将信号翻转了两次,3.3V的电平就变成5V了。
(此处明天补充一个电路图)


IMG_4230.png
接着是自由发挥部分,液晶屏、开关可以随便接,DIY一个可以显示信息、调试电机的东西。这个代码LZ写得仓促,很乱,就不发上来迷惑大家了

IMG_4236.png

全部完成的效果,可以上12V电试一下了。LZ用的电机驱动和稳压器可以输入9V~24V,所以接各种航模电池也没问题。
IMG_4232.png
板子上指示灯特别多,晚上开启会有意外惊喜
IMG_20160311_231935.png


说一下电脑端的设置,LZ用的是Linux系统,上面有一款超级强大的MIDI工作站软件,叫Rosegarden,而且是免费的。
  1. sudo apt-get install rosegarden
复制代码
要实现串口到MIDI转换,还需要一个非常小巧但非常实用的工具:Hairless MidiSerial.可以在这里下载
  1. http://projectgus.github.io/hairless-midiserial/
复制代码

简单介绍一下配置方法。
插入DFRobot BLE Link,然后打开Rosegarden和Hairless,首次运行Hairless要设置波特率,如下图。
2016-03-14 21:38:41屏幕截图.png

在Rosegarden打开的情况下,将MIDI端口和串口设置好,MIDI In要选择Rosegarden:3 ,这个是默认的输出端口。
2016-03-14 21:39:39屏幕截图.png

然后就可以在Rosegarden中加载一个你喜欢的MIDI文件了,以GodFather为例。
2016-03-14 21:40:37屏幕截图.png
按下Alt-K ,再按M,使所有音轨静音。这时音轨前面的蓝灯会熄灭。

找到你认为要演奏的通道,比如贝斯。先点亮蓝灯,然后按鼠标右键,通用MIDI设备,在1,2,3,4中可以任意选择,分别对应1,2,3,4号步进电机。
2016-03-14 21:42:07屏幕截图.png
然后切记要在Rosegarden的左下角将通道设置从auto改成fixed。LZ调试的时候在这一步卡了两天多,才发现
然后以此类推,将其余3个通道设置好,每个通道都要将auto改成fixed。
2016-03-14 21:42:19屏幕截图.png
2016-03-14 21:42:52屏幕截图.png
如果电机连接正确,并可以发出上电铃声,就可以等待BLE连接好后,点击播放按钮试试了:lol
要是没反应,检查Bluno的收发指示灯有没有闪烁。也许是Hairless的端口没有选对。有时关闭Hairless桥重新打开可以解决问题。
建议勾上Debug MIDI messages来看看有没有数据送出。



5,演出开始!
在你将这个装置搬上舞台之前,也许需要仔细调试才能确保电机发出最好的声音。比如,负责贝斯的电机很有可能声音太大,并导致桌子上的东西共振,甚至跳起来。你可以拨动驱动板上的开关来取消贝斯电机的细分设置,或者减小电流。
Tocatta and Fugue


GodFather


歌唱祖国


Country Roads


In the Hall of the Mountain King


时间太晚了,LZ没能一天赶出所有视频和更加详细的说明,请待我明天继续补充,谢谢大家!

IMG_4210.png
发表于 2016-3-16 17:57:14 | 显示全部楼层
Ash 发表于 2016-3-16 13:26
in the hall of the mountain king  在山魔王的宫殿

@Ash   已经更新啦,请慢用


点评

开源的,就这一点比某国技术宅强10倍,赞一个  发表于 2016-4-20 19:31
so sweet~~  发表于 2016-3-16 18:22
回复 支持 2 反对 0

使用道具 举报

发表于 2016-3-15 06:43:24 | 显示全部楼层
楼主是职业玩乐器的吗?
回复 支持 反对

使用道具 举报

发表于 2016-3-15 07:32:58 | 显示全部楼层
hnyzcj 发表于 2016-3-15 06:43
楼主是职业玩乐器的吗?

不是啦不过一直想认真地给自己做一样乐器
回复 支持 反对

使用道具 举报

发表于 2016-3-15 08:42:31 | 显示全部楼层
virtualwiz 发表于 2016-3-15 07:32
不是啦不过一直想认真地给自己做一样乐器

你这套东西不光吊爆了,而且还有技术含量,哈哈
回复 支持 反对

使用道具 举报

发表于 2016-3-15 08:42:49 | 显示全部楼层
牛到1B
回复 支持 反对

使用道具 举报

发表于 2016-3-15 10:14:35 | 显示全部楼层
卧槽V神新作真的是。。牛掰到炸裂!!!
#妈妈问我为神马要跪着看视频系列#
回复 支持 反对

使用道具 举报

发表于 2016-3-15 11:09:16 | 显示全部楼层
哈哈  这音乐有毒  楼主屌爆了
回复 支持 反对

使用道具 举报

发表于 2016-3-15 12:27:01 | 显示全部楼层
hnyzcj 发表于 2016-3-15 08:42
你这套东西不光吊爆了,而且还有技术含量,哈哈

哈哈多谢还有不少不完善的地方望大家提出建议
回复 支持 反对

使用道具 举报

发表于 2016-3-15 13:01:36 | 显示全部楼层
heinau 发表于 2016-3-15 10:14
卧槽V神新作真的是。。牛掰到炸裂!!!
#妈妈问我为神马要跪着看视频系列# ...

回复 支持 反对

使用道具 举报

发表于 2016-3-15 13:02:02 | 显示全部楼层
源代码 发表于 2016-3-15 11:09
哈哈  这音乐有毒  楼主屌爆了

我也觉得声音好魔性
回复 支持 反对

使用道具 举报

发表于 2016-3-15 16:06:36 | 显示全部楼层
v神,给你开个音乐会吧~~有木有兴趣?
回复 支持 反对

使用道具 举报

发表于 2016-3-15 16:17:28 | 显示全部楼层
luna 发表于 2016-3-15 16:06
v神,给你开个音乐会吧~~有木有兴趣?

真的嘛
回复 支持 反对

使用道具 举报

发表于 2016-3-15 19:03:08 | 显示全部楼层
楼主是职业玩乐器的
回复 支持 反对

使用道具 举报

发表于 2016-3-15 19:26:29 | 显示全部楼层
大连林海 发表于 2016-3-15 19:03
楼主是职业玩乐器的

回复 支持 反对

使用道具 举报

发表于 2016-3-15 20:57:35 | 显示全部楼层
V神 我可以点歌吗吗吗吗吗 [崇拜脸]
回复 支持 反对

使用道具 举报

发表于 2016-3-15 23:48:07 | 显示全部楼层
哇 - -  V神你真是捕捉到了声音的精髓啊……
回复 支持 反对

使用道具 举报

发表于 2016-3-16 12:04:10 | 显示全部楼层
Ash 发表于 2016-3-15 20:57
V神 我可以点歌吗吗吗吗吗 [崇拜脸]

欢迎点歌老板的指示呀
回复 支持 反对

使用道具 举报

发表于 2016-3-16 12:06:49 | 显示全部楼层
本帖最后由 virtualwiz 于 2016-3-16 12:09 编辑
iooops 发表于 2016-3-15 23:48
哇 - -  V神你真是捕捉到了声音的精髓啊……

好硕大一只彼尔德


回复 支持 反对

使用道具 举报

发表于 2016-3-16 13:26:26 | 显示全部楼层
virtualwiz 发表于 2016-3-16 12:04
欢迎点歌老板的指示呀

in the hall of the mountain king  在山魔王的宫殿
回复 支持 反对

使用道具 举报

发表于 2016-3-16 14:33:48 | 显示全部楼层
virtualwiz 发表于 2016-3-16 12:06
好硕大一只彼尔德

你的比我大啊 - -
回复 支持 反对

使用道具 举报

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

本版积分规则 允许回帖同步到新浪微博  

  • 版主
  • 3206
  • 54
  • 蘑菇人勋章

    蘑菇人勋章

  • 活跃会员

    活跃会员

  • 版主限定

    版主限定

推荐阅读

精华导读




公司简介| 联系我们| 小黑屋| 加入我们| 微博| 优酷| 英文网站| DF创客社区 ( 沪ICP备09038501号-4  
友情链接| 硬创邦| 花生壳社区| 模友之吧| 电子发烧友社区| 创客星球| 云汉电子社区| 电子工程网| 与非网| Arduino中文社区| 南极熊3D打印网| OneNET|

上海智位机器人有限公司  沪ICP备09038501号-4   

Powered by Discuz! X3.1

Licensed Comsenz Inc.

返回顶部 返回列表