一、實驗目的及要求
【一】實作人臉識別
【二】實作云資料庫應用
二、實驗原理與內容
基于二哈實作多人人臉學習和識別
基于TinywebDB實作云資料庫應用
基于EasyIoT實作mqtt資料上傳,
三、實驗軟硬體環境
硬體:掌控板
軟體:Mind+
四、 實驗程序(實驗步驟、記錄、資料、分析)
-
基于二哈實作多人人臉學習和識別
首先進入到DFROBOT官網搜索二哈,然后在搜素結果里面找到產品維庫,在維庫里面可以找到該攝像頭的基本教程,如下圖所示:

在左邊的目錄里面可以找到你想找的教程,本次實驗的基本教程是在第七章,接下來講一下比較重要的點:
1.我們首先要讓 “二哈” 認識我們,就是人臉學習的程序,但 “二哈” 默認的人臉識別模式是 “單人人臉識別”,我們要讓 “二哈” 認識多幾個人,就必須更改設定 “識別多個”:
在人臉識別功能界面,長按 “功能鍵”,進入人臉識別的二級選單
撥動 “功能鍵” 至 “識別多個”,短按 “功能鍵” 選中,往右撥動 “功能鍵”,打開 “識別多個” 的開關,短按 “功能鍵” 保存
往左撥動 “功能鍵” 至 “保存并回傳”,選中退出
2.學習人臉
在人臉識別的功能界面,先短按 “學習鍵”,將已學習的人臉遺忘;
長按 “學習鍵” 學習各角度的人臉,學習完成后即可松開 “學習鍵”;
如需繼續學習人臉,則必須在倒計時前短按 “學習鍵”,否則想要新增人臉的話,只能先遺忘,再重新學習;(這是一個比較麻煩的點)
不需繼續學習可以等待倒計時結束或者短按 “功能鍵” 提前結束倒計時,
其余詳細功能使用請訪問DFRobot的檔案 -
基于TinywebDB實作云資料庫應用
要想實作TinywebDB的運用,首先要進去到TinywebDB的官網注冊一個賬號,就是進到這個界面:

根據頁面提示注冊賬號,然后登錄成功的界面:

在這個界面你可以看到該資料庫的基本資訊,然后再點擊第一行的資料瀏覽選項,進去里面根據實驗要求添加資訊,我們這個小組的資訊如圖所示:

然后這個部分的準備就已經做好了, -
基于EasyIoT實作mqtt資料上傳
1.先注冊一個賬號【點擊注冊】

進入網站點擊箭頭所指的地方按照步驟進行注冊,就可以獲得一個賬號,注冊成功登錄后的界面如下圖所示,
/
登錄進去后,先點擊箭頭所向的按鈕,獲得id和密碼,這對下面的實驗很重要,然后點擊添加新的設備,添加兩個設備,

到這里,實驗基本需要的東西基本準備完成,接下來開始正式實驗:
(1). 首先要把掌控拓展板和攝像頭連接起來,一共有4個線組別插錯了,否則會把板啥訓的,然后再把掌控板插進拓展板里面,充當顯示屏,然后連接電腦,打開Mind+連接設備,然后在拓展里面選擇掌控板,再在擴展板那里選擇掌控擴展板,再在傳感器那里選擇AI攝像頭,網路服務那里選擇WIFI,MQTT,TinywebDB模塊,



(2).然后根據演算法規則來完成相應的演算法,代碼如下:


代碼塊有了,現在就來看一下代碼里面的各個配置,首先WIFI模塊的只需要在相應的框框內填進名稱和密碼就好;而MQTT的資料則需要配置的更詳細一點,如下圖所示:

在登錄成功的頁面左上角找到你的ID和密碼,然后新建一個topic,把topic號填進相應的框框,接下來就是TinywebDB的配置,如下圖所示:

就是在TinywebDB注冊登錄成功的頁面,找到相應的資訊填進相應的框框內,然后基本的實驗代碼和配置已經完成,接下來看完整的代碼:
/*!
* MindPlus
* mpython
*
*/
#include <MPython.h>
#include <DFRobot_Iot.h>
#include <mPython_tinywebdb.h>
#include <DFRobot_HuskyLens.h>
// 動態變數
String mind_s_XingMing;
// 靜態常量
const String topics[5] = {"7JBEB2hMg","","","",""};
// 創建物件
DFRobot_Iot myIot;
mPython_TinyWebDB mydb;
DFRobot_HuskyLens huskylens;
// 主程式開始
void setup() {
mPython.begin();
myIot.wifiConnect("abc", "123456..");
while (!myIot.wifiStatus()) {yield();}
display.setCursorLine(1);
display.printLine("WIFI連接成功");
myIot.init("iot.dfrobot.com.cn","5-iocmFMR","","5-iocmKGRz",topics,1883);
myIot.connect();
while (!myIot.connected()) {yield();}
display.setCursorLine(2);
display.printLine("MQTT連接成功");
mydb.setServerParameter("http://tinywebdb.appinventor.space/api", "lifu1","1c567dc4");
huskylens.beginI2CUntilSuccess();
huskylens.writeAlgorithm(ALGORITHM_FACE_RECOGNITION);
huskylens.writeName(String("2018764220"), 1);
huskylens.writeName(String("2018764232"), 2);
}
void loop() {
huskylens.request();
if (huskylens.isAppearDirect(HUSKYLENSResultBlock)) {
if (huskylens.isLearned(huskylens.readBlockCenterParameterDirect().ID)) {
display.setCursorLine(3);
display.printLine("請保持面向攝像頭");
mind_s_XingMing = mydb.getTag((String(huskylens.readBlockCenterParameterDirect().ID)));
display.setCursorLine(4);
display.printLine(mind_s_XingMing);
rgb.write(1, 0x0000FF);
myIot.publish(topic_0, mind_s_XingMing);
delay(1000);
}
}
}
代碼看完,接下來就看一下我們小組的實驗結果:


這就是攝像頭內識別的結果,會識別出我們的學號,接下來再看一下掌控板的識別情況:


這時候當攝像頭識別出我們的頭像掌控板就會顯示我們的名字學號還會亮起不同的燈光,而這就是我們MQTT后臺的資訊流:

實驗總結:
這個實驗不是很難,只要一步步來做,很快就能完成,不過也要注意一些細節處的問題,不然容易出現錯誤,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/206153.html
標籤:其他
上一篇:2020-11-05
下一篇:QT之QUdpSocket學習
