551浏览
查看: 551|回复: 3

[项目分享] 【智控万物】智能门禁——AI三剑客

[复制链接]
【三剑客】
我知道的“三剑客”
1、《三剑客》、《侠隐记》,是法国19世纪浪漫主义作家大仲马的代表作之一。故事主角为达达尼昂,三剑客分别是阿多斯,波尔多斯,和阿拉密斯。
QQ截图20210809214011.jpg

2、荷兰三剑客,是指二十世纪八十年代至九十年代活跃在世界足坛的三名荷兰男子足球运动员,分别是指司职中锋的马尔科·范巴斯滕、司职攻击中场的路德·古利特、司职后腰的弗兰克·里杰卡尔德。
QQ截图20210809213906.jpg

3、网页制作三剑客
网页三剑客,是一套强大的网页编辑工具,最初是由美国的Macromedia公司开发出来的。由Dreamweaver,Fireworks,Flash三个软件组成,俗称网页三剑客。
QQ截图20210809214330.jpg

这三个软件陪伴了我好多年!
【人工智能三剑客】
步入正题,本项目使用Df的AI人工智能"三剑客"组合(图像识别|语音识别|语音合成) ,制作一个智能门禁。
QQ截图20210809214632.jpg

二哈识图(HuskyLens)是一款简单易用的人工智能视觉传感器,内置6种功能:人脸识别、物体追踪、物体识别、巡线追踪、颜色识别、标签识别。仅需一个按键即可完成AI训练,摆脱繁琐的训练和复杂的视觉算法,让你更加专注于项目的构思和实现。
语音识别模块让声音为您的项目增添一抹特色!连接上语音识别模块,再添加几行简单的代码,您的项目就可以听懂您说的话。无需机器学习,无需特定人语音,无需联网,随时随地都可以进行语音识别,结合语音合成模块还可以实现语音对话。使用Gravity I2C接口通信,兼容绝大部分主控,非常适合接入教育场景使用。三种语音识别模式和三种语音输入方式使模块可以集成入更多的场景。
语音合成模块让声音为你的项目增添一抹特色!连接上语音合成模块,再添加几行简单的代码就可以让您的项目开口说话。无论是中文还是英文对于语音合成模块来说都是”so easy”,播报当前时间,播报环境数据统统不在话下,与语音识别模块结合还可实现语音对话!该模块采用I2C和UART两种通讯方式,Gravity接口,兼容绝大部分主控。模块上已经自带了一个喇叭,所以您无需再额外的添加喇叭。

IMG_20210809_183121.jpg
IMG_20210809_183041.jpg


【其它主要硬件】
1、非接触式红外温度传感器,用来测量进入人员的体温。
QQ截图20210809214942.jpg

2、URM09-模拟量超声波测距传感器,用来保证手腕已接近温度传感器。
QQ截图20210809215152.jpg

3、5V电磁铁,用于门闭合时,吸住,不被强行打开。
QQ截图20210809220025.jpg



【硬件连接】

IMG_20210809_125032_edit_31827718898267.jpg


【实物模型】
IMG_20210809_183121.jpg

正面


IMG_20210809_183837.jpg

内部


【Mind+程序代码】
当住户说出“开门”,二哈开始人脸识别(住户人脸信息提前录入,方法见二哈手册),无误后提醒住户将手腕放到测温位置,当体温正常时,语音提示并开门。
QQ截图20210809211908.jpg

Arduino C代码
  1. /*!
  2. * MindPlus
  3. * uno
  4. *
  5. */
  6. #include <UNO_Obloq.h>
  7. #include <DFRobot_ASR_M.h>
  8. #include <DFRobot_Servo.h>
  9. #include <DFRobot_MLX90614.h>
  10. #include <DFRobot_HuskyLens.h>
  11. #include <DFRobot_Ultrasonic.h>
  12. #include <DFRobot_SpeechSynthesis_M.h>
  13. // 动态变量
  14. volatile float mind_n_WenDu;
  15. // 静态常量
  16. const String topics[5] = {"5n92uqBMg","","","",""};
  17. // 创建对象
  18. DFRobot_HuskyLens           huskylens;
  19. UNO_Obloq                   olq;
  20. DFRobot_ASR                 asr;
  21. DFRobot_SpeechSynthesis_I2C sstts;
  22. Servo                       servo_A1;
  23. DFRobot_Ultrasonic          ultraA0;
  24. DFRobot_MLX90614            mlx90614;
  25. // 主程序开始
  26. void setup() {
  27.         servo_A1.attach(A1);
  28.         ultraA0.begin(A0);
  29.         huskylens.beginI2CUntilSuccess();
  30.         huskylens.writeAlgorithm(ALGORITHM_FACE_RECOGNITION);
  31.         olq.startConnect(0, 1, "sxs", "smj080823", "RNZYsQIWg", "gHWLswIWgz", topics, "iot.dfrobot.com.cn", 1883);
  32.         asr.begin(LOOP, MIC);
  33.         asr.addCommand("kai men", 1);
  34.         asr.start();
  35.         sstts.begin();
  36.         servo_A1.angle(abs(134));
  37.         digitalWrite(5, HIGH);
  38.         sstts.speak("初始化完成");
  39.         delay(3000);
  40. }
  41. void loop() {
  42.         if ((asr.read()==1)) {
  43.                 huskylens.request();
  44.                 if (huskylens.isLearned(1)) {
  45.                         if (huskylens.isAppear(1,HUSKYLENSResultBlock)) {
  46.                                 sstts.speak("请将手腕放置测温处");
  47.                                 delay(3000);
  48.                                 while (!(ultraA0.getDistanceCm()<10)) {}
  49.                                 mind_n_WenDu = mlx90614.getObjectTempC();
  50.                                 huskylens.writeOSD(String((String(mind_n_WenDu))), 230, 35);
  51.                                 if (((mind_n_WenDu>34) && (mind_n_WenDu<37))) {
  52.                                         huskylens.writeOSD(String("OK"), 230, 60);
  53.                                         sstts.speak("体温正常,准许进入");
  54.                                         digitalWrite(5, LOW);
  55.                                         servo_A1.angle(abs(50));
  56.                                         delay(10000);
  57.                                         sstts.speak("请注意门马上关闭");
  58.                                         servo_A1.angle(abs(134));
  59.                                         digitalWrite(5, HIGH);
  60.                                 }
  61.                                 else {
  62.                                         huskylens.writeOSD(String("NO"), 230, 60);
  63.                                         sstts.speak("体温异常,禁止进入");
  64.                                 }
  65.                         }
  66.                 }
  67.         }
  68. }
复制代码

【演示视频】


电磁铁演示

智能门禁演示


一只小学生  中级技师

发表于 2021-8-10 14:26:02

二哈...的...显示屏...还能...用吗?
回复

使用道具 举报

云天  中级技匠
 楼主|

发表于 2021-8-10 15:01:37

一只小学生 发表于 2021-8-10 14:26
二哈...的...显示屏...还能...用吗?

之前就见过有人拆开过,我这次也试一下,四周有胶,中间有一小条。小心一点,慢点。别伤到里面的元件(不多),和数据排线就行。
回复

使用道具 举报

常州-杨华  见习技师

发表于 2021-10-21 10:00:55

这个案例物联网模块用到了没有?需要写上位机进行数据采集吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2021 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail