2014年5月號的Robocon雜誌專欄是:從上一期3月號的專欄開始,Android裝置控制樂高機器人專欄將改用App Inventor 2來編寫。App Inventor 2在指令上與前一版的App Inventor 是差不多的,相信您可以很快上手。請到App Inventor 中文學習網來登入App Inventor 2 開發網站並認識更多新功能。
泛科學文章連結:http://pansci.tw/archives/59193
本期專題將會把樂高NXT光感測器值,每十筆為單位更新到Google Chart雲端圖表來取得折線圖。只要熟悉基本語法就可以產生各式各樣的圖表,非常方便!有接觸過App Inventor的師長朋友們,歡迎從App Inventor中文學習網下載原始碼回去,加入更多有趣的功能。
請注意本範例需用到網路連線,請確認您的手機是使用Wi-Fi或3G行動網路來連上網路,否則將無法顯示Google雲端圖表。
超音波感測器
NXT超音波感測器是一種I2C數位感測器,它有內建的晶片可以分析並送出資料。利用超音波感測器,我們可以讓機器人「看到」物體並在撞上去之前躲開,這是觸碰感測器所辦不到的。 超音波感測器使用了聲納技術,它會發出一連串的超音波並記錄超音波被物體反射後所需要的時間,再轉換成距離回傳給NXT。請注意,超音波感測器的預設單位是公分。實際使用上,超音波感測器可測到最短的距離約為5公分,最遠距離約為220公分(圖1)。
開始玩機器人
本範例的機器人只要將一個超音波感測器接在NXT主機的4號輸入端即可。請確認NXT主機的藍牙是啟動的,接著將NXT主機與Android手機進行藍牙配對(註2),完成之後就可以把機器人放到一邊了。啟動藍牙之後您可以從NXT主機的螢幕左上角看到藍牙的符號。
接下來依序介紹程式的各個功能:
STEP1登入畫面:
首次進入程式的畫面如圖2a,這時只有「連線」按鈕可以按,其它所有按鈕都無法操作。點選「NXT主機/連線」按鈕後進入藍牙裝置清單(圖2b),請找到剛剛配對完成的NXT主機名稱(本範例為abc),點選之後就會由Android裝置對NXT主機發起藍牙連線。順利連線成功的話,「NXT主機/連線」按鈕會變成不可按的狀態,其他按鈕則都可按(圖2c)。
STEP2程式初始化:
在點選連線清單之前(ListPickerConnect的BeforePicking事件),需先將清單內容指定為Android裝置上的藍牙配對清單(圖3a)。點選之後則先測試連線是否成功,成功則將「NXT主機/連線」設為不可點選,「寄信」、「取得座標」與「斷線」等按鈕設為可點選,並啟動Clock元件來取得超音波感測器值(圖3b)。
STEP3 按鈕記錄GPS坐標:
每當我們點擊一次「取得座標」這個按鈕時,就會要求LocationSensor元件來取得手機當下的座標(圖4),並顯示在Label_GPS標籤上。由於Google Map的座標格式為「緯度,經度」。所以我們在此也是這樣顯示。
STEP4 使用Clock元件定時更新超音波感測器值:
接著使用Clock元件來每秒更新一次超音波感測器值,如圖5。如果在尚未與NXT主機連線之前就要取得超音波感測器值的話,會顯示錯誤畫面。因此我們在圖5b中,會確認藍牙連線成功之後才做這件事。
STEP5 寄送電子郵件:
我們將寄送電子郵件的指令包成一個副程式,將寄送電子郵件的指令設定成ActivityStarter元件的DataUri屬性內容。「mailto:」是收件人電子郵件,這裡油使用者自行填入。「subject=」是郵件主題,「body」是信件內容,在此我們填入座標與感測器值等內容(圖6)。 接著按下「寄信」按鈕之後,會先呼叫email副程式,再透過ActivityStarter元件來啟動手機上的電子郵件程式(圖7)。
STEP6 斷線:
按下「斷線」按鈕之後,會中止藍牙連線(BluetoothClient.Disconnect指令),並使畫面上的各個元件恢復到程式一開始時的狀態(圖8)。
操作:
實際執行的時候,請先確認NXT已經開機且藍牙也啟動了。接著在您的Android裝置上點選畫面中的「NXT裝置/連線」按鈕,會進到如圖2b的藍牙清單畫面,點選您所要的NXT主機名稱並連線成功後,就能自動取得超音波感測器值。按下「取得座標」按鈕之後,就可在畫面上看到手機目前的GPS座標(圖9a)。請注意您當下所在的位置有可能無法取得座標,例如地下室等密閉空間。
在TextBox中輸入收件人的電子郵件之後,例如aa@bbb,請點選「寄信」按鈕。這時系統會詢問您要使用哪個電子郵件軟體來寄送,例如Android預設的email軟體或Gmail或任何其他的電子軟體等,在此我們選用Gmail(圖9b)。接著就會跳到圖9c的電子郵件畫面,按下寄送按鈕就發信出去了!快去問好朋友有沒有收到信吧。
請注意Android系統中,無法自動發送email、簡訊或撥打電話,因為這樣一來您的手機很容易被惡意使用。所以最後的送出都要由我們親自來執行喔。
本期專欄介紹了如何將機器人的感測器值與手機的GPS座標,透過電子郵件的方式發送出去。這樣有一天您派機器人遠征的時候,就能用這樣的方式來報平安。請繼續關注CAVEDU的機器人專欄唷!
本程式已上架Google play,請到Google Play搜尋「CAVEDU教育團隊」就找得到我們的樂高機器人系列app了。歡迎大家到App Inventor 中文學習網的檔案庫下載本程式的aia原始檔與apk安裝檔。
註:
- 想學如何開發App Inventor程式嗎?請到App Inventor 中文學習網與我們一同學習。
- 將Android手機設定為可安裝非Google Play下載的程式以及讓手機與樂高NXT主機連線等說明請參考此處。
- 與NXT連線後如果出現[Error 402]之錯誤訊息請不必理會,程式依然能正確執行。
文章原文刊載於《ROBOCON》國際中文版2014/5月號