2017年8月20日 星期日

mBot x App Inventor 2:設計 AI 程式連接 mBot

簡介

近日發現 App Inventor 2 在 mBot 的 Extension 上作出了更新,現在設計 App Inventor 程式連接 mBot 變得更加簡單(應該說是非常簡單),而且支援的感應器亦變得全面。現在就讓我們看看如何用 App Inventor 2 設計程式連接 mBot 吧!

開設 App Inventor 帳戶

要使用 App Inventor 就必需要有一個 Google 帳戶,如果沒有,可以去註冊一個,費用全免。然後可以到 App Inventor 的網站:http://ai2.appinventor.mit.edu/

第一次到這個網址或是已經登出了,需要先登入 Google 帳戶,登入後就會看到這個畫面:


第一次使用應該沒有任何項目的。預設的語言是英語,你可以先選擇自己愛好的語言才繼續。

建立 App Inventor 項目

我們會設計一個偵測 mBot 前方障礙物距離和讓 mBot 板載 LED 亮起隨機顏色的程式,首先,按左上角的「新建項目」開始設計程式:


然後,為你的手機程式定一個名字:


然後就會進入了設計介面:


左面的是我們可以用的介面組件,中間是我們的設計介面,右邊就是組件列表和屬性設定。

設計程式介面

在設計上,我們會主要有2個按鍵,分別用來連接 mBot 和斷接 mBot。除此之外,我們會有一個按鍵變換板載 LED,大致佈局可以參考下面:


如果不太了解如何鋪排設計介面,可參考這個網站

加入 mBot 擴充元件

在開始設計邏輯前,我們還需要加入 mBot 的擴充元件,我們按一下左邊「組件版面」的「Extension」,然後選擇「Import Extension」:


選擇「URL」,並輸入擴充元件的網址:http://appinventor.makeblock.com/mbot.aix


等它加載完後,你就會看到「Extension」多了 mBot 的擴充元件:


將「mBot 元件」加入設計中,會看到 mBot 出現在「非可視元件」中:


邏輯設計

現在我們可以按下右上角的「邏輯設計」開始設計程式:


首先,完成連接 mBot 的功能:


因為我希望使用超聲波感應器的功能,所以當 mBot 成功連接後,要調用超聲波感應器:


然後就是當超聲波感應器成功取得數值時更新標籤:


最後就是讓板載 LED 亮起隨機顏色的按鍵,其中「whichLight」的「0」是指全部 LED:


測試程式

程式設計已經完成了,接著就可以在 Android 的手機或平板測試程式:


得到 APK 有兩個方法,可以選擇使用 MIT AI2 Companion 掃描二維碼,或是下載到電腦,再用自己方法放到 Android 裝置上:


這個二維碼只有2小時有效,如果想要保存好檔案也可以下載 APK。

測試時打開應用程式和啟動 mBot,將 Android 裝置靠近 mBot,按下「連接 mBot」,看到「Device connected」就表示成功連接了,可以看到超聲波感應器的讀數了,也可以隨機轉換板載 LED 的顏色了。

2017年8月17日 星期四

mBot x STEM:Inventor Electronic Kit 範例匯集

日前,Makeblock 港澳獨家總代理 Everbest 拍攝了一系列使用 Inventor Electronic Kit 的 STEM 範例,這裡收集了所有範例的影片(粵語)和參考網站(英文版),方便學習:


1. 距離顯示(Distance Display)

【超聲波感應器+七段數碼管顯示器】
參考網站:http://openlab.makeblock.com/topic/56e29bac6ac42c1b332d56db

2. 智能風扇(Smart Fan)

【超聲波感應器+130DC 摩打(包括風扇葉)】
參考網站:http://openlab.makeblock.com/topic/56e299df6ac42c1b332d5658

3. 自動喂魚器(Auto Fish Feeder)

【伺服摩打+七段數碼管顯示器+RJ25 適配器】
參考網站:http://openlab.makeblock.com/topic/56e2967f6ac42c1b332d5566

4. 模擬交通燈(Simulation of Traffic Light)

【伺服摩打+LED 燈+七段數碼管顯示器+RJ25 適配器】
參考網站:http://openlab.makeblock.com/topic/56e2951e6ac42c1b332d54e0

5. 智能檯燈(Smart Table Lamp)

【LED 燈+可變電阻感應器+聲音感應器+人體紅外線感應器】
參考網站:http://openlab.makeblock.com/topic/56e293976ac42c1b332d5451

6. 自動冷凍器(Cooling Machine)

【可變電阻感應器+七段數碼管顯示器+130DC 摩打(包括風扇葉)+溫度感應器】
參考網站:http://openlab.makeblock.com/topic/56e291ae6ac42c1b332d5364

7. 打地鼠(Whac-A-Mole)

【七段數碼管顯示器+LED 燈+搖桿模組】
參考網站:http://openlab.makeblock.com/topic/56e2903b6ac42c1b332d52db

8. 藍牙控制(Bluetooth Control)

【藍牙模組+130DC 摩打(包括風扇葉)+LED 燈+七段數碼管顯示器】
參考網站:http://openlab.makeblock.com/topic/56e28e176ac42c1b332d51f5

9. 自動吹泡泡(Bubble Machine)

【人體紅外線感應器+130DC 摩打(包括風扇葉)+伺服摩打+RJ25 適配器】
參考網站:http://openlab.makeblock.com/topic/56e28b4f6ac42c1b332d50c4

2017年8月11日 星期五

mBot 入門教學:紅外線遙控器

簡介

早前在網上看到有位老師想模擬 mBot 的原廠程式,但由於原廠程式需要用紅外線遙控器,所以未能成功。因此,我找到了 mBot 原廠程式的 Arduino 程式檔,借這個機會教導一下如何使用紅外線遙控器控制 mBot。

mBot 的原廠程式有三個模式:

  • A 鍵:正常行走模式
  • B 鍵:避障模式
  • C 鍵:巡線模式

另外,按下數字鍵可以改變速度。但功能強大仍要保留學習空間,因此我會抽取正常行走模式作範例說明。

認識紅外線感應器與紅外線 mBlock 積木

紅外線感應器分成紅外線發射(IR_T: Infrared Remote Transmitting)與紅外線接收(IR_R: Infrared Remote Receive)。紅外線發射主要功能是傳送紅外線訊號;而紅外線接收主要功能是接收紅外線遙控器發射的訊號,依照訊號控制機械人的動作,紅外線接收的最佳距離在 3 米以內,紅外線發射與接收在 mCore 主板上。


而紅外線感應器的 mBlock 積木能夠偵測紅外線遙控器是否按下按鍵。

  

功能:偵測紅外線遙控器是否按下A鍵(A ~ F鍵、上、下、左、右鍵與 R0 ~ R9)。
回傳:偵測結果為真(True)或假(False)。(真:已按下按鍵;假:未按下按鍵。)

範例

首先,我們會完成控制方向的部份。當我們按下 4 個方向鍵時,mBot 會相對地前進、後退或轉向,例如我們按下上箭咀時,想要 mBot 前進 1 秒,我們會這樣做:


「移動速度」刻意用了變數,因為我們接著就要將「按下數字鍵改變移動速度」的部份加入程式。

「移動速度」總共有九個檔次,按下數字 9 鍵會是最快的速度 255,但按下數字1鍵時速度不可以是 0,因為速度 0 車子就會停下來。

而 mBot 最低速度需要約 75,才會看到有明顯移動。

75 至 255 之間分成 8 個檔次,每個檔次就會有 22.5 的分別((255-75)÷8=22.5),我們就直接23作遞增級數,所以基本速度就是 48((255-23×9)=48)。

例如,按下數字 5 鍵時,我們會這樣做:


所以,完成所有按鍵後,我們就會得出一個可以利用紅外線遙控器控制 mBot 的程式了。