此研究日志主要记录2017年至2018年山西大学第十六期本科生科研训练项目的全部进展,每篇日志都标有详细的日期,地点,参与人员,对每个阶段的项目进展有一定的认知和总结,对未来的项目进展作出规划,并及时与项目指导老师获得联系,对项目有整体的把控。
日志一:与指导老师交流,确定研究内容
时间 |
2017.12 |
地点 |
|
参与人员 |
|
计划安排 |
与指导老师交流自己的想法,确定本次本科生科研立项的研究内容 |
进度总结 |
现在是大二上学期的收尾阶段,到目前为止,就我而言我所掌握的专业技能还不足以支撑我立足于所学的专业领域,通过认真的思考,我想通过此次本科生科研训练项目这个宝贵的机会来锻炼自己,学习新的知识体系,搭建针对软硬件的框架。同时,我也尝试着带领一个小的团队,模拟以后公司中的合作意识,一起直面挑战,克服难关,提前体验其中的乐趣。为了明确本次活动的方向,我联系了本科生科研立项的指导老师王炜老师,通过王炜老师对我一系列问题的答疑解惑,并结合之前我大脑中的初步构想,我们共同探讨如何展开本次科研立项的活动,确定了科研立项课题的研究方向和研究内容:
|
与指导老师交流内容(未交流可不写) |
大胆放手去做,有不懂的地方要及时提出来,尽早解决。 |
备注(选填) |
与老师交流,确定方向 |
评论 |
|
日志二:开始选拔团队成员
时间 |
2018.2 |
地点 |
|
参与人员 |
队长李东立 |
计划安排 |
计划选择除软工专业以外其他专业在内总共3名队员,这是从两方面进行考虑。一方面是可以从不同的专业知识层面对此项目有不同的认识;另外一方面也是考虑到所做项目要结合软硬件方面的知识 |
进度总结 |
1、电子信息工程系可以对硬件的一些调试和模块的整体认知起到很关键的作用 2、工程管理系的队员对整个项目应用于社会和其他领域层面有宏观上的把握 3、最为关键的是大家有一致的想法和目标,能够为此而共同努力,共同进步 |
与指导老师交流内容(未交流可不写) |
|
备注(选填) |
在电子工程系借用实验室 |
评论 |
|
日志三:进行市场调研
时间 |
2018.3 |
地点 |
|
参与人员 |
|
计划安排 |
①管理员对学员进行指纹录取,之后进行指纹命名,排序以及分类; ②学员每日进行指纹打卡 ③一定时间后管理员将指纹机内的数据连接电脑进行数据导入 ④打开与指纹机配对的客户端进行审核查看,对学员未打卡的时间进行备注标记 ⑤导出Excel表至电脑指定位置进行绩效考核 ⑥根据表格进行后续操作 |
进度总结 |
从市场调研的情况来看,大多数指纹考勤都不具备实时性,是一个“事后诸葛亮”的操作风格,而且在导入数据,查看数据,导出数据等方面需要耗费管理员很大的时间和精力,这不符合我们所谓的高效性。虽然购买企业级考勤管理系统可以在一定程度上解决这些问题,但是这不仅需要花费很多金币,更不贴近老师和同学们之间的实际需求。其次,对于学生查看课程安排,缴费,课程回顾等方面,没有任何一家的培训机构可以实现这些功能,大多都靠人力来解决,我理解可能对于这些机构来说并没有必要或者说不需要花费更多的财力去解决这个问题,但是在我的角度看来,这就是缺乏兼容性。 所以我们更加坚定了要做一个具备实时性、高效性的教学综合管理系统,我们的目的就是面向老师与学生,做出一个集签到、缴费、学生管理、课程管理为一体的,针对市场特定人群的一款定制产品。 |
与指导老师交流内容(未交流可不写) |
|
备注(选填) |
在学校周边进行调研 |
评论 |
|
日志四:小组成员准备第十六期本科生科研训练题目
时间 |
2018.3 |
地点 |
|
参与人员 |
|
计划安排 |
学院准备开展第十六期本科生科研训练立项答辩会,于是我和我的团队开始着手准备:
|
进度总结 |
在准备阶段花费了很长时间,着重在此项目能实现的功能板块和项目实现难度上,起先准备使用硬件小型计算机(树莓派),但最后决定整个项目的实现基础回归到STM32板,这样的话就有很多资料可供查询。 |
与指导老师交流内容(未交流可不写) |
|
备注(选填) |
开始项目的准备阶段 |
评论 |
|
日志五:参加第十六期本科生科研训练项目立项答辩会
时间 |
2018.4 |
地点 |
|
参与人员 |
|
计划安排 |
在软件楼四楼进行了立项答辩,大概分为几个部分
|
进度总结 |
各位项目答辩教师给出很多中肯的建设性意见,其中李雪梅老师建议先对整个项目进行框架搭建;米晓萍老师建议要控制制作成本,物尽其用,对一些耗时、耗力的功能进行适当删减;吴勇老师建议可以先对网络部分留下接口,等主体功能制作完毕后进行进一步网络功能的延伸。
|
与指导老师交流内容(未交流可不写) |
|
备注(选填) |
向老师请教得到建议 |
评论 |
|
日志六:会后讨论并进行团队动员
时间 |
2018.5 |
地点 |
|
参与人员 |
|
计划安排 |
通过立项答辩会各位老师的指导意见,我们决定对所参与项目做一个初步的调整:
①指纹录入,信息采集,信息保存 ②指纹识别,并与数据库比对 ③将没有进行指纹打卡的同学的信息以短信的方式发送到指定的手机 上(需要提前输入手机号) ④利用蓝牙将硬件与软件进行连接(软硬件的通信也可以使用SIM900A模块内置通信协议) ⑤实现“串口调试”的界面显示 ⑥将之前对于PCB板的画线,焊接等步骤省略,直接采用现成带有数字键盘,内存,核心cpu的STM32板 ⑦在点阵屏上显示短信发送功能、显示输入的手机号码以及当前的时间等
|
进度总结 |
对成员进行了动员,详细的阐述了通过此项目我们可以学习到的知识和心中建立起的知识框架,并且对于我们即将面对的不懂得知识点进行划分,在规定时间内进行系统的学习,一起攻克难关,直面挑战 |
与指导老师交流内容(未交流可不写) |
|
备注(选填) |
着手项目计划,分配任务 |
评论 |
|
日志七:对整个项目进行需求分析
时间 |
2018.6 |
|
地点 |
|
|
参与人员 |
|
|
计划安排 |
需求分析大致如下:
1.引言
1.1编写的目的:明确软件开发过程中对于开发意图,开发目标,作用范围,以及对于软件和硬件的各方面需求,确保软件开发可以顺利进行。目标阅读用户为:项目经理 1.2 背景 a.基于指纹识别的考勤打卡管理系统 b.提出者: 开发者:李东立 用户:各付费用户 计算站或计算机网络:指纹打卡设备基于STM32开发板,指纹识别功能基于指纹识别模块,与手机APP之间通过SIM900A进行数据传输。 1.3 定义:STM32开发板:STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex®-M0,M0+,M3, M4和M7内核 指纹识别模块:UART-Fingerprint专业销售供应UART Fingerprint Reader... UART Fingerprint Reader是一款专用于二次开发集成应用的新型指纹开发模块,高速度、快识别、高稳定性。 SIM900A模块:ATK-SIM900A模块是 ALIENTEK推出的一款高性能工业级 GSM/GPRS模块 (开发板),接口丰富,功能完善,尤其适用于需要语言、短信、GPRS数据服务的各种领域。 1.4 参考资料 百度百科词条:项目开发计划 https://baike.baidu.com/item/%E8%BD%AF%E4%BB%B6%E9%A1%B9%E7%9B%AE%E8%AE%A1%E5%88%92/2087916?fr=aladdin 《软件工程导论》第六版,清华大学出版社,作者朱少民。 2.任务概述 2.1目标 ①. 开发意图:解决培训企业考勤的不规范统计,节约人力物力资源 ②. 应用目标:各付费企业 2.2用户的特点 列出本系统的最终用户的特点,充分说明操作人员、维护人员的教育水平和技术专长,以及本系统的预期使用频度。 操作人员:… 用户特点: … 教育水平: … 技术专长: … 维护人员:… 用户特点: … 教育水平: … 技术专长: … 2.3假定和约束 系统建议运行最少三年,经费暂时没有限制。涉及到的企业员工信息需要保密,不可泄漏。硬件基于STM32的开发板运行,需要企业提供员工指纹信息,身份信息。最晚投入使用时间为2018年6月1日。 3.需求规定 3.1对功能的规定 本指纹考勤系统能够完成企业日常考勤管理任务,并统计企业的考勤信息,向指定的信息接收方返回考勤信息。需要售后人员定期维护,软件更新。 输出包括:屏幕提示打卡信息,统计后的考勤信息 输入包括:指纹信息,员工姓名,员工工号。 3.2.1精度 说明对该系统的输入、输出数据精度的要求,可能包括传输过程中的精度。 输入数据:具体标准参照数据库设计… 输出数据:确定到考勤结果为,几人到,几人未到。。 3.2.2时间特性要求 即时性,响应速度要快。 3.2.3灵活性 1.可应对不同的数据库类型 2.手机端APP可对应不同的手机型号 3.4数据管理能力要求(针对软件系统) 数据管理:数据库内信息整理,保证其信息的规范性。 3.5故障处理要求 1.打卡设备故障:调试STM32代码,测试运行情况,处理故障。 2.手机端APP故障:调试通信,调试对应硬件设备的响应,处理故障。 3.6其他专门要求 1.保密要求:对数据库内的所有信息要保密,具体见信息保密协议。 2.可维护性:要稳定可维护,保证其最短运行时间。 3.易读性:保证手册等交付用户的文件,易读,可懂。 4.运行环境规定 4.1设备 a. 开发设备:STM32开发板,PC电脑 b. 硬件运行环境:STM32板 c. 软件运行环境:手机端各机型环境 4.2支持软件 软件支持:未知 4.3接口 硬件的串口调试:使用串口调试工具 软硬件通信:可以用蓝牙模块,也使用SIM900A模块内置通信协议 |
|
进度总结 |
|
|
与指导老师交流内容(未交流可不写) |
|
|
备注(选填) |
|
|
评论 |
|
|
日志八:对整个项目进行思维导图绘制
时间 |
2018.6 |
地点 |
|
参与人员 |
|
计划安排 |
通过思维导图的绘制,能够直观的在短时间内清晰的了解这个项目的整体框架,对功能实现的过程也有比较大概的了解 |
进度总结 |
|
与指导老师交流内容(未交流可不写) |
|
备注(选填) |
对整个项目进行规划 |
评论 |
|
日志九:确定所要购买的硬件模块
时间 |
2018.9.15 |
地点 |
|
参与人员 |
|
计划安排 |
通过浏览过各大硬件网站的质量和使用说明书,我确定了所需购买的硬件及其型号如下列表:
|
进度总结 |
上述的这些模块分别在一周内陆续到达,在确认过没有质量问题后,我开始仔细阅读模块使用及其功能说明书 |
与指导老师交流内容(未交流可不写) |
|
备注(选填) |
网上查阅相关资料 |
评论 |
|
日志十:调试指纹识别模块
时间 |
2018.9.18 |
地点 |
|
参与人员 |
|
计划安排 |
首先将STM32板上通电,然后开始以下操作:
①串口号选择电脑上接入设备时的串口号(我的电脑上当时显示的是COM4) ②当前通信波特频率选择默认的19200(可不修改) ③脱机模块波特率设置为115200(默认是19200,可以修改)
①选取“用户录入” ②选中“采集两次”、“特征值上传”、“ID号自增1” ③参数选择一栏编辑好用户编号,编号代表录入指纹的用户 ④点击“发送指令” ⑤指纹模块会将采集到的用户指纹特征值上传并保存为后缀为.fea的文件
①选取“1:1比对” ②参数选择一栏填写用户编号 ③点击“发送指令” ④如果接下来的指纹录入是之前的用户,那么就会比对成功,否则会比对失败 ⑤接下来选取“1:N比对”,即多次按手指与之前多次录入的指纹进行比对 6、“测试一栏”: ①选取“采集图像” ②点击“发送指令” ③在指纹模块上按手指 ④显示“添加成功”,并且将之前的指纹特征转换为图像数据 7、“测试一栏”: ①选中“取用户特征值”上传 ②参数选择一栏输入用户编号 ③点击“发送命令” ④显示“特征值上传成功”并将特征值存储到指纹模块的自带内存中 ⑤选中“采集指纹提取特征值上传”,点击“发送指令” ⑥选中“存储用户特征值”,“下传特征值选择”选一个指定位置将数据下载下来 ⑦选中“去脱机模块”,点击“发送指令”,然后会反馈当前版本号 8、“测试一栏”: ①选中“用户总数”,勾选“取容量”,点击“发送命令” ②会显示用户容量基数(即录入指纹数量) ③选中“取用户信息”,点击“发送命令”,显示当前模块所有用户及权限 |
进度总结 |
指纹识别模块的调试截图如下图所示: |
与指导老师交流内容(未交流可不写) |
|
备注(选填) |
|
评论 |
|
日志十一:调试SIM900A模块
时间 |
2018.9.22 |
地点 |
|
参与人员 |
|
计划安排 |
SIM900A模块所起到的作用是拨打电话、收发短信,在此项目中实现的功能是将短信发送到指定的手机号码上面,今天的任务就是调试这个收发模块:
|
进度总结 |
用AT指令进行测试:
电话短信GPRS操作 拨打电话:ATDxxx; 发短信:TEXT模式,英文
②设置字符格式为GSM 模式:AT+CSCS="GSM" ③设置短消息发送相关参数:AT+CSMP=17,167,0,240 ④设置手机号码:AT+CMGS="13646357106" ⑤收到[>]响应后再发送 ⑥写入内容:SIM300 ⑦发送16进制数值0x1A
TEXT模式,中英文混合 ①首先将短信息格式设为TEXT 模式 :AT+CMGF=1 ②设置字符格式为UCS2 模式:AT+CSCS="UCS2" ③设置短消息发送相关参数:AT+CSMP=17,167,0,24 ④ 设置手机号码编码:AT+CMGS="00310033003600340036003300350037003100300036" ⑤收到[>]响应后再发送 ⑥写入内容:0053 0049 004D 0033 0030 0030 4F60 597D (SIM300你好) ⑦发送16进制数值0x1A
GPRS连接: ①设置连接方式是IP地址:AT+CDNSORIP=0 ②设置需要协议头:AT+CIPHEAD=1 ③设置连接方式和IP地址:AT+CIPSTART="TCP","124.226.102.172","8080" ④发送数据AT+CIPSEND ⑤收到[>]响应后再发送 ⑥写入内容:SIM300你好 ⑦发送16进制数值0x1A
|
与指导老师交流内容(未交流可不写) |
|
备注(选填) |
调试设备 |
评论 |
|
日志十二:调试蓝牙模块
时间 |
2018.9.27 |
地点 |
|
参与人员 |
|
计划安排 |
①通过查验指纹模块的承受电压,将VCC和GND都接到5V电压上 ②蓝牙模块的TXD接到单片机上的RXD,蓝牙模块的RXD接到单片机的TXD(注意千万不要接反) ③BL和RST接口可以不接
|
进度总结 |
将蓝牙模块按照上述那样连接到STM32板上面,在证明模块没有问题的前提下(手机端安装后缀为.apk的蓝牙串口助手对蓝牙模块进行检测),根据资料手册进行进一步调试 |
与指导老师交流内容(未交流可不写) |
|
备注(选填) |
调试蓝牙模块 |
评论 |
|
日志十一:调试点阵屏模块
时间 |
2018.9.28 |
地点 |
|
参与人员 |
|
计划安排 |
计划初步实现点阵屏的亮暗调试,可以在点阵屏上显示初步的预设信息,然后将硬件部分面对客户群的菜单页成功显示 |
进度总结 |
经过与其他硬件模块的综合调试,LED点阵屏初步实现了菜单页的显示功能,首先可以在显示屏上看到实时的时间,主菜单有三个复数列,分别为“注册登记”、“删除用户”、“短信发送”;这里我将着重介绍“短信发送”这个部分,在这里我又设置了三个附属列,分别为“设置电话号码”、“发送短信”、“设置短信固定发送时间”。初步完成了当初的功能设想。 |
与指导老师交流内容(未交流可不写) |
|
备注(选填) |
|
评论 |
|
日志十三:用Qt写“串口调试工具”
时间 |
2018.10.23 |
地点 |
大东关校区 |
参与人员 |
|
计划安排 |
在调试这些相关硬件模块的过程中,我发现每一个模块都需要配套专门的串口调试工具来调试,虽说模块少可以采用这样的方式,但是考虑到后续功能的延展以及最终模块结合起来的相互配合调试,这些工具都很难发挥到想要达到的效果,于是我以Qt为开发平台,C++为开发语言,写了一个集“串口通信”、“串口调试”为一体的应用程序,实现对整个硬件的组合调试功能。同时还增加了“流水灯”、“蜂鸣器”、“短信收发”、“LCD12864”、“红外热释电”等外设控制以及时间显示、矩阵键盘等功能 |
进度总结 |
通过一周的反复琢磨与编写,初步完成了开始的设想,成功实现的预设功能,最后与硬件设备完成合体调试,这里将附上调试成功的截图 |
与指导老师交流内容(未交流可不写) |
|
备注(选填) |
|
评论 |
|
日志十四:编写硬件程序并将其烧录至单片机
时间 |
2018.10.24 |
地点 |
|
参与人员 |
|
计划安排 |
编写将所有模块与STM32组合起来的硬件程序,调试运行之后通过J-Link烧录制单片机,实现单机化运行 |
进度总结 |
以Keil V5为开发平台,C为开发语言,编写完成架构化的硬件测试程序,但在烧录过程中设备多次发生短路。期间进行了长时间总结问题原因,最终顺利解决。 |
与指导老师交流内容(未交流可不写) |
|
备注(选填) |
再次与老师交流得到了许多不曾有的体会 |
评论 |
|
日志十五:整体运行
时间 |
2018.11.7 |
地点 |
|
参与人员 |
|
计划安排 |
计划对整个硬件组进行组装调试,连通软件端做一个整体的测试 |
进度总结 |
所有硬件模块调试通过之后基于STM32开发板组装到一块,连通综合“串口调试”工具,进行整体通信。手机端安装.apk安装包,与蓝牙相连接。用户对设备进行多组指纹录取,然后就可以进入初步的教务管理:显示屏上通过矩阵键盘设置收发短信用到的手机号码,当进行指纹打卡设备进行验证审核之后,通过短信端回复特定指令,手机APP端特定虚拟按键,设备指定按键这三种方法对签到打卡的教务管理做出短信收发的基础功能。 |
与指导老师交流内容(未交流可不写) |
|
备注(选填) |
|
评论 |
|
日志十六:给整个项目起名字
时间 |
2018.11.12 |
地点 |
|
参与人员 |
|
计划安排 |
通过大半年的不懈努力,为我们的努力成果起一个名字 |
进度总结 |
也许这个项目在很多人眼里是一个简单的程序实现,但对我来说,此次项目不仅给了我对知识框架进行重新整理归纳的机会,对我来说更多的是一次挑战,一次尝试。在项目开始之前,我抱着一颗惶恐的心;在项目过程中,时而步履蹒跚,时而通宵达旦;在项目收尾阶段,我更多的是感激,感谢自己一年的坚持与努力,也感谢团队成员的一切帮助。最后,我给这个设备起了一个叫做“菜鸟一号”的名字,以此来激励自己不断进步,不断学习,不断努力。 |
与指导老师交流内容(未交流可不写) |
|
备注(选填) |
|
评论 |
|
日志十七:录制成功视频
时间 |
2018.11.24 |
地点 |
|
参与人员 |
|
计划安排 |
对整个设成功运行起来之后录制一个简短的功能演示视频 |
进度总结 |
视频录制很成功,之后的任务就是配音并进行剪辑 |
与指导老师交流内容(未交流可不写) |
|
备注(选填) |
|
评论 |
|
日志十八:文件整理
时间 |
2018.11.26 |
地点 |
|
参与人员 |
|
计划安排 |
对整个项目涉及到的文件进行分类整理 |
进度总结 |
通过几天的文档整理,我们将文档分为7大类:
|
与指导老师交流内容(未交流可不写) |
|
备注(选填) |
|
评论 |
|
日志十九:填写结题验收表
时间 |
2018.12.2 |
地点 |
|
参与人员 |
|
计划安排 |
对结题报告进行详细填写;对整个项目作出简单的介绍
|
进度总结 |
本项目软硬兼施,攻守兼备。硬件方面,“菜鸟一号”结合了具备存储数据功能的指纹识别模块、能够收发短信的SIM900A模块、有着传输功能的蓝牙模块以及可以显示动画的液晶点阵屏模块,一系列硬件模块基于STM32单片机合体为一个小型嵌入式装备;软件方面,“菜鸟一号”有着用Android、H5语言写成的简易界面,用java语言实现软硬件之间的网络交互。同时,由于网站上下载的串口调试工具或多或少有一些小闹心,尤其是它们不具备兼容性,大概意思就是针对不同的硬件模块得换用不同的串口调试工具,于是“菜鸟一号”以Qt为平台,C++为开发语言完成了集“串口通信”和“串口调试助手”为一体的,具备兼容性的运行程序,此程序(这里称之为“内功”)可以对“菜鸟一号”涉及到的单个硬件模块进行调试,也可以对其整体进行统一调试,十分便捷高效。“菜鸟一号”最终实现其“自我价值”的步骤大致分为以下几个阶段:
至此,平凡的“菜鸟一号”平凡的诞生了。 |
与指导老师交流内容(未交流可不写) |
|
备注(选填) |
|
评论 |
|
日志二十:与指导老师会面
时间 |
2018.12.15 |
地点 |
|
参与人员 |
|
计划安排 |
项目接近尾声,再次请教指导老师对项目做出总结 |
进度总结 |
|
与指导老师交流内容(未交流可不写) |
探讨整个项目中的过程,查漏补缺。总结自己遇到的困难及解决翻案。 |
备注(选填) |
再次与老师交流得到了许多不曾有的体会 |
评论 |
|
日志二十一:心得体会
时间 |
2018.12.20 |
地点 |
|
参与人员 |
|
计划安排 |
对整个项目进行一个大体的总结和归纳 |
进度总结 |
在此次科研训练项目中,通过对硬件的调试让我学会了很多关于电子以及硬件的知识,从而有了一定的知识储备,除此之外,我对STM32开发板产生了浓厚的学习兴趣,如果有机会我将重新对整个电路构造做进一步的研究,尝试自己对PCB板进行画线。同时,Android开发是我以前从未接触过的知识领域,但是通过做手机端APP让我对此部分知识有了系统化学习,QT平台上的开发上让我多了一些项目经验,也再一次的对C++语言进行了全面的复习。也许这个项目在很多人眼里是一个简单的程序实现,但对我来说,此次项目不仅给了我对知识框架进行重新整理归纳的机会,对我来说更多的是一次挑战,一次尝试。在项目开始之前,我抱着一颗惶恐的心;在项目过程中,时而步履蹒跚,时而通宵达旦;在项目收尾阶段,我更多的是感激,感谢自己一年的坚持与努力,也感谢团队成员的一切帮助。最后,我给这个设备起了一个叫做“菜鸟一号”的名字,以此来激励自己不断进步,不断学习,不断努力。
|
与指导老师交流内容(未交流可不写) |
|
备注(选填) |
进行项目最后的总结 |
评论 |
|