[FabNotes37]专治手残症的毕业设计:特雷·瓦力机器人

起源

在开始的开始,我打算做一个特雷门琴 Theremin。它是一种奇葩乐器,1919年由俄国物理学家 Theremin 教授发明,也是世界上第一种不需要身体接触就可以演奏的乐器(电子音乐的鼻祖)。

但是,在研究特雷门琴的原理时,被复杂的电路和声学原理吓得有点懵:

认怂了以后,调整原计划为一个简化版本:做一个迷你机器人,如果在机器人面前移动手的位置,机器人就会根据手掌距离自己的距离,发出不同声调的音符。你可以在不碰机器人的情况下,指挥它演奏一段乐曲。

因为既不是完整的特雷门琴,也不是机器人瓦力,只好叫做特雷·瓦力 (英文名 Mini Soundbot 又名迷你骚包)

草得不能再草的草图:

项目计划

期末作业的截止完成时间是 6.22,时间不多,必需做好时间计划。

我把项目分成 4 个部分:设计,编程,外观和测试。从 6.8 正式开始准备,当时只有一张草图,其余都是一片空白,意味着我需要用 10 天时间,把这个课程学到的东西运用到项目中,完成期末作业。要命的是,我离实验室有三个小时的路程 —— 我在广州,实验室在深圳。所有东西必须在出发前计划和设计好,才能保证去实验室的时间真正有所产出。

列出关键任务后,给它们分配具体的时间:

任务 日期 输出
研究特雷门原理 6.9-6.11 原理图,项目结构图
编程 6.12-6.18 在 Arduino 上可以正常运行的程序
电路元器件规划 6.12 PCB 设计文件
电路板设计 6.13 PCB 设计文件
购买元器件和其他材料 6.15 淘宝订单
设计外型组装部分 6.13-6.15 Fusion 360 设计源文件
雕刻电路板 6.18 电路板
焊接元件 6.18 电路板
测试输入和输出组件 6.19 基本功能可运作
制作外壳 6.18-6.19 激光切割和 3D 完成的部件
组装 6.19 把所有部分组装成完整的作品
调试 6.20-6.21 调试和演示准备

过程

1. 整体设计

输入 : 使用超声波测距模块 HC-SR04 检测距离:

输出: 最开始打算用小喇叭,但是效果不好,遂放弃。

改成用软件的方式实现声音的控制,把 macbook 作为扬声器,用程序将距离转换为 C 调音符:

材料和开销

硬件

  • ATTiny 45 芯片
  • 超声波测距模块 HC-SR04
  • AVRISP SMD
  • FTDI-SMD-HEADER
  • 电阻 10.0K OHM 1206 SMD
  • 电容 1UF 1206
  • 杜邦线

软件

外壳

  • 椴木板
  • 3D 打印部件

硬件和外壳部分总共花费约 $17 。

物品 数量 花费
Attiny 45 1 $ 2
HC-SR04 1 $ 1
AVRISPSMD 1 $ 1
FTDI-SMD-HEADER 1 $ 1
RES 10.0K OHM 1206 SMD 2 $ 0.1
CAP CER 1UF 1206 1 $ 0.1
Dupont Line 5 $ 0.1
basswood 2 $ 10
3D Printing PLA 1 $1
glue 1 $ 1
TOTAL $ 17

2. 编程

为了实现用电脑作为声音转化器,我使用开源的 C++ 套件 openFrameworks。这个库简化了很多音频处理的工作。

OpenFrameworks 下载 以及 xcode 安装指南

openFrameworks 有一个叫做 micknoise/Maximilian的 C++ 插件,专门用来做声音合成以及音乐数字信号处理和转换,这样我就能直接将传感器的信号转换成为可播放的音阶:

下载源代码.

在制作电路之前,我先用 Arduino 来测试基础功能:

Hello world 视频:

https://youtu.be/4Pd2nPjEf1U

3. 电路设计

因为使用了软件实现主要的模拟信号转换,所以电路方面就变得简单很多,只需要实现传感器的数据传输就行:

电路设计源文件 / from box.net.

4. 制作电路板

使用 RSM-20 雕刻电路板并且焊接元器件:

烧程序 sudo make -f hello.HC-SR04.make program-usbtiny

avr-objcopy -O ihex hello.HC-SR04.out hello.HC-SR04.c.hex;\
    avr-size --mcu=attiny45 --format=avr hello.HC-SR04.out
AVR Memory Usage
----------------
Device: attiny45

Program:     526 bytes (12.8% Full)
(.text + .data + .bootloader)

Data:          2 bytes (0.8% Full)
(.data + .bss + .noinit)


avrdude -p t45 -P usb -c usbtiny -U flash:w:hello.HC-SR04.c.hex

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9206
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "hello.HC-SR04.c.hex"
avrdude: input file hello.HC-SR04.c.hex auto detected as Intel Hex
avrdude: writing flash (526 bytes):

Writing | ################################################## | 100% 0.92s

avrdude: 526 bytes of flash written
avrdude: verifying flash memory against hello.HC-SR04.c.hex:
avrdude: load data flash data from input file hello.HC-SR04.c.hex:
avrdude: input file hello.HC-SR04.c.hex auto detected as Intel Hex
avrdude: input file hello.HC-SR04.c.hex contains 526 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 1.11s

avrdude: verifying ...
avrdude: 526 bytes of flash verified

avrdude: safemode: Fuses OK (H:FF, E:DF, L:62)

avrdude done.  Thank you.

5. 制作外壳

超声波测距模块长得很像机器人的眼睛,所以干脆给它整了一个机器人 Wall-E 的造型。 在 Fusion 360 里做好部件的设计:

然后导出成 dxf 文件到 Coraldraw 里,发送到 GCC 激光切割机。使用的参数是: speed 2.7 , power 100:

切割完成:

开始组装:

还补充了一些 3D 打印的小部件:

设计和切割源文件 / from box.net.

测试

看起来万事俱备,测试走起!

Test video for UI when playing

在移动过程中,音符的识别容易抖动,需要做进一步的滤波处理。

演示

期末项目的演示材料

Slide:

Video:

Mini SoundBot - Youtube

Mini SoundBot - Vimeo

复盘经验

  1. 项目管理

    项目管理很重要,即便只是个人项目。如果没有确切的时间表和关键任务列表,整个过程会变得地狱般忙乱。一旦把看似复杂的整个项目拆解成任务列表,并且明确每个任务的期限,每一步行动就有了目标,也就没有太多的时间去焦虑。更重要的是,把每个任务需要产出的结果和标准给出来,会更明确下一步要做什么,以及做到什么程度就应该继续下一个任务,而不是无休止的纠缠于细节。

  2. 学习了音频和音乐制作的一些原理

    如何通过程序将传感器信号转换成为有规律的音符。音阶和频率都很有意思(有时候也让人摸不着头脑),当然,还有不少音乐制作的基础概念,比如 propagation 传播, amplitude 振幅,frequency 频率和timbre 音色。

  3. 使用第三方框架和插件来提高效率

    在开源的世界和神奇的 github,不用再重复造轮子,有大量的优秀的项目和组件库等着被挖宝,虽然仔细地读文档和看例子挺费时间,但相比自己去实现复杂的功能,这个投入的性价比实在太高了。

待完善部分

  • 程序的稳定性依然有待改善
  • 目前只做到了音阶的转换,但是没有实现特雷门琴的另一个主要特性:用手掌距离的远近控制音量大小
  • 更有趣的做法是,做一个可以自动播放旋律的装置,而不是手工去演奏。

参考

特雷门原理图:

[图片上传失败...(image-b7703b-1514346070595)]

课程资源

致谢

这半年,要感谢很多人:实验室的小伙伴,guru 们,工作上的小伙伴,被我拒绝周末约饭的小伙伴们,谢谢大家对我的理解和支持。

特别感谢在我发出攒学费帖之后,慷慨赞助的各位 ,以及给每一篇笔记打赏和留言的朋友们。过程很难熬,好在有你们的鼓励。

鞠躬,谢谢!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,080评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,422评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,630评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,554评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,662评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,856评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,014评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,752评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,212评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,541评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,687评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,347评论 4 331
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,973评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,777评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,006评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,406评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,576评论 2 349

推荐阅读更多精彩内容