基于ZigBee技术的门铃及老人求助系统
2012-09-25罗回彬钟伟洲
罗回彬,钟伟洲
(北京理工大学珠海学院 计算机学院,珠海 519085)
引 言
早期门铃的作用只是单纯地提醒主人有客来访,而且它的功能是通过有线方式来实现,这样的设计在现实生活中的局限性早已暴露出来。随着科技的发展,门铃的类型与功能更是多种多样,但基于ZigBee无线网络传输的门铃目前市场上却并未出现。
本项目通过ZigBee传输实现无线控制门铃的功能。在功能设计上产品相对于普通有线门铃更人性化,增添了门外LCD显示文字提醒,有效简单地避免主人因有事迟来开门迎接而产生不必要的尴尬。此外,考虑到老年人在行动上不便,有时需要家人的帮助,而对于这种现象,市面上却没有比较合适解决此类问题的产品,功能较全的产品价格又比较贵,而且一些功能在家里的应用可有可无。针对此类问题,作者设计了老人求助功能,求助铃声由连接其终端的扬声器发出,不仅如此还可以远程控制警示灯闪亮。当家人听到警铃或看到警示灯便知老人需要帮忙,可以第一时间前往救助。
1 方案详细设计
方案详细设计图如图1所示。本项目是通过ZigBee无线网络传输技术来实现的,除了有普通无线门铃控制功能之外,在室内可移动门铃终端还可以通过按键控制与室内中控端相连的门外LCD液晶显示。当客人拜访来按门铃时,主人刚好在家但有事不便,这时,主人就可以通过门铃终端上的按键控制门外液晶器显示“请稍候”字样;若家中有行动不便的老人,当他自己需要别人帮助时,可以通过手持终端上的按键让警示铃工作,同时室内中控端上的警示灯LED会同时闪亮。当家人看到灯闪或听到声音就明白老人需要帮助,会立刻过去。这样家人也不用时刻看住老人,可以有效地利用时间做其他的事情。
图1 方案详细设计图
2 硬件设计
根据以上方案设计,本系统可分为3个模块。
(1)中控端
本系统的中控模块包括NXP公司的LPC1769开发板,CC2430芯片ZigBee-RS232接口设备一个,用来提示的LED警示灯、带ST7565p芯片的LCD液晶显示器和门铃按键各一个,以及若干杜邦线。LPC1769本身就有UART口,可通过TTL转串口与ZigBee连接。LED警示灯、LCD液晶显示器和门外按键设计也可从开发板丰富的外设引脚得以实现。
(2)室内门铃终端
LPC1769开发板一块,CC2430芯片ZigBee-RS232接口设备一个、喇叭一个、按键一个,若干杜邦线。同理,LPC 1769可与ZigBee连接,喇叭与控制门外LCD的按键设计可从开发板的外设引脚得到实现。
(3)室内老人求助终端
本模块需要EasyARM1138开发板一块,其本身就可通过UART口与ZigBee相连。另外,EasyARM1138开发板本身带有蜂鸣器,警铃声只需在软件层次实现即可。另外,开发板本身就有按键,这样通过ZigBee控制中控端上的警铃也是可实现的。
系统硬件框架设计图如图2所示。
3 软件设计
由上面可知本系统按功能分为3大模块。
(1)中控端
在软件部分,定义了UART0_Getchar()这个函数,负责接收字符,ZigBee将接收到的字符传给此函数。本项目又定义了一个字符变量m,将UART0_Getchar()的值赋给变量 m,通过if((m=UART0_Getchar())==′s′)语句来判断是否有人来按门铃。其中,值′s′是作者自行设置的值,只有当m=′s′时才能让室内门铃终端上的喇叭输出铃声。
图2 系统硬件框架设计图
同时,中控端还定义UARTGetchar()函数,负责接收老人终端发送过来的字符,本项目也定义一个变量l,与上面介绍的类似。最后通过if((l=UARTGetchar())==′c′)这条语句来判断老人是否发送了请求。同样,值′c′也是作者自行设置的。只有当条件满足后,才会执行函数led_invert()从而控制中控端上LED警示灯闪烁。
而对于室外的门铃按键,通过有线方式将按键延伸至门外。在LPC1769开发板上,本项目需要将上面的P0.0口改为GPIO口:
通过LPC_GPIO0->FIODIR&=0xFFFFFFFE这条语句设置LPC_GPIO0为输出,然后定义state变量用来读取P0.0引脚状态:state=LPC_GPIO0->FIOPIN。接着通过if(state &0x01)来判断按键是否被按下。若为真,则可通过中控端定义好的发送函数传给ZigBee,由ZigBee发送出去即可。
(2)室内门铃终端
该模块的软件设计想也同上面的类似。也在LPC1769开发板上通过控制引脚状态来判断主人是否按下LCD控制按钮。同样定义了 UARTGetchar()和UARTGetsend()函数用来接收和发送字符。
(3)室内老人求助终端
由于EasyARM1138开发板本身就设计了3个按键供用户需要,任选一个按键,定义key_get()这个函数,用来判断按键是否被按下,若按下了,则通过uart_puts()函数把设定好的字符′c′通过UART口传给ZigBee发送出去。与此同时,执行BuzzerSound()这个求助警铃函数,通过定时器来控制声音。
结 语
老人求助终端不仅仅适用于家里的老人,对于行动不便的残疾人士甚至小孩也可使用该功能,价格相对便宜,有较广阔的市场应用前景;在ZigBee传输上面,已实现通过一对ZigBee进行信息传输,今后的研究中将进一步通过组网的形式将多个模块联合起来,以丰富其他功能,最终在生活中给人们带来更多便捷。
[1]周立功,王祖麟,陈明计,等.ARM嵌入式系统基础教程[M].2版.北京:北京航空航天大学出版社,2008.
[2]深圳市卓立恩科技有限公司.液晶模块使用说明书.[EB/OL].[2011-10].http://www.zolentech.com/.
[3]广州周立功单片机发展有限公司.LPC1700系列微控制器.[EB/OL].[2011-10].http://www.zlgmcu.com/.
[4]上海顺舟网络科技有限公司.顺舟科技SZ02无线数传设备产品手 册 V1.2[EB/OL].[2011-10].http://www.shuncom.com/.