基于掌控板+二哈+TinyWebDB+Easy_IoT的人脸识别测温

2023-11-11


前言

在疫情期间,住在村里或者小区的大家在出入的时候是不是都要测温呢,那工作人员对每一位出入的人员都需要逐个测量温度,这样就会比较辛苦。这个时候如果安排上人脸识别测温,是不是既解决了判别是否外来人员,也解决了测温的问题。
本实验是通过掌控板 + 掌控板扩展板 + DS18B20 + 二哈识图 + TinyWebDB + EasyIoT + Mind+ 来实现人脸识别测量温度的。(为什么用DS18B20呢,因为手头上没有测温的模块,先凑合着用)话不多说,我们就开始这个实验吧。


一、部分硬件及平台介绍

1、二哈识图(HuskyLens)

先声明一下,这 “只” “二哈” 可不是会拆家的二哈啊,它是DFRobot的一款简单易学的人工智能视觉传感器,内置了:人脸识别、物体追踪、物体识别、巡线追踪、颜色识别、标签(二维码)识别,6种功能。今天我们就只用它的 “人脸识别” 这一功能。在这里插入图片描述

2、TinyWebDB

TinyWebDB服务器是网络存储中的网络微数据库,重点是,它是免费滴,我们这一次就用它来作为我们的数据库使用。
点击这里进入TinyWebDB

3、Easy IoT

EasyIoT是一个比较简单的物联网管理平台,简单易用,可快速上手项目。(简单介绍)
Easy IoT官网

二、操作步骤

1、二哈的使用

(1)使用须知
在使用 “二哈” 前,我们要确保 “二哈” 当前的固件版本不低于V0.5.1,因为在此版本后,“二哈” 才能发挥它的全部能力,那么就需要查看 “二哈” 的固件版本。“二哈” 的大致模块布局图在上方

(Ps:以下所有的左右方向均是面向 “二哈” 屏幕的方向)
“二哈” 默认是英文版本的,我们先将它设置为中文:

  1. 往右拨动 “功能键”, 直到选中“General Settings”,短按 “功能键”,进入二级菜单
  2. 往右拨动 “功能键”,直到选中 “Language”,再选中 “简体中文”,先不要急着退出

(2)查看固件

  1. 在语言的左侧就可以看到当前的固件版本,我们只需要保证固件版本在V0.5.1就可以

(3)升级固件(如果固件版本已经是V.0.5.1及以上,这部分可忽略)

  1. 下载HUSKYLENS Uploader V2.1软件(固件升级软件)→下载地址
  2. 下载固件。下载V0.5.1版本固件
  3. 运行 “HUSKYLENS Uploader V2.1”在这里插入图片描述
  4. 接下来就是漫长的等待,大概5分钟左右,在烧录过程中,不要关闭烧录界面cmd窗口,烧录完成后,下方的 Loading会消失,“二哈” 会重启。

(4)开启多人脸识别
在完成了固件的升级后,我们首先要让 “二哈” 认识我们,就是人脸学习的过程,但 “二哈” 默认的人脸识别模式是 “单人人脸识别”,我们要让 “二哈” 认识多几个人,就必须更改设置 “识别多个”:

  1. 在人脸识别功能界面,长按 “功能键”,进入人脸识别的二级菜单
  2. 拨动 “功能键” 至 “识别多个”,短按 “功能键” 选中,往右拨动 “功能键”,打开 “识别多个” 的开关,短按 “功能键” 保存
  3. 往左拨动 “功能键” 至 “保存并返回”,选中退出

(5)学习人脸

  1. 在人脸识别的功能界面,先短按 “学习键”,将已学习的人脸遗忘;
  2. 长按 “学习键” 学习各角度的人脸,学习完成后即可松开 “学习键”;
  3. 如需继续学习人脸,则必须在倒计时前短按 “学习键”,否则想要新增人脸的话,只能先遗忘,再重新学习;(这是一个比较麻烦的点
  4. 不需继续学习可以等待倒计时结束或者短按 “功能键” 提前结束倒计时。
    其余详细功能使用请访问DFRobot的文档

2、TinyWebDB的使用

TinyWebDB官网
在这里插入图片描述
Ps:share为共享账号,为了方便查看数据,最好自己注册一个账号
在 “数据浏览” 中可以对数据增加/修改(目前发现只能在代码中对数据进行删除处理)
在这里插入图片描述
通过填写 “标签”、“值” 来添加/修改数据库中的数据
在这里插入图片描述

3、Easy IoT的使用

Easy IoT官网

  1. 注册/登录后,在工作间中
  2. 添加新的设备,获取一个Topic(主题)在这里插入图片描述

三、硬件连接

1、连接扩展板

掌控板直接插进扩展板中,方向为“中文”对“中文”

2、二哈接线

4pin接口(I2C模式)

序号 标注 管脚功能 用途 掌控板扩展板
1 T SDA(绿) 串行数据线 P20
2 R SCL(蓝) 串行时钟线 P19
3 - GND(黑) 电源负极 -
4 + VCC(红) 电源正极 +

3、DS18B20

由于本实验我用的是P0口连接掌控板,所以需要将扩展板上P0口附近的喇叭开关给关掉,避免冲突

序号 标注 管脚功能 用途 掌控板扩展板
1 out DATA 数据线 P0
2 + VCC 电源正极 +
3 - GND 电源负极 -

四、图形化代码编写

1、导入库

依次将以下的主控板、模块、服务加载到Mind+上使用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、连接WiFi

在这里插入图片描述

3、连接MQTT

在这里插入图片描述
在上图的 “MQTT初始化参数”中填入相对应的内容,即可配置MQTT
在这里插入图片描述

4、配置TinyWebDB服务器

在这里插入图片描述

在这里插入图片描述

5、人脸识别测温功能

在这里插入图片描述

6、全部代码:

(1)图形化代码
在这里插入图片描述
(2)Arduino C代码

/*!
 * MindPlus
 * mpython
 *
 */
#include <MPython.h>
#include <DFRobot_Iot.h>
#include <DFRobot_DS18B20.h>
#include <DFRobot_HuskyLens.h>
#include <mPython_tinywebdb.h>

// 动态变量
String         mind_s_name;
volatile float mind_n_Temp, mind_n_ShangYiCiShiBieJieGuo;
// 函数声明
void DF_RenLianShiBieCeWen();
void DF_LianJieWiFI();
void DF_LianJieMQTT();
// 静态常量
const String topics[5] = {"yourTopic","","","",""};	//这里是EasyIoT的Topic,更换为自己的即可
// 创建对象
DFRobot_HuskyLens huskylens;
DFRobot_DS18B20   ds18b20_P0;
DFRobot_Iot       myIot;
mPython_TinyWebDB mydb;


// 主程序开始
void setup() {
	mPython.begin();
	ds18b20_P0.begin(P0);
	DF_LianJieWiFI();
	delay(500);
	DF_LianJieMQTT();
	mydb.setServerParameter("http://tinywebdb.appinventor.space/api", "yourUser","yourSecret");	//将用户名和密钥替换为自己的
	huskylens.beginI2CUntilSuccess();
	huskylens.writeAlgorithm(ALGORITHM_FACE_RECOGNITION);
	display.fillScreen(0);
	display.setCursorLine(1);
	display.printLine("请面向摄像头进行识别");
}
void loop() {
	huskylens.request();
	if (huskylens.isAppearDirect(HUSKYLENSResultBlock)) {
		if (huskylens.isLearned(huskylens.readBlockCenterParameterDirect().ID)) {
			DF_RenLianShiBieCeWen();
			myIot.publish(topic_0, (String(mind_s_name) + String((String(" 体温:") + String((String(mind_n_Temp) + String("℃")))))));
			mind_n_ShangYiCiShiBieJieGuo = 1;
		}
		else {
			if ((mind_n_ShangYiCiShiBieJieGuo==1)) {
				display.fillScreen(0);
				display.setCursorLine(1);
				display.printLine("非本社区人员,请登记");
				mind_n_ShangYiCiShiBieJieGuo = 0;
			}
		}
	}
}


// 自定义函数
void DF_RenLianShiBieCeWen() {
	mind_s_name = mydb.getTag((String(huskylens.readBlockCenterParameterDirect().ID)));
	display.fillInLine(1, 0);
	display.setCursorLine(1);
	display.printLine(mind_s_name);
	display.setCursorLine(2);
	display.printLine("请保持面向摄像头");
	display.fillInLine(3, 0);
	display.setCursorLine(3);
	display.printLine("3s后开始测温");
	delay(1000);
	display.setCursorLine(3);
	display.printLine("2s后开始测温");
	delay(1000);
	display.setCursorLine(3);
	display.printLine("1s后开始测温");
	delay(1000);
	display.fillInLine(3, 0);
	display.setCursorLine(3);
	display.printLine("开始测温");
	display.fillInLine(4, 0);
	mind_n_Temp = ds18b20_P0.getTempC();
	display.setCursorLine(4);
	display.printLine((String(mind_n_Temp) + String("℃")));
}
void DF_LianJieWiFI() {
	myIot.wifiConnect("yourSSID", "yourPASSWD");	//将WiFi替换为自己的
	display.setCursorLine(1);
	display.printLine("WiFi连接ing");
	while (!myIot.wifiStatus()) {yield();}
	display.setCursorLine(1);
	display.printLine("WiFi连接成功");
	display.setCursorLine(2);
	display.printLine(myIot.getWiFiLocalIP());
}
void DF_LianJieMQTT() {
	myIot.init("iot.dfrobot.com.cn","yourIot_id","","yourIot_pwd",topics,1883);		//将用户名、用户密码替换为自己的
	myIot.connect();
	display.setCursorLine(3);
	display.printLine("MQTT连接ing");
	while (!myIot.connected()) {yield();}
	display.fillInLine(3, 0);
	display.setCursorLine(3);
	display.printLine("MQTT连接成功");
}

(3)代码链接:
图形化代码
Arduino C代码

五、总结

这个实验不是很难,只要一步步来做,很快就能完成。
讲的不是很好,欢迎大家前来探讨交流,如果发现有问题,还请大家多多提出来,一起学习。
Ps:如果各位看官有钱,可用MLX90614红外测温模块等专业模块替代DS18B20或LM35,毕竟DS18B20只是替代品

本文系湛江市第十七中学星火创客团队及岭南师范学院物联网俱乐部原创部分参赛项目,转载请保留声明。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于掌控板+二哈+TinyWebDB+Easy_IoT的人脸识别测温 的相关文章

  • 使用navicat为数据表添加外键

    1 选择需要操作的表 打开设计表 点击外键 2 名 自动生成 无需添加 字段 选择需要添加外键的字段 参考模式 选择表所在的数据库 参考表 关联表名 参考字段 关联表的关联字段 删除时 当删除关联表时 set null该字段置空 更新时 当

随机推荐

  • 【子比主题】添加今日实时热搜榜单教程

    预览图 演示地址 实时热榜 淇云博客 专注于IT技术分享 使用教程 首页版 将下载文件中的 index php 里的内容复制到 wp content themes zibll index php 里你想要放置的地方 Tips 不止index
  • 我爱说英语之学美语发音

    开篇 在写这篇文章之前 我考虑了很久 思前想后 还是决定把她写成一个系列的文章 用以来见证我们学习英语的历程 同时也为了说明我要学好英语的决心 废话不多说 进入正题 回忆 对于我们这些已经毕业很久的人来说 不知道还算不算有英语基础 最起码在
  • 狂野飙车9服务器维护中,狂野飙车9传奇进不去怎么办

    狂野飙车9 国际服IOS进入办法 苹果端的小伙伴如果想要进入 狂野飙车9 的国际服应该怎么办呢 下面 就跟随玩游戏网的小编一起来看一下具体的进入办法吧 感兴趣的小伙伴可千万不要错过哦 进入方法 第一步 首先我们需要推出AppStore账号
  • 魔方机器人之结构篇

    魔方颜色识别和魔方复原算法以及串口通信都解决完了 感觉自己该松口气了吧 结构可以反正仿照别人的来嘛 做出来就的了 事实又打了我一耳光 我怎么发现我的预判总是那么的不靠谱 总结就是自己没做过的东西再也不要说很简单了 即使看上去简单的再也不能简
  • 5-8 以特殊方式跟管理员打招呼

    创建一个至少包含5个用户名的列表 且其中一个用户名为 admin 想象你要编写代码 在每位用户登录网站后都打印一条问候消息 遍历用户名列表 并向每位用户打印一条问候消息 如果用户名为 admin 就打印一条特殊的问候消息 如 Hello a
  • 使用EasyExcel实现导入导出功能

    使用EasyExcel实现导入导出功能 一 导出 1 使用ideal新建一个maven项目 并在pom xml文件中引入EasyExcel依赖
  • impala 错误

    问题一 impala state store unrecognized service 原因 当前节点未成功安装impala server impala state store impala catalog 解决方案 yum install
  • ulua源码分析

    对于NestClass的Type 用了2次被Cache了两次 主要是因为PushType这个函数 对每个Type对象 不进行Cache检测 总是push一个新的proxy对象
  • 蓝桥杯省赛2021 括号序列 python

    给定一个括号序列 要求尽可能少地添加若干括号使得括号序列变得合法 当添加完成后 会产生不同的添加结果 请问有多少种本质不同的添加结果 两个结果是本质不同的是指存在某个位置一个结果是左括号 而另一个是右括号 例如 对于括号序列 只需要添加两个
  • MQTT:用Mosquitto搭建轻量级的设备接入网关

    开发部署在云端的设备接入网关服务就不得不提到MQTT 使用MQTT不论是从设备到设备 还是设备到云端服务的双向通讯 都可以获得较好的支持 MQTT的起源和我的理解 用tcpdump分析下MQTT的通讯时序 这里基于mosquitto 以一组
  • One PUNCH Man——半监督学习

    文章目录 半监督学习介绍 半监督SVM 基于分歧的方法 半监督学习介绍 我们在丰收的季节来到瓜田 满地都是西瓜 瓜农抱来四个西瓜说这都是好瓜 然后指着地里面六个瓜说这些不好 还需要再生长几天 基于这些信息 我们能否构建一个模型 用于判别地里
  • 优雅的玩转Fast-DDS

    优雅的玩转Fast DDS 安装依赖 sudo apt install cmake g python3 pip wget git pip3 install U colcon common extensions vcstool Fast DD
  • Web开发权威指南笔记(二)

    书 Web开发权威指南 美 Chris Aquino Todd Gandee著 为2nd实战项目CoffeeRun练习以及代码整理 全为个人借鉴本书产出 若需要转载请联系通知我 请尊重原创 谢谢 整理了大概5天了 内容比较多 很多重点都整理
  • mysql区别

    mysql区别 5 0之后与5 0之前 mysql5 0以及5 0以上的版本都存在一个系统自带的系统数据库 是information schema 而5 0之前的版本不存在且5 0以下的版本是多用户单操作 information schem
  • 如何创建NFT-独家设计

    如何创建NFT 第一步 下载并安装 MetaMask小狐狸钱包 第二步 打开官网https opensea io 点击右上角的钱包标志 进行链接 第三步 右上角弹出钱包提示 点击下一步就成功了 第四步 回到首页 点击create按钮 进入创
  • feign使用注意

    参数使用注意 参数name value属性 这两个的作用是一样的 指定的是调用服务的微服务名称 参数url 指定调用服务的全路径 经常用于本地测试 如果同时指定name和url属性 则以url属性为准 name属性指定的值便当做客户端的名称
  • c#正确用smtp.office365.com发邮件

  • Python自动化测试Unittest框架基本使用

    Unittest 框架 首先要知道这个框架是Python自带的 不需要安装 这个框架最重要的4 个核心 TestCase TestSuite TextTestRunner Fixture TestCase 个人总结一下 这个就是用测试用例继
  • SpringCloud与SpringBoot的版本对应关系

    在SpringCloud官网 https spring io projects spring cloud 可以看到 当前 2021年11月 SpringCloud的最新GA版本是2020 0 4这一版 除了2020 0 X版本外 Sprin
  • 基于掌控板+二哈+TinyWebDB+Easy_IoT的人脸识别测温

    文章目录 前言 一 部分硬件及平台介绍 1 二哈识图 HuskyLens 2 TinyWebDB 3 Easy IoT 二 操作步骤 1 二哈的使用 2 TinyWebDB的使用 3 Easy IoT的使用 三 硬件连接 四 图形化代码编写