App Inventor TW Uncategorized 小偷警報系統

小偷警報系統

文/CAVEDU教育團隊

本期專題是延伸2014 年5 月號的〈把機器人感測器值與座標用電子郵件寄送〉, 超音波感測器感測到有人(也就是小偷)經過前方之後,會照一張相並寄送電子郵件。有接觸過AppInventor 的師長朋友們,歡迎從AppInventor 中文學習網下載原始碼回去,加入更多有趣的功能。
請注意本範例需用到網路連線,請確認您的手機是使用Wifi 或3G 行動網路來連上網路,否則將無法順利寄送電子郵件。

超音波感測小偷偵測裝置

NXT 超音波感測器是一種I2C 數位感測器,它能讓機器人「看到」物體並在撞上去之前避開,這是觸碰感測器所辦不到的。超音波感測器會發出一連串的超音波,並記錄超音波被物體反射後所需要的時間,再轉換成距離回傳給NXT。請注意:超音波感測器的預設單位是公分。實際使用上,超音波感測器可測到最短的距離約為5 公分,最遠距離約為220 公分。

請將超音波感測器安裝在NXT 主機上。我們是將它放在固定位置來偵測有沒有小偷經過。在App Inventor 中,我們使用NxtUltrasonicSensor 元件的GetDistance 指令來取得超音波感測器值(圖1)。

1
圖1 App Inventor 中用來取得超音波感測器值的指令。

開始玩機器人

本範例的機器人只要將一個超音波感測器接在NXT 主機的4 號輸入端,再將馬達接在輸出端B 即可。請確認NXT 主機的藍牙已啟動,接著將NXT主機與Android 手機進行藍牙配對(註2),完成之後就可以把機器人放到一邊了。啟動藍牙之後,您可以從NXT主機的螢幕左上角看到藍牙的符號。接下來依序介紹程式的各個功能:

STEP1 登入畫面:

首次進入程式的畫面如圖2a , 這時只有「連線」按鈕可以按,其它所有按鈕都無法操作。點選「連線」按鈕後進入藍牙裝置清單(圖2b),請
圖3a 指定藍牙配對裝置清單。找到剛剛配對完成的NXT 主機名稱( 本範例為abc), 點選之後就會由Android 裝置對NXT 主機發起藍牙連
線。順利連線成功的話,「連線」按鈕會變成不可按的狀態,其他按鈕則都可按(圖2c)。畫面中間的 Image 元件是用來顯示當偵測到小偷所拍攝的照片。

2
圖2a 程式首次執行的畫面。 圖2b 點選連線按鈕後進入藍牙裝置清單。 圖2c 連線成功後的畫面。

STEP2 程式初始化:

在點選連線清單之前(ListPickerConnect 的BeforePicking 事件), 需先將清單內容指定為Android 裝置上的藍牙配對清單(圖3a)。點選之後則先測試連線是否成功,成功則將「連線」設為不可點選,「斷線」等按鈕設為可點選(圖3b)。

3a
圖3a 指定藍牙配對裝置清單。
3b
圖3b 連線成功後啟動相關元件。

STEP3 偵測並拍照:

每當超音波感測器偵讀數小於某個距離時, 就會呼叫NxtUltraSensor.BelowRange 事件, 我們在此讓Camera 元件進行拍照。超音波感測器預設的距離是30 公分。您可以根據實際需要來調整這個數值。請注意:App Inventor 無法自動完成拍照,只是切換到系統預設的照相介面而已,您還是需要自己按下快門(圖4)。

4
圖4 偵測到狀況時照相。

STEP4 將照片分享出去:

拍完照之後, 我們要使用Sharing 元件將方才拍到的照片搭配拍攝時間分享給Gmail。在Camera.AfterPicture 事件中, 我們使用Sharing 元件的ShareFileWithMessage ,將檔案(本範例中為照片)搭配拍照的時間發送出去。至於要發送給哪一個應用程式可以由我們自行決定(圖5)。

5
圖5 照完相之後,分享到指定的應用程式。

Sharing 元件與ActivityStarter 元件的不同之處,在於後者須自行設定相關參數,而Sharing 元件則可讓使用者自行選擇應用程式,非常方便。但
是ActivityStarter 元件可以做到更多細微的設定。

STEP5 取得時間:

我們將取得時間這件事包成一個名為getTime 的副程式,它會回傳Clock 元件取得時間後的結果, 並以字串回傳。在此我們使用Clock.Now ,代表我們要取得拍完照(也就是發生Camera.AfterPicture 事件的那一瞬間)的時間。格式為「年/ 月/日 時: 分: 秒」,如圖6。

 

6
圖6 getTime 副程式。

STEP6 斷線:

按下「斷線」按鈕之後,會中止藍牙連線(BluetoothClient.Disconnect指令),並使畫面上的各個元件恢復到程式一開始時的狀態(圖7)。

7
圖7 按下「斷線」按鈕時中斷藍牙連線。

操作

實際執行的時候,請先確認NXT 已經開機且藍牙也啟動了。接著在您的Android 裝置上點選畫面中的「連線」按鈕, 會進到如圖3b 的藍牙清單畫面,點選您所要的NXT 主機名稱並連線成功後,就耐心等小偷出現吧!請用您的手在超音波感測器前揮動,就能進到照相畫面(圖8a)。

8a
圖8a 拍照畫面,犯人就是妳!

拍照完畢之後會將照片顯示在程式中,並出現應用程式選擇畫面,讓您選擇要分享到哪一個應用程式,在此請選擇Gmail。進到Gmail 介面中,您就會看到方才拍攝的照片以及拍照時間都已經匯入到郵件內容中了,是不是很方便呢?

請注意:您的手機需要有網路連線,否則將無法發送電子郵件。

8
圖8b 照相完畢後帶入所拍攝的照片。 圖8c 應用程式選擇畫面。 圖8d Gmail 畫面。

本期專欄延伸自上一期的感測器砲塔,讓您做出一個只要偵測物體移動,就會並拍照並寄送電子郵件的小偷警報系統。是不是很有趣呢?請繼續關注我們的機器人專欄!

本程式已上架Google play,請到Google Play搜尋「CAVEDU教育團隊」就找得到我們的樂高機器人系列app了。歡迎大家到App Inventor 中文學習網的檔案庫下載本程式的aia原始檔與apk安裝檔。

註:

  1. 想學如何開發App Inventor程式嗎?請到App Inventor 中文學習網與我們一同學習。
  2. 將Android手機設定為可安裝非Google Play下載的程式以及讓手機與樂高NXT主機連線等說明請參考此處
  3. 與NXT連線後如果出現[Error 402]之錯誤訊息請不必理會,程式依然能正確執行。

文章原文刊載於《ROBOCON》國際中文版2014/9月號

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *