SY-01

最近隨手用arduino來DIY自製弄了個MIDI控制器 -【SY-01】。

【SY-01】
自己量身訂做,樂趣多多,不但所花費用遠遠幅低於購買大廠牌所出的midi controller,還可以營造出100%全台獨一無二的手工質感!更重要的是能以「生活智慧王」的姿態向朋友展示耍酷!不過在製作上所耗去的時間跟人力成本完全不知道要跟誰算…所以建議想弄的人可以一次做10個,或是相約一群親朋好友透過機械化作業來批次處理(外殼開洞、電路焊接、噴漆等),比較划算。

當然利用arduino自製,重點可以加入一般市售midi controoler所沒有的感測器來做訊號輸入,例如光感測或是距離。回到單純以現場表演需要手動介面操控的實用功能性說,個人認為買現成來的在訊號與硬體上還是稍微比較來得穩固。有錢沒閒者,請買進口MIDI大廠最猛的多功能控制器 。沒錢有閒或是想耍酷者,不妨可以自己弄一個來玩玩。

【SY-01】+Max for Live編寫設計的step sequencer做即興編曲測試。

Arduino 2 controller

前陣子於台北數位藝術中心的「Arduino、 感應器與Max/MSP/Jitter 互動工作坊」。三次班別的課程結束,這裡便將課程中所DIY製作的控制器controller,其中arduino的電路與簡易連接Max/MSP之方式說明介紹。

自製arduino控制器

控制器的材料部分如下:

1. Arduino – 任一版本

2. 麵包板

3. 單芯線

4. 外殼部分-「萬用盒」(電子材料行皆有賣)

5. 電阻(10KΩ)

6. LED燈

7. 按鈕(無段式)

8. 搖頭開關(兩段式)

9. 光敏電阻

10.滑桿電阻

11.可變電阻(旋鈕)

12.滑桿電阻

13.蜂鳴片

Controller中主要以類比輸入analog in方式,作為主要的訊號輸入。內部電子電路連接方式如下圖:

在Arduino連接到麵包板上組合,由左而右分別為:

a. 按鈕開關A:用按鈕或是開關皆可,在範例中是使用無段式按鈕

b. 按鈕開關B:用按鈕或是開關皆可,在範例中是使用兩段式搖頭開關(圖片中使用一般小型按鈕圖示來代替)

c. 光敏電阻

d. 可變電阻(旋鈕):共有三支接腳,接線方式為左右各接至正電與負電,中間連接至類比輸入的pin腳訊號端(正負電兩端若接成對調,其功能依舊正常,但訊號最大值(1023)最小值(0)會對調)

e. 滑桿電阻:電阻大小規格皆不同,多為三支接腳,有些種類可能是四腳和六腳等不一定。接法與可變電阻一樣,其中有兩支為正負,一支為訊號。可視情況加上一個小電阻。

f. 蜂鳴片:蜂鳴片可以感測震動或敲擊時的微震動(加速度)。控制器製作中,我們將蜂鳴片用雙面膠緊緊黏貼於透明壓克上(厚度1mm),作為壓力感測或是感測力道的打擊墊。電路接法「內正外負」,中心部分焊接後接入類比輸入pin,邊緣外部焊接後接到Gnd負電。

g. 在digital pin 13的部分接上個LED燈(一般彈頭型LED的長腳為正接在pin 13,短腳為負接在Gnd),到時候可以設計當作觸發顯示之類的功能。

【控制器實際照片內有10段式的LED燈部分,但電路範例圖片中沒有,可以自由加上去;正極針腳十支分別連接在digital pin 2-11上,負極部分可共地焊在插入Gnd。可設計作為聲音等化器或是自己小型光柱顯示等效果。】

請看

我們可以將arduino與小塊的麵包板黏貼在萬用盒的底部,線路就方便在裡面接一接了事。記得將arduino連接usb插孔處靠近於底部邊緣,以便在上蓋處挖洞製作一插孔處。

裡面是長這樣,線路亂七八糟請勿模仿

要將arduino與Max/MSP連接方法,在先前早期的幾篇文章之中都有提到,這裡便不加以贅述。【可以至http://www.arduino.cc/playground/Interfacing/MaxMSP下載SimpleMessageSystem】。

稍微可以注意一下的地方,即是在arduino連接Max/MSP的程式中,win系統的朋友們們在serial物件內設定usb com port的部分,在引數的「COM」要大寫才會有反應(Max 4的時候小寫就可以了);Mac系統的使用者則要將usb port的編碼完整輸入替代COM幾的部分(例如usbserial.A600shaf之類的)。

如果試做完成控制器,可以download下列我簡易玩midi聲響的patch來測試一下。

Download patch : play controller__midi.maxpat

此patch的大概功能效果如下:

1. 無段按鈕可以觸發撥放midi音高

2. 搖頭開關在開關一下時,能夠隨機切換midi音色

3. 光敏電阻部分藉由遮蓋光源差異,即時調變midi打擊聲響之音色

4. 旋鈕可以改變midi音高之高低變化

5. 滑感電阻可調變控制midi聲響的聲音大小(力度)

6. 敲擊感測壓克力表面(蜂鳴片)能夠觸發midi打擊聲響

範例中的部分運算數值與設計作為判斷的門檻值(如select與split物件等),是依據我個人的controller所編輯的(電子材料規格差異或電阻大小不同等皆會影響訊號值之不同),直接下載使用的話,還是需要作些微的理解後調整。不過有了自己的controller,再能連接將訊號送入Max/MSP中,接下來看要玩聲響、影像或是連接外部電力裝置等各玩法就看個人發揮了。

嘻嘻嘿嘿呵

Max/MSP/Jitter 互動影音系列課程

工商時間

Arduino、感應器與Max/MSP/Jitter 互動工作坊(進階課程)

台北數位藝術中心邀請藝術家宋恆老師介紹互動影音系統Max/MSP/Jitter之應用,與簡易快速整合 Arduino進行互動創作,動手製作個人化 midi controller;透過進行實作範例教學,了解相關軟體與媒材應用於互動設計上的更多可能。

主題:Max/MSP/Jitter + Arduino (playing Max/MSP/Jitter + Arduino)

時間:2010. 01/ 16.17 (周六、日) 9:30~18:00

地點:台北數位藝術中心   http://www.dac.tw

講師:宋恆

學員人數:20人為上限  (若人數不足本中心保留是否開班的權利)

目的:推廣互動影音藝術相關設計實作—介紹互動影音系統Max/MSP/Jitter之應用與簡易快速整合 Arduino進行互動創作。

工作坊內容:互動影音設計概念;Max/MSP之基本功能;聲音互動範例教學;Jitter即時影像互動範例教學;Arduino介紹與感應器互動整合,動手製作個人化 midi controller;透過進行實作範例教學,了解相關軟體與媒材應用於互動設計上的更多可能。

詳情請見 http://www.dac.tw/2009_ArduinoAndMaxMSPJitter.html

非關特戰的互動藝術工作坊 – 最終回【Arduino + 光敏電阻】

class

工作坊課堂上嘻皮笑臉

遲來且最終回的工作坊課程介紹中,將說明arduino與光敏電阻之連接,並將訊號送入Max/MSP加以應用。

光敏電阻在運用上可粗略視為一種「光線明暗感測」,而在場域及裝置上的光線控制設計下,也可以部份有效地作為簡單的「垂直距離感測器」。

要透過arduino連接各類感測器取得訊號值的差異,不論是「多快多亮多濕多熱多彎多斜多大力」等的變因輸入,皆必須利用analog類比腳位來做連接;這裡的光敏電阻所感測到明暗的訊號值差異也是如此。

最直接地讓我們先照著圖把線路插一插接好。如下圖所示:

arduino_light-sensor

請看

另外也可以參考對照一下遠在中國成都的好朋友互動設計高手鯨男所畫的酷炫插畫arduino+溼度電阻圖(光敏電阻也通用)

2214094674_74fa2cf0e5

圖偷自於【鯨男愛互動】http://imlab.cn/whale/

接好線路後,我們打開先前用來連接Max/MSP與Arduino的SimpleMessageSystem資料夾,並開啟其中MaxMsp Example資料夾內的SimpleMessageSystem_analogin.mxb檔案。Patcher如下圖:

analog

首先更改serial物件內arduino所對應的com port編碼(例如將COM2改成COM3),接著按下metro物件上的開關便可以看到最下方的六個數字訊號瘋狂地跳動了。

打開metro上的開關能夠連續觸發送出r a訊號,使Max/MSP不停去讀取(read)類比(analog)的各腳位數值;下方asciimessage2max物件此時會連續送出如a 1 2 3 4 5 6般的數列,所以在範例程式中便接上rount物件【rount能夠認明送入之數列或訊號中的第一個標記,來指定到對應之輸出口—-請看help檔最清楚】, 並且過濾掉a後再將數列訊號送入unpack物件【unpack物件能夠將一個數列訊號拆開,變成數個獨立的訊號由多個輸出口同時輸出—-詳情還是看一下help檔】,而這裡的unpack物件後方有六個i,表示有六個整數變數,便有六個輸出口。

這六個跳動的數字訊號,由左至右即表示analog 0到analog 5的訊號。若你的光敏電阻是接在analog 1的位置,現在可以試試看在光線下,用手遮蔽光敏電,左邊數過來第二個數字訊號的變化差異吧!

該影片為網路上某人用arduino連接光敏電阻,並用puredata與Flash弄的,技術幾乎相同來看看

此時你會覺得這個工作坊很騙錢怎麼這樣就最終回了…其實課程中當然還有講了不少關於Max/MSP, Jitter等基本教學與範例,但有礙於內容太繁多便不在這裡發表出來哩。

我繼續特戰,你們忙。

非關特戰的互動藝術工作坊 – 第二回【Max/MSP + Arduino】

世新大學數位多媒體設計學系所進行的互動藝術工作坊已於4/6結束,這裡將陸續將相關課程內容部份發佈,作為同學複習之用及後續服務。

pic_1

課堂中隨手側拍

工作坊中帶同學們用Arduino來做一些簡單互動,包括輸出(digital pin out)與基本感應器應用(analog in),並且用Max/MSP來作為主要的程式設計編寫。

有鑑於要防止自己在學習階段時,只要台上的人不一步一步講解說明,就會不小心進入迷流狀態之現象,我在這裡再次逐步說明工作坊開始最基本也最重要的以下三件事:

A.Max/MSPJitter安裝好

B.Arduino插上電腦,連接後並驅動

C.Max/MSP能夠與Arduino連結互通

我所使用的Max/MSP版本為4.5.5Jitter 1.5.2,軟體安裝後,另外需注意安裝以下幾個東西:

1.Quicktime

若要運用到jitter影像部分,則「必須」安裝quicktime。可至http://www.apple.com/quicktime/下載

2.WinVDIG

jitter中欲開啟視訊功能,須要安裝此軟體。可至http://www.eden.net.nz/7/20071008/下載

3.Java Runtime 1.4.2版本

Max/MSP當中,若使用到與java有關之物件(如mxj物件),Java Runtime沒安裝或是版本不合的話便無法使用。(據實驗結果1.4.2版本使用上均無發生任何錯誤狀態)可至http://java.sun.com/j2se/1.4.2/download.html下載

接著的工作要將Arduino接上電腦並驅動。

以下用條列步驟說明:

1.這裡我們先到Arduino的官方網站上,由http://arduino.cc/en/Main/Softwar 將其最目前最版本的程式包arduino 0015抓下來,並解壓縮放在C:\下。

2.arduino插上電腦USB孔。

3.此時會出現「尋找新增硬體精靈」視窗,點選從清單或特定位置安裝,並且將搜尋路徑指定到剛剛抓來的arduino-0015\drivers\FTDI USB Drivers,接下來就等候安裝完成。

2

請看圖

4.完成後,等等還會在跳出一次「尋找新增硬體精靈」視窗,在依循先前的方式與路徑一路下一步下去就萬事OK了。

3

走到這一步看到此訊息框,心都開花了

Max/MSP能夠與Arduino連結互通之操作,以下一樣用條列步驟說明:

1.回到Arduino的官方網站上,由http://www.arduino.cc/playground/Interfacing/MaxMSP SimpleMessageSystem抓下來,它是用來作Max/MSPArduino之間的訊號接收與發送,接著將其解壓縮後,整個資料夾SimpleMessageSystem放到C:\arduino-0015\hardware裡。

2.arduino-0015資料夾下的arduino編輯程式介面(arduino.exe)打開,並點選上方有個箭頭向上的小圖案(open – 開啟檔案),將C:\arduino-0015\hardware\libraries\SimpleMessageSystem\examples\SimpleMessageSystem_example_1打開。

5

3.接著我們要先知道arduino連接於電腦的USB com port位置,可以點選整個畫面右下方的開始>設定>控制台>系統>硬體>裝置管理員>連接埠 (COM LPT)中,從USB Serial Port得知其對應的COM位置編號。

4

4.回到arduino編輯介面,點選視窗上方的Tools> Serial Port,勾選剛才所得知之arduino對應位置編號。在點選上方Tools> Board,選擇自己手上的arduino版本(有新有舊,版本與晶片種類名稱會印在arduino正面,稍微仔細看一下就知道了)。

5.要把SimpleMessageSystem_example_1燒進arduino裡,只要按一下上方箭頭向右的小圖示(Upload to I/O Board),只要看到arduino版上有兩顆led小橘燈在交叉閃爍,代表程式正順利在燒入中,Done uploading,大功告成。(若為arduino NG或之前的版本,則需要先按一下版子上的小按鈕,再按Upload to I/O Board才可燒入)

最後我們來測試Max/MSParduino彼此是否能夠溝通。開啟位於C:\arduino-0015\hardware\libraries\SimpleMessageSystem\MaxMsp Example 中的Max/MSP檔案SimpleMessageSystem.mxb範例(同資料夾內的其它三個mxb檔要擺在同一資料夾下才可正常執行),將serial物件後的com5改成你的arduino所對應之com port編號(例如com 7);再拿一顆普通的led燈,長腳正極插入於arduinodigital pin 13,短腳負極插入GND,點擊w d 13 $1訊號物件上的開關,表示將write digital13個腳位送入訊號1(打開)。

led

我的Led燈亮起來了欸~~~你的勒


非關特戰的互動藝術工作坊 – 第一回【Gamepad改造】

特戰兵,受世新大學數位多媒體設計學系的徐道義系主任邀請,在該系上準備弄一個短期的互動藝術工作坊,將一些在數位互動媒體上創作的概念與技術做分享教學。

五次課程,一次兩小時,要講些分享些什麼然後變出什麼的確要傷點腦筋

tools1

工作坊開始前的慣例 – 道具一字排開

第一回課堂,主要介紹電腦USB搖桿gamepd的拆解改裝招術,這招非常適合運用於初步接觸實體互動介面的開發;讓我們將感應器或是像Arduino這類惱人的微處理器先擱在一邊不管,只要簡單的將電腦USB搖桿按鈕改造成各種不同類型的開關(這裡將其視為簡單感應器),當下是否被觸發的狀況傳送訊號給電腦,便可加以應用在互動裝置設計上。

個人在此推薦「戰斧悍將」!(絕無打廣告嫌疑,純粹只是光華商場賣一個79元,便宜大碗)。

gamepad

網路上抓來的「戰斧悍將」圖片

Gamepad的按鈕被按下時之所以會感應送出訊號,是由於按鈕下方的電路板上有著一個正負極交錯(如兩把梳子交錯貌)且不互相碰觸到的銅片,平時為斷路狀態,而按鈕下方有著一片薄薄的導電油墨,當被按下時便會接觸連接交錯的正負同片,使其產生通路;哪個按鈕的通路與否便決定著電腦接受到其對應的訊號開或關。【跳舞遊戲之踏墊及市面上所看到的各類搖桿居多也是此原理,通通給它拆開來】

首先把搖桿拆解開來,可以看到四個方向鍵即各按鈕所對應的銅片(基本型通常有10個鍵紐)。「戰斧悍將」電路設計的很周到,將正負極的銅片都另外拉出了焊點部份,讓你在改造焊接作業時更加方便;用帶有杜邦接頭的單芯線或多芯線各自焊上正負焊點上,方便隨時替換各類開關。

gamepad-button1

按鈕下對應之正負極交錯處及焊點一目暸然

gamepad_2

隨便先焊上幾個鈕

將每個按鈕對應之焊點都弄好完工後,將gampad插上電腦的USB接口,Windows系統的使用者可以從控制台的遊戲控制器選項看到連接上的USB Gamepad裝置,接著按下內容便可看到方向鍵與各按鍵圖示來進行訊號測試,如下圖所示。

test1

開關被觸發時,對應之測試按鈕即會亮起

接下來稍微介紹幾種較常見且被使用到開關:

按鈕:一般常見按鈕 ,大大小小無須介紹

1

開關:左右、搖頭或是不同段數,非常多種

21

微動開關:「觸碰」做為觸發要素,也是非常多種

31

光敏電阻:光線強弱影響其電阻大小造成電流通路或斷路,不同大小之光敏電阻代表不同亮暗敏感度

4

水銀開關:用於正立倒置或傾斜與否之開關判斷

5

磁簧開關:平時為斷路(關),當有磁力(如磁鐵)靠近時,便會產生通路(開)之開關

6

震動開關:判斷是否有震動之開關

7

銅片貼紙:可導電的銅片貼紙,方便各種改良運用

8

以上皆可到各大電子材料行購買,當然還有更多尚未介紹到的其他種類的開關。

在程式上我們便可任意設計,好比「按鍵A被觸發,一朵花飛出,按鍵B被觸發,一顆人頭飛出,當AB同時被觸發,一顆人頭咬著一朵花在飛舞著」這樣的影像互動(好像有點噁心)。【可使用免費軟體JoyToKey來將搖桿按鈕對應到電腦鍵盤按鍵上,比如按鈕A被觸發時為鍵盤的enter鍵,在寫程式偷吃步或是直接對應到現成小遊戲上都相當方便】

這樣利用gamepad改造的實體介面互動方式簡單上手快,而判斷訊號上只能有「0」或「1」,即為開關的「開」與「關」(無法如Arduino以類比連接方式去判斷距離遠近或是光線明暗程度等訊號大小程度)。但在創意發揮下,卻往往也能夠以簡單方式做出許多讓人驚艷的有趣作品,將多種類型開關的搭配及多支gamepad連接增加開關數量,最後整上整體裝置結構設計,來做出如同「全能機關王」般的酷炫互動裝置。

目前在日本九州大學攻讀互動設計博士的小乖學長,07年在開南大學開的互動裝置設計課程成果,而他們學生當時利用arduino結合上各類開關的創意表現,其實也可以用gamepad代替,方便快速。更多其相關課程資訊請上www.wshop.idv.tw/interaction

非關特戰的互動藝術工作坊課程內容還會持續發佈!(還得放假有時間寫

自製繼電器盒

在進行互動裝置設計的創作實驗上,若想利用電腦控制較高電壓之設備,如一般以110V交流電為主的家庭電器,或是任何可以發展應用的各類多元配件,好比大馬達、日光燈、吹風機、抽風機、抽水機、噴水器、噴火器等等,大致上可以透過使用「繼電器(relay)」來進行控制。

wiki表示,繼電器(Relay),也稱電驛, 是一種電子控制器件,它具有控制系統(又稱輸入迴路)和被控制系統(又稱輸出迴路),通常應用於自動控制電路中,它實際上是用較小的電流去控制較大電流的一種「自動開關」。故在電路中起著自動調節、安全保護、轉換電路等作用。欲了解更多相關繼電器資訊請看「繼電器維基百科」

這裡大概說明如何將繼電器應用在簡易的互動設計上,透過電腦給訊號控制Arduino發送小電流至繼電器,連接於繼電器上的大電流設備產生通路並運作。為達成這般功能以下將進一步分享製作我稱之為「繼電器盒」的東西。

自製繼電器盒

繼電器種類繁多,依照功能性及規格等等超過百種個人依照需求,選用了KYOTO電子有限公司出產的「KD20C25AX」固態繼電器(SSR),功能上大概為「若輸入432伏特電壓大小的DC直流電流,即可讓接上24-280伏特AC交流電流之電器產生通路並啟動」,其他規格說明請看http://www.kyotto.com/kd20.htm

接著準備以下製作時所需材料:

a.固態繼電器(SSR

b.帶線的插頭(可至電子材料行購買)

c.插座孔(可至水電行購買)

d.電線(銅線與單芯線)

e.3.5mm耳機母座

f.盒子(任何一個堅固且合適的即可)

繼電器的使用方式多數都大同小異,而這裡的「KD20C25AX」固態繼電器分別有四個接點,如下圖所示。

上方的兩個接點是連接電器設備與電源的部份,繼電器在這裡就如同閘道般控制電流的通路與斷路;下方的兩個接點則是接上小電流的輸入,左下端負極部份接上Arduino的地(GND),右下端正電部份接上arduinodigital pin1-12的任一角位。

接下來我們將手邊的材料依照下圖整合組裝起來:

1部分:arduino送入4-5V電流之部分。我們可以將繼電器上下方正負電輸入的端點以單芯線接上3.5mm的耳機母座(內正外負),在後續的使用上只要使用3.5mm的兩邊為公接頭的線路,即可由arduino直接傳送小電流至繼電器(arduino端也需製作耳機母座接頭),如此依來在進行數量較多時的繼電器盒互動時,線路的整理使用上就更為牢固與方便(裝模作樣也是一流)。當1部分有4-32V之電流輸入通過時,2部份即會變成通路狀態(平時是斷路

2部分:插座將電流送入至電器之部分。這裡我們使用銅線來進行連接,將電線插頭-插座孔-繼電器-電線插頭,三者關係形成一個迴路,而繼電器則負責控管電流迴路的通與不通之閘道,當然你的電器設備在此便可以直接插入插座孔,若是一般家庭電器則保持開啟(on)的狀態(保持開啟,由繼電器來負責是否通電)。

最後將事先準備好的堅固盒子,開一個可以將插座孔突出的長方形大小洞口,並且尾端部分也開洞讓耳機母座及插頭線路能夠由此穿出。最後將與先前製作好的繼電器核心部份裝入加工後的盒子,再找一張假高尚的貼紙貼上去,便完成了「繼電器盒」。

個人在水電行買了些材料做了幾個插上110V插座即會發亮的燈泡,並利用max/msp發送訊號给arduino來控制四個繼電器盒隨便進行以下結果測試

自製110V隨插即亮的燈泡插頭

四組繼電器盒 + 四個自製燈泡

繼電器盒測試

有這樣隨插即用的繼電器盒,我終於可以弄一個「呻吟才會動起來讓你舒服到呻吟的按摩棒搥背棒」了。