【Hello,电赛】2020电赛从备战到回顾(F题)

2023-05-16

#瞎扯几句

2020应该让所有人难忘的一年。赋闲大半年,开学两行泪。博主也是突然从大二被迫成了大三老油条。大一的时候身边就有同学开始展露科创竞赛方面的头角,后来成了学院有名的带佬。咱当时觉得好玩也是羡慕,奈何学生工作和课程压力大,一直没有付出实际行动。
之前虽然参加过电赛校赛,但是比较水基本上纯硬件。但是接触过单片机没有项目经验,契机出现在大二下学期,就那个大半年在家的超长学期。刚好专业安排课程,之前接触过所以加上课程实验要求在很多地方磨来磨去花了很多功夫纠错,也算是踩了很多坑最后加深了理解。自己尝试做了一个小车,没有花太多时间,然后感觉自己行了。就开始往STM32过渡,有意电赛。

关于当时的很多细节已经没有很多印象,这篇文章是根据残缺的记忆和当时的记录写下来的,更多的是感受分享,给想参加电赛的同学一点经验,也是终于有空遂了这个愿(电赛结束就开始疯狂补落下的课,也懒)。

前期准备

开学以后距离开赛还有一个月的时候,当时也出了清单,老师组织开了一次会基本上催了一下就紧锣密鼓开始了。很粗糙的分工了,我和队友A负责代码,队友B负责报告和打杂。清单一出最大的感觉就是控制类可能会考小车+测温,心电+测温,摄像头+小车,也没什么经验就开始盲目的准备。
假期之前做的小项目,我和队友A都做了,我用的51他用的STM32,他32用的比我熟练些。我直到开学也只是搭建好了32的环境有了一定了解。出来清单以后他开始准备摄像头、云台的控制,我开始学习stm32,开学以后基本上课下时间都泡在实验室了,基本上花了一周时间熟悉了各个模块,自己做小车练手。材料是三个人分摊的,每人买了一部分。云台假期队友A玩过他自己买了,心电模块果断弃了。
在这里插入图片描述

出题

我记得好像是当天早上八点出题,结果前天晚上江苏那边好像泄题了。队友大喜过望,看到C题小车和G题云台大喜过望,感觉好几个都能做。当晚还没定题,然后我心大的早上睡到了八点。后来分析以后,说服队友选了F题。当时冲的是F题温度部分分值高,容易拿,而且红外测温模块简单跑了下例程感觉问题不大,队友A当时对Openmv有了解,后面部分感觉也能下手。
在这里插入图片描述
比赛过程中还是比较顺利地。队友A直接负责后面人脸识别部分、Openmv和stm32的通信。
第一天我基本上就写了个框架,然后把LCD一级界面、按键和测温部分整合了一下。
第二天开始改整理的工程文件,LCD加了二级界面,把测温和识别、识别口罩等几个模式的二级界面写完。然后发现测温模块出BUG,当时红外模块跑商家源码测温基本就停留在34附近误差挺大了,找别的组要了别的店铺的例程发现还需要加修正函数(好像是指尖或手表面温度到人体温度还要经过修正,后来我们在测温界面索性加了物体表面温度和修正后的温度)。MLX90614资料也挺少的,后来找到一个比较靠谱的厂家提供的这个芯片的额温转体温参考算法。(元件买对店铺也挺关键的,给的例程出问题就很难受了)
厂家给的算法贴下面:

https://www.sekorm.com/news/53997296.html

第三天基本都在根据那个算法调参数找最佳的情况,然后队友A的人脸识别也差不多成型了。把他那部分和我的整合了一下再整体调速。(为了控制人脸识别的准确性,想加个距离检测把距离人脸的位置控制在我们识别准确度最高的范围内,一开始加的超声波模块后来它的中断导致按键扫描很不稳定就ban掉了,买了一个小贵的激光测距模块,资源少代码多移植起来太费劲后来索性放弃。)第三天其实整体差不多已经出来了,就是测温和人脸识别的准确性有待调整,我和队友B就开始着手搭硬件。(一方面图省钱又感觉没必要买三脚架,那天我和队友就在实验楼瞎溜达,捡了不少木板木棒啥的,就有了最后的鬼样子,我们的结构挺独特的,当时在厕所锯木头也闹了挺大动静)
Tip:LCD下面那一坨黑的复评时候专家组还问了,其实就是自己画的最小系统板下面塞了电源和开关乱七八糟的用热熔胶封死了。
在这里插入图片描述
其实第三天基本上就做出来了,只是很多误差不尽如人意,当时在这个题对比其他组进度算快了。后面就是反复调试测温部分和人脸识别如何提高识别准确度。

部分代码

完整代码可以有需要的可以留下邮箱,当时和队友代码整合以后两边运行边改,时间一长也忘记最后那个是最终烧录的工程,不保证有效,只有一定参考意义。(而且这个是准备期间小车、云台、PID集合的项目,我们在它的基础上改的)

#include "stm32f10x.h"
#include "delay.h"
#include  "sys.h"
#include "led.h"
#include "beep.h"
#include "key.h"
#include "pwm.h"
#include "exit_x.h"
#include "lcd_init.h"
#include "lcd.h"
#include "pic.h"
#include "timer.h"
#include "USART1.h"
#include "mlx90614.h"
#include "smbus.h"
#include "duoji.h"
#include "display.h"

uint8_t brr[20];
uint8_t arr[10];
uint8_t Rxover=0;
//unsigned char Temp[10];

sMlx90614Typ sMlx;
u8  mode=0;
u8 matched,state;
u8 stranger=1;



/*     
-----------蜂鸣器-----------
       PB11 -> OUT
-----------按键-----------
       PB10 PB12 PB13 
---------------------------
*/
 int main(void)
 {		
		u8 i=5;
		u8 ls_mode;
		float	fTbody;
		delay_init();
	 	LED_Init();
	 	KEY_Init();
	  Exit_Init();   //外部中断引脚与LCD冲突?
		LCD_Init();		//LCD初始化
		BEEP_Init();
		vMLX90614_Init(&sMlx,MLX90614_SMBUS_ADDR);
		vSMBus_Init();//初始化
		SysTick_CLKSourceConfig(1000);
	  USART1_Init(115200);
		LCD_Fill(0,0,LCD_W,LCD_H,BLACK);	 
		NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); 	 //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
//		PWM4_Init(50);	 //50hz   PWM输出
//	 	Time3_Init(1000,50,50);//1000hz  云台PWM
//		Timer2_Init(50);  //中断
	 	while(1)
	{
//		
//			/* 获取环境温度 */
//			ucMLX90614_GetTA(&sMlx) ;
//			/* 获取人体额头温度 */
//			ucMLX90614_GetTO1(&sMlx) ;
//			delay_ms(1000) ;
//			/* 计算补偿后的人体温度 */
//			fTbody = ucMLX90614_TempComp(&sMlx) ;
//		
//		LCD_ShowString(0,0,"Temp1:",WHITE,BLACK,16,0);
//		LCD_ShowFloatNum1(72,0,sMlx.Ta,4,WHITE,BLACK,16);
//		LCD_ShowString(0,24,"Temp2:",WHITE,BLACK,16,0);
//		LCD_ShowFloatNum1(72,24,sMlx.To1,4,WHITE,BLACK,16);
//		LCD_ShowString(0,48,"Temp3:",WHITE,BLACK,16,0);
//		LCD_ShowFloatNum1(72,48,fTbody,4,WHITE,BLACK,16);		
		
//		mode = KEY_Scan();	
//		if(ls_mode != mode)
//		{
//			LCD_Fill(0,0,LCD_W,LCD_H,BLACK); //模式变化时清屏
//			ls_mode = mode;
//		}
//		LCD_Fill(72,128,32,48,BLACK);	
//		if(ls_mode == 0) 
//			i = 0;
//		switch(ls_mode)
//		{
//			case 0:
//							Dispaly(); break;//主界面
//			case 1: 
//							Tem_Dispaly(); 
//							break;
//			case 2:	
//							Face_Rec();								//队内识别
//							Face_Dispaly(); 
//							break;
//			case 3:														//陌生人信息录入
//							Learn_dispaly();
//							Learn_extract();
//							break;			
							if(i==0) { LED0 = !LED0; i++;} 
//						
			case 4: break;														//口罩识别
//		}
	}	 
 }

 

 
 

心得

整体下来其实做了不知四天三夜,漫长又充满动力总感觉时间不够的时光,大家一块儿为了一个目标做到最好。可圈可点的是几乎没怎么熬夜,中间也出了各种问题:队友意外把最宝贵的Openmv烧了、降压模块和最小系统板也糊了好几块等等。
单就这个题目来看,想做出来并不难。但是要最好确实有难度,而且其实做得好的话是可以做成产品拿来用的,而不是和我们一样赶进度搭个木头架子。(身边有A组他们有的集成以后还加外壳做成可佩戴加了一堆花里胡哨就很强,同题的有的加了语音播报和三脚架长焦镜头确实砸了不少钱)
值得吐槽的是这个题卷的很厉害,基本上每个队都把要求做完了,发挥部分其实很少有很独到的点子(除了那个学长把人脸识别加在了镜头上做成了冒牌谷歌眼镜),大家基本上都差不多,就看谁更稳。实际上一开始感觉最好拿到手的测温部分也是好多队伍翻车的原因,线下测试前天整体完成一遍才发现我们的测温模块好像有问题,借了弃赛的同学的测温模块。评测时候虽然在自己学校也是着实紧张了挺长时间。
今年的复评环节也挺迷的,山东赛区很混乱,同题的从上午八点等到下午催必须全部结束一块儿上去,评委要求我们测了测温度,简单聊了聊。别的组还问了通信协议,A组的还要求重新演示,C组则就问了问最大爬坡角度就结束了。据说线下测试别的学校都放水了基本部分要求低,发挥部分给的高,最后整个学校出了一组一等奖,自己侥幸拿了二等没有空手而归。(还是感觉今年F题偶然性太大了,基本要求全部满分也拿不了省一)
不过学到了东西也有所收获也算心满意足了。
在这里插入图片描述
墙裂建议有想法的同学差不多掌握完常用模块以后通过项目练手,积累经验。

祝大家都能取得好成绩,共勉!

留言回复可能比较慢,比较着急的可以自行下载。

2020电赛F题程序

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

【Hello,电赛】2020电赛从备战到回顾(F题) 的相关文章

  • 从STM32F407到AT32F407(一)

    雅特力公司的MCU有着性能超群 xff0c 价格优越的巨大优势 xff0c 缺点是相关资料少一些 xff0c 我们可以充分利用ST的现有资源来开发它 我用雅特力的STM32F437开发板 xff0c 使用原子 stm32f407的开发板自带
  • vue-java分离

    import com google gson Gson import io renren common utils HttpContextUtils import io renren common utils R import org ap
  • java学习

    莫求全 有效努力 定时出结果 架构设计DDD 微服务介绍 https www kancloud cn qingshou aaa1 2667225 https www cnblogs com chencan p 16042197 html h
  • CentOS6.5添加虚拟IP(VIP)

    使用keepalived 实现Nginx高可用时 需要用到这项技术 虚拟ip在高可用中的作用后续再说 今天看看怎么给服务器配置虚拟IP xff0c 其实也就是多分配个IP地址 首先查看一下现有网卡的IP地址 xff0c 用root特权运行下
  • 微服务Spring Cloud例子

    Spring Cloud简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具 xff0c 为开发者提供了在分布式系统 xff08 配置管理 xff0c 服务发现 xff0c 熔断 xff0c 路由 xff0c
  • 美邦威集成呼吸墙饰

    http www mbwqs cn 湖北光大新型环保装饰材料有限公司 美邦威集成呼吸墙饰 生产销售中心 xff1a 湖北汉川经济开发区光大工业园 光大材料 210590 上海股交所挂牌
  • activemq--MASTER SLAVE+BROKER CLUSTER 实践(二)

    鱼与熊掌兼得法 完美解决方案 我们知道 xff1a master slave模式下 xff0c 消息会被逐个复制而cluster模式下 xff0c 请求会被自动派发 那么可不可以把两者集成起来呢 xff1f 答案是有的 xff0c 网上所谓
  • Dubbo超时和重连机制

    dubbo启动时默认有重试机制和超时机制 超时机制的规则是如果在一定的时间内 xff0c provider没有返回 xff0c 则认为本次调用失败 xff0c 重试机制在出现调用失败时 xff0c 会再次调用 如果在配置的调用次数内都失败
  • Sharding-JDBC简介

    一般 xff0c 线上系统的业务量不是很大 xff0c 比如说单库的数据量在百万级别以下 xff0c 那么MySQL的单库即可完成任何增 删 改 查的业务操作 随着业务的发展 xff0c 单个DB中保存的数据量 xff08 用户 订单 计费
  • 1024

    听说今天发帖能有1024勋章 xff1f
  • 神奇!明明是 socket,被我玩成了 http!

    颓废青年 xff0c 快出来挨打 xff01 点击上方 Java极客技术 xff0c 选择 设为星标 后台回复 java xff0c 获取Java知识体系 面试必看资料 资料会持续更新 xff0c 已更新第四次 xff01 文章精品专栏 记
  • python画图程序

    usr bin python coding utf 8 import wx import wx lib buttons as buttons import wx adv as adv import wx lib colourselect a
  • 升级到tensorflow2.0,我整个人都不好了

    版本升级到 tensorflow 2 0 的悲惨经历 没事别升级 Tensorflow 2 0发布已经有一段时间了 xff0c 各种基于新API的教程看上去的确简单易用 xff0c 一个简单的mnist手写识别只需要下面不到20行代码就OK
  • 修改conda环境和缓存默认路径

    默认情况下 xff0c conda 创建的新环境 以及过往安装的模块缓存都存储在用户目录下 xff0c 这一点不会在 conda xff08 user specific xff09 配置文件 HOME condarc 中体现出来 xff0c
  • 融合人体姿态估计和目标检测的学生课堂行为识别

    融合人体姿态估计和目标检测的学生课堂行为识别 参考网 摘要 xff1a 在課堂教学中 xff0c 人工智能技术可以帮助实现学生行为分析自动化 xff0c 让教师能够高效且直观地掌握学生学习行为投入的情况 xff0c 为后续优化教学设计与实施
  • Python实例详解pdfplumber读取PDF写入Excel

    一 Python操作PDF 13大库对比 PDF xff08 Portable Document Format xff09 是一种便携文档格式 xff0c 便于跨操作系统传播文档 PDF文档遵循标准格式 xff0c 因此存在很多可以操作PD
  • 如何使用ChatGPT API训练自定义知识库AI聊天机器人

    原文 xff1a 如何使用ChatGPT API训练自定义知识库AI聊天机器人 闪电博 在我们之前的文章中 xff0c 我们演示了如何用ChatGPT API建立一个AI聊天机器人 xff0c 并指定一个角色来进行个性化处理 但如果你想在自
  • 哈工大团队开源医学智能问诊大模型 | 华佗: 基于中文医学知识的LLaMa指令微调模型

    原文 xff1a CVHub 门头沟学院AI视觉实验室御用公众号 学术 科研 就业 185篇原创内容 公众号 Title HuaTuo Tuning LLaMA Model with Chinese Medical Knowledge PD
  • 开源数字人Fay

    原文 xff1a 别再因AI焦虑 xff0c 这波年轻人已经用 中国版ChatGPT 创业成功了 数字人 AI 创业 新浪新闻 开源 xff1a GitHub TheRamU Fay Fay是一个完整的开源项目 xff0c 包含Fay控制器
  • 推荐 3 个令你惊艳的 GitHub 项目

    原文 xff1a 推荐 3 个令你惊艳的 GitHub 项目 昨日 GitHub Trending 上榜的开源项目 xff0c 基于 AI 技术提高你的生产力 借助 AI 你能搭建自己的数字人 搭建自己的法律助手 文档分析助手 本期推荐开源

随机推荐

  • AI 数字人制作(方案一):输入一张图片和一段文字即可生成数字人

    方案一 xff1a 原文 xff1a AI 数字人制作 xff08 方案一 xff09 哔哩哔哩 bilibili AI 文字和图片生成数字人 输入一张图片和一段文字即可生成数字人 用三个开源项目整合成可以商用的数字人项目 文本生成语音开源
  • 大量数据情况下单线程插入和多线程insert数据库的性能测试

    大量数据情况下单线程插入和多线程insert数据库的性能测试 之前一直没有遇到过大批量数据入库的场景 xff0c 所以一直没有思考过在大量数据的情况下单线程插入和多线程插入的性能情况 今天在看一个项目源代码的时候发现使用了多线程insert
  • 查看tensorflow 安装目录

    使用命令 xff1a pip show f tensorflow 图和张量源码 xff1a C Program Files Anaconda3 Lib site packages tensorflow python framework op
  • FP-growth算法,fpgrowth算法详解

    FP growth算法 xff0c fpgrowth算法详解 使用FP growth算法来高效发现频繁项集 前言 你用过搜索引擎挥发现这样一个功能 xff1a 输入一个单词或者单词的一部分 xff0c 搜索引擎酒会自动补全查询词项 xff0
  • 如何将一个矩阵化为行阶梯形矩阵

    2016 03 29 尾巴 线性代数 有同学反映上一课过于冷冰冰 xff0c 都是一些不带证明的公式 如果线性代数所有公式都要证明的话 xff0c 线性代数的难度会上好几个量级 xff0c 有的公式的证明是特别特别难的 还有一个 xff0c
  • Activity启动模式与任务栈(Task)全面深入记录(上)

    转载请注明出处 xff08 谢谢 xff09 xff1a http blog csdn net javazejian article details 52071885 任务栈简单入门 最近又把两本进阶书看了一遍 xff0c 但总感觉好记性不
  • VSCode自定义代码片段3——url大全

    url大全 url 39 3 如何自定义用户代码片段 xff1a VSCode 61 左下角设置 61 用户代码片段 61 新建全局代码片段文件 61 自定义片段名称 61 编辑用户片段 61 ctrl 43 S 保存 url大全 34 P
  • mac中如何使用vsode愉快地运行C、C++程序

    闲来无事 xff0c 想在mac中写写C C 43 43 程序 xff0c 打开应用商店 xff0c 准备下个xcode玩玩 xff0c 结果小30G的空间占用直接劝退 因为一直使用vscode开发 xff0c 便萌生了使用插件来运行C C
  • CMake入门3之 静态链接库和动态链接库

    目录 目标 xff1a 环境 创建静态和动态链接库 文件准备 构建 安装静态链接库 使用静态链接库和动态库 使用动态库 使用静态库 目标 xff1a 构建静态链接库和动态链接库 xff0c 安装到系统 xff0c 写一个程序使用安装的静态链
  • 行人检测数据集

    MIT数据库 该数据库为较早公开的行人数据库 xff0c 共924张行人图片 xff08 ppm格式 xff0c 宽高为64 128 xff09 xff0c 肩到脚的距离约80象素 该数据库只含正面和背面两个视角 xff0c 无负样本 xf
  • opencv中solvePnPRansac函数求解相机位姿

    PnP xff08 Perspective n Points xff09 xff1a 2D 3D xff0c 求解相机位姿 PnP xff08 Perspective n Points xff09 就是你有n个点的3D位置和它们的投影 xf
  • 如何查看ubuntu下显卡驱动是否已经成功安装

    首先得安装 mesa utils xff0c 在终端输入命令 xff1a sudo apt get install mesa utils 然后再运行命令 xff1a glxinfo grep rendering 如果结果是 yes xff0
  • 深度学习笔记1:end-to-end、anchor box解释、人体检测代码

    SSD xff08 SSD Single Shot MultiBox Detector xff09 是采用单个深度神经网络模型实现目标检测和识别的方法 该方法是综合了Faster R CNN的anchor box和YOLO单个神经网络检测思
  • YOLO-darknet-on-Jetson-TX2

    YOLO darknet on Jetson TX2 https github com Alro10 YOLO darknet on Jetson TX2 software https blog csdn net cherry dr art
  • #error This file requires compiler and library support for the ISO C++ 2011错误解决办法

    CmakeLists txt 中添如下代码就OK include CheckCXXCompilerFlag CHECK CXX COMPILER FLAG 34 std 61 c 43 43 11 34 COMPILER SUPPORTS
  • docker pull 下来的镜像文件存放的位置

    参考文献 xff1a http www tuicool com articles bENrUf 1 存放在 var lib docker 2 repositories aufs 文件 xff1a 34 Repositories 34 34
  • docker主要命令整理

    docker docker info docker version docker images 展示镜像 docker ps 展示容器 docker ps a 会展示出所有正在运行的和已经停止的容器 docker rmi 镜像ID 删除镜像
  • python xml读写

    1 xml例子 lt xml version 61 34 1 0 34 encoding 61 34 UTF 8 34 gt lt annotation gt lt folder gt VOC2007 lt folder gt lt fil
  • caffe2编译问题:avx、avx2

    caffe2编译问题 xff1a 9898 init intrinsics check cc 54 CPU feature avx is present on your machine but the Caffe2 binary is no
  • 【Hello,电赛】2020电赛从备战到回顾(F题)

    瞎扯几句 2020应该让所有人难忘的一年 赋闲大半年 xff0c 开学两行泪 博主也是突然从大二被迫成了大三老油条 大一的时候身边就有同学开始展露科创竞赛方面的头角 xff0c 后来成了学院有名的带佬 咱当时觉得好玩也是羡慕 xff0c 奈