信息谷 - ICITU

标题: 物联网 掌控版 二哈 实验三 人工智能实验 [打印本页]

作者: vguangxian01    时间: 2020-11-7 10:26
标题: 物联网 掌控版 二哈 实验三 人工智能实验
一、实验目的及要求
【一】实现人脸识别
【二】实现云数据库应用
【三】实现测温数据mqtt上传至物联网云平台


二、实验原理与内容
基于二哈实现多人人脸学习和识别
基于TinywebDB实现云数据库应用
基于EasyIoT实现mqtt数据上传。


三、实验软硬件环境
硬件:掌控板
软件:Mind+


四、实验过程
1. 基于TinywebDB实现云数据库应用
TinyWebDB服务器是网络存储中的网络微数据库
网址:http://tinywebdb.appinventor.space/

(, 下载次数: 108)
ps :为了方便使用,自己注册一个用户最好。

(, 下载次数: 102)
进入TinyWebDB服务器查询页面,注意API地址、用户名、密钥;点击数据浏览。

(, 下载次数: 95)

输入“标签”和“值”,点击“添加/修改”,即可添加或更新数据库中的数据。

2. 基于二哈实现多人人脸学习和识别
(1)二哈使用须知
(, 下载次数: 108)
                  接口与接口说明
                  


首先确保 “二哈” 当前的固件版本不低于V0.5.1:
往右拨动 “功能键”, 直到选中“General Settings”,短按 “功能键”,进入二级菜单;
往右拨动 “功能键”,直到选中 “Language”,再选中 “简体中文”,“语言”左侧就可以看到当前固件版本。
若版本低于V0.5.1,则需要进行固件升级



(2)开启多人脸识别

二哈默认的人脸识别模式是 “单人人脸识别”,需要更改设置为 “识别多个”:

在人脸识别功能界面,长按 “功能键”,进入人脸识别的二级菜单
拨动 “功能键” 至 “识别多个”,短按 “功能键” 选中,往右拨动 “功能键”,打开 “识别多个” 的开关(右拨),短按 “功能键” 保存,往左拨动 “功能键” 至 “保存并返回”,选择“确认”。

(, 下载次数: 98)
(3)学习人脸

在人脸识别的功能界面,先短按 “学习键”,再短按一次确认遗忘;
长按 “学习键” 学习各角度的人脸,学习完成后松开 “学习键”;
在倒计时结束前短按 “学习键”,再次学习新增人脸,否则只能先重新遗忘,再学习;
不需继续学习可以等待倒计时结束或者短按 “功能键” 提前结束倒计时。

(, 下载次数: 122)
更多其他内容可直接访问二哈的使用文档

3. 基于EasyIoT实现mqtt数据上传
(1)登录网址:https://iot.dfrobot.com.cn/index.html
(2)选择用户登录或注册。
(, 下载次数: 102)
(3)注册登录后进入工作间,点击“添加新设备”,添加两台设备;
  可以修改设备名称,每台设备可以存储1000条信息;
  点击左边侧的小眼睛可以查看用户名称和用户密码。
  (, 下载次数: 105)
关于EasyIoT实现mqtt数据上传的相关操作及实验可以查看:
物联网 掌控版 实验一 Easy IoT实现mqtt实验



4.代码实现
(1)依次将以下的主控板、模块、服务加载到Mind+上使用:

(, 下载次数: 106)
(, 下载次数: 105)
(, 下载次数: 111)
(, 下载次数: 107)
(2)编写连接WiFi部分:

(, 下载次数: 107)
(3)编写连接MQTT部分:

(, 下载次数: 109)
这里的参数配置使用第三步注册好的用户和设备号,注意不要出错。

(4)编写配置TinyWebDB服务器部分:

(, 下载次数: 96)
这里的API地址、用户名、密钥请填写自己查询到信息。

(5)图形化代码实现:

(, 下载次数: 209)
(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后台信息查看
(, 下载次数: 108)
(2)实际效果:

(, 下载次数: 111)
               wifi、mqtt连接成功
               
(, 下载次数: 104)
(, 下载次数: 115)
(, 下载次数: 102)
(, 下载次数: 111)
(, 下载次数: 109)

五、实验总结
1.编写代码时需要以工程师的角度去思考,当一个人使用这个功能的时候,看到的是什么,能使用的功能有什么,比如用户首先看到屏幕的时候,上面不能是全黑的,理应有一些选项提供给用户选择,或者指示让用户去执行。
2.程序运行应该是在循环内的,不然只会执行一次。
3.代码链接:图形化代码





欢迎光临 信息谷 - ICITU (https://www.icitu.com/) Powered by Discuz! X3.4