透過Minecraft啟動Arduino警報

六月 17, 2015
Facebook
Twitter
本專題將教你如何透過遊戲裡的絆線裝置(Tripwire)觸發現實世界的機械裝置。
你在Minecraft遊戲中已經累積了一小筆財富;包括鑽石、木材、煤礦、鐵礦、食物、以及其他所需要的資源,也花了好幾個小時建造了完美的保壘來貯存這些寶物。但是當你徜徉在其他伺服器的時候誰來幫你看管呢?本專題會引導你如何使用Arduino編碼的Spark Core微控制器建立一個警報系統,來提醒你有入侵者闖進你精心打造的世界。我說的可是現實生活中的警報哦!
Spark Core是以Arduino程式語言編寫的微控制器。Spark加進基本Arduino控制板的重要功能就是網路連線,如此一來就能夠透過Wi-Fi和其他網路連線設備溝通。在本專題中,我們會編寫Minecraft中的絆線裝置(tripwire)工具,讓它透過ComputerCraft 模組(mod)傳送訊號到你的Spark控制器上。當遊戲世界中有不速之客來訪時,Spark就會透過語音模組在現實世界中發出警報通知。

本專題十分簡單,很快就能完成,而且不需焊接。只要接上跳線就可以了。一旦學會了這一招,你就能從遊戲中啟動現實生活的各種小工具和機械裝置。

图片


材料


第一步:連接電子元件


注意:連接線路時請勿將Spark Core連接至電腦的USB埠。

使用公對母跳線來連接ISD1820語音模組和Spark Core的麵包板,各腳位的對接點如下:

Voice module語音模組

VCC  3V3
GND      GND
PLAYE D5

跳線的插槽端連接至語音模組的腳位,而另一端的針腳則插上麵包板。(這裡的跳線使用起來比上圖中我焊接的兩條藍色線簡單的多!)

接著,將兩條喇叭線連接至語音模組上標示SPEAKER的兩個螺絲端子。

再來,將USB線接上電腦為電路通電。按住語音模組上REC鈕,同時用你最警戒的聲音說出「入侵警報!」,來錄製警報。完成後,按下PLAYE鈕回放剛才的錄音做為測試。

第二步:設定Spark Core

現在你的Spark Core微控制器電源已啟動,接著就是將它連接至Wi-Fi網路、建立Spark帳號,以及將控制器指定加入此帳號。

Spark提供的行動應用程式可幫助你輕鬆完成控制器設定。在App store或Google Play搜尋「Spark Core」,或是直接從這裡下載程式:iPhoneAndroid

如果你沒有iPhone或Android手機,或是在使用應用程式上需要協助,Spark入門網頁提供了相關的資訊以及其他設定方法。

第三步:為Spark Core編寫程式

Spark Core微控制器需透過網頁介面https://build.spark.io編寫程式。使用你設定Spark Core時的使用者名稱及密碼登入,接著建立一個新的應用程式並將其命名為「Minecraft-警報」之類一目了然的名稱。
图片

上傳程式至Spark/程式列表/建立新程式
底下是需鍵入應用程式的程式碼:
void setup() {
Spark.function(“alarmOn”, alarmOn);
pinMode(D5, OUTPUT);
}
void loop() {
}
int alarmOn (String command) {
digitalWrite(D5, HIGH); // signal alarm
delay(1000); // wait for a second
digitalWrite(D5, LOW); // stop signalling alarm
}
如果你先前有編寫過Arduino的程式,那麼這個程式碼對你來說一定不陌生。本程式碼的一個最主要的差異就是就是loop()欄位中沒有程式碼,因為要等到有訊號從網路端傳來,程式碼才會被啟動。

alarmOn功能傳送高輸出到D5位,進而啟動和語音模組相接的PLAYE位。我們會在setup()功能欄位指定加入Spark雲端(Spark cloud,讓雲端知道此欄位準備好接收高輸出訊號。

Spark.function(“alarmOn”, alarmOn);
完成程式碼輸入後,按下設定介面中右上角的閃電符號,將程式上傳至Spark。

第四步:測試程式碼

先別急著從遊戲中啟動Spark程式,我們先在網頁上測試一下吧。當遇到涉及許多部件相互連接的專題時,先各別測試每個部分會是比較好的做法,可以簡化排除問題的過程。

點選以下連結前往Spark控制面板:

https://andyforest.github.io/sparkControl/examples/Spark_Control_Panel.html

图片

此介面可以傳送指令到你的Spark。在此控制面板中,你需要填寫三個欄位,前兩項的識別碼(Core ID)和存取碼(Access Token)可以從Spark介面上取得。
图片

Spark Core識別碼/Spark Core列表
图片

授權碼/設定(包含存取碼)
在這裡我把圖中我的存取碼模糊處理,因為要是其他人取得這組代碼,他們就能全權控制Spark設備。但是等一下還是能在後面程式碼的地方看到這組存取碼,因為要是Spark被駭入而不受控制的話,我們還是可以透過重設代碼(Reset Token)來重新取回控制權。Spark正在開發能夠遠端匿名訪問,同時又不會顯示存取碼的功能,但還尚未完備。

最後就是在功能名稱(Function Name)欄位輸入:alarmOn

上述三個欄位輸入完成後,按下你輸入alarmOn旁邊的發送鍵,此時就能聽到剛才錄製的警報聲。

第五步:安裝ComputerCraft來修改遊戲

Minecraft是一款開放式系統的遊戲,玩家們可以製作各種模組來擴展功能。如果你有玩過這款遊戲一陣子的話,想必一定也安裝了一些模組。如果還沒,透過此步驟你也能學到新的遊戲技能!第一次安裝模組會覺得有點複雜,不過一旦知道怎麼做之後,就能為你的遊戲世界開啟許多有趣功能的一扇大門!

本專題會用到ComputerCraft模組。ComputerCraft可增加電腦物件,這些物件能透過一個類似以前的DOS系統提示來編寫程式。透過這樣的程式可以偵測遊戲內的「紅石」事件(“redstone” events),進而觸發各種行動。

就像許多其他模組一樣,ComputerCraft需要使用Forge模組,往後下載的模組都會儲存在Forge模組內。

模組需要定時更新才能跟最新遊戲版本相容,不過發佈者的更新速度有時可能沒那麼快,所以建議使用舊一點版本的遊戲以確保多數模組都能正常運作。本文章發佈時ComputerCraft與Minecraft1.7.10版本相容,請上ComputerCraft網站確認目前和遊戲相容的最新版本。

所以接下來要安裝Minecraft 1.7.10版、1.7.10版Forge模組、以及最新版本的ComputerCraft。

第五步之一:安裝Minecraft 1.7.10版

和往常一樣啟動遊戲,不過先別急著馬上按下開始。我們先點擊遊戲畫面的右下角的新增檔案(New Profile)。在選擇遊戲版本(Version Selection)欄位,選擇使用版本(Use Version):1.7.10。
图片

再來,選擇儲存檔案(Save Profile),然後點選開始遊戲(Play)。在這裡選擇開始遊戲是為了下載Forge模組需要的1.7.10版本檔案。下載完成後,退出遊戲。

第五步之二:安裝1.7.10版Forge模組

請至minecraftforge.net網站下載1.7.10版Forge安裝檔:http://files.minecraftforge.net/maven/net/minecraftforge/forge/1.7.10-10.13.3.1395-1710ls/forge-1.7.10-10.13.3.1395-1710ls-installer.jar

執行安裝程式,在安裝客戶端(Install Client)的部分保留原始設定。

第五步之三:安裝最新版本的ComputerCraft

下載最新版本的ComputerCraft檔案,目前的最新版本為ComputerCraft1.73.jar。

接著將下載的檔案放入遊戲的模組(Mods)資料夾中,方法如下:

Windows 

  • 選擇開始→執行。
  • 在執行對話框中輸入%appdata%.minecraft,開啟Minecraft遊戲目錄。
  • 打開目錄中的模組(Mods)資料夾。

Mac

  • 點選Finder。
  • 選擇前往→前往檔案夾。
  • 在對話框中輸入~/Library/Application Support/minecraft,然後點擊前往。

最後,將ComputerCraft1.73.jar檔案放入你的模組(Mods)資料夾中。

第六步:編寫ComputerCraft程式來看守你的絆線

啟動遊戲時,選擇新的Forge檔案。如此一來會載入剛才新加入模組版本的遊戲。

現在我們已經準備好利用Minecraft遊戲中的絆線來發送訊號。首先,設置兩個絆線鉤(tripwire hook),並且將其用繩子連接。在絆線的其中一端放置ComputerCraft電腦,再用紅石把電腦從後方和絆線鉤連接在一起。

图片

對著放置的電腦點擊右鍵進入電腦螢幕畫面,你會看到上方寫著「CraftOS 1.7」的黑色螢幕以及閃爍的游標。在這裡我們要建立一個名為警報(Alarm)的新程式:輸入「edit Alarm」然後按下enter。
图片

接下來,將下圖程式一行一行鍵入螢幕中。並把YOUR_DEVICE_ID_HEREYOUR_ACCESS_TOKEN_HERE這兩個部分改成和步驟四一樣的數值。
sparkURL = “https://api.spark.io/v1/devices/YOUR_DEVICE_ID_HERE/alarmOn”
sparkToken = “access_token=YOUR_ACCESS_TOKEN_HERE”
while true do
os.pullEvent(“redstone”)
if redstone.getInput(“back”) == true then
print(“Back activated”)
returnData = http.post(sparkURL, sparkToken)
returnData.close()
end
end
完成後,按下Ctrl鍵開啟選單,選擇儲存,然後退出。

退出後會回到閃爍游標的畫面中,輸入「Alarm」後按下Enter來執行剛剛輸入的程式。如此一來此程式會在背景運作,隨時等待被傳送過來的紅石訊號。大功告成!

第七步:在現實世界中測試遊戲警報

穿過絆線測試看看,沒意外的話,你的Spark Core微控制器警報就會被啟動!你會聽到透過語音模組和喇叭發出你錄製的「入侵警報!」語音。

更上一層樓

當你完成了這個簡單的專題而且運作成功後,你可以將這招用在其他各類專題上。任何能用Arduino編寫程式的工具都能透過Minecraft遊戲啟動,不管機械裝置或手機都不是問題!

Minecraft遊戲中任何能發送紅石訊號的物品都能用來啟動ComputerCraft程式;壓力板、開關、按鈕、礦車壓力板等等都可以。
發揮創意設計、製作一些由Minecraft遊戲啟動的機械裝置吧!


图片

ANDY FOREST
安迪是一位創新者以及在教育和連結式學習領域的思想領袖。他傾注自己的熱情希望能賦予小孩與成人能夠創造未來的能力。他也是非營利Maker教育機構STEAMLabs的創辦人之一。

(譯:屠建明)
[原文]


Social media & sharing icons powered by UltimatelySocial