AI Lens 智能AI鏡頭|奧斯丁教育團隊 OURSTEAM in EDUCATION
icon教學資源
202021.02

AI Lens 智能AI鏡頭

1.1​AI鏡頭


介紹
  • AI鏡頭能夠達到臉部辨識、色球追蹤、卡片識別和獲取特徵的功能。
../../_images/05035_01.png
特色
  • 採用RJ11連接設計,易於插入。
     
規格
 
ItemParameter
SKUEF05045
ConnectionRJ11
Connection TypeIIC
Working Voltage3.3V
Core ICK210

外觀和尺寸
../../_images/05035_02.png

連接類型:RJ11杜邦接線

儘管micro:bit的擴充版上沒有RJ11連接,但我們可以選擇使用具有RJ11連接器的杜邦線。我們需要將RJ11連接到鏡頭,另一端連接擴充板(黑線連接到GND;紅線連接到VCC;綠線連接到P19(SCL);黃線連接到P20(SDA)。如果鏡頭從一開始就無法正常運作,請嘗試使用獨立的電源為鏡頭供電。


../../_images/05035_03.png

以IOT:bit擴充板為例:
將黑線連接到GND;紅線連接到VCC;綠線連接到P19(SCL);黃線連接到P20(SDA)。

注意:以AI Lens鏡頭結合IOT:bit擴充板使用時,需要較強的電流供應,建議使用5V3A或5V2A的充電插頭使用。為避免鏡頭與micro:bit過熱,建議每項專案測試完成後先將電源關閉,當需要測試時再進行供電。如需加購5V3A的充電插頭可以參考此頁面
../../_images/05035_04.png
注意:


(1)如果您不是使用Nezha擴展板驅動AI鏡頭(例如:IOT:bit),請於MakeCode平台的Extensions搜尋擴充程式PlanetX-AI
注意:請勿下載成「PlanetX」擴充程式,這在使用其他硬體的擴充程式時(例如:燈條的擴充程式neopixel),將造成衝突,導致程式無法下載。




如果您是使用Nezha擴展板驅動AI鏡頭,請於MakeCode平台的Extensions輸入「PlanetX」來下載擴充程式PlanetX。
../../_images/TPBot_tianpeng_case_15_03.png

(2)在一鍵學習模式下,如果重新啟動硬體,則必須重新學習物件。

(3)下載程式後,如果AI鏡頭因初始化AI鏡頭錯誤指示而卡在起始頁面中,請嘗試關閉設備電源,然後重新啟動。(或者確保在AI Lens妥善地連接擴充板之後,連接上已編程的micro:bit板)。
 


AI Lens韌體下載步驟

AI鏡頭會不定期更新一些新功能及性能優化、在發布新版本韌體後,需請您下載韌體更新。

enlightened如何檢查您目前的版本?
當您啟動AI鏡頭後,鏡頭畫面的右下角處(如下圖)會提示您目前的韌體版本編號(如果沒有提示,則為舊版,請您立刻進行更新)。
請注意:檢查時請單獨為鏡頭供電,確保它能停留在該畫面。假如您是接將鏡頭接在Cutebot小車上並插著micro:bit,該畫面大概一秒內就會跳離並進入功能模式,您會難以檢查。


../../_images/AI-gj-05.png

enlightened最新版本韌體為v1.0.12,請點擊下載。

enlightened如何更新韌體?

1.請先安裝鏡頭序列埠的驅動程式:
2.安裝韌體下載程式kflashwindows系統在完成解壓縮之後,請打開資料夾:[kflash_gui],找到kflash_gui.exe程式(如下圖)。

../../_images/AI-gj-01.png

macOS系統請於下載完成後打開下圖的程式。

../../_images/AI-gj-06.png

3.雙擊kflash_gui.exe並打開文件,選擇打開資料夾中的最新版本韌體v1.0.12。韌體下載請點擊v1.0.12

../../_images/AI-gj-02.png

先用USB線連接AI鏡頭。
../../_images/AI-gj-03.png

選擇下圖紅框處的"Port",接著點擊Download進行下載。(補充:"Port"根據不同電腦可能會有差異,並不一定是COM11,例如:COM22,請選擇含有USB的選項。)
../../_images/AI-gj-04.png

如果在macOS系統下,安裝韌體下載程式的過程中遇到:「由於無法驗證開發者而無法安裝」的情況,請造訪此網站以獲取解決方法。


../../_images/AI-gj-07-en.png

當您下載成功,會顯示下圖:


 

1.2專案01:密碼識別

目的


使AI鏡頭能夠識別卡片上的數字,並判斷正確的密碼排序。
../../_images/05035_01.png
所需材料
  • AI 鏡頭
  • IOT:bit擴充板
  • 具有RJ11連接器的杜邦線
  • micro:bit
  • USB線 x 2
  • 數字卡片
硬體連接示意圖

將AI鏡頭連接到IOT:bit擴充板上的IIC腳位,依照:黑線連接到GND;紅線連接到VCC;綠線連接到P19(SCL);黃線連接到P20(SDA)。
../../_images/05035_03.png

請注意:micro:bit待下載完程式後再插入IoT:bit。 下載時若將micro:bit插入擴充板, 可能會導致micro:bit連接異常或損壞。​


程式設計

步驟1


在MakeCode的選擇中點擊“Advanced”以找到更多選擇。
../../_images/smtcNoB.png


我們需要下載針對AI鏡頭使用的擴充程式。先點擊選擇底部的“Extensions”,然後在對話框中輸入「PlanetX-AI」,點選就能新增到MakeCode專案中。
注意:請勿下載成「PlanetX」擴充程式,這在使用其他硬體的擴充程式時(例如:燈條的擴充程式neopixel),將造成衝突,導致程式無法下載。



步驟2

AI鏡頭可以同時檢測多張卡片,但是回傳偵測到的數據時,一次只能回傳一個(例如:第一次回傳0、第二次回傳4、第三次回傳9),因此需先透過變數(0、4、9)先把值儲存起來,再寫邏輯判斷。
讀取X軸是為了取得數字卡片放置的順序,以X軸來看,由左至右是的數字是由小到大,紀錄每張數字卡片的X軸數字並比較大小,當數字卡片放置的X軸位置大小合乎邏輯判斷,就代表密碼正確(以笑臉表示)。




程式連結



結果
將0、4、9的卡片依照順序放在鏡頭前,若辨識出正確的密碼micro:bit就會顯示笑臉;否則將顯示哭臉代表密碼錯誤。  


1.3專案02:以顏色控制燈光

目的

使LED燈條能夠根據AI鏡頭識別的顏色來調整燈的顏色。
../../_images/05035_01.png
所需材料和連接的示意圖
  • 如圖所示,將AI鏡頭連接到IIC端口,並將LED燈條連接到Nezha擴展板上的J1端口。
../../_images/05035_02_03.png

MakeCode編程

步驟1
  • 在MakeCode的選擇中點擊“Advanced”以找到更多選擇。
../../_images/smtcNoB.png
 
  • 我們需要添加一個套件。先點擊選擇底部的“Extensions”,然後在對話框中搜尋“PlanetX”並下載。
../../_images/TPBot_tianpeng_case_15_03.png

注意:如果遇到提示說明因為不相容所以程式庫會被刪除,你可以依照提示所說的繼續,或是創建一個新的專案。

步驟2

專案1:卡片識別

編程如下:

../../_images/05035_02_06.png

連結

結果
  • LED燈條會根據AI鏡頭識別的顏色顯示顏色。
 

1.4專案03:以顏色控制鋼琴

目的


使Nezha擴展板能夠根據AI鏡頭識別的顏色播放不同的聲音。
../../_images/05035_01.png
所需材料和連接的示意圖
  • 如圖所示,將AI鏡頭連接到Nezha擴展板上的IIC端口。
../../_images/05035_01_03.png

MakeCode編程

步驟1
  • 在MakeCode的選擇中點擊“Advanced”以找到更多選擇。
../../_images/smtcNoB.png
 
  • 我們需要添加一個套件。先點擊選擇底部的“Extensions”,然後在對話框中搜尋“PlanetX”並下載。
../../_images/TPBot_tianpeng_case_15_03.png

注意:如果遇到提示說明因為不相容所以程式庫會被刪除,你可以依照提示所說的繼續,或是創建一個新的專案。

步驟2

編程如下:

../../_images/05035_03_06.png

連結

結果
  • Nezha擴展板上的蜂鳴器會根據AI鏡頭識別出的不同顏色發出不同的聲音。
 

1.5專案04:臉部追蹤裝置

目的

使AI鏡頭能夠識別並追蹤臉部。
../../_images/05035_01.png
所需材料和連接的示意圖
  • 使用以下的積木建置裝置:
../../_images/05035_04_03.png

../../_images/05035_04_04.png

 
  • 將設備與伺服器連接:
../../_images/05035_04_05.png
  • 將AI鏡頭與裝置連接:
 

添加Python文件:

我們已經創建了一個程式庫EF_Produce_MicroPython-master,用於對AI Lens進行方便的Python編程,您只需要使用函數並修改應用程式的參數即可。

下載該軟體包並解壓縮:EF_Produce_MicroPython-master

前往Python編輯器

../../_images/05001_073.png


對於編程,我們需要添加AILens.py文件。首先點擊“加載/保存”,然後點擊“顯示文件(1)”,選擇“添加文件”以進入下載頁面以找到EF_Produce_MicroPython-master的文件夾,然後新增AILens.py。
../../_images/05001_082.png

../../_images/05001_092.png

../../_images/05001_101.png

API

 
API描述
AILENS()初始化AI鏡頭
switch_function(func)選擇AI鏡頭功能func選擇功能:(Learn特徵學習Card卡片識別Face臉部識別Tracking追蹤識別Color色彩識別Ball 球體識別
get_card_content()識別卡片上的內容
get_card_data()從AI鏡頭獲取卡片的訊息至列表(X軸; Y軸;寬度;高度;可靠係數;卡片總數;目前卡片的ID)
get_face()判斷AI鏡頭是否能辨識人臉
get_face_data()從AI鏡頭獲取臉的訊息至列表(X軸; Y軸;寬度;高度;可靠係數;臉部數;目前臉部的ID)
get_ball_color()辨識AI鏡頭中球的顏色
get_ball_data()從AI鏡頭獲取球的信息到列表(X軸; Y軸;寬度;高度;可靠係數;球的總數;目前球的ID)
get_track_data()從AI鏡頭獲取片段的訊息至列表(偏差角度,偏離距離,片段長度)
get_color_type()識別AI鏡頭中卡片的顏色
get_color_data()從AI鏡頭獲取顏色的訊息至列表(X軸; Y軸;寬度;高度;可靠係數;顏色總數;目前顏色的ID)
learn_object(learn_id)將已學會的物件編上ID編號,ID編號為1~5
get_learn_data()從AI鏡頭獲取已學會的物件之訊息至列表(物件的ID;可靠係數)


classAILENS(object)
  • 初始化AI鏡頭
def switch_function(self,func)
  • 選擇AI鏡頭功能

    func選擇功能,Learn特徵學習,Card卡片識
    Face臉部辨識;Tracking追蹤辨識;Color顏色辨識;Ball球體辨識

     
def get_image(self)
  • 獲取圖像
def get_ball_color(self)
  • 識別Ai鏡頭中球的顏色(如果球為藍色,則回傳結果為藍色;如果球為紅色,則回傳結果為紅色;若都不是,則回傳“沒有球”)
def get_ball_data(self)

回傳AI鏡頭中球的資訊,BallData[x,y,w,h,confidence,total,order]。
  • x:X
  • y:Y
  • w:寬度
  • h:高度
  • confidence可靠係數
  • total:AI鏡頭中的球總數
  • order:目前球的ID
     
def get_face(self)
  • 判斷Ai鏡頭中是否有臉孔
def get_face_data(self)

回傳AI鏡頭中臉孔的訊息,FaceData [x,y,w,h,confidence,total,order]。

 
  • x:X軸
  • y:Y軸
  • w:寬度
  • h:高度
  • confidence可靠係數
  • total:AI鏡頭中的臉孔總數
  • order:目前臉孔的ID

def get_card_content(self)

回傳卡片上的內容,可能的值為:
  • 卡片值= [“0”, “1”, “2”, “3”, “4”, “5”, “6”, “7”, “8”, “9”]
  • 字母值= [“A”, “B”, “C”, “D”, “E”]
  • 其他值= [“Mouse”, “micro:bit”, “Ruler”, “Cat”, “Peer”, “Ship”, “Apple”, “Car”, “Pan”, “Dog”, “Umbrella”, “Airplane”, “Clock”, “Grape”, “Cup”, “Turn left”, “Turn right”, “Forward”, “Stop”, “Back”]
如果有卡片無法被識別,則回傳值為“No Card”

def get_color_type(self)

回傳卡片的顏色,可能的顏色是:
  • 綠卡:“Green
  • 藍卡:Blue
  • 黃卡:“Yellow”
  • 黑卡:Black
  • 紅卡:“Red”
  • 白卡:White
如果有顏色無法被識別,則回傳值為No Color

def get_color_data(self)

回傳顏色的資訊,ColorData [x,y,w,h,confidence,total,order]
  • xX
  • yY
  • w:寬度
  • h:高度
  • confidence:可靠係數
  • total:AI鏡頭中的顏色總數
  • order:目前顏色的ID
def get_track_data(self)

回傳片段的資訊,LineData [angel,width,len]
  • angel回傳AI鏡頭中片段的偏離角度
  • width回傳AI鏡頭中線片段的偏移距離
  • len回傳AI鏡頭中片段的長度

def learn_object(self, learn_id)
  • 將已學會的物件編上ID編號
  • 已學會的物件IDlearn_id

def get_learn_data(self)

回傳已學會物件的資訊,return info: LearnData [ID,confidence]
  • 物件IDID
  • 已學習物件的可靠係數confidence

範本

範本1:特徵學習


結果
  • 按下A鍵以學習該物件,當micro:bit識別出該物件就會顯示笑臉,否則將顯示悲傷的表情。
範本2:顏色識別


結果
  • 當micro:bit識別出綠色就會顯示笑臉兩秒,否則將顯示悲傷的表情。

範本3:識別球體


結果
  • 當micro:bit識別出紅球就會顯示笑臉兩秒,否則將顯示悲傷的表情。

範本4:識別黑線


結果
  • 如果AI偵測到黑線偏左,則micro:bit會顯示悲傷的表情;如果AI偵測到黑線偏右,則會顯示笑臉。

範本5:人臉辨識


結果
  • 如果辨識到人臉,micro:bit就會顯示笑臉,否則將顯示悲傷的表情。

範本6:識別卡片


結果
  • 如果辨識到"停止"的卡片,micro:bit就會顯示笑臉,否則將顯示悲傷的表情。
  • icon
  • icon
  • icon
  • icon
  • icon
  • icon電話:04-2337-1605
  • icon傳真:04-2256-9949
  • icon統編:13438259
  • iconE-mail:oursteamtw@gmail.com
  • iconLINE ID:@oursteam