看到這標題應該又知道是駭客的得意之做,沒錯,任天堂DS除了是一款能以多種方式進行互動遊戲的遊戲機外,還能被拿來改造成相機的控制器,人家以為你在打電動,結果你是在拍照,嘿嘿,厲害吧!(眾人:……)
打電動、控制相機一舉兩得
▲這位老兄不是在打電動,他是用任天堂DS控制數位單眼相機。
這個由HDRLabs工作室的Steve Chapman所設計的玩意,靈感來自於設計者在拍攝電影《博物館驚魂夜2》時,在等待拍片的無聊時光時,拿出任天堂DS廝殺馬力歐賽車遊戲時,意外發現這個簡單且價格低廉的遊戲機,相當適合拿來當成相機的控制器。這個偉大的小裝置包含8小時電池壽命、適合放在牛仔褲口袋的尺寸、以及觸控液晶螢幕,一切都相當適用於當作數位相機的控制器,無須花上大筆金錢以及太過複雜的工程就能進行改裝。
當然光是有任天堂DS是不夠的,還需要一套可以控制相機的編程軟體才行。文中也提到了土砲相機控制器的比較,例如一個叫OneOne的iPhone應用程式,可控制Canon和Nikon數位單眼相機,但是相機必須先連結筆記型電腦,再透過無線連結方式控制,不僅整體變得龐大笨重,也顯得不夠實用。Steve Chapman有鑑於此設計出一套Open Camera Controller、簡稱OCC系統,用更簡便的方式控制相機,甚至能同時控制多種廠牌的相機。其實這套OCC系統最早是為了方便讓團隊用Canon相機進行HDR高動態範圍拍攝之用
OCC系統搭配任天堂DS算是一個小而靈活的改裝,材料只需要相機的外接快門線,以及經過改裝成OCC系統的GBA(Game Boy Advance)卡夾,就能操作相機的快門動作。目前測試成功的機種包含Canon EOS 30D、40D、50D、5D、5D Mark II,SIGMA SD系列數位單眼相機、以及Casio EX-FX1、Olympus E-P1也都可操作,不同機型對快門速度可控制的程度不一。目前可以玩的東西包含Unlimited AEB自動包圍曝光Motion Sensing動作感應、Time Lapse間隔攝影、Sun-/Moonrise Aware日出/日落通知。同時搭配任天堂DS的多種控制方式,除了透過觸控螢幕和實體按鍵外,還可以用聲音觸發─俗稱聲控的方式控制快門,這簡直就比原廠的外接快門線功能還強大數十倍。
Steve Chapman也自爆許多人問到為何不使用USB作為連結,以及沒考慮使用iPhone或其他掌上型裝置當作控制器,答案很簡單,因為當時這些裝置並沒有USB控制晶片,它們不希望像OneOne iPhone應用程式一樣,還要先將相機連結一台筆記型電腦後再進行操作,這樣太笨重了。事實上這方法真的有效,設計者對此也相當自豪,它們的願景是有朝一日能用OCC系統控制相有的相機。對了,HDRLabs工作室並不提供相機控制器的改裝服務。
▲任天堂DS的8小時電力、小尺寸、雙螢幕含觸控螢幕相當適合當作相機控制器。
▲任天堂DS改裝操作示意圖。
任天堂DS改機教學大公開
前面提到了HDRLabs不提供改機服務,但網站中很大方直接秀出了改機攻略,讓有興趣的玩家可依樣畫葫蘆製作相機控制器。我們也節錄了片段,讓讀者大略知道是如何改機法,當然只是很粗淺的介紹,如欲觀看詳情請連至http://www.hdrlabs.com/occ/hardware.html網頁觀看。(以下圖文接來自HDRLabs)
▲首先需要外接快門線,將其拆解留下線材做為連線之用,通常白線為接地、紅線為全按快門、黃線為半按快門。
▲再來需要一個GBA卡夾,只需要取其外殼,所以把裡頭的晶片卸下來、內部突起的塑膠部份也一併剷除。
▲再來需要自製一個電路板,厚度在1/32″以內,可以在CircuitBoardsToGo.com購買到。
除此之外還需要一些零組件,接著就要發揮好手藝焊接起來:(怕翻譯錯誤保留原文)
- Atmega 168 or 328 DIP package Microcontroller(Included with the Arduino development board )
- 1個16Mhz Resonator
- 2個Zener Diodes
- 2個Resistors ~ 39ohm
- 2個NCE 3041 Optical Isolation chips
▲照著這套OCC系統的Layout圖把東西焊起來。
▲自製完成的電路板應該會長的類似這副模樣。
▲接著要進行編程的動作,必須透過Arduino developer environment開發環境編程。
以下為快門控制的程式語言。
int FullPressPin = 13;
int HalfPressPin = 12;
int ShutterState = LOW;
int IsShooting = 0;
volatile int state = LOW;
void setup()
{
pinMode(HalfPressPin, OUTPUT);
pinMode(FullPressPin , OUTPUT);
attachInterrupt(0, ProcessDSSignalRising, RISING);
attachInterrupt(1, ProcessDSSignalFalling, FALLING);
ShutterState=LOW; //Unpress shutter button if it is in an unknown state
digitalWrite(FullPressPin, ShutterState);
digitalWrite(HalfPressPin, ShutterState);
}
void loop()
{
if (IsShooting = 0){
ShutterState=LOW;
digitalWrite(FullPressPin, ShutterState);
digitalWrite(HalfPressPin, ShutterState);
}
// Essentially we are doing nothing here, but could use
// the time to monitor external sensors or input
// Perhaps there is a power-saving mode we could utilize
}
void ProcessDSSignalRising()
{
ShutterState=LOW;
digitalWrite(FullPressPin, ShutterState);
digitalWrite(HalfPressPin, ShutterState);
IsShooting=0;
}
void ProcessDSSignalFalling()
{
ShutterState=HIGH;
digitalWrite(HalfPressPin, ShutterState);
// add a delay here to make HalfPress longer
// Wait doesn’t work in interrupt loops
digitalWrite(FullPressPin, ShutterState);
IsShooting=1;
}
▲完成後,把快門線焊上版子、將版子裝上GBA卡夾,完成。
▲這是完成後的任天堂DS使用OCC系統螢幕操作圖。
老任也沒想到吧@@
可以聲控真的很帥
DS我有,DSLR也有! 可惜我是用Nikon的相機... = ="
不知道有沒有人有閒又有時間來測測看Nikon的是否可行呢?
前面莫名多出www.techbang.com.tw @@" 已修正感謝~