一、实验目的及要求

【一】实现人脸识别
【二】实现云数据库应用
【三】实现测温数据mqtt上传至物联网云平台

二、实验原理与内容

基于二哈实现多人人脸学习和识别
基于TinywebDB实现云数据库应用
基于EasyIoT实现mqtt数据上传。

三、实验软硬件环境

硬件:掌控板
软件:Mind+

四、主要硬件及平台使用

1、二哈识图

二哈是DFRobot的一款简单易学的人工智能视觉传感器,内置了人脸识别、物体追踪、物体识别、巡线追踪、颜色识别、标签识别功能。我们此实验中只需要用到 “人脸识别” 这一功能。
在这里插入图片描述
在这里插入图片描述

关于二哈具体的介绍和操作,请点击此处进入二哈官网浏览https://wiki.dfrobot.com.cn/SKU_SEN0305_Gravity__HUSKYLENS%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E6%91%84%E5%83%8F%E5%A4%B4#target_16

2、TinyWebDB

TinyWebDB服务器是网络微数据库,开源免费的,我们使用它来存储我们的数据,然后我们再从这个数据库获取数据。
在这里插入图片描述

我们首先注册新账号,也可以使用公共账户(账号、密码均为share)进行登录。请点击此处进行登录或注册http://tinywebdb.appinventor.space/

在这里插入图片描述
登录进去后我们后面的操作主要用到这里的API地址、用户名和密钥。

3、Easy IoT平台

EasyIoT是一个比较简单的物联网管理平台,我们使用它来进行MQTT消息通讯。因为我们之前使用过了,也比较熟悉它的具体使用步骤了,所以此处不再详细介绍它使用。
在这里插入图片描述
在后面的配置MQTT参数时,我们主要使用这里的用户名、密码和其中的一个Topic即可。点击此处进去Easy IoT平台http://iot.dfrobot.com.cn/workshop.html

五、实验过程

1、二哈的配置与使用

(1)二哈的接线
掌控板的中文面对应micro:bit掌控I/O扩展板的中文面,二哈的IIC接口对应扩展板的IIC接口。
(2)查看固件版本
在语言的左侧就可以看到当前的固件版本,我们只需要保证固件版本在V0.5.1就可以。
(3)升级固件版本
如果版本过低,我们要升级固件版本,务必要保证在V0.5.1以上。
(4)开始多人脸识别录入数据
在完成了固件的版本确认后,我们开始进行人脸识别录入数据。二哈默认的人脸识别模式是单人人脸识别,我们需要更改设置为识别多个,就可以让二哈来识别多个人了。在功能界面处,长按功能键,进入人脸识别的二级菜单拨动功能键至识别多个,短按功能键选中,往右拨动功能键,打开识别多个的开关,短按功能键保存,往左拨动功能键至保存并返回即可。
(5)学习人脸
在人脸识别的功能界面,先短按学习键,将已学习过了的人脸遗忘掉。长按 学习键学习人脸,学习完后即可松开学习键。如需继续学习人脸,则在倒计时结束前短按学习键,否则想要新增人脸的话,只能先遗忘之前学习过的,再重新学习一次。

关于二哈的具体操作及详细步骤,请浏览二哈官网教程https://wiki.dfrobot.com.cn/_SKU_SEN0305_Gravity__HUSKYLENS_人工智能摄像头#target_16

2、TinyWebDB的配置与使用

点击数据浏览进去添加标签数据。
在这里插入图片描述
在数据库里面添加标签,存储我们的设置的数据。
在这里插入图片描述
请点击此处进去TinyWebDB官网http://tinywebdb.appinventor.space/

3、Easy IoT的配置与使用

注册或登录后,点击工作间,进去后点击添加新的设备来生成一个Topic,或者直接使用以前创建过的Topic也行。
在这里插入图片描述
请点击此处进去Easy IoT物联网云平台官网http://iot.dfrobot.com.cn/workshop.html

4、Mind+配置与图形化编程

(1)在Mind+的扩展那里依次添加主板、传感器和网络服务
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
(2)编程参数配置
MQTT初始化配置:
在这里插入图片描述

服务器参数配置(TinyWebDB数据库):
在这里插入图片描述

(3)图形化编程结果
在这里插入图片描述
在这里插入图片描述

六、实验代码

/*!
 * MindPlus
 * mpython
 *
 */
#include <MPython.h>
#include <DFRobot_Iot.h>
#include <mPython_tinywebdb.h>
#include <DFRobot_HuskyLens.h>
// 静态常量
const String topics[5] = {"c3PBcmFMR","","","",""};
// 创建对象
DFRobot_Iot       myIot;
mPython_TinyWebDB mydb;
DFRobot_HuskyLens huskylens;


// 主程序开始
void setup() {
	mPython.begin();
	myIot.wifiConnect("Miro", "1372051053");
	while (!myIot.wifiStatus()) {yield();}
	display.setCursorLine(1);
	display.printLine(myIot.getWiFiLocalIP());
	myIot.init("iot.dfrobot.com.cn","Z0h15mFMg","","WA2JcmKMgz",topics,1883);
	myIot.connect();
	while (!myIot.connected()) {yield();}
	display.setCursorLine(2);
	display.printLine("MQTT连接成功");
	mydb.setServerParameter("http://tinywebdb.appinventor.space/api", "miro007","05104ad2");
	huskylens.beginI2CUntilSuccess();
	huskylens.writeAlgorithm(ALGORITHM_FACE_RECOGNITION);
}
void loop() {
	huskylens.request();
	if (huskylens.isAppear(1,HUSKYLENSResultBlock)) {
		rgb.write(0, 0x00FF00);
		display.setCursorLine(3);
		display.printLine(mydb.getTag("1"));
		myIot.publish(topic_0, mydb.getTag("1"));
	}
	else {
		if (huskylens.isAppear(2,HUSKYLENSResultBlock)) {
			display.setCursorLine(3);
			display.printLine(mydb.getTag("2"));
			rgb.write(0, 0xFF0000);
			myIot.publish(topic_0, mydb.getTag("2"));
		}
		else {
			display.setCursorLine(3);
			display.printLine("此人脸尚未录入,请先录入人脸!");
			rgb.write(0, 0x0000FF);
		}
	}
}

七、实验结果

PS:我们是两个人一起合作来做此实验的。

(1)二哈成功识别到第一个人脸

在这里插入图片描述

(2)二哈成功识别到第二个人脸

在这里插入图片描述

(3)二哈未能成功识别到人脸

在这里插入图片描述

(4)Easy IoT平台Topic接收到的消息

在这里插入图片描述

七、实验总结

通过这个实验,我学会并掌握了许多的知识和技术。我掌握了基于二哈实现多人人脸学习和识别的基本操作,学会了对TinywebDB实现云数据库应用的使用,还有知道如何通过EasyIoT实现mqtt数据上传等等的一些重要的操作。通过此实验,大大加深我对人工智能的理解,进一步扩展了我的专业视野和知识,同时让我懂得了人工智能人脸识别的基本原理。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐