物联网 掌控版 二哈 实验三 人工智能实验
一、实验目的及要求【一】实现人脸识别【二】实现云数据库应用【三】实现测温数据mqtt上传至物联网云平台二、实验原理与内容基于二哈实现多人人脸学习和识别基于TinywebDB实现云数据库应用基于EasyIoT实现mqtt数据上传。三、实验软硬件环境硬件:掌控板软件:Mind+四、实验过程1. 基于TinywebDB实现云数据库应用TinyWebDB服务器是网络存储中的网络微数据库网址:http://
一、实验目的及要求
【一】实现人脸识别
【二】实现云数据库应用
【三】实现测温数据mqtt上传至物联网云平台
二、实验原理与内容
基于二哈实现多人人脸学习和识别
基于TinywebDB实现云数据库应用
基于EasyIoT实现mqtt数据上传。
三、实验软硬件环境
硬件:掌控板
软件:Mind+
四、实验过程
1. 基于TinywebDB实现云数据库应用
TinyWebDB服务器是网络存储中的网络微数据库
网址:http://tinywebdb.appinventor.space/
ps :为了方便使用,自己注册一个用户最好。
进入TinyWebDB服务器查询页面,注意API地址、用户名、密钥;点击数据浏览。
输入“标签”和“值”,点击“添加/修改”,即可添加或更新数据库中的数据。
2. 基于二哈实现多人人脸学习和识别
(1)二哈使用须知
接口与接口说明
首先确保 “二哈” 当前的固件版本不低于V0.5.1:
往右拨动 “功能键”, 直到选中“General Settings”,短按 “功能键”,进入二级菜单;
往右拨动 “功能键”,直到选中 “Language”,再选中 “简体中文”,“语言”左侧就可以看到当前固件版本。
若版本低于V0.5.1,则需要进行固件升级
(2)开启多人脸识别
二哈默认的人脸识别模式是 “单人人脸识别”,需要更改设置为 “识别多个”:
在人脸识别功能界面,长按 “功能键”,进入人脸识别的二级菜单
拨动 “功能键” 至 “识别多个”,短按 “功能键” 选中,往右拨动 “功能键”,打开 “识别多个” 的开关(右拨),短按 “功能键” 保存,往左拨动 “功能键” 至 “保存并返回”,选择“确认”。
(3)学习人脸
在人脸识别的功能界面,先短按 “学习键”,再短按一次确认遗忘;
长按 “学习键” 学习各角度的人脸,学习完成后松开 “学习键”;
在倒计时结束前短按 “学习键”,再次学习新增人脸,否则只能先重新遗忘,再学习;
不需继续学习可以等待倒计时结束或者短按 “功能键” 提前结束倒计时。
更多其他内容可直接访问二哈的使用文档。
3. 基于EasyIoT实现mqtt数据上传
(1)登录网址:https://iot.dfrobot.com.cn/index.html
(2)选择用户登录或注册。
(3)注册登录后进入工作间,点击“添加新设备”,添加两台设备;
可以修改设备名称,每台设备可以存储1000条信息;
点击左边侧的小眼睛可以查看用户名称和用户密码。
关于EasyIoT实现mqtt数据上传的相关操作及实验可以查看:
物联网 掌控版 实验一 Easy IoT实现mqtt实验
4.代码实现
(1)依次将以下的主控板、模块、服务加载到Mind+上使用:
(2)编写连接WiFi部分:
(3)编写连接MQTT部分:
这里的参数配置使用第三步注册好的用户和设备号,注意不要出错。
(4)编写配置TinyWebDB服务器部分:
这里的API地址、用户名、密钥请填写自己查询到信息。
(5)图形化代码实现:
(6)Arduino C代码
/*!
* MindPlus
* mpython
*
*/
#include <MPython.h>
#include <DFRobot_Iot.h>
#include <mPython_tinywebdb.h>
#include <DFRobot_HuskyLens.h>
// 动态变量
String mind_s_name;
// 静态常量
const String topics[5] = {"Cz4TcmFMR","QASTciFMR","","",""};
// 创建对象
DFRobot_Iot myIot;
mPython_TinyWebDB mydb;
DFRobot_HuskyLens huskylens;
// 主程序开始
void setup() {
mPython.begin();
myIot.wifiConnect("xxx", "xxxxxxxx");
while (!myIot.wifiStatus()) {yield();}
display.setCursorLine(1);
display.printLine("WiFi连接成功");
display.setCursorLine(2);
display.printLine(myIot.getWiFiLocalIP());
myIot.init("iot.dfrobot.com.cn","zJOhciFGR","","kJdhciFGgz",topics,1883);
myIot.connect();
while (!myIot.connected()) {yield();}
display.setCursorLine(3);
display.printLine("MQTT连接成功");
mydb.setServerParameter("http://tinywebdb.appinventor.space/api", "fisher","7c2b7d65");
huskylens.beginI2CUntilSuccess();
huskylens.writeAlgorithm(ALGORITHM_FACE_RECOGNITION);
delay(3000);
display.fillScreen(0);
display.setCursorLine(1);
display.printLine("开始识别人脸");
}
void loop() {
huskylens.request();
if (huskylens.isAppearDirect(HUSKYLENSResultBlock)) {
if (huskylens.isLearned(huskylens.readBlockCenterParameterDirect().ID)) {
display.setCursorLine(2);
display.printLine("请保持面向摄像头");
mind_s_name = mydb.getTag((String(huskylens.readBlockCenterParameterDirect().ID)));
display.setCursorLine(3);
display.printLine(mind_s_name);
myIot.publish(topic_0, mind_s_name);
delay(1000);
display.setCursorLine(4);
display.printLine("人脸录入");
}
else {
display.setCursorLine(4);
display.printLine("人脸未录入");
}
}
}
5.实验效果图:
(1)MQTT后台信息查看
(2)实际效果:
wifi、mqtt连接成功
五、实验总结
1.编写代码时需要以工程师的角度去思考,当一个人使用这个功能的时候,看到的是什么,能使用的功能有什么,比如用户首先看到屏幕的时候,上面不能是全黑的,理应有一些选项提供给用户选择,或者指示让用户去执行。
2.程序运行应该是在循环内的,不然只会执行一次。
3.代码链接:图形化代码
更多推荐
所有评论(0)