透過Arduino操控的萬聖節道具

十一月 1, 2014
Facebook
Twitter

會動的萬聖節道具相當好玩,但是你在店裡買到的道具,大多都有限制。

其中一個問題在於,每一個道具都有自己的感測器,所以要讓道具同步有困難。如果這些道具沒有同步,那整體的嚇人效果就會短了一截。

另外一個問題是,道具內建的「動作感測器」效果不太好。大多數的道具都是感測光線,只要有人走過去光線就會改變,而為了要能夠感測到,光必須照在道具上面,在黑暗中便完全失去功用。如果房間內的光線有變化,感測器可能也會被誤觸。

所以我就研發出一個可以用微控制器(如Arduino),來控制所有會動的萬聖節道具的系統。如此一來,便能隨心掌控每一個道具開關的時間。這個系統也可以用外接式感測器,依你的需求客製化設定。

步驟一:找一個有試玩按鈕的萬聖節道具

  • 會動的萬聖節道具有許許多多種,且都有方式可以破解,但這個專題,我要把焦點集中在有「試試看」按鈕,用電池的萬聖節道具。這種道具在包裝上,一定會有個地方有按鈕,可以啟動道具,按了後就可以不用買也知道道具會怎麼動。
  • 對於我們的專題而言,「試試看」的按鈕可以讓我們遠端操控道具。只要連上按鈕的電極,就可以用外接的控制板,如Arduino,控制道具。
  • 所以在找道具的時候,找看看有試玩按鈕,可以動起來的道具。

步驟二:拆解按鈕

  • 連接道具最簡易的方法,就是透過按鈕的電極。你可以拆解按鈕,用小的螺絲起子把外面的塑膠殼拆開。如果是兩個扣在一起,只要兩邊按下去,按鈕就會打開。如果有上膠,可能就要把上膠縫隙撬開。
  • 按鈕裡面會有一個小的電閘,上面有兩或四個沒有裝外殼的電極。
  • 安全警示:如前面所述,本專題目標道具為用電池發電的道具。我不建議拆解使用交流電的道具,如果沒有按照適當的方式操作,使用交流電的道具會很危險。

步驟三:用萬用表辨別開關的電極

  • 用萬用表量開關兩頭的電壓,量到的電壓會因道具的不同而異。唯一要注意的一點,就是要知道兩頭的電極,要知道哪邊偏正極,哪邊偏負極。
  • 為了確保哪頭是哪個電極,我用彩色奇異筆在正極畫上紅色,負極畫上黑色。

步驟四:用電阻測試電極

图片

  • 萬聖節的道具上通常會見到兩種「開」的按鈕第一種是低電流訊號的開關,只傳遞微量的訊息至道具上的控制晶片;第二種是高電流強度的開關,這個開關負責控制道具所需的電力,並串聯到電池組。要先知道道具用的是哪一種開關,才能使用是當的電阻去啟動道具。
  • 如果要測試你手上的開關是哪種,可以拿1 kohm的電阻的兩條導線去碰有連結到道具的開關電極。(如果表面的空間不夠大,你可以把開關從道具底座上拆下來,用電阻的導線直接去碰觸道具本身的電極。)
  • 如果道具動了,那就表示這個開關是低電流,你就可以用低電流的電晶體啟動道具。如果道具不動,那就有可能是高電流的開關,你就得用「超級電阻」(至少要1A)來啟動道具。

步驟五:做一個外接式的電晶體開關

你可以用電晶體模擬按鈕按下的情境。首先,找一個合適的NPN電晶體,然後把電晶體的集極針腳接到開關的正極,把射極針腳接到開關的負極。由於待會還要在電晶體上連接更多東西,建議用小的跳線連接。如果你用一個正極的電源(連接到射極針腳)去接電晶體的管腳,開關的兩極就會被串聯起來,道具便會開始動。在電晶體的管腳加個1 kohm的電阻,可以避免過多的電流流經,可能會把道具弄壞。

步驟六:把電晶體開關連結到Arduino

現在要把電晶體開關連結到你的微控制器。把微控制器上的GND腳位連到電晶體上的射極針腳,然後用一個數位腳位去連接在電晶體管腳上的1 kohm電阻。當數位腳位設成高輸出,電晶體就會啟動道具。

步驟七:加上其他的零件

重複前述的步驟把其他的零件加上去,只要你的微控制器上有數位輸出/輸入腳位,就能控制任意數量的元件。

步驟八:加上外接式感測器

步驟九:Arduino程式碼範例

图片

//以下是一些非常基礎的程式碼,可以用來測試你的系統。int PropOnePin = 8; // Prop One connected to digital pin 8 int PropTwoPin = 9; // Prop One connected to digital pin 9 int PropThreePin = 10; // Prop One connected to digital pin 10 int PropFourPin = 11; // Prop One connected to digital pin 11 int PropFivePin = 12; // Prop One connected to digital pin 12 int SensorPin = 3; // 感測器連結到類比pin3 int SensorVal = 0; // 可以改變以儲存讀到的數值

void setup(){ pinMode(PropOnePin, OUTPUT); // sets the digital pin as output pinMode(PropTwoPin, OUTPUT); // sets the digital pin as output pinMode(PropThreePin, OUTPUT); // sets the digital pin as output pinMode(PropFourPin, OUTPUT); // sets the digital pin as output pinMode(PropFivePin, OUTPUT); // sets the digital pin as output }

void loop(){ SensorVal = analogRead(SensorPin); // read the input pin if (SensorVal >100) { digitalWrite(PropThreePin, HIGH); digitalWrite(PropFourPin, HIGH); digitalWrite(PropTwoPin, HIGH); digitalWrite(PropOnePin, HIGH); digitalWrite(PropFivePin, HIGH);

delay(10000); digitalWrite(PropThreePin, LOW); digitalWrite(PropFivePin, LOW); digitalWrite(PropOnePin, LOW); digitalWrite(PropTwoPin, LOW); digitalWrite(PropFourPin, LOW);

delay(5000); digitalWrite(PropThreePin, HIGH); digitalWrite(PropFourPin, HIGH); digitalWrite(PropTwoPin, HIGH); digitalWrite(PropOnePin, HIGH); digitalWrite(PropFivePin, HIGH);

delay(10000); digitalWrite(PropThreePin, LOW); digitalWrite(PropFivePin, LOW); digitalWrite(PropOnePin, LOW); digitalWrite(PropTwoPin, LOW); digitalWrite(PropFourPin, LOW); delay(5000); } }

步驟十:享受你的自動萬聖節道具

最後一個步驟就是把你的道具擺在鬼屋內,享受嚇壞你賓客的快樂吧。

Picture

JASON POEL SMITH
我叫做Jason Poel Smith,工程學學士學位,一半機械工程,一半電子工程。我待過各行各業,包含水壓式高空作業車、飛機工具等。目前大多數的時間,我都在跟我的新玩具玩耍。空閒時,我會創作How-to系列連載〈DIY Hacks and How Tos〉。


(譯:呂紹柔)
[原文]

Social media & sharing icons powered by UltimatelySocial