[FabNotes37]專治手殘癥的畢業(yè)設(shè)計(jì):特雷·瓦力機(jī)器人

起源

在開始的開始,我打算做一個(gè)特雷門琴 Theremin。它是一種奇葩樂器,1919年由俄國物理學(xué)家 Theremin 教授發(fā)明,也是世界上第一種不需要身體接觸就可以演奏的樂器(電子音樂的鼻祖)。

但是,在研究特雷門琴的原理時(shí),被復(fù)雜的電路和聲學(xué)原理嚇得有點(diǎn)懵:

認(rèn)慫了以后,調(diào)整原計(jì)劃為一個(gè)簡化版本:做一個(gè)迷你機(jī)器人,如果在機(jī)器人面前移動(dòng)手的位置,機(jī)器人就會(huì)根據(jù)手掌距離自己的距離,發(fā)出不同聲調(diào)的音符。你可以在不碰機(jī)器人的情況下,指揮它演奏一段樂曲。

因?yàn)榧炔皇峭暾奶乩组T琴,也不是機(jī)器人瓦力,只好叫做特雷·瓦力 (英文名 Mini Soundbot 又名迷你騷包)

草得不能再草的草圖:

項(xiàng)目計(jì)劃

期末作業(yè)的截止完成時(shí)間是 6.22,時(shí)間不多,必需做好時(shí)間計(jì)劃。

我把項(xiàng)目分成 4 個(gè)部分:設(shè)計(jì),編程,外觀和測(cè)試。從 6.8 正式開始準(zhǔn)備,當(dāng)時(shí)只有一張草圖,其余都是一片空白,意味著我需要用 10 天時(shí)間,把這個(gè)課程學(xué)到的東西運(yùn)用到項(xiàng)目中,完成期末作業(yè)。要命的是,我離實(shí)驗(yàn)室有三個(gè)小時(shí)的路程 —— 我在廣州,實(shí)驗(yàn)室在深圳。所有東西必須在出發(fā)前計(jì)劃和設(shè)計(jì)好,才能保證去實(shí)驗(yàn)室的時(shí)間真正有所產(chǎn)出。

列出關(guān)鍵任務(wù)后,給它們分配具體的時(shí)間:

任務(wù) 日期 輸出
研究特雷門原理 6.9-6.11 原理圖,項(xiàng)目結(jié)構(gòu)圖
編程 6.12-6.18 在 Arduino 上可以正常運(yùn)行的程序
電路元器件規(guī)劃 6.12 PCB 設(shè)計(jì)文件
電路板設(shè)計(jì) 6.13 PCB 設(shè)計(jì)文件
購買元器件和其他材料 6.15 淘寶訂單
設(shè)計(jì)外型組裝部分 6.13-6.15 Fusion 360 設(shè)計(jì)源文件
雕刻電路板 6.18 電路板
焊接元件 6.18 電路板
測(cè)試輸入和輸出組件 6.19 基本功能可運(yùn)作
制作外殼 6.18-6.19 激光切割和 3D 完成的部件
組裝 6.19 把所有部分組裝成完整的作品
調(diào)試 6.20-6.21 調(diào)試和演示準(zhǔn)備

過程

1. 整體設(shè)計(jì)

輸入 : 使用超聲波測(cè)距模塊 HC-SR04 檢測(cè)距離:

輸出: 最開始打算用小喇叭,但是效果不好,遂放棄。

改成用軟件的方式實(shí)現(xiàn)聲音的控制,把 macbook 作為揚(yáng)聲器,用程序?qū)⒕嚯x轉(zhuǎn)換為 C 調(diào)音符:

材料和開銷

硬件

  • ATTiny 45 芯片
  • 超聲波測(cè)距模塊 HC-SR04
  • AVRISP SMD
  • FTDI-SMD-HEADER
  • 電阻 10.0K OHM 1206 SMD
  • 電容 1UF 1206
  • 杜邦線

軟件

外殼

  • 椴木板
  • 3D 打印部件

硬件和外殼部分總共花費(fèi)約 $17 。

物品 數(shù)量 花費(fèi)
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. 編程

為了實(shí)現(xiàn)用電腦作為聲音轉(zhuǎn)化器,我使用開源的 C++ 套件 openFrameworks。這個(gè)庫簡化了很多音頻處理的工作。

OpenFrameworks 下載 以及 xcode 安裝指南。

openFrameworks 有一個(gè)叫做 micknoise/Maximilian的 C++ 插件,專門用來做聲音合成以及音樂數(shù)字信號(hào)處理和轉(zhuǎn)換,這樣我就能直接將傳感器的信號(hào)轉(zhuǎn)換成為可播放的音階:

下載源代碼.

在制作電路之前,我先用 Arduino 來測(cè)試基礎(chǔ)功能:

Hello world 視頻:

https://youtu.be/4Pd2nPjEf1U

3. 電路設(shè)計(jì)

因?yàn)槭褂昧塑浖?shí)現(xiàn)主要的模擬信號(hào)轉(zhuǎn)換,所以電路方面就變得簡單很多,只需要實(shí)現(xiàn)傳感器的數(shù)據(jù)傳輸就行:

電路設(shè)計(jì)源文件 / 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. 制作外殼

超聲波測(cè)距模塊長得很像機(jī)器人的眼睛,所以干脆給它整了一個(gè)機(jī)器人 Wall-E 的造型。 在 Fusion 360 里做好部件的設(shè)計(jì):

然后導(dǎo)出成 dxf 文件到 Coraldraw 里,發(fā)送到 GCC 激光切割機(jī)。使用的參數(shù)是: speed 2.7 , power 100:

切割完成:

開始組裝:

還補(bǔ)充了一些 3D 打印的小部件:

設(shè)計(jì)和切割源文件 / from box.net.

測(cè)試

看起來萬事俱備,測(cè)試走起!

Test video for UI when playing

在移動(dòng)過程中,音符的識(shí)別容易抖動(dòng),需要做進(jìn)一步的濾波處理。

演示

期末項(xiàng)目的演示材料

Slide:

Video:

Mini SoundBot - Youtube

Mini SoundBot - Vimeo

復(fù)盤經(jīng)驗(yàn)

  1. 項(xiàng)目管理

    項(xiàng)目管理很重要,即便只是個(gè)人項(xiàng)目。如果沒有確切的時(shí)間表和關(guān)鍵任務(wù)列表,整個(gè)過程會(huì)變得地獄般忙亂。一旦把看似復(fù)雜的整個(gè)項(xiàng)目拆解成任務(wù)列表,并且明確每個(gè)任務(wù)的期限,每一步行動(dòng)就有了目標(biāo),也就沒有太多的時(shí)間去焦慮。更重要的是,把每個(gè)任務(wù)需要產(chǎn)出的結(jié)果和標(biāo)準(zhǔn)給出來,會(huì)更明確下一步要做什么,以及做到什么程度就應(yīng)該繼續(xù)下一個(gè)任務(wù),而不是無休止的糾纏于細(xì)節(jié)。

  2. 學(xué)習(xí)了音頻和音樂制作的一些原理

    如何通過程序?qū)鞲衅餍盘?hào)轉(zhuǎn)換成為有規(guī)律的音符。音階和頻率都很有意思(有時(shí)候也讓人摸不著頭腦),當(dāng)然,還有不少音樂制作的基礎(chǔ)概念,比如 propagation 傳播, amplitude 振幅,frequency 頻率和timbre 音色。

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

    在開源的世界和神奇的 github,不用再重復(fù)造輪子,有大量的優(yōu)秀的項(xiàng)目和組件庫等著被挖寶,雖然仔細(xì)地讀文檔和看例子挺費(fèi)時(shí)間,但相比自己去實(shí)現(xiàn)復(fù)雜的功能,這個(gè)投入的性價(jià)比實(shí)在太高了。

待完善部分

  • 程序的穩(wěn)定性依然有待改善
  • 目前只做到了音階的轉(zhuǎn)換,但是沒有實(shí)現(xiàn)特雷門琴的另一個(gè)主要特性:用手掌距離的遠(yuǎn)近控制音量大小
  • 更有趣的做法是,做一個(gè)可以自動(dòng)播放旋律的裝置,而不是手工去演奏。

參考

特雷門原理圖:

[圖片上傳失敗...(image-b7703b-1514346070595)]

課程資源

致謝

這半年,要感謝很多人:實(shí)驗(yàn)室的小伙伴,guru 們,工作上的小伙伴,被我拒絕周末約飯的小伙伴們,謝謝大家對(duì)我的理解和支持。

特別感謝在我發(fā)出攢學(xué)費(fèi)帖之后,慷慨贊助的各位 ,以及給每一篇筆記打賞和留言的朋友們。過程很難熬,好在有你們的鼓勵(lì)。

鞠躬,謝謝!!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容