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

AI Lens 智能AI鏡頭

AI鏡頭


介紹
  • AI鏡頭能夠達到臉部辨識、色球追蹤、卡片識別和獲取特徵的功能。
../../_images/05035_01.png
特色
  • 採用RJ11接口設計,易於使用。
     
規格
 
項目參數
SKUEF05045
接口RJ11
類型IIC
工作電壓3.3V
核心ICK210
AI 鏡頭的原點(0,0)在螢幕的左下角
X 軸和 Y 軸的範圍為:X(0,224)、Y(0,224)


外觀和尺寸

../../_images/05035_02.png


連接類型:RJ11杜邦接線

假如 micro:bit 的擴充版上沒有 RJ11 接口,可以選擇使用RJ11轉杜邦線的連接線。將RJ11連接到鏡頭,另一端連接擴充板(黑線連接到GND;紅線連接到VCC;綠線連接到P19(SCL);黃線連接到P20(SDA))。如果鏡頭無法正常運作,請嘗試使用獨立的電源為鏡頭供電。

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

以IOT:bit擴充板為例

../../_images/05035_04.png
將黑線連接到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鏡頭會不定期更新一些新功能及性能優化、在發布新版本韌體後,需請您下載韌體更新。

注意:AI攝像頭有AiCam V1.2和AiCam V1.7兩個硬體版本,兩個版本的固件不通用

AiCam V1.7版的背後有個韌體下載案鍵,可以依據韌體下載按鍵或版本號區分。

../../_images/AI-gj-08.png
enlightened如何檢查您目前的版本?

當您啟動AI鏡頭後,鏡頭畫面的右下角處(如下圖)會提示您目前的韌體版本編號(如果沒有提示,則為舊版,請您立刻進行更新)。

請注意:檢查時請單獨為鏡頭供電,確保它能停留在該畫面。假如您是接將鏡頭接在Cutebot小車上並插著micro:bit,該畫面大概一秒內就會跳離並進入功能模式,您會難以檢查。

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

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

enlightened如何更新韌體?

1.請先安裝鏡頭序列埠的驅動程式:
2.安裝韌體下載程式kflash
windows系統在完成解壓縮之後,請打開資料夾:[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

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

用AI攝像頭時,若下載出現錯誤提示,可能是PlanetX的軟體庫已經損壞。

../../_images/AI-FAQ-01.png

以下為兩種可能的情況:
  1. 軟體庫較為老舊,請更新並重新增加軟體庫再進行測試。
  2. 同時新增 PlanetX 軟體庫和 PlanetX-AI 軟體庫衝突,請點擊途中紅框位置「JaveScript」切換編輯介面,點擊資源管理器,依照需求刪除其中一個軟體庫。
../../_images/AI-FAQ-03.png

刪除後資源管理器應該不會再出現錯誤題示

../../_images/AI-FAQ-04.png

如果刪除後發現視覺識別積木遺失,請嘗試重新加入對應的軟體庫。如果仍無法解決,請按下圖所示重置 makecode 編程平台。

注意:重置平台後,保存在 makecode 的專案都會清除,請將專案文件儲存置電腦中。


../../_images/AI-FAQ-05.png


AI Lens--python 使用範例

新增 python 文件

為了方便使用python編程,可以使用已經編寫好的EF_Produce_MicroPython-master
只需要調用函數並修改參數即可實現對應的功能。

下載壓縮檔並解壓縮:
EF_Produce_MicroPython-master

打開 Python editor

../../_images/AI-py-01.png

新增 AILens.py 文件。點選 Load / Save,然後點擊 Show Files(1)下拉選單,再點擊 Add file 下載並解壓縮完成的 EF_Produce_MicroPython-master 文件夾,從中選擇 AILens.py 並新增。

../../_images/AI-py-02.png

../../_images/AI-py-03.png

../../_images/AI-py-04.png
 

API

API描述
AILENS()初始化AI攝像頭模塊。
switch_function(func)選擇攝像頭功能,func選擇功能:(Learn特徵學習;Card卡片識別;Face人臉識別;Tracking巡線識別;Color顏色識別;Ball小球識別)。
get_card_content()識別卡片內容。
get_card_data()用列表的方式返回畫面中卡片的信息:(X軸坐標、Y軸坐標、寬度、高度、置信度、圖像中卡片總數、當前卡片ID)。
get_face()判斷畫面中是否存在人臉。
get_face_data()用列表的方式返回畫面中人臉的信息:(X軸坐標、Y軸坐標、寬度、高度、置信度、圖像中人臉總數、當前人臉ID)。
get_ball_color()檢測畫面中的小球顏色
get_ball_data()用列表的方式返回畫面中小球的信息:(X軸坐標、Y軸坐標、寬度、高度、置信度、圖像中小球總數、當前小球ID)。
get_track_data()用列表的方式返回畫面中線段的信息:(偏移角度、偏移距離、線段長度)。
get_color_type()檢測畫面中的卡片顏色
get_color_data()用列表的方式返回畫面中的顏色信息:(X軸坐標、Y軸坐標、寬度、高度、置信度、圖像中顏色總數、當前顏色ID)。
learn_object(learn_id)以ID號來學習一個物品,ID號:1~5。
get_learn_data()用列表的方式返回畫面中已學習物品的信息:(物品ID、置信度)。

class AILENS(object)

初始化AI攝像頭模塊。

def switch_function(self, func)

選擇攝像頭功能,func選擇功能:(Learn特徵學習;Card卡片識別;Face人臉識別;Tracking巡線識別;Color顏色識別;Ball小球識別)。

def get_image(self)

獲取一幀畫面

def get_ball_color(self):

檢測畫面中的小球顏色,返回值(當檢測到藍色小球時,返回值為'Blue',當檢測到紅色小球時,返回值為'Red',否則返回'No Ball'。)

def get_ball_data(self)

返回畫面中小球的信息,BallData [x,y,w,h,confidence,total,order]。

x:X軸坐標

y:Y軸坐標

w:寬度

h:高度

confidence:置信度

total:圖像中小球總數

order:當前小球ID

def get_face(self)

判斷畫面中是否存在人臉

def get_face_data(self)

返回畫面中人臉的信息,FaceData [x,y,w,h,confidence,total,order]。

x:X軸坐標

y:Y軸坐標

w:寬度

h:高度

confidence:置信度

total:圖像中人臉總數

order:當前人臉ID

def get_card_content(self)

返回卡片內容,可能的返回值:

numberCards = [”0”, “1”, “2”, “3”, “4”, “5”, “6”, “7”, “8”, “9”]

letterCards = [”A”, “B”, “C”, “D”, “E”]

otherCards = [”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]

x:X軸坐標

y:Y軸坐標

w:寬度

h:高度

confidence:置信度

total:圖像中顏色總數

order:當前顏色ID

def get_track_data(self)

返回畫面中線段的信息:LineData [angel,width,len]

angel:返回圖像中線段的偏移角度

width:返回圖像中線段的偏移距離

len:返回圖像中線段的線段長度

def learn_object(self, learn_id)

以ID號來學習一個物品,

要學習的ID號:learn_id

def get_learn_data(self)

返回畫面中已學習物品的信息,返回信息:LearnData [ID,confidence]

物品ID:ID

所學習物品的置信度:confidence

示範代碼

示範一:特徵學習

結果
按下A鍵學習物品,當識別到所學習的物品時,顯示笑臉,否則顯示哭臉。

示範二:顏色識別

結果
當識別到綠色卡片的時候,顯示笑臉兩秒,否則顯示哭臉。

示範三:小球識別


結果
當識別到紅色小球的時候,顯示笑臉兩秒,否則顯示哭臉。

示範四:識別黑線

結果
當攝像頭中的黑線偏向左邊時,LED矩陣顯示哭臉,當黑線偏向右邊時,LED矩陣顯示笑臉。

示範五:人臉辨識


結果
當識別到人臉時顯示笑臉,否則顯示哭臉。

示範六:識別卡片


結果
當識別到「停止」卡片時顯示笑臉,否則顯示哭臉。



專案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就會顯示笑臉;否則將顯示哭臉代表密碼錯誤。  


專案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
 
卡片識別

編程如下:

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

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

專案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鏡頭識別出的不同顏色發出不同的聲音。
 

專案04:臉部追蹤裝置

目的

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

如下圖所示,將 AI 鏡頭連接到擴充板的 IIC 端口,分別將兩個舵機連接到擴展板的 S1 和 S2 端口。(這裡 S1 舵機控制 X 軸的運動軌跡,S2 舵機控制 Y 軸的運動軌跡)

../../_images/05035_04_07.png

MakeCode編程

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

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

編程如下:
 
../../_images/05035_04_08.png
連結

結果

AI攝像頭會將鏡頭一直對著人臉位置。
 


專案05:比比誰臉大

目的
 

通過AI攝像頭識別人臉寬度並顯示。
../../_images/05035_01.png
 
所需器材及連接示意圖
 

如下圖所示,將AI鏡頭連接到擴展板的IIC端口,將OLED顯示螢幕連接到擴展板的IIC。
../../_images/05035_05_03.png
 

makecode 編程
 
步驟1
  • 在MakeCode的選擇中點擊「Advanced」以找到更多選擇。
../../_images/smtcNoB.png
  • 我們需要添加一個套件。先點擊選擇底部的「Extensions」,然後在對話框中搜尋「PlanetX」並下載。
../../_images/TPBot_tianpeng_case_15_03.png
 
注意:如果遇到提示說明因為不相容所以程式庫會被刪除,你可以依照提示所說的繼續,或是創建一個新的專案。

步驟2
 
編程如下:
../../_images/05035_05_06.png

連結
結果
  • 過OLED顯示螢幕顯示人臉寬度。
 

專案06:特徵學習

目的

透過依鍵學習識別物體
../../_images/05035_01.png

所需器材及連接示意圖

如下圖所示,將AI鏡頭連接到擴展板的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_06_06.png
 
連結
結果

按下A鍵學習物品,ID為1;按下B鍵學習物品,ID為2;當學習完成後再將物體放置在攝像頭前,在micro:bit的LED矩陣上會顯示物體的ID。
 


專案07:AI 鏡頭巡跡小車

目的

用積木組建一輛小車,並透過AI鏡頭實現巡跡功能。
../../_images/05035_01.png

所需器材及連接示意圖

如下圖所示,將AI鏡頭連接到擴展板的IIC端口,兩個電機分別連接擴展板的M1和M2接口。
../../_images/05035_07_07.png

如下圖所示,組裝積木小車。
../../_images/05035_07_01.png

../../_images/05035_07_02.png

../../_images/05035_07_03.png

../../_images/05035_07_04.png

../../_images/05035_07_05.png
 
 
makecode 編程
 
步驟1
  • 在MakeCode的選擇中點擊「Advanced」以找到更多選擇。
../../_images/smtcNoB.png
  • 我們需要添加一個套件。先點擊選擇底部的「Extensions」,然後在對話框中搜尋「PlanetX」並下載。
../../_images/TPBot_tianpeng_case_15_03.png
 
注意:如果遇到提示說明因為不相容所以程式庫會被刪除,你可以依照提示所說的繼續,或是創建一個新的專案。

步驟2

編程如下:

../../_images/05035_07_06.png

連結

結果
  • 搭載 AI 鏡頭的積木小車可巡線行駛。

 
專案08:球體識別

目的

透過 AI 鏡頭識別小球。
../../_images/05035_01.png

所需器材及連接示意圖
 
如下圖所示,將 AI 鏡頭連接到擴展板的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-08-06.png

連結
結果
  • 當 AI 鏡頭識別到藍色小球時顯示哭臉;識別到紅色小球顯示笑臉。

 
專案09:路牌引導

目的

用積木組裝一輛小車,並透過 AI 鏡頭實現路牌引導功能。
../../_images/05035_01.png

所需器材及連接示意圖

如下圖所示,將 AI 鏡頭連接到擴展板的IIC端口,兩個電機分別連接擴展板的M1和M4接口。
../../_images/05035_09_01.png

如下圖所示,組裝積木小車。
../../_images/05035_07_01.png
../../_images/05035_09_02.png
../../_images/05035_09_03.png
../../_images/05035_09_04.png
../../_images/05035_09_05.png

makecode 編程

步驟1
  • 在MakeCode的選擇中點擊「Advanced」以找到更多選擇。
../../_images/smtcNoB.png
  • 我們需要添加一個套件。先點擊選擇底部的「Extensions」,然後在對話框中搜尋「PlanetX」並下載。
../../_images/TPBot_tianpeng_case_15_03.png
 
注意:如果遇到提示說明因為不相容所以程式庫會被刪除,你可以依照提示所說的繼續,或是創建一個新的專案。
 
步驟2

當開機時,初始化 AI 鏡頭,切換為卡片識別功能。
../../_images/05035_09_07.png

從 AI 鏡頭中獲取一幀;如果識別到畫面中有卡片,則根據卡片大小來判斷卡片與車的距離;當距離較遠時,獲取圖像中卡片的 x 軸坐標值,根據返回的坐標值,調節左右兩個電機的速度,保持圖像中的卡片處於圖像的中間位置。
../../_images/05035_09_08.png

當距離卡片較近時,判斷圖像中的卡片如果為向右轉的交通符號卡片,則設置電機速度,讓小車向右轉,然後從 AI 鏡頭獲取三幀圖像並且不做處理,清理 AI 鏡頭的緩衝區;判斷圖像中的卡片如果為停止的交通符號卡片,則設定電機速度,讓小車停止,然後從 AI 鏡頭獲取三幀圖像並且不做處理,清理AI攝像頭的緩衝區。
../../_images/05035_09_09.png

當 AI 鏡頭沒有偵測到圖片時,小車直線前進。
../../_images/05035_09_10.png

完整編程如下:
../../_images/05035_09_11.png
 
連結
結果
  • 搭載 AI 鏡頭的積木小車直線行駛,根據路牌引導轉彎或者停車。
 
  • icon
  • icon
  • icon
  • icon
  • icon
  • icon電話:04-2376-6276
  • icon傳真:04-2256-9949
  • icon統編:13438259
  • iconE-mail:oursteamtw@gmail.com
  • iconLINE ID:@oursteam