相關文章

B3041022dd862a97802fa737e345717129a0d471 看到這標題應該又知道是駭客的得意之做,沒錯,任天堂DS除了是一款能以多種方式進行互動遊戲的遊戲機外,還能被拿來改造成相機的控制器,人家以為你在打電動,結果你是在拍照,嘿嘿,厲害吧!(眾人:……)

打電動、控制相機一舉兩得

occ_rick_th

▲這位老兄不是在打電動,他是用任天堂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工作室並不提供相機控制器的改裝服務。

canonds1

▲任天堂DS的8小時電力、小尺寸、雙螢幕含觸控螢幕相當適合當作相機控制器。

canonds2

▲任天堂DS改裝操作示意圖。

任天堂DS改機教學大公開

前面提到了HDRLabs不提供改機服務,但網站中很大方直接秀出了改機攻略,讓有興趣的玩家可依樣畫葫蘆製作相機控制器。我們也節錄了片段,讓讀者大略知道是如何改機法,當然只是很粗淺的介紹,如欲觀看詳情請連至http://www.hdrlabs.com/occ/hardware.html網頁觀看。(以下圖文接來自HDRLabs)

wired_release-2cr_internal

▲首先需要外接快門線,將其拆解留下線材做為連線之用,通常白線為接地、紅線為全按快門、黃線為半按快門。

ds_cart-5

▲再來需要一個GBA卡夾,只需要取其外殼,所以把裡頭的晶片卸下來、內部突起的塑膠部份也一併剷除。

 

 

OCC_board_v3

▲再來需要自製一個電路板,厚度在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_circuit

▲照著這套OCC系統的Layout圖把東西焊起來。

ds_cart-3

▲自製完成的電路板應該會長的類似這副模樣。

 

internals-7

▲接著要進行編程的動作,必須透過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;

}

internals-9

▲完成後,把快門線焊上版子、將版子裝上GBA卡夾,完成。

ds_interface

▲這是完成後的任天堂DS使用OCC系統螢幕操作圖。

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;
}

使用 Facebook 留言

42973f6984582f02bbd0281ccc23d829?size=48&default=wavatar
1.  dell fans (發表於 2010年3月17日 14:54)
好.........強!!!!!!

老任也沒想到吧@@

可以聲控真的很帥
B41eacf42507a6a5e9a32f756da78bc5?size=48&default=wavatar
2.  CloudEX (發表於 2010年3月18日 11:54)
第一張圖中的遊戲卡帶好像怪怪的....XD
38091177e2fd0ebfb225dc002da4a09d?size=48&default=wavatar
4.  Zen (發表於 2010年3月18日 18:16)
強!

DS我有,DSLR也有! 可惜我是用Nikon的相機... = ="

不知道有沒有人有閒又有時間來測測看Nikon的是否可行呢?
4724b0aa0529af70ddf78a10350268e6?size=48&default=wavatar
8.  Nikon (發表於 2011年5月10日 11:14)
…「是有朝一日能用OCC系統控制相有的相機。」

發表回應

謹慎發言,尊重彼此。按此展開留言規則