基于物联网技术的考勤系统设计与实现

2018-07-12 10:42潘洁赵翠芹梁雪闫列友蒋联周
电脑知识与技术 2018年12期
关键词:物联网技术

潘洁 赵翠芹 梁雪 闫列友 蒋联周

摘要:在物联网的春风沐浴下,从低成本和低功耗出发,利用STM32芯片搭建一个智能打卡的考勤系统,帮助人们在惜时如金的生活中快速解决上班、上课等的考勤问题。

关键词:物联网技术;嵌入式技术;考勤系统

中图分类号:TP3 文献标识码:A 文章编号:1009-3044(2018)12-0009-02

1 引言

物联网工程专业属于典型的跨学科、跨平台的交融学科,涉及软件和硬件方面的综合应用知识。物联网就是实现让“物开口说话”,利用感知识别设备将物理世界的量转换为计算机能处理的信息量,然后通过无线移动网络进行传输,与互联网结合形成的一个“万物为一家,一网联天下”的巨型网络。物联网的核心技术之一就是嵌入式技术,尤其是ARM架构的嵌入式技术。嵌入式是一个狼烟四起的一个市场,各个企业之间的格局也在发生着巨大变化,是行业间的核心竞争力。嵌入式技术是智能终端的风向标,是科技圈谈论的焦点,也是主流市场。嵌入式ARM技术已经“破茧成蝶”,并进军了智能设备市场,它借助智能设备平台,将嵌入式技术应用到99%的智能终端中,这些智能终端包括智能手机、Android设备、阅读器、平板电脑iPhone和iPad等,目前,已经有51 亿枚 ARM 芯片用于智能终端。

随着科技的进步,尤其是像物联网这样的专业,需要学习的技术实在是太多,每一个技术写出来就是卷帙浩繁的书籍,物联网技术涉及软件知识和硬件知识,属于雨露均沾的技术。硬件方面需要掌握51单片机系列、嵌入式STM32[1]和A8网关系统的硬件PCB电路设计和原理图;软件方面需要从语言、操作系统、调试工具等方面的各种精通。这些技术有多种,除了看是否是受到开发者的青睐,还要考虑是否是业界所需。教师上课的50分钟就显得弥足珍贵。随着高校学生扩招的趋势,百人上课已经是司空见惯不足为奇,利用上课时间点名,必然会带来耗时问题。迟到和逃课现象在每个学校都会发生,迟到会影响课堂秩序[2]。对于逃课,老师又不可能每堂课去点名,即使偶尔的点名也会出现关系好的同学帮答到的现象。这就形成了课时少,讲解内容多的矛盾。为了解决这一矛盾,设计了一个基于物联网技术的考勤系统。CPU采用的是ARM Cortex-M7的STM32F767芯片,外设主要是DCMI接口的OV5640摄像头、FSMC接口的TFT液晶屏和人体传感器。STM32F767芯片的开发环境是在Keil uVision5,上位机的开发环境是Visual Studio,后台数据库采用的是SQL Server。手机端APP产生学生学号的二维码,STM32F767外接人体传感器,当传感器检测到有人接近时,打开OV5640摄像头,扫描手机端的二维码。STM32F767主控芯片识别二维码,通过DMA方式把识别的二维码数据发送到TFT液晶屏显示出来,并通过USART串口发送到上位机数据库里,上位机收到数据后与后台数据库进行校对,最后通过语音播报的方式播报打卡信息。

2 系统总的功能模块

考勤系统的总模块包括硬件模块和软件模块,如图1所示。硬件模块主要是STM32F767主控制器、OV5640摄像头、TFT液晶显示屏、人体传感器和串口;软件模块包括前台和后台数据库,后台数据库主要用来保存考勤学生信息相关信息,前台主要是将考勤的信息通过用户界面展示给任课教师,主要是实现串口监测、串口数据获取、考勤信息显示和语言播报。

3 硬件模块

硬件模块如图1所示。是基于RAM Cortex-M7架构进行嵌入式系统设计与编写实现的。硬件资源主要有ATK-OV5640 摄像头模块、 TFT液晶屏模块(RGB 屏、MCU 屏均可)、 LED小灯(DS0接PB1,DS1接PB2)、 按键(KEY0\KEY1\KEY2\KEY_UP)、 IO 扩展芯片 PCF8574、 蜂鸣器(连接在IO扩展芯片PCF8574上) 和外部SDRAM,如图2所示。

4 软件设计

软件设计主要包括硬件驱动开发、后台数据库操作和上位机用户软件设计。

4.1 硬件驱动开发

硬件驱动开发的环境是keil uvision5,主要是对硬件资源的驱动。主要功能是对开启摄像头,并将摄像头传回的二维码进行解码,解码函数的原型为void qr_decode(u16 imagewidth,u16 *imagebuf),两个参数是识别器的宽度和RGB图像帧数据;摄像头数据DMA接收完成中断回调函数void qr_dcmi_rx_callback(void);图像显示函数为void qr_show_image(u16 xoff,u16 yoff,u16 width,u16 height,u16 *imagebuf),其中参数为图像显示坐标以及图像的宽高以及RGB图像数据缓冲区;人体传感器处理函数void mansensor();图像识函数atk_qr_decode(qr_img_width,qr_img_width,bmp,bartype, result),其中參数分别为要识别图像的宽高以及要识别的条码类型、内存和识别结果;初始化识别库函数u8 atk_qr_init(void);识别结束函数void atk_qr_destroy(void)等。数据传输协议主要是通过IIC协议和SCCB协议进行传输。

4.2 后台数据库

本系统可以供上课考勤使用,数据库使用SQL Server。具有管理学生考勤信息情况功能。数据库表主要包括学生信息表和学生考勤表。学生信息表用来存储学生的详细信息,表结构如表1所示。学生考勤表用来存储考勤学生相应信息,表结构如表2所示。

4.3 上位机前台开发

该平台建立在Visual Studio 2017软件环境中,开发的语言是结合了c++和java优势的C#语言。软件前台使用C#语言。上位机软件主要实现的功能是串口检测、串口数据的获取、考勤信息的显示和语音播报。开发版供电时,上位机就会检测到相应的串口,然后打开串口通道;当开发版识别到二维码数据后,通过串口发送至上位机并显示出来;获取到串口数据后,将数据与后台的数据进行匹配,当匹配成功,则会显示出来,同时进行语音播报。

软件中提供了SerialPort类,该类实现了串口资源操作相关功能。命名空间为System.IO.Ports。程序代码编写过程中,首先用SerialPort()构造函数初始化SerialPort 类的新实例,接着SerialPort.GetPortNames()函数获取当前计算机串行端口名称数组,并配置串口参数。receiveComDataRun()实现串口接收解析,用while循环等待,确保是从一个数据帧的开头开始接收。定义一个字符数组,用来存放串口接发送过来的数据。为了避免重复考勤,需要过滤掉重复显示。

串口接收后的数据需要存入到后台数据库,需要加入System.Data.SqlClient、 System.Data.Sql和System.Data.Odbc这三个命名空间。建立一个数据库连接对象SqlConnection,告诉它做什么,走什么路径。创建数据库集ds,调用Fill方法,先去数据库查找数据,并将打卡信息存入到数据库中。对打卡成功的同学需要进行语音播报,调用SpeechLib库,创建一个SpeechVoiceSpeakFlags()方法;创建了一个语音实例SpVoice(),可以对朗读速度和音量进行调节。

5 系统实现

学生手机上安装一个二维码生成器的APP,能输入学生学号就能产生相应的二维码;开启开发板和上位机。当人体传感器检测到有人时,STM32开发板会开启摄像头;将二维码对准摄像头进行扫描,扫描成功后蜂鸣器会发出“嘀”的一声;芯片获取到二维码图像后会对其进行处理,即图像预处理,包括图像校正、二值化、去噪、找三个寻像图形、根据寻像图形中心确定旋转角度再取样网格,采样数据,最后将图像转化为数据矩阵再进行解码;将解码后的结果显示在LCD液晶屏左下方中,同时通过串口将数据传给上位机;上位机将受到的数据与后台数据库进行校对,最终将结果显示出来并且以语音形式播报出来;最后将以及考勤的学生的学号和打卡时间存储在后台数据库的数据表中。其结果如图3所示。

6 总结

利用低成本低功耗的芯片搭建具有考勤功能的模块。上课之前,学生只要扫扫考勤机上的二维码,即可实现点名。解决上课点名、上班打卡的費时问题。手机打卡可有效避免此问题,因为经过服务器绑定后,每个人的手机就代表自己,如果你要想让别人帮你打卡,那么你就必须将手机放在同学那里,一般没人会这样做,所以不会发生代打卡,人情答到现象。所以,手机打卡会在一定程度上起到促进教学质量的效果!

参考文献:

[1] 张洋,刘军,严汉字,等.原子教你玩STM32(库函数版)[M].北京:北京航空航天大学出版社,2016.

[2] 丁同.基于ARM的射频识别考勤系统的研究与设计[D].安徽理工大学,2017.

猜你喜欢
物联网技术
物联网技术在智能车辆管理中的应用探究
基于Arduino的物联网技术下校园路灯控制的实现与应用