回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

【挑战二】世界杯签到门禁系统 简单

头像 tiger_zc 2022.11.23 454 8

设计背景/功能需求:

      虽然疫情给大家带来了很多不便,但本月21号开始的世界杯足球赛,给广大球迷带来了一丝慰藉。传统强队阿根廷和德国的表现不佳,但我喜欢的桑巴军团----巴西队的表现还是一贯稳健的。刚好为球赛设计一套签到门禁系统,方便队员们签到,确保队员到场,不耽误比赛。

 

   

巴西队2022世界杯26人大名单 

主教练:蒂特 

门将:阿利森(利物浦)、埃德森(曼城)、韦弗顿(帕尔梅拉斯)

 

后卫:达尼洛(尤文)、阿尔维斯(美洲狮)、桑德罗(尤文)、特莱斯(塞维利亚)、蒂亚戈-席尔瓦(切尔西)、马尔基尼奥斯(巴黎)、米利唐(皇马)、布雷默(尤文)

 

中场:卡塞米罗(曼联)、法比尼奥(利物浦)、吉马良斯(纽卡)、弗雷德(曼联)、帕奎塔(西汉姆)、里贝罗(弗拉门戈) 

 

前锋:内马尔(巴黎)、维尼修斯(皇马)、热苏斯(阿森纳)、安东尼(曼联)、拉菲尼亚(巴萨)、理查利森(热刺)、马丁内利(阿森纳)、罗德里戈(皇马)、佩德罗(弗拉门戈)

 

首发阵容后卫守门员.png前锋中场.png

 

 

 

功能原理

     此系统主要由DF的人工智能神器HuskyLens掌控板组成,利用二哈的人脸识别功能,对签到队员进行识别签到,保证参赛队员一个都不少,比赛的顺利进行。

 

人脸识别数据录入可以参考一下产品维库https://wiki.dfrobot.com.cn/_SKU_SEN0305_Gravity__HUSKYLENS_%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E6%91%84%E5%83%8F%E5%A4%B4#target_16

 

 

系统连接图

系统连接图.png

材料清单

结构设计

 

流程图.jpg

具体编程说明:

    

        编程还是用我们熟悉的Mind+图形化编程软件,因为需要对数据进行记录,所以用MQTT连接,利用DF的物联网服务器EasyIOT,很方便把数据记录到服务器端,方便数据记录整理。要完成这个功能,首先需要连接WIFI网络,我们把这两部分程序分别自定义为两个程序模块,方便调用。服务连接成功,掌控板上的LED指示灯会亮绿色,同时掌控板上会有信息提示。

 

程序说明:

1、程序初始化,wifi连接,屏幕提示,掌控板0号绿灯亮;

2、MQTT连接成功,屏幕提示,掌控板1号绿灯亮;

3、按A键开始人脸识别签到,掌控板会依次显示签到人员名字,并计数;

4、当队员人数达到出场数量,即11个人,掌控板2号灯亮黄色,同时闸机打开放行。

 

微信图片_20221129111340.jpg

 

 

 

MQTT连接

 

easyiot.png

关于EasyIOT的介绍和配置,请移步这里参考https://makelog.dfrobot.com.cn/article-1183.html

我这里主要对人数要进行统计并上传。

iot.dfrobot.com.cn.png

WIFI连接

wifi.png

 

程序初始化

 

初始化.png

主程序

签到.png

。。。。。。。。。。

程序结束.png

程序运行后,在EasyIOT后台显示的数据结果:

查询结果.png

代码
/*!
 * MindPlus
 * mpython
 *
 */
#include <MPython.h>
#include <DFRobot_Iot.h>
#include <DFRobot_Servo.h>
#include <DFRobot_HuskyLens.h>

// 动态变量
volatile float mind_n_ZongRenShu;
// 函数声明
void DF_LianJieWIFI();
void DF_EasyIOT();
void onButtonAPressed();
// 静态常量
const String topics[5] = {"es4ArQd4R","","","",""};
// 创建对象
Servo             servo_P1;
DFRobot_HuskyLens huskylens;
DFRobot_Iot       myIot;


// 主程序开始
void setup() {
	mPython.begin();
	servo_P1.attach(P1);
	buttonA.setPressedCallback(onButtonAPressed);
	display.fillScreen(0);
	rgb.write(-1, 0x000000);
	DF_LianJieWIFI();
	DF_EasyIOT();
	servo_P1.angle(abs(90));
	huskylens.beginI2CUntilSuccess();
	huskylens.writeAlgorithm(ALGORITHM_FACE_RECOGNITION);
}
void loop() {

}

// 自定义函数
void DF_LianJieWIFI() {
	myIot.wifiConnect("301", "17341799959");
	display.setCursorLine(1);
	display.printLine("WIFI正在连接......");
	while (!myIot.wifiStatus()) {yield();}
	display.fillInLine(1, 0);
	display.setCursorLine(1);
	display.printLine("WIFI连接成功");
	display.setCursorLine(2);
	display.printLine((String("IP地址") + String(myIot.getWiFiLocalIP())));
	rgb.write(0, 0x00FF00);
}
void DF_EasyIOT() {
	myIot.init("iot.dfrobot.com.cn","1f2T9wd4R","","1f2o9Qd4Rz",topics,1883);
	myIot.connect();
	display.setCursorLine(3);
	display.printLine("MQTT正在连接......");
	while (!myIot.connected()) {yield();}
	display.fillInLine(3, 0);
	display.setCursorLine(3);
	display.printLine("MQTT连接成功");
	rgb.write(1, 0x00FF00);
	myIot.publish(topic_0, "hello");
}

// 事件回调函数
void onButtonAPressed() {
	display.fillScreen(0);
	mind_n_ZongRenShu = 0;
	while (!(mind_n_ZongRenShu==11)) {
		display.fillInLine(1, 0);
		display.setCursorLine(1);
		display.printLine((String("首发签到总人数:") + String(mind_n_ZongRenShu)));
		huskylens.request();
		if (huskylens.isAppear(1,HUSKYLENSResultBlock)) {
			display.fillInLine(2, 0);
			display.setCursorLine(2);
			display.printLine((String("姓名:") + String("内马尔")));
			buzz.freq(131, BEAT_1_4);
			mind_n_ZongRenShu += 1;
		}
		if (huskylens.isAppear(2,HUSKYLENSResultBlock)) {
			display.fillInLine(2, 0);
			display.setCursorLine(2);
			display.printLine((String("姓名:") + String("拉菲尼亚")));
			buzz.freq(131, BEAT_1_4);
			mind_n_ZongRenShu += 1;
		}
		if (huskylens.isAppear(3,HUSKYLENSResultBlock)) {
			display.fillInLine(2, 0);
			display.setCursorLine(2);
			display.printLine((String("姓名:") + String("维尼修斯")));
			buzz.freq(131, BEAT_1_4);
			mind_n_ZongRenShu += 1;
		}
		if (huskylens.isAppear(4,HUSKYLENSResultBlock)) {
			display.fillInLine(2, 0);
			display.setCursorLine(2);
			display.printLine((String("姓名:") + String("卡塞米罗")));
			buzz.freq(131, BEAT_1_4);
			mind_n_ZongRenShu += 1;
		}
		if (huskylens.isAppear(5,HUSKYLENSResultBlock)) {
			display.fillInLine(2, 0);
			display.setCursorLine(2);
			display.printLine((String("姓名:") + String("弗雷德")));
			buzz.freq(131, BEAT_1_4);
			mind_n_ZongRenShu += 1;
		}
		if (huskylens.isAppear(6,HUSKYLENSResultBlock)) {
			display.fillInLine(2, 0);
			display.setCursorLine(2);
			display.printLine((String("姓名:") + String("帕奎塔")));
			buzz.freq(131, BEAT_1_4);
			mind_n_ZongRenShu += 1;
		}
		if (huskylens.isAppear(7,HUSKYLENSResultBlock)) {
			display.fillInLine(2, 0);
			display.setCursorLine(2);
			display.printLine((String("姓名:") + String("席尔瓦")));
			buzz.freq(131, BEAT_1_4);
			mind_n_ZongRenShu += 1;
		}
		if (huskylens.isAppear(8,HUSKYLENSResultBlock)) {
			display.fillInLine(2, 0);
			display.setCursorLine(2);
			display.printLine((String("姓名:") + String("达尼洛")));
			buzz.freq(131, BEAT_1_4);
			mind_n_ZongRenShu += 1;
		}
		if (huskylens.isAppear(9,HUSKYLENSResultBlock)) {
			display.fillInLine(2, 0);
			display.setCursorLine(2);
			display.printLine((String("姓名:") + String("桑德罗")));
			buzz.freq(131, BEAT_1_4);
			mind_n_ZongRenShu += 1;
		}
		if (huskylens.isAppear(10,HUSKYLENSResultBlock)) {
			display.fillInLine(2, 0);
			display.setCursorLine(2);
			display.printLine((String("姓名:") + String("马基尼奥斯")));
			buzz.freq(131, BEAT_1_4);
			mind_n_ZongRenShu += 1;
		}
		if (huskylens.isAppear(14,HUSKYLENSResultBlock)) {
			display.fillInLine(2, 0);
			display.setCursorLine(2);
			display.printLine((String("姓名:") + String("阿利松")));
			buzz.freq(131, BEAT_1_4);
			mind_n_ZongRenShu += 1;
		}
		delay(2000);
		yield();
	}
	display.fillInLine(1, 0);
	display.setCursorLine(1);
	display.printLine((String("首发签到总人数:") + String(mind_n_ZongRenShu)));
	display.fillInLine(2, 0);
	buzz.freq(262, BEAT_1);
	display.setCursorLine(3);
	display.printLine("巴西队首发队员到齐");
	rgb.write(2, 0xFFFF00);
	servo_P1.angle(abs(0));
	myIot.publish(topic_0, "巴西队首发人数到齐");
}

评论

user-avatar
  • hacker_

    hacker_2023.05.19

    666

    0
    • 花生编程

      花生编程2023.01.19

      6666666666

      0
      • 花生编程

        花生编程2023.01.19

        赞!!!

        0
        • 花生编程

          花生编程2023.01.18

          厉害

          0
          • 三春牛-创客

            三春牛-创客2022.12.30

            66666666666

            0
            • 三春牛-创客

              三春牛-创客2022.12.30

              厉害了!

              0
              • 豆爸

                豆爸2022.11.26

                6666

                1
                • tiger_zc

                  tiger_zc2022.11.28

                  还在修改中,哈哈