文/曾吉弘、施力維(CAVE教育團隊)
本期的App Inventor 機器人專欄將結合Android 應用程式中常見的QRCode 掃描功能,讓機器人可以讀取QRCode 中的資訊後執行對應的動作。您也會學到如何使用ZXing 的QRCode 產生網站來產生各種不同內容的二維條碼。
我們針對機器人來發展了一種特殊的二維條碼指令:「B,50,10,C,50,10」,依序代表了「左側馬達,左側馬達電力,左側馬達轉動距離,右側馬達,右側馬達電力,右側馬達轉動距離」。
什麼是QRCode?如何產生二維條碼?
QR 碼是一種條碼, 比我們去便利商店買東西時,店員所掃描的傳統條碼相比,可以儲存更多資料。另一方面,QRCode 還可以說明現在這筆資料的型態,例如是電話號碼、超連結、純文字或是地理座標等等,智慧型手機就可以根據這些資料型態來開啟對應的程式(如果是電話號碼就會詢問是否要撥號或是發送簡訊), 非常方便。現在您在街頭巷尾都可以看到各種QRCode ,掃瞄之後就可以造訪網站或是作為折價劵,QRCode 在日本已經是一項非常普遍的技術。
請到ZXing 的QRCode 網站,先選擇資料類型為URL 超連結( 圖1a), 輸入您想要的網址後點選「Generate」就可以看到QRCode了。接著您就能使用手機上任何一種QRCode 掃描軟體來掃瞄了( 圖1b), 還沒有的話請上Google Play下載。
圖1a 選擇資料類型為URL 後按下Generate 產升條碼。
圖1b 使用ZXing 條碼掃描程式來辨識QRCode 。
開始玩機器人
首先請把NXT 機器人準備好,並將左側馬達接在NXT 的輸出端B , 右側則是輸出端C(註1)。請確認NXT主機的藍牙是啟動的,接著將NXT 主機與Android 手機進行藍牙配對(註2),完成之後就可以把機器人放到一邊了,啟動藍牙之後您可以從NXT 主機的螢幕左上角看到藍牙的符號。
接下來依序介紹程式的各個功能:
STEP1:程式初始化與選取NXT主機
在程式初始化(Screen1.Initialize事件)時,將NXTList 清單指定為藍牙配對裝置清單(圖2a)。等到連線成功後( 圖2b), 才會顯示觸控板,原本無法按下的「掃描二維條碼」以及「斷線」等按鈕這時也都可以操作了。
圖2a 指定藍牙配對裝置清單。
圖2b 程式進入畫面。
點選主機完成並確認連線成功的話,會在畫面中間的黃色區塊顯示所連線的NXT 主機藍牙位址與名稱。
圖3a 連線成功後設定相關元件與顯示設備名稱。
圖3b 連線完成後才可以掃描條碼。
STEP2:開啟QRCode掃描程式
本次程式使用了App Inventor 的BarcodeScanner 元件來進行掃描,雖然說是一個程式元件, 但其實也只是呼叫手機上預先安裝的條碼掃瞄程式而已。請到Google Play 上搜尋「ZXing」, 您可找到由ZXing 團隊所開發的QRCode 掃描程式。按下「掃描二維條碼」按鈕之後就會開啟條碼掃瞄程式進行掃描。ZXing 掃描器連結:
圖4a 點選按鈕來啟動條碼掃瞄程式。
圖4b 掃描中。
掃描完成後,會將掃描結果顯示在Label_msg 上, 並透過split at any指令將掃描結果以「,」分割成6 段。例如「B,50,10,C,50,10」就會被切成「B」、「50」、「10」、「C」、「50」與「10」等六個文字後存入qrcode_list 這個文字陣列中。
圖5a 掃描完成後顯示掃描結果。
圖5b 正確顯示掃描結果。
STEP3:機器人動起來!
按下「執行」按鈕就會讓機器人動起來, 在此使用了NxtDrive 中的MoveForward 指令, 接著將上一步中從掃瞄結果切出來的文字依序塞到MoveForward 指令的component、power與distance欄位。
圖6 填入MoveForward 指令的對應欄位。
STEP4:斷線
按下[ 斷線] 按鈕之後, 會中止藍牙連線(BluetoothClient.Disconnect指令),並使按鈕恢復到未連線時的狀態。這時候您可以再次發起連線。
圖7 按下[ 斷線] 按鈕時中斷藍牙連線。
STEP5:造訪CAVE教育團隊網站
點選畫面下方的CAVE 教育團隊圖案就能造訪我們的網站, 這是透過ActivityStarter 元件將網址指定給瀏覽器所完成的。為了避免使用者誤觸按鈕就直接跳出程式,我們使用了Notifer 元件來產生一個確認視窗(圖9),當使用者點選「YES」時就會跳離程式,並啟動手機上的瀏覽器來造訪網站。
圖8 按下CAVE 圖像後顯示對話視窗,點選OK則開啟網站。
圖9 顯示對話視窗來詢問是否跳離程式。
操作:
實際執行的時候,請先確認NXT 已經開機且藍牙也啟動了。請先點選「選擇裝置」來選擇NXT 主機,接著點選「掃描二維條碼」按鈕來掃描本文中所附的二維條碼,最後再按下「執行」按鈕。機器人是否順利地動起來了呢?本範例結合Android 程式中常用的二維條碼掃描功能控制機器人,您可以運用巧思製作一系列條碼讓機器人進行尋寶大作戰。使用條碼產生網站來設計更多條碼內容來豐富您的機器人!
BC馬達以電力50前進 BC馬達以電力30後退
BC馬達以電力60原地右旋轉 BC馬達以電力(40, 80)朝左前方移動
歡迎大家由這個下載本程式來玩玩看!或掃描以下的QRCode也可以唷!更多有趣的機器人app請在Google Play搜尋「CAVE 教育團隊」就找得到了。
註1:機器人運動方向有可能因為車頭指向而和程式設定相反,只要將左右馬達電線互換即可。
註2:將Android手機設定為可安裝非Market下載的程式以及讓手機與樂高NXT 主機連線等說明請參考連結
註3:與NXT連線後如果出現[Error 402]之錯誤訊息請不必理會,程式依然能正確執行。
註4:由於App Inventor本身限制的緣故,並非所有的條碼掃瞄程式都能順利被App Inventor啟動,因此建議安裝ZXing的條碼掃瞄程式。
文章原文刊載於《ROBOCON》國際中文版2012/11月號