22 App inventor2+Micro:bit

(2017/12/20)

有朋友說:學生需要利用bit內的加速器偵測到物體移動後,將訊號傳致手機上!這讓我想到用App Inventor2寫手機APP應該可以做到,也藉此機會來學習App Inventor2的程式寫作~~

以下有一系列參考資料可參考

一、基本的藍芽連接設定

  • 拉出一個【水平排列】的框

      • 並在其中添加4個按鈕。重命名按鈕:ButtonScan,ButtonStopScan,ButtonConnect和ButtonDisconnect。

  • 在【水平排列】下方添加一個標籤。 重命名LabelStatus並將其文本更改為 Status:

  • 將ListView拉到Status:下方,並將其重命名為ListBLE

    • 接下來,我們要安裝BluetoothLE擴展,點選import extension

    • 將【藍牙擴展】拖放到Screen1上,因為它是不可見的組件,所以它會顯示在Screen1的下方

    • 接下來,點選Blocks開始寫程式了

      • 當ButtonScan.Click

  • 當 ButtonStopScan.Click

  • 當 ButtonConnect.Click

  • 當 ButtonDisconnect.Click

    • 按Scan後,要列出可用的藍牙設備

    • 與藍牙設備連接後

    • 當藍牙設備斷線後

    • 大功告成,點選Build/App(provide QR code for .apk),並利用手機掃描QR code 來下載檔案到手機

    • 利用手機來測試,執行BasicIoTSetup

二、利用手機讀取 Microbit 的 Temperature

  • 產生很多micro:bit相關的東西,這次只讀取溫度,所以選擇Microbit_Temperature

      • 在Microbit_Temperature1的“屬性”選項卡中,將BluetoothDevice設置為“BluetoothLE1”

      • 再拉一個Label到LabelStatus和ListBLE之間,重新命名為LabelData,其text改為Data:

  • 好,開始來將與溫度有關的程式寫進去,點選Blocks開始寫程式了

  • 當藍牙連接成功後,把溫度值也叫過來

      • 接下來,我們要增加一個變數來儲存從傳感器接收到的數據(溫度),起始值為“0”。

    • 當我們得到新數據時,讓我們製作一個新的副程式來顯示LabelData中的當前讀數。

    • 當取得micro:bit 的溫度時

    • 也可以不用這兩個,直接下面程式即可

    • 程式完成,再將檔案下載到手機來測試

    • 完成!

三、利用手機來控制 Microbit 的 LED顯示器

  • 參考資料:http://www.astar-tek.com.tw/news/appinventor-iot-microbit-led/

  • 使用App Inventor 寫程式來控制micro:bit上LED顯示器上的內容,藍牙程式同上

  • 接下來加入讀取micro:bit LED的擴展功能 http://iot.appinventor.mit.edu/assets/com.bbc.microbit.profile.aix(同上,如果做過就不用再做一次)

  • 產生很多micro:bit相關的東西,這次要控制LED,所以選擇Microbit_LED

    • 在Microbit_Led1的“屬性”選項卡中,將BluetoothDevice設置為“BluetoothLE1”

    • 接下來加入一個TextBox及兩個按鈕,第一個按鈕改名為WriteLEDButton並將其Text屬性更改為write to LED;第二個按鈕改名為SmileyButton,並將其Text屬性更改為Draw Smiley。

    • 開始來將與LED有關的程式寫進去,點選Blocks開始寫程式了

    • 當 WriteLEDButton.Click

    • 建一個畫笑臉的副程式

    • 當 SmileyButton.Click

    • 程式完成,再將檔案下載到手機來測試

    • 測試完成,但畫笑臉好像有問題!

四、偵測到物體移動後,將訊號傳到手機上

  • 以上為學習課程,照著別人的講義來做,接下來偵測到物體移動(micro:bit)後,將訊號傳到手機

  • 這部分因不知如何呈現,所以學前面讀取溫度的方式來取得Accelerometer上X、Y、Z的值

  • 使用App Inventor 寫程式來讀取micro:bit上Accelerometer上X、Y、Z的內容,藍牙程式同上

  • 接下來加入讀取micro:bit Accelerometer的擴展功能 http://iot.appinventor.mit.edu/assets/com.bbc.microbit.profile.aix(同上,如果做過就不用再做一次)

    • Accelerometer

    • 作法同上,再增加三個Label來呈現X、Y、Z的值

    • 程式的部分:

    • 當藍牙連接成功後,把Accelerometer值也叫出來

    • 增加X、Y、Z三個變數

    • 顯示X、Y、Z的值

    • 這樣就可以在手機顯示X、Y、Z的值了,再看後續要做何運用,再做處理!