信息谷 - ICITU
标题:
物联网 掌控版 二哈 实验三 人工智能实验
[打印本页]
作者:
vguangxian01
时间:
2020-11-7 10:26
标题:
物联网 掌控版 二哈 实验三 人工智能实验
一、实验目的及要求
【一】实现人脸识别
【二】实现云数据库应用
【三】实现测温数据mqtt上传至物联网云平台
二、实验原理与内容
基于二哈实现多人人脸学习和识别
基于TinywebDB实现云数据库应用
基于EasyIoT实现mqtt数据上传。
三、实验软硬件环境
硬件:掌控板
软件:Mind+
四、实验过程
1. 基于TinywebDB实现云数据库应用
TinyWebDB服务器是网络存储中的网络微数据库
网址:
http://tinywebdb.appinventor.space/
(, 下载次数: 135)
上传
点击文件名下载附件
ps :为了方便使用,自己注册一个用户最好。
(, 下载次数: 123)
上传
点击文件名下载附件
进入TinyWebDB服务器查询页面,注意API地址、用户名、密钥;点击数据浏览。
(, 下载次数: 119)
上传
点击文件名下载附件
输入“标签”和“值”,点击“添加/修改”,即可添加或更新数据库中的数据。
2. 基于二哈实现多人人脸学习和识别
(1)二哈使用须知
(, 下载次数: 126)
上传
点击文件名下载附件
接口与接口说明
首先确保 “二哈” 当前的固件版本不低于V0.5.1:
往右拨动 “功能键”, 直到选中“General Settings”,短按 “功能键”,进入二级菜单;
往右拨动 “功能键”,直到选中 “Language”,再选中 “简体中文”,“语言”左侧就可以看到当前固件版本。
若版本低于V0.5.1,则需要进行固件升级
(2)开启多人脸识别
二哈默认的人脸识别模式是 “单人人脸识别”,需要更改设置为 “识别多个”:
在人脸识别功能界面,长按 “功能键”,进入人脸识别的二级菜单
拨动 “功能键” 至 “识别多个”,短按 “功能键” 选中,往右拨动 “功能键”,打开 “识别多个” 的开关(右拨),短按 “功能键” 保存,往左拨动 “功能键” 至 “保存并返回”,选择“确认”。
(, 下载次数: 130)
上传
点击文件名下载附件
(3)学习人脸
在人脸识别的功能界面,先短按 “学习键”,再短按一次确认遗忘;
长按 “学习键” 学习各角度的人脸,学习完成后松开 “学习键”;
在倒计时结束前短按 “学习键”,再次学习新增人脸,否则只能先重新遗忘,再学习;
不需继续学习可以等待倒计时结束或者短按 “功能键” 提前结束倒计时。
(, 下载次数: 148)
上传
点击文件名下载附件
更多其他内容可直接访问二哈的
使用文档
。
3. 基于EasyIoT实现mqtt数据上传
(1)登录网址:
https://iot.dfrobot.com.cn/index.html
(2)选择用户登录或注册。
(, 下载次数: 127)
上传
点击文件名下载附件
(3)注册登录后进入工作间,点击“添加新设备”,添加两台设备;
可以修改设备名称,每台设备可以存储1000条信息;
点击左边侧的小眼睛可以查看用户名称和用户密码。
(, 下载次数: 122)
上传
点击文件名下载附件
关于EasyIoT实现mqtt数据上传的相关操作及实验可以查看:
物联网 掌控版 实验一 Easy IoT实现mqtt实验
4.代码实现
(1)依次将以下的主控板、模块、服务加载到Mind+上使用:
(, 下载次数: 126)
上传
点击文件名下载附件
(, 下载次数: 130)
上传
点击文件名下载附件
(, 下载次数: 135)
上传
点击文件名下载附件
(, 下载次数: 130)
上传
点击文件名下载附件
(2)编写连接WiFi部分:
(, 下载次数: 125)
上传
点击文件名下载附件
(3)编写连接MQTT部分:
(, 下载次数: 130)
上传
点击文件名下载附件
这里的参数配置使用第三步注册好的用户和设备号,注意不要出错。
(4)编写配置TinyWebDB服务器部分:
(, 下载次数: 125)
上传
点击文件名下载附件
这里的API地址、用户名、密钥请填写自己查询到信息。
(5)图形化代码实现:
(, 下载次数: 301)
上传
点击文件名下载附件
(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后台信息查看
(, 下载次数: 133)
上传
点击文件名下载附件
(2)实际效果:
(, 下载次数: 137)
上传
点击文件名下载附件
wifi、mqtt连接成功
(, 下载次数: 124)
上传
点击文件名下载附件
(, 下载次数: 136)
上传
点击文件名下载附件
(, 下载次数: 121)
上传
点击文件名下载附件
(, 下载次数: 138)
上传
点击文件名下载附件
(, 下载次数: 127)
上传
点击文件名下载附件
五、实验总结
1.编写代码时需要以工程师的角度去思考,当一个人使用这个功能的时候,看到的是什么,能使用的功能有什么,比如用户首先看到屏幕的时候,上面不能是全黑的,理应有一些选项提供给用户选择,或者指示让用户去执行。
2.程序运行应该是在循环内的,不然只会执行一次。
3.代码链接:
图形化代码
欢迎光临 信息谷 - ICITU (https://icitu.com/)
Powered by Discuz! X3.4