智能家居系统
方案设计文档
目 录
0. 文档介绍 ...................................................... 3 0.1 文档目的 .................................................... 3 0.2 文档范围 .................................................... 3 0.3 读者对象 .................................................... 3 0.4 参考文献 .................................................... 3 0.5 术语与缩写解释 .............................................. 3
1. 模块命名规则 .................................................. 4
2. 模块汇总 ...................................................... 4
2.1 模块汇总表 .................................................. 4
2.2 模块关系图 .................................................. 7
3. 子系统A 的模块设计 ............................................ 7 3. N 模块A-N .................................... 错误!未定义书签。
4. 子系统B 的模块设计 ........................................... 10 4. N 模块B-N .................................................... 10
5. 其他 ......................................... 错误!未定义书签。
0. 文档介绍
0.1 文档目的
本文档旨在详细说明智能家居系统中门禁系统和linux 下的模块程序开发过程,通过此文档 的描述,希望可以达到具有同等技术的开发人员按此介绍可以完全重现此技术。
0.2 文档范围
智能控制系统,嵌入式linux 系统等。
0.3 读者对象
嵌入式系统开发人员
0.4 参考文献
无
0.5 术语与缩写解释
1. 模块命名规则
本文档模块名称与具体实现的功能函数采取一致的表示方法。
2. 模块汇总
设备管理,策略管理,人员管理,定时管理,设备底层操作,串口设备层操作,串口底层操作库,配置文件解析,以及UI 通讯等模块。同时包括门禁控制系统模块,家居控制模块和环境探测模块以及人机交互界面设计模块。
2.1 模块汇总表
2.2 模块关系图
3. 设备管理系统的模块设计
4. 策略管理模块设计
5. 设备底层操作接口模块设计
其他设备以此类类推。
5. 用户认证模块设计
用户配置文件格式为用户名和密码定长不足定长使用空格补足,分隔符为:防止频繁修改文件大小,加剧Nand Fland的读写。
6. 配置文件处理模块设计
各个参数的handler :
7.
带头节点双向链表模块设计
8. 循环缓冲区模块设计
9. 串口操作层模块设计
10. 串口操作库模块设计
11.UI 通信模块设计
12. 命令处理部分设计
主Handler 部分:
子handler:
附命令通信协议:
设备操作相关:
取得设备DEV_NO:
UI 发送:
GET
UI 接收:
„„
状态值
DEV_NO_START 返还设备号开始
注意结束符前有一分隔符,如果无此类型的设备,则返回格式类似下面:
温度计相关命令:
#define MAX_TEMP 125
#define MIN_TEMP -125
#define TEMP_POSION 126 //如果取到这个温度 则代表温度获取失败
取得状态:
UI 发送:
GET
UI 收到:
状态值
成功SUCCESS
可能失败的状态值
ERROR_CMD_NOT_FOUND 命令不完整
ERROR_DEV_NOT_FOUND 设备不存在
设置状态:
SET
UI 接收到:
成功SUCCESS
可能失败的状态值
ERROR_CMD_NOT_FOUND 命令不完整
ERROR_DEV_NOT_FOUND 设备不存在
配置文件相关命令:
1. 取得可用配置文件
UI 发送:
GETCONFIG
UI 接收:
„„ 成功状态值为CONF_NAME_START777
可能的失败状态
ERROR_CONF_DIR_NOT_FOUND 板上配置文件目录打开失败
注意结束符前有一分隔符,如果无此类型的设备,则返回格式类似下面:
2. 载入指定配置文件
UI 发送
SETCONFIG
UI 接收:
成功状态值为SUCCESS
可能失败的状态值
ERROR_CMD_CONFIG_NOT_FOUND 配置文件载入失败
3. 保存配置文件
UI 发送
SAVECONFIG[文件名]
如不指定文件名 则配置将保存到默认配置文件defalut 中
UI 返回
成功状态值SUCCESS
可能失败的状态值:
ERROR_SAVE_CONF 保存配置文件失败
用户认证相关命令:
用户认证:
UI 发送:
USERAUTH
UI 接收:
成功状态值为USER_AUTH_PASS或USER_AUTH_FAILED
可能失败的状态
ERROR_USER_AUTH 密码文件打开失败
用户添加:
UI 发送:
USERADD
UI 接收:
成功状态值为SUCCESS
可能失败的状态
ERROR_USER_ADD 添加用户失败
用户删除:
UI 发送:
USERDEL
UI 接收:
成功状态值为SUCCESS
可能失败的状态
ERROR_USER_DEL 删除用户失败
用户改密
UI 发送:
USERPASS
UI 接收:
成功状态值SUCCESS
可能失败的状态
ERROR_USER_CHANGE_PASS 用户改密失败、
参数:
#define MAX_CMD_LEN 10 //单个命令部分最长值
#define MAX_CMD_LINE_LEN 128 //命令行最长值
#define CMD_DELIM " " //分隔符
#define CMD_END "\r\n" //结束符
#define SOCKKET_ADDR "/tmp/homecore-socket" socket地址
状态值列表:
#define SUCCESS 0 //成功
#define ERROR_CMD_NOT_FOUND 1 //
#define ERROR_CMD_PARM_INVAILD 2
#define ERROR_DEV_NOT_FOUND 3
#define CONF_NAME_START 4
#define ERROR_CMD_CONFIG_NOT_FOUND 5
#define ERROR_CONF_DIR_NOT_FOUND 6
#define USER_AUTH_PASS 7
#define USER_AUTH_FAILED 8
#define ERROR_USER_AUTH 9
#define ERROR_USER_ADD 10
#define ERROR_USER_DEL 11
#define ERROR_USER_CHANGE_PASS 12
#define ERROR_SAVE_CONF 13
#define WARN_START 14
#define DEV_NO_START 15
13. 驱动程序设计
1. 门禁驱动程序设计
根据门禁控制系统文档,修改Linux 内核源代码arch/arm下开发板相关文件(根据内核版本不同,此处可能为mach-smdk2410或者是mach-s3c2410)中的CPLD 内存物理地址映射到的虚拟地址。驱动程序设计初步实现read 方法用于用户态程序取得门禁控制系统返回的卡号,ioctl 方法用于用户态程序实现门的打开和关闭, 一个中断处理程序,负责响应门禁控制系统的中断。
2.LCD 驱动移植
根据LCD 手册,将合适的参数填入到s3c2410fb_mach_info类型的结构体中并在.int_machine所制定的初始化函数中将结构体传给platform_data(不同内核版本此处调用不同),供驱动程序加载。
3.触摸屏驱动
实现Open ,read,release ,fasync ,poll 方法,probe 中设置对应GPIO 引脚,注册中断并在devfs 中建立对应设备节点,read 方法中从循环缓冲区中取得捕获的数据返回个用户态程序。在adc 和触摸屏的中断中捕获屏幕的坐标,将其放入循环缓冲区。
4. 音频驱动程序
Probe 中初始化GPIO 引脚功能,申请IRQ 注册,同时初始化uda1341,注册声卡dsp 和mixer 的操作方法,open 方法打开时初始化循环缓冲区,并且初始化iis 总线的收发。在dsp 的ioctl 方法中实现音频流各种参数的处理,在mixer 的ioctl 方法中实现声音设备音量等处理。
14. 门禁控制系统设计
一、 教学用门禁子板接口说明:
韦根读卡器接口,DATA0、DATA1、GND 和5V0,共4个读卡器,占用CPLD 8个I/O,分别为Wiegand1、Wiegand2、Wiegand3、Wiegand4;
4个按键输入,占用CPLD 4个I/O,为KeyIN
2个门状态反馈输入,占用CPLD 2个I/O,为DoorSta ;
2个继电器控制输出,占用CPLD 2个I/O,为ConOut1和ConOut2; 1个中断请求输出,占用CPLD1个I/O,为INTR ;
1个片选输入 占用CPLD1个I/O,为CS
5个地址线,占用CPLD 5个I/O,为Addr (0,4)
16个地址线,占用CPLD 16个I/O,为Data (0,15)
1个读信号,占用CPLD1个I/O,为RD
1个写信号,占用CPLD1个I/O,为WR
1个复位信号,占用CPLD1个I/O,为RESET
框图如下图所示:
二、 和ARM 板接口信号说明
下图为ARM 板接口信号示意图
连接描述如下:
DATA0~DATA15连接到Data (0,15) ADDR0~ADDR4连接到Addr (0,4)
nOE 连接到RD ,变低表示开始读
nWE 连接到WR ,变低表示开始写
nGCS2连接到CS ,ARM 输出低电平,表示选中CPLD
GPA15连接到RESET ,ARM 输出低电平,表示复位CPLD ,工作状态一直保持高电平
EINT3连接到INTR ,为ARM 中断输入信号,低电平 三、 工作过程描述
数据流程如框图所示:
如果有事件发生(事件可能是四个读卡器接口有数据输入或门状态异常),CPLD 向ARM 发中断请求,请求处理。ARM 响应后发读数据命令,CPLD 把数据传送给ARM ,ARM 判断数据后,再把指令送给CPLD ,CPLD 根据指令是否执行开关门操作。
还有一种状况是ARM 直接发指令,让门打开或关闭。
四、 关于韦根协议说明
关于韦根协议说明:Wiegand 协议是国际上统一的标准,有很多格式,标准的26-bit 应该是最常用的格式。此外,还有34-bit 、37-bit 等格式。 标准26位Wiegand 通讯协议
标准韦根输出是由26位二进制数组成,每一位的含义如下: 1 2 9 10 25 26
X X X X X X X X X X X X X X X X X X X X X X X X X X 二进制
第1位为2—13位的偶校验位
第2—9位对应与电子卡HID 码的低8位 第10-25位对应电子卡的PID 号码 第26位为14-25位的奇校验位
这26位数据在读出器的韦根输出线D0,D1上输出。
数据输出高位在前。
所以CPLD 支持各种协议的Wiegand 协议,依靠标准协议来判断是多少bit 的格式,所以CPLD 接收的Wiegan 数据寄存器设计成最大48bit ,为区别各个协议在每组数据包的最后三位置成标志码,所以最大支持45bit 数据。 000------表示26-bit 标准协议 001------表示27-bit 协议 010------表示32-bit 协议 011------表示34-bit 协仪 100------表示36-bit 协议 101-----表示37-bit 协议
五、 实现方案
1. 在ARM 复位后,发复位信号,置GPA15为低,CPLD 进入工作状态。 2. 如果有事件发生,CPLD 发出中断请求,把EINT3置高,ARM 响应中断后读CPLD 中的数据,具体的地址分配如下(reader 对应图一的Wiegand) ,数据宽度为16bit :
由于公用一条中断请求,所以ARM 分不出是哪个中断请求,所以ARM 每次读的时候把00000~01011地址的数据全部读出,从而做出开关门判断。如果有一组数据为全0,表示这一组没有卡号输入。读出数据后,ARM 写控制寄存器命令即向地址01101写入相关数据。
Wiegand1和Wiegand2共同对应ConOut1(1#door),Wiegand3和Wiegand4共同对应ConOut2(2#door), ⏹ 状态寄存器的详细描述
DS1:1#door status (0=正常 1=异常) DS2:2#door status (0=正常 1=异常)
WS1:Wiegand1 status 1号韦根对卡器状况(0=读卡器正常,1=读卡器异常)
WS2:Wiegand2 status 2号韦根对卡器状况 WS3:Wiegand3 status 3号韦根对卡器状况 WS4:Wiegand4 status 4号韦根对卡器状况
KS1:1#Key status 1号键状态 (0=未按键,1=有按键) KS2:2#Key status 2号键状态 (0=未按键,1=有按键) KS3:3#Key status 3号键状态 (0=未按键,1=有按键) KS4:4#Key status 4号键状态 (0=未按键,1=有按键)
⏹ 控制寄存器的详细描述
DO1-----1#door open 0=关 1=开 DO2-----2#door open 0=关 1=开 六:具体模块主要函数说明
15. 家居控制系统和环境探测模块
环境探测采用zigbee 无线通讯技术,通过温度传感器采集环境温度,上报到家庭网关,网关解析温度数据,实时的显示温度到led 显示屏幕,其结构图如下:
家居控制主要涉及对继电器的控制,通过继电器的通或者断来控制照明设备的开或者关。
模块主要涉及的功能函数说明如下:
16. 人机交互界面模块设计
人机交互模块采用基于Arm linux 下的GUI-Qt 应用程序开发来完成,用户通过在LCD 上显示的软件界面,辅助触摸屏来完成各项操作,其结构图如下:
主界面的视图;
主界面中所有对象的功能和操作方式;
名称:煤气监测器按钮
功能;当有煤气监测设备报警信息传来时,此按钮显示“煤气报警!
!”文字,
并且在报警信息显示栏显示报警信息,当点击此按钮时,
进入煤气监测设备界面。
当煤气浓度正常时,此按钮文字显示“煤气”。 操作方式:点击
进入煤气监测设备界面。 名称:火警监测器按钮
功能;当有火警监测设备报警信息传来时,此按钮显示“火警报警!!”文字,
并且在报警信息显示栏显示报警信息,当点击此按钮时,进入火警监测设备界面。
当无火警时,此按钮文字显示为“火警”。 操作方式:点击 进入火警监测设备界面。
名称:窗磁按钮/门磁
功能;当有防盗监测设备报警信息传来时,此按钮显示“门磁报警!!”或“窗
磁报警”文字,并且在报警信息显示栏显示报警信息,当点击此按钮时,进入防盗监测设备界面。
当一切正常时,此按钮文字显示为“门磁”或“窗磁”。 操作方式:点击 进入防盗监测设备界面。
名称:模式开关按钮 功能:点击此按钮进入模式开关设置界面,可以选择设置智能家居系统运行模
式。
此按钮文字一直显示为“模式”。 操作方式:点击 进入模式设备界面。
名称:遥控器按钮
功能:点击此按钮进入遥控器设置界面。
用户可以设置温度计的临界温度;
设置火灾监测器报警的临界烟雾浓度; 设置煤气监测器报警的临界煤气浓度;
设置工作模式。工作模式包括:外出模式、归来模式。
操作方式:点击 进入遥控器设置界面。 名称:温度计按钮
功能;当室内温度高过临界温度时,此按钮显示“温度报警!!”字样,并且在
报警信息显示栏显示报警信息,当点击此按钮时,进入温度计界面。
当室内正常时,此按钮为绿色。 操作方式:点击 进入温度计界面。
名称:报警信息显示框 功能:当家居网关接收到各外围设备发来的报警信息时,将把详细的报警信息
显示在此文本框内 操作:无
子界面
绘制子界的视图;
煤气界面
子界面中所有对象的功能和操作方式;
名称:煤气监测设备状态灯
功能:当煤气监测器监测到室内煤气浓度超过警戒值时便向家居网关发出报警,此时画面中状态灯为红色。当煤气浓度正常时,此状态灯为绿色。
操作:无
名称:查询按钮
功能:当点击此按钮时,用户可以向煤气监测器发出查询指令,煤气监测器收
到查询指令后,会将室内的煤气浓度发送到家居网关,此时,在画面右
侧的文本框会显示出煤气浓度信息。
操作:无
名称:报警/查询信息显示框
功能:当煤气报警发送到家居网关时,报警信息会显示在此文本框内。当用户点击查询按钮时,查询到的室内煤气浓度信息会显示在此文本框内。 操作:无
名称:返回按钮
功能:当用户点击此按钮时,家居网关显示界面会切换到主界面
操作:点击
火警界面
名称:火警监测设备状态灯
功能:当火灾预警设备监测到室内烟雾浓度超过警戒值时便向家居网关发出报警,此时画面中状态灯为红色。当烟雾浓度正常时,此状态灯为绿色。
操作:无
名称:查询按钮
功能:当点击此按钮时,用户可以向火灾监测器发出查询指令,火灾监测器收
到查询指令后,会将室内的烟雾浓度发送到家居网关,此时,在画面右侧的文本框会显示出烟雾浓度信息。
操作:点击
智能开关界面
名称:用户输入框
功能:用户在此输入要打开或关闭灯具的设备编号,然后点击‘打开’或‘关闭’按钮,家居网关会向智能开关发出相应指令,打开或关闭用户指定的灯具设备。
操作:用户输入
名称:‘打开’按钮
/‘关闭’按钮
功能:用户在输入框输入要打开灯具的设备编号,然后点击‘打开’
或‘关闭’按钮,家居网关会向智能开关发出相应指令,打开或关闭用户指定的灯具设备。
操作:点击
名称:信息显示文本框
功能:当用户手动关闭开关后,智能开关将反馈关闭信息到家居网关,信息在文本框内显示
操作:无
窗磁界面
名称:窗磁状态灯
功能:当窗磁传感器监测到窗户有开启行为时便向家居网关发出报警,此时画面中状态灯为红色。当窗磁无开启时,此状态灯为绿色。
操作:无
名称:信息显示文本框
功能:当窗磁传感器监测到窗户有开启行为时便向家居网关发出报警,此时此文本框内便显示报警信息。当用户点击查询按钮时,窗磁传感器将窗磁状态发送到家居网关,窗磁状态信息显示在此文本框内。
操作:无
名称:查询信息
功能:当用户点击此按钮时,家居网关将查询命令传送到窗磁传感器,
窗磁传感器将窗磁状态发送到家居网关,窗磁信息被显示在文本框内。
操作:点击
门磁界面
界面中的对象同窗磁界面
模式控制器界面
名称:模式单选框
功能:用户可以点击此单选框,可以选择外出模式或者归来模式。
操作:点击
名称:设置按钮
功能:用户点击单选框选择外出或者归来模式后,点击设置按钮,将使用户选择的模式生效
操作:点击
遥控器界面
名称:用户输入框。
功能:用户可以在相应的输入框内输入要设置的临界煤气报警浓度、临界烟雾报警浓度或者临界报警温度,然后可以点击设置按钮,使设置生效。 操作:输入。
名称:设置按钮
功能:用户在相应的输入框内输入要设置的临界数值后,点击此按钮,可以使设置生效。
操作:点击
温度计界面
同煤气设备报警界面
屏保界面
名称:屏保界面
功能:系统每隔固定时间间隔启动此屏保界面,界面动态显示闪烁彩色文字“HELLO HARBOUR ”。用户点击界面后,此屏保界面关闭,重新显示当前工作界面。
操作:点击。
附注:
以上各功能模块的实际开发过程中,需要书写《项目进展报告.doc 》 在小组例会的时候要由小组长对整个项目组做报告、《模块测试报告.doc 》由测试人提交给小组长,小组长根据测试结果采取不同的措施处理。同时要书写《编程文档.doc 》来规范并会后续工作打下良好的文字记录,里面主要涉及模块的函数功能实现和代码的算法流程说明。
智能家居系统
方案设计文档
目 录
0. 文档介绍 ...................................................... 3 0.1 文档目的 .................................................... 3 0.2 文档范围 .................................................... 3 0.3 读者对象 .................................................... 3 0.4 参考文献 .................................................... 3 0.5 术语与缩写解释 .............................................. 3
1. 模块命名规则 .................................................. 4
2. 模块汇总 ...................................................... 4
2.1 模块汇总表 .................................................. 4
2.2 模块关系图 .................................................. 7
3. 子系统A 的模块设计 ............................................ 7 3. N 模块A-N .................................... 错误!未定义书签。
4. 子系统B 的模块设计 ........................................... 10 4. N 模块B-N .................................................... 10
5. 其他 ......................................... 错误!未定义书签。
0. 文档介绍
0.1 文档目的
本文档旨在详细说明智能家居系统中门禁系统和linux 下的模块程序开发过程,通过此文档 的描述,希望可以达到具有同等技术的开发人员按此介绍可以完全重现此技术。
0.2 文档范围
智能控制系统,嵌入式linux 系统等。
0.3 读者对象
嵌入式系统开发人员
0.4 参考文献
无
0.5 术语与缩写解释
1. 模块命名规则
本文档模块名称与具体实现的功能函数采取一致的表示方法。
2. 模块汇总
设备管理,策略管理,人员管理,定时管理,设备底层操作,串口设备层操作,串口底层操作库,配置文件解析,以及UI 通讯等模块。同时包括门禁控制系统模块,家居控制模块和环境探测模块以及人机交互界面设计模块。
2.1 模块汇总表
2.2 模块关系图
3. 设备管理系统的模块设计
4. 策略管理模块设计
5. 设备底层操作接口模块设计
其他设备以此类类推。
5. 用户认证模块设计
用户配置文件格式为用户名和密码定长不足定长使用空格补足,分隔符为:防止频繁修改文件大小,加剧Nand Fland的读写。
6. 配置文件处理模块设计
各个参数的handler :
7.
带头节点双向链表模块设计
8. 循环缓冲区模块设计
9. 串口操作层模块设计
10. 串口操作库模块设计
11.UI 通信模块设计
12. 命令处理部分设计
主Handler 部分:
子handler:
附命令通信协议:
设备操作相关:
取得设备DEV_NO:
UI 发送:
GET
UI 接收:
„„
状态值
DEV_NO_START 返还设备号开始
注意结束符前有一分隔符,如果无此类型的设备,则返回格式类似下面:
温度计相关命令:
#define MAX_TEMP 125
#define MIN_TEMP -125
#define TEMP_POSION 126 //如果取到这个温度 则代表温度获取失败
取得状态:
UI 发送:
GET
UI 收到:
状态值
成功SUCCESS
可能失败的状态值
ERROR_CMD_NOT_FOUND 命令不完整
ERROR_DEV_NOT_FOUND 设备不存在
设置状态:
SET
UI 接收到:
成功SUCCESS
可能失败的状态值
ERROR_CMD_NOT_FOUND 命令不完整
ERROR_DEV_NOT_FOUND 设备不存在
配置文件相关命令:
1. 取得可用配置文件
UI 发送:
GETCONFIG
UI 接收:
„„ 成功状态值为CONF_NAME_START777
可能的失败状态
ERROR_CONF_DIR_NOT_FOUND 板上配置文件目录打开失败
注意结束符前有一分隔符,如果无此类型的设备,则返回格式类似下面:
2. 载入指定配置文件
UI 发送
SETCONFIG
UI 接收:
成功状态值为SUCCESS
可能失败的状态值
ERROR_CMD_CONFIG_NOT_FOUND 配置文件载入失败
3. 保存配置文件
UI 发送
SAVECONFIG[文件名]
如不指定文件名 则配置将保存到默认配置文件defalut 中
UI 返回
成功状态值SUCCESS
可能失败的状态值:
ERROR_SAVE_CONF 保存配置文件失败
用户认证相关命令:
用户认证:
UI 发送:
USERAUTH
UI 接收:
成功状态值为USER_AUTH_PASS或USER_AUTH_FAILED
可能失败的状态
ERROR_USER_AUTH 密码文件打开失败
用户添加:
UI 发送:
USERADD
UI 接收:
成功状态值为SUCCESS
可能失败的状态
ERROR_USER_ADD 添加用户失败
用户删除:
UI 发送:
USERDEL
UI 接收:
成功状态值为SUCCESS
可能失败的状态
ERROR_USER_DEL 删除用户失败
用户改密
UI 发送:
USERPASS
UI 接收:
成功状态值SUCCESS
可能失败的状态
ERROR_USER_CHANGE_PASS 用户改密失败、
参数:
#define MAX_CMD_LEN 10 //单个命令部分最长值
#define MAX_CMD_LINE_LEN 128 //命令行最长值
#define CMD_DELIM " " //分隔符
#define CMD_END "\r\n" //结束符
#define SOCKKET_ADDR "/tmp/homecore-socket" socket地址
状态值列表:
#define SUCCESS 0 //成功
#define ERROR_CMD_NOT_FOUND 1 //
#define ERROR_CMD_PARM_INVAILD 2
#define ERROR_DEV_NOT_FOUND 3
#define CONF_NAME_START 4
#define ERROR_CMD_CONFIG_NOT_FOUND 5
#define ERROR_CONF_DIR_NOT_FOUND 6
#define USER_AUTH_PASS 7
#define USER_AUTH_FAILED 8
#define ERROR_USER_AUTH 9
#define ERROR_USER_ADD 10
#define ERROR_USER_DEL 11
#define ERROR_USER_CHANGE_PASS 12
#define ERROR_SAVE_CONF 13
#define WARN_START 14
#define DEV_NO_START 15
13. 驱动程序设计
1. 门禁驱动程序设计
根据门禁控制系统文档,修改Linux 内核源代码arch/arm下开发板相关文件(根据内核版本不同,此处可能为mach-smdk2410或者是mach-s3c2410)中的CPLD 内存物理地址映射到的虚拟地址。驱动程序设计初步实现read 方法用于用户态程序取得门禁控制系统返回的卡号,ioctl 方法用于用户态程序实现门的打开和关闭, 一个中断处理程序,负责响应门禁控制系统的中断。
2.LCD 驱动移植
根据LCD 手册,将合适的参数填入到s3c2410fb_mach_info类型的结构体中并在.int_machine所制定的初始化函数中将结构体传给platform_data(不同内核版本此处调用不同),供驱动程序加载。
3.触摸屏驱动
实现Open ,read,release ,fasync ,poll 方法,probe 中设置对应GPIO 引脚,注册中断并在devfs 中建立对应设备节点,read 方法中从循环缓冲区中取得捕获的数据返回个用户态程序。在adc 和触摸屏的中断中捕获屏幕的坐标,将其放入循环缓冲区。
4. 音频驱动程序
Probe 中初始化GPIO 引脚功能,申请IRQ 注册,同时初始化uda1341,注册声卡dsp 和mixer 的操作方法,open 方法打开时初始化循环缓冲区,并且初始化iis 总线的收发。在dsp 的ioctl 方法中实现音频流各种参数的处理,在mixer 的ioctl 方法中实现声音设备音量等处理。
14. 门禁控制系统设计
一、 教学用门禁子板接口说明:
韦根读卡器接口,DATA0、DATA1、GND 和5V0,共4个读卡器,占用CPLD 8个I/O,分别为Wiegand1、Wiegand2、Wiegand3、Wiegand4;
4个按键输入,占用CPLD 4个I/O,为KeyIN
2个门状态反馈输入,占用CPLD 2个I/O,为DoorSta ;
2个继电器控制输出,占用CPLD 2个I/O,为ConOut1和ConOut2; 1个中断请求输出,占用CPLD1个I/O,为INTR ;
1个片选输入 占用CPLD1个I/O,为CS
5个地址线,占用CPLD 5个I/O,为Addr (0,4)
16个地址线,占用CPLD 16个I/O,为Data (0,15)
1个读信号,占用CPLD1个I/O,为RD
1个写信号,占用CPLD1个I/O,为WR
1个复位信号,占用CPLD1个I/O,为RESET
框图如下图所示:
二、 和ARM 板接口信号说明
下图为ARM 板接口信号示意图
连接描述如下:
DATA0~DATA15连接到Data (0,15) ADDR0~ADDR4连接到Addr (0,4)
nOE 连接到RD ,变低表示开始读
nWE 连接到WR ,变低表示开始写
nGCS2连接到CS ,ARM 输出低电平,表示选中CPLD
GPA15连接到RESET ,ARM 输出低电平,表示复位CPLD ,工作状态一直保持高电平
EINT3连接到INTR ,为ARM 中断输入信号,低电平 三、 工作过程描述
数据流程如框图所示:
如果有事件发生(事件可能是四个读卡器接口有数据输入或门状态异常),CPLD 向ARM 发中断请求,请求处理。ARM 响应后发读数据命令,CPLD 把数据传送给ARM ,ARM 判断数据后,再把指令送给CPLD ,CPLD 根据指令是否执行开关门操作。
还有一种状况是ARM 直接发指令,让门打开或关闭。
四、 关于韦根协议说明
关于韦根协议说明:Wiegand 协议是国际上统一的标准,有很多格式,标准的26-bit 应该是最常用的格式。此外,还有34-bit 、37-bit 等格式。 标准26位Wiegand 通讯协议
标准韦根输出是由26位二进制数组成,每一位的含义如下: 1 2 9 10 25 26
X X X X X X X X X X X X X X X X X X X X X X X X X X 二进制
第1位为2—13位的偶校验位
第2—9位对应与电子卡HID 码的低8位 第10-25位对应电子卡的PID 号码 第26位为14-25位的奇校验位
这26位数据在读出器的韦根输出线D0,D1上输出。
数据输出高位在前。
所以CPLD 支持各种协议的Wiegand 协议,依靠标准协议来判断是多少bit 的格式,所以CPLD 接收的Wiegan 数据寄存器设计成最大48bit ,为区别各个协议在每组数据包的最后三位置成标志码,所以最大支持45bit 数据。 000------表示26-bit 标准协议 001------表示27-bit 协议 010------表示32-bit 协议 011------表示34-bit 协仪 100------表示36-bit 协议 101-----表示37-bit 协议
五、 实现方案
1. 在ARM 复位后,发复位信号,置GPA15为低,CPLD 进入工作状态。 2. 如果有事件发生,CPLD 发出中断请求,把EINT3置高,ARM 响应中断后读CPLD 中的数据,具体的地址分配如下(reader 对应图一的Wiegand) ,数据宽度为16bit :
由于公用一条中断请求,所以ARM 分不出是哪个中断请求,所以ARM 每次读的时候把00000~01011地址的数据全部读出,从而做出开关门判断。如果有一组数据为全0,表示这一组没有卡号输入。读出数据后,ARM 写控制寄存器命令即向地址01101写入相关数据。
Wiegand1和Wiegand2共同对应ConOut1(1#door),Wiegand3和Wiegand4共同对应ConOut2(2#door), ⏹ 状态寄存器的详细描述
DS1:1#door status (0=正常 1=异常) DS2:2#door status (0=正常 1=异常)
WS1:Wiegand1 status 1号韦根对卡器状况(0=读卡器正常,1=读卡器异常)
WS2:Wiegand2 status 2号韦根对卡器状况 WS3:Wiegand3 status 3号韦根对卡器状况 WS4:Wiegand4 status 4号韦根对卡器状况
KS1:1#Key status 1号键状态 (0=未按键,1=有按键) KS2:2#Key status 2号键状态 (0=未按键,1=有按键) KS3:3#Key status 3号键状态 (0=未按键,1=有按键) KS4:4#Key status 4号键状态 (0=未按键,1=有按键)
⏹ 控制寄存器的详细描述
DO1-----1#door open 0=关 1=开 DO2-----2#door open 0=关 1=开 六:具体模块主要函数说明
15. 家居控制系统和环境探测模块
环境探测采用zigbee 无线通讯技术,通过温度传感器采集环境温度,上报到家庭网关,网关解析温度数据,实时的显示温度到led 显示屏幕,其结构图如下:
家居控制主要涉及对继电器的控制,通过继电器的通或者断来控制照明设备的开或者关。
模块主要涉及的功能函数说明如下:
16. 人机交互界面模块设计
人机交互模块采用基于Arm linux 下的GUI-Qt 应用程序开发来完成,用户通过在LCD 上显示的软件界面,辅助触摸屏来完成各项操作,其结构图如下:
主界面的视图;
主界面中所有对象的功能和操作方式;
名称:煤气监测器按钮
功能;当有煤气监测设备报警信息传来时,此按钮显示“煤气报警!
!”文字,
并且在报警信息显示栏显示报警信息,当点击此按钮时,
进入煤气监测设备界面。
当煤气浓度正常时,此按钮文字显示“煤气”。 操作方式:点击
进入煤气监测设备界面。 名称:火警监测器按钮
功能;当有火警监测设备报警信息传来时,此按钮显示“火警报警!!”文字,
并且在报警信息显示栏显示报警信息,当点击此按钮时,进入火警监测设备界面。
当无火警时,此按钮文字显示为“火警”。 操作方式:点击 进入火警监测设备界面。
名称:窗磁按钮/门磁
功能;当有防盗监测设备报警信息传来时,此按钮显示“门磁报警!!”或“窗
磁报警”文字,并且在报警信息显示栏显示报警信息,当点击此按钮时,进入防盗监测设备界面。
当一切正常时,此按钮文字显示为“门磁”或“窗磁”。 操作方式:点击 进入防盗监测设备界面。
名称:模式开关按钮 功能:点击此按钮进入模式开关设置界面,可以选择设置智能家居系统运行模
式。
此按钮文字一直显示为“模式”。 操作方式:点击 进入模式设备界面。
名称:遥控器按钮
功能:点击此按钮进入遥控器设置界面。
用户可以设置温度计的临界温度;
设置火灾监测器报警的临界烟雾浓度; 设置煤气监测器报警的临界煤气浓度;
设置工作模式。工作模式包括:外出模式、归来模式。
操作方式:点击 进入遥控器设置界面。 名称:温度计按钮
功能;当室内温度高过临界温度时,此按钮显示“温度报警!!”字样,并且在
报警信息显示栏显示报警信息,当点击此按钮时,进入温度计界面。
当室内正常时,此按钮为绿色。 操作方式:点击 进入温度计界面。
名称:报警信息显示框 功能:当家居网关接收到各外围设备发来的报警信息时,将把详细的报警信息
显示在此文本框内 操作:无
子界面
绘制子界的视图;
煤气界面
子界面中所有对象的功能和操作方式;
名称:煤气监测设备状态灯
功能:当煤气监测器监测到室内煤气浓度超过警戒值时便向家居网关发出报警,此时画面中状态灯为红色。当煤气浓度正常时,此状态灯为绿色。
操作:无
名称:查询按钮
功能:当点击此按钮时,用户可以向煤气监测器发出查询指令,煤气监测器收
到查询指令后,会将室内的煤气浓度发送到家居网关,此时,在画面右
侧的文本框会显示出煤气浓度信息。
操作:无
名称:报警/查询信息显示框
功能:当煤气报警发送到家居网关时,报警信息会显示在此文本框内。当用户点击查询按钮时,查询到的室内煤气浓度信息会显示在此文本框内。 操作:无
名称:返回按钮
功能:当用户点击此按钮时,家居网关显示界面会切换到主界面
操作:点击
火警界面
名称:火警监测设备状态灯
功能:当火灾预警设备监测到室内烟雾浓度超过警戒值时便向家居网关发出报警,此时画面中状态灯为红色。当烟雾浓度正常时,此状态灯为绿色。
操作:无
名称:查询按钮
功能:当点击此按钮时,用户可以向火灾监测器发出查询指令,火灾监测器收
到查询指令后,会将室内的烟雾浓度发送到家居网关,此时,在画面右侧的文本框会显示出烟雾浓度信息。
操作:点击
智能开关界面
名称:用户输入框
功能:用户在此输入要打开或关闭灯具的设备编号,然后点击‘打开’或‘关闭’按钮,家居网关会向智能开关发出相应指令,打开或关闭用户指定的灯具设备。
操作:用户输入
名称:‘打开’按钮
/‘关闭’按钮
功能:用户在输入框输入要打开灯具的设备编号,然后点击‘打开’
或‘关闭’按钮,家居网关会向智能开关发出相应指令,打开或关闭用户指定的灯具设备。
操作:点击
名称:信息显示文本框
功能:当用户手动关闭开关后,智能开关将反馈关闭信息到家居网关,信息在文本框内显示
操作:无
窗磁界面
名称:窗磁状态灯
功能:当窗磁传感器监测到窗户有开启行为时便向家居网关发出报警,此时画面中状态灯为红色。当窗磁无开启时,此状态灯为绿色。
操作:无
名称:信息显示文本框
功能:当窗磁传感器监测到窗户有开启行为时便向家居网关发出报警,此时此文本框内便显示报警信息。当用户点击查询按钮时,窗磁传感器将窗磁状态发送到家居网关,窗磁状态信息显示在此文本框内。
操作:无
名称:查询信息
功能:当用户点击此按钮时,家居网关将查询命令传送到窗磁传感器,
窗磁传感器将窗磁状态发送到家居网关,窗磁信息被显示在文本框内。
操作:点击
门磁界面
界面中的对象同窗磁界面
模式控制器界面
名称:模式单选框
功能:用户可以点击此单选框,可以选择外出模式或者归来模式。
操作:点击
名称:设置按钮
功能:用户点击单选框选择外出或者归来模式后,点击设置按钮,将使用户选择的模式生效
操作:点击
遥控器界面
名称:用户输入框。
功能:用户可以在相应的输入框内输入要设置的临界煤气报警浓度、临界烟雾报警浓度或者临界报警温度,然后可以点击设置按钮,使设置生效。 操作:输入。
名称:设置按钮
功能:用户在相应的输入框内输入要设置的临界数值后,点击此按钮,可以使设置生效。
操作:点击
温度计界面
同煤气设备报警界面
屏保界面
名称:屏保界面
功能:系统每隔固定时间间隔启动此屏保界面,界面动态显示闪烁彩色文字“HELLO HARBOUR ”。用户点击界面后,此屏保界面关闭,重新显示当前工作界面。
操作:点击。
附注:
以上各功能模块的实际开发过程中,需要书写《项目进展报告.doc 》 在小组例会的时候要由小组长对整个项目组做报告、《模块测试报告.doc 》由测试人提交给小组长,小组长根据测试结果采取不同的措施处理。同时要书写《编程文档.doc 》来规范并会后续工作打下良好的文字记录,里面主要涉及模块的函数功能实现和代码的算法流程说明。