版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于ZigBee技术的无线考勤系统设计 070210123基于ZigBee技术的无线考勤系统设计作者姓名:郭帅 指导老师:金中朝摘要:系统基于ZigBee个域网协议和嵌入式系统,使刷卡设备和考勤统计系统分离,具有组网方便,安装拆卸简单,扩容性好,无需布线等特点,可以减少因线路故障带来的损失和不便,提高了系统的稳定性和可靠性。并完成了ZigBee网络的搭建与优化,嵌入式数据库Sqlite的移植以及嵌入式QT的开发等。关键字:ZigBee, 射频卡考勤,嵌入式网关1 绪论随着信息化时代的到来,我们生活的各方面都和信息化息息相关。社会的管理和资金的流通也已经进入信息化的革命。非接触IC卡“一卡通”便
2、是信息化革命的产物之一。本系统设计的目的是为了实现考勤数据采集、数据统计和信息查询过程的无线化和自动化。方便用户对考勤数据的保存和导出。ZigBee是进入21世纪后来出现的一种新型无线通信技术,该协议具有近距离、低复杂度、低功耗、低数据速率、低成本的特点,在智能家居、智能楼宇自动化、工业智能监等控领域具有非常宽广的市场空间。随着多家芯片制造商推出支持ZigBee协议的片上系统解决方案,越来越多的无线控制系统采用ZigBee技术。系统基于ZigBee个域网协议和嵌入式系统,使刷卡设备和考勤统计系统分离,与目前广泛使用的有线考勤系统相比,具有组网方便,安装拆卸简单,扩容性好,无需布线等特点,可以减
3、少因线路故障带来的损失和不便,提高了系统的稳定性和可靠性。本文首先介绍了系统的总体拓扑结构,然后详细阐述了刷卡设备和网关设备的硬件设计和软件开发过程,其中包括刷卡驱动电路设计,ZigBee协议栈应用程序设计,QT应用软件设计,Sqlite数据库移植方法等。2 系统总体结构本系统主要有IC卡读写模块,发射接收模块和嵌入式系统主机组成。系统总体结构如图1所示。刷卡设备由德州仪器CC2530系统板和RC522读写模块组成,系统主机由三星6410开发板和CC2530无线收发系统组成。当符合读卡协议的IC卡片进入刷卡范围,刷卡设备会将IC卡片的编号通过ZigBee网络发往嵌入式网关。主机基于Linux3
4、.0内核和飞凌嵌入式技术有限公司提供的文件系统以及QT4.8运行环境,开发了ZigBee网关程序,能够监听ZigBee协调器的串口并且能够保存数据到本地数据库。图1ZigBee无线考勤系统效果图2. ZigBee协议栈简介2.1 ZigBee协议栈描述ZigBee协议是一系列的通信标准,通信双方需要共同按照这一标准进行正常的数据发射和接收。协议栈是协议的具体实现形式。协议栈是协议和用户之间的一个接口,开发人员通过使用协议栈来使用这个协议的,进而实现无线数据收发。 图2展示了ZigBee无线网络协议层的架构图。ZigBee的协议分为两部分,IEEE 802.15.4定义了物理层和介质访问层技术规
5、范,ZigBee联盟定义了网络层、应用程序支持子层、应用层技术规范。ZigBee协议栈就是将各个层定义的协议都集合在一起,以函数的形式实现,并给用户提供API(应用层),用户可以直接调用。图2 ZigBee协议栈层次2.2 协议栈结构ZigBee协议栈是由一组称为层模块的结构来构成。下一层将为上层执行特定的一组服务。数据单位提供数据传输服务,管理单位提供所有其他服务。各个业务实体通过服务接入点(SAP)为上层提供一个接口,每个服务接入点支持多个服务原语来实现要求的功能。IEEE 802.15.4-2003标准定义了物理层(PHY)和媒体访问控制子层(MAC)两个网络底层。基于物理层和媒体访问控
6、制子层,ZigBee联盟开发了网络层和应用层体系结构。其中,应用支持子层(APS)、ZigBee 设备对象(ZDO)组成了应用层框架。应用对象使用架构层以及APS共享和安全服务,则有不同芯片制造商来定义。IEEE 802.15.4-2003标准有两个物理层,运行在868 / 915 MHz和2.4GHz两个不同的频率范围。由于每个国家开放给科学和工业的ISM频段标准不同,所以低频率物理层包括欧洲使用的868MHZ频段以及美国和澳大利亚等国家使用915 MH频段。而世界上大多数国家的使用的是2.4GHz频段的物理层。IEEE 802.15.4-2003 MAC子层使用CSMA-CA协议机制来控制
7、无线信道访问。CSMA-CA协议即载波监听多路访问冲突检测方法。2.3 ZigBee网络拓扑ZigBee网络层支持星型,树撞和网状的网络拓扑结构。在星型拓扑结构中,控制网络的设备称为ZigBee协调器。ZigBee协调器负责ZigBee网络备启动和网络设备的维护,其他的设备,称为终端设备,直接与ZigBee协调器进行通信。在树状和网状网络拓扑结构中,ZigBee协调器负责发起ZigBee网络,选择网络中的一些关键参数,但网络可以通过ZigBee路由器进行扩展。树型网络中,路由器使用一个分层路由策略传输数据和控制信息在网络中。树型网络可以使用IEEE 802.15.4-2003标准化通信信标。网
8、状网络允许完全的点对点通信。在网状网络拓扑中,ZigBee路由器将不定期发布的IEEE 802.15.4-2003信标。图3 网络拓扑ZigBee网络是一个简单的、低成本的通信网络,它应用于一些功率有限和对网络吞吐量无严格要求的设备之间的无线连接。ZigBee网络的目标是建立一个易于安装、有可靠的数据传输、通信距离短、成本低、非常好的电池寿命这样的一个网络,并且它能保持简单的和灵活的网络协议。ZigBee网络中含有两个不同的设备,全功能设备(FFD)和简单功能设备(RFD)。FFD在三种网络模式中可作为整个PAN网络的协调器、路由器或网络中的终端设备。FFD可以和RFD或者FFD通信,而简单功
9、能设备(RFD)只能和FFD通信。RFD设备在网络中主要是一个应用设备,它们箱单简单,比如它们可以作为灯的开关或者红外线传感器,但不能传输大规模的数据,且在某一时刻只能和一个FFD相联系。一个ZigBee网络由几个部分组成。最基本的部分是设备,设备既可以是FFD,也可以是RFD。如果两个和更多的设备在一个个人通信空间(POS)范围内,且在同一信道通信,那么这些设备就组成一个WPAN。但网络中必须含一个FFD设备作为PAN协调器。对于无线多媒体来说,由于传播的动态性和不确定性,一个精确的覆盖区域是不存在的。位置和方向的微笑变化,都可能引起信号强度和通信链路的急剧变化。不管静态设备或移动设备都可能
10、出现这种结果。3. ZigBee刷卡设备ZigBee刷卡设备由CC2530系统板外接RC522读写模块组成,实物图如图4所示。RC522非接触式IC卡读写模块采用Philips MFRC522芯片设计,能够读取符合ISO14443A 标准的多张卡片,使用方便,成本低廉。CC2530通过SPI接口直接驱动读写模块。图4ZigBee刷卡设备3.1采集节点主控芯片节点主控芯片使用的CC2530是由德州仪器公司提出的用于ZigBee应用的片上系统解决方案。CC2530系统核心板的电路原理图如图5所示。CC2530片上系统能够广泛解决的2.4GHz应用方案。这些应用场景能够快速的通过TI 提供的Z-St
11、ack协议栈找到合适的解决方案,从而加快开发进程。同时CC2530片上系统是一具有增强型工业标准8051单片机,并集成了无线收发功能。CC2530片上系统具有非常低的待机功耗,在普通干电池的驱动下能够稳定工作半年以上。CC2530工作电压为3.0V到3.6V,待机电流最低值为1微安。具有丰富的片内外设,包括5通道DMA,红外发生电路,8 路12 位ADC,硬件支持CSMA/CA,AES 安全协处理器,电池监视器和温度传感器,具有捕获功能的32-kHz 睡眠定时器以及2个usart(通用同步异步串行发送接收器)等。 图5ZigBee核心板原理图3.2非接触式IC卡工作原理非接触式IC卡电气部分组
12、仅为一个天线和集成电路卡(ASIC)。卡的天线由适用于包装ISO卡的几个绕组线圈构成。集成电路卡是由高速(106kb波特率)的射频接口,一个控制单元和一个8K EEPROM(电可擦可编程只读存储器-)。非接触式IC卡的工作原理为,RC522射频卡读写模块回发一组固定频率的电磁信号,而卡片内具有一个频率与RC522读写模块相同频率的串联谐振电路,在电磁信号的激发下,LC谐振电路将会产生共振,从而使电容内存储了电荷,而电容器的另一极,连接有一个单向导通的电子泵,会将充电电容器的电荷送到另一个电容器储存,当所积累的电荷达到2V,电容器将作为电源为卡片其他电路提供工作电流,将发出卡片内数据或读入RC5
13、22模块数据。3.3ZigBee节点程序上电后CC2530主控芯片初始化RC522模块,当有符合ISO 14443A/MI标准的卡片进入读写范围时,RC522模块通过SPI协议把数据传递给CC2530主控芯片,主控芯片把接收到的数据打包发送到协调器。程序流程图如图6所示。图6 ZigBee节点程序流程图 4.系统主机设备设计与实现主机设备由三星6410开发板和CC2530系统板组成,如图7所示。S3C6410开发板和CC2530系统板通过串口进行通信,当CC2530建立起传感网络后,刷卡节点会自动加入网络。网关基于Linux3.0内核和飞凌嵌入式技术有限公司提供的文件系统以及QT4.8运行环境
14、,开发了ZigBee网关程序,能够监听ZigBee协调器的串口并且能够读写远程或本地数据库。下文将详细介绍主机设备的开发过程,包含sqlite数据库移植和嵌入式QT的环境搭建与开发。 图7ZigBee刷卡考勤网关设备4.1 Sqlite数据库移植4.1.1Sqlite数据库移植过程SQLite是遵守ACID的,能够实现自包容、零配置、支持实物的、开源的关系型数据库管理系统,它包含在一个相对其他数据库非常小的的C语言库中。其特点是高度便携、使用方便、结构紧凑、高效、可靠。 SQLite是D.RichardHipp建立的公有领域项目。与其他数据库管理系统不同,SQLite不是常见的客户端到服务器模
15、式,SQLite引擎也不是程序与之通信的独立进程,而是连接到程序中成为程序的一个主要部分。所以,SQLite主要的通信协议是在编程语言内通过直接调用接口函数来实现。这一方法在消耗总量、延迟时间和整体简单性上有积极的作用。整个数据库,包括数据库的定义、表、索引和数据本身,都在宿主主机上存储在一个单一的文件中。SQLite是一款微型嵌入式数据库,目前已经有很多嵌入式产品使用了SQLite数据库引擎。SQLite具有占用资源非常的低的有点,在嵌入式系统中可能只需要几百K的内存就够了。移植步骤如下:1、下载sqlite3源代码、解压下载地址为/sqlite-sr
16、c-3070900.zip2. 配置SQLite在sqlite目录下进行如下配置:./configure -prefix=/QT/sqlite3 -disable-tcl -host=arm-none-linux-gnueabi3. 编译在Shell环境下使用make命令编译。3. 安装在Shell环境下使用make install命令安装。该命令运行后,会将编译好的结果安装到sqlite-arm文件夹下,在安装目录下会生成bin、lib、include文件夹,bin文件夹下是sqlite3可执行文件,lib文件夹下包含sqlite3运行所依赖的库。另外,在编译包含sqlite数据库的应用程序
17、时,必须指明sqlite所依赖的头文件和库。4. 去掉调试信息SQLite完成编译后,会产生许多调试信息。如果把编译见过全部下载到开发板,会占用目标板很多资源。为了减少占用目标板Flash和其他资源,可以通过命令来去掉调试信息。在SQLite安装目录下执行如下命令:arm-linux-strip bin/*arm-linux-strip lib/*5. 移植命令执行后,会去掉编译结果的调试信息,文件大小减小许多。将SQLite安装目录下 /bin文件夹下的文件sqlite3拷贝到根文件系目录下,并将sqlite_arm/lib目录下的文件拷贝到目标板根文件系统的lib目录下。完成SQLite移
18、植工作。4.1.2. SQLite的基本操作命令(1)建立数据库sqlite3 gstest.sqlite3命令运行后,在当前目录下建立了名为gstest.sqlite3的数据库。(2)建立数据表create table call_echo (id INTEGER PRIMARY KEY, name NUMERIC,num NUMERIC,time TEXT,count NUMERIC,charge_rate NUMERIC,charge_sum NUMERIC);建立了名为 call_echo的数据表,包含id,name,time,count,charge_sum,charge_rate七个
19、字段。(3)向数据表中插入数据 insert into call_echo values ($n,guoshuai,2,'new',4,5,6);(4)查询数据表中的数据select * from call_echo;(5)修改call_echo表中的数据update call_echo set id=99 where id=88;(6)删除表中的数据记录delete from call_echo where id=99;(7)SQLite中的其它经常用到的命令.tables 列出所有的数据库中的数据表.schema tablename 列出指定数据表的结构.quit 离开数据
20、库4.1.3 SQLite编程介绍Sqlite数据库提供了多种编程语言连接的库,如PHP,C/C+,JAVA等。下面简单介绍如何通过C语言编程,实现数据库的创建,以及数据库的各种操作,如表的插入、查询、删除等。(1)打开数据库由sqlite3_open()函数完成,原型如下:nt sqlite3_open(const char* filename,sqlite3*ppdb);第一个函数形参用来指定数据库文件名。第二个函数形参是一个SQLite数据库指针,如果数据库打开成功则返回0,否则返回一个出错代码。(2)关闭数据库由sqlite3_clos()函数完成,原型如下: int sqlite3_
21、close(sqlite3*);传递的参数是SQLite数据库指针,用来关闭指定名称的数据库,操作成功是返回0,否则返回一个出错编号。(3)数据库出错信息由函数完成,原型如下: int sqlite3_errcode(sqlite3*db);const char* sqlite3_errmsg(sqlite3* db);const char* sqlite3_errmsg16(sqlite3* db);上面的函数都是返回出错信息的,第一个函数返回的是最近调用数据库接口的错误代码。第二个和第三个函数,是返回最近调用数据库接口的错误信息。第二个函数返回的错误信息是用UTF8编码的。第三个函数返回的
22、错误信息是用UTF16编码的。(4)数据库SQL语句由sqlite3_exec()函数完成,原型如下: int sqlite3_exec(sqlite3*,const char*sql,int(*callback)(void*,int,char*,char*),void*,*errmsg);这个函数是用来执行SQLite数据库的SQL语句的。第一个参数是SQLite数据库指针。第二个参数是要执行的SQL语句字符串。第三个参数是一个回调函数,在执行查询操作时用到,其它的操作可以传空值即NULL。第四个参数是传递给回调函数第一个参数的实参。第五个参数是一个错误信息。(5)数据库操作的回调由call
23、back()函数完成,原型如下:int callback(void*,int argc,char* argv,char* cname);第一个参数是从sqlite3_exec传递过来的参数,可以为任意的类型。第二个参数是查询的列数。第三个参数是查询结果集的值。第四个参数是列名。(6)数据库的有专门的查询函数sqlite3_get_table(),原型如下:int sqlite3_get_table(sqlite3*db,const char* sql,char*result,int *row,int*col,char* errmsg);这个函数主要是用来查询的。第一个参数是数据库描述符指针。第
24、二个参数是SQL语句。第三个参数是查询的结果集。第四个参数是结果集中的行数。第五个参数是结果集中的列数。第六个参数是错误信息。它查询出的行数是从字段名开始的。即第0行是字段名。(7)SQLite 有许多内置函数用于处理字符串或数字数据。下面列出了一些有用的 SQLite 内置函数,如表1,且所有函数都是大小写不敏感,所以可以使用这些函数的小写形式或大写形式或混合形式。表1 SQLite常用字符串处理函数序号函数 & 描述1SQLite COUNT 函数SQLite COUNT 函数是用来计算一个指定数据库表中的行数。2SQLite MAX 函数SQLite MAX 函数是允许我们选择数
25、据库表中某列的最大值。3SQLite MIN 函数SQLite MIN 函数是允许我们选择数据库表中某列的最小值。4SQLite AVG 函数SQLite AVG 函数是计算数据库表中某列的平均值。5SQLite SUM 函数SQLite SUM 函数是允许为一个数值列计算总和。6SQLite RANDOM 函数SQLite RANDOM 函数返回一个指定范围的伪随机整数。7SQLite ABS 函数SQLite ABS 函数功能是返回数值参数的绝对值。8SQLite UPPER 函数SQLite UPPER 函数功能是把指定字符串转换为大写字母。9SQLite LOWER 函数SQLite
26、LOWER 函数功能是把字符串转换为小写字母。10SQLite LENGTH 函数SQLite LENGTH 函数功能是返回指定字符串的长度。11SQLite sqlite_version 函数SQLite sqlite_version 函数返回当前SQLite 库的版本。4.2QT开发环境搭建和移植4.2.1 QT概述Qt是1991年由奇趣科技开发的跨平台 C+图形用户界面应用程序开发框架。它既可以开发 GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象语言,易于扩展,并且允许组件编程。2008年,奇趣科技被诺基亚公司收购,QT也因此成为诺基亚旗下的编程语言工具。现
27、今,Qt库已经能够支持windows、linux、MAC、embedded Linux、Windows CE等多种平台。4.2.2 嵌入式QT开发平台搭建正式进入 QT开发流程之前,需要进行一系列的 QT环境搭建工作,Qt环境搭建流程如图4所示。由图8知,QT平台搭建的最终目标包括:在 PC机上安装 Qt的集成开发环境,用于开发调试时使用。在 PC机上安装好交叉编译版本的 QT编译环境,用于 QT程序调试完毕后的交叉编译、移植时使用。在 ARM网关上移植 QT库,用于支持移植好的 QT程序运行。图8 嵌入式QT开发平台搭建流程4.2.3.QT程序交叉编译流程完整的嵌入式Qt应用程序从开发到能够
28、应用的流程如图9所示。交叉编译,简单地说,就是在一个平台上生成另一个平台上的可执行代码。这里所谓平台,实际上包含两个概念:体系结(Architecture)、操作系统(Operating System)。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。本文所用的交叉编译方法,即为在我们常说的Intel x86体系结构的linux操作系统中编译生成可以在ARM体系结构中运行的代码。图9 嵌入式Qt应用程序开发流程 4.2.4 QT编程在QT中没有特定的串口控制类,而系统主机和ZigBee网络的协调器通过UART连接,所以采用第三方串口控制类qextseri
29、alport进行开发。程序流程为如图8所示,网关上电后,对设备进行初始化,然后开始监听ZigBee串口,当有刷卡节点的数据传递进来,判断数据是否合法,如果不合法则丢弃,反之则对有效数据进行格式化处理,写入数据库。软件运行效果图如图10所示。图10嵌入式网关程序流程图和运行效果图5. 总结本系统在传统IC卡考勤系统的基础上,将ZigBee无线通信技术引入到考勤系统中,提出基于ZigBee无线通信技术的嵌入式考勤系统的设计方案。给出了其硬件系统组成和软件设计流程。该系统主要有IC卡读写模块,发射接收模块和嵌入式系统主机组成,实现了低成本、低功耗,能够实际应用于员工考勤系统。 致 谢首先感谢我的指导老师金中朝讲师,他的严谨负责的治学态度,一丝不苟的工作作风对我产生很大的影响。一直是我工作、学习中的榜样。在金中朝老师教导下,我在学校已经踏入了嵌入式开发领域,接触了实际项目开发,对我将来的学习和工作打下了良好基础。承蒙金老师亲切的关怀和精心的指导,特别是给我提供了创新学习的环境和平台,让我接触了许多新兴技术,使我获益匪浅。还要感谢我的父母家人。时光如白驹过隙,回想童年生活
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 招标文件购买信用先行
- 旅店服务合同的性质分析
- 专业团队的笔译
- 短期借款人协议合同
- 房屋买卖合同标准模板
- 广场物业服务合同文本
- 面砖供应链合作协议
- 烟草制品保证
- 外加工与采购合同的更新
- 购房贷款合同范本模板示例
- 《头脑风暴》课件
- 安全生产知识考试题库(有答案)-安全考试题库
- 人教版(2024)八年级上册物理第六章 质量与密度 单元测试卷(含答案解析)
- 会计助理个人年终工作总结
- 电解加工课件教学课件
- 2024年执业药师资格继续教育定期考试题库附含答案
- 酒店建设投标书
- 2024秋期国家开放大学专科《民法学(2)》一平台在线形考(形考任务1至4)试题及答案
- 福建省泉州市2023-2024学年高一上学期1月教学质量检测(期末考试)地理试题 附答案
- 【期末复习提升卷】浙教版2022-2023学年八年级上学期数学期末压轴题综合训练试卷1(解析版)
- 2024年315消费者权益保护知识竞赛题库及答案(完整版)
评论
0/150
提交评论