摘要:为了满足在一些场所的溢水监测需求,利用GSM网络的短信业务实现水浸报警并采用一种算术平均值滤波的软件数字滤波方法抑制电磁干扰。硬件设计中,系统以MSP430单片机为控制器核心,以TC35模块为短信无线收发器,并与水浸检测模块构成了系统的硬件平台。软件设计中,单片机通过UART串口向TC35模块配置AT指令来控制短信的接收与发送,采集水浸检测模块的电压值并存储到单片机寄存器中作为触发报警的条件。实现了短信方式的水浸报警,控制系统的水浸灵敏度调节,添加或删除用户手机号码,以及自定义报警提示内容。系统满足了溢水情况的短信报警需求,具有控制灵活、远程报警的特点。
关键词:GSM;水浸报警;MSP430;软件滤波
0 引言
水浸报警系统多用在仓库、图书馆、住宅等需要在有积水时报警的场所。如在待检测的液体不同等一些特殊的应用上,则需要有可调节灵敏度的报警系统;有的报警系统既要满足现场报警又要满足远程无线报警。
GSM(Global System for Mobile Communications)网络的应用多集中在GSM手机通话和短信业务,短信息服务作为GSM网络的一种基本业务,能够在移动终端问发送和接收短消息,已得到越来越多的系统运营商和系统开发商的重视。现在越来越多的应用产品缩短了人与物之间沟通的距离,对现场的感知能力得到了极大的延伸。无论信道是否拥塞,短信业务提供了稳定的信息传输,因此保证了报警系统的稳定可靠。
本文设计的报警系统应用于生物实验室的溶液溢出检测,实验人员可以通过短信控制报警系统的启动与停用,配置滤波模式,添加新用户以及自定义报警短信内容。当溶液溢出时,报警系统可以及时发送报警短信告知指定的实验人员。短信控制方式充分利用GSM网络的便利从而节省了系统的硬件资源,满足了实验室对于系统的低功耗、体积小等需求。
1 系统硬件结构
1.1 系统结构
报警系统如图1所示,主要由单片机系统模块,GSM模块以及检测模块3部分组成。单片机采用TI公司的MSP430F5438;GSM模块采用西门子公司的TC35;检测模块采用自制的电路板。
1.2 TC35模块
TC35模块是一款双频900 MHz/1 800 MHz的GSM网络调制解调器。TC35模块与外部处理器之间用RS 232串口连接,可以实现在GSM网络应用平台的语音和数据的无线传输。TC35模块的工作电压在3.3~5.5 V之间,发射功率1~2 W。TC35处理器包含了全部GSM协议栈,以UART接口方式与终端设备通信。应用TC35模块开发的系统使用AT指令控制。
1.3 MSP430F5438单片机
MSP430系列单片机是美国德州仪器(TI)公司推出的16位超低功耗单片机,采用精简指令集(RISC)结构,电源电压1.8~3.6 V供电。芯片内集成了丰富的外设,如定时器、比较器、ADC和大量的接口单元,便于应用产品的设计开发。本文采用的MSP430F5438型号单片机,程序存储空间256 KB,16 KB SRAM,工作于16 MHz外部时钟,83个I/O,4个可配置USART以及16通道的12位ADC片内外设。
1.4 浸水检测模块设计
将检测模块的两根导线置于待检测水浸的区域中,如图2所示,点A与ADC的输人端相连,导线在垂直方向的相对高度不同,可以检测不同高度的水位进行报警。当出现水浸时导线浸没在水中形成通路导电,R2为水浸等效电阻。R1的选取应遵循几个原则:首先,保证R1的分压要高于环境干扰电压和ADC采样精度。
实测自来水等效电阻R2为300 kΩ,ADC参考电压2.5 V,采样精度为0.6 mV,环境噪声干扰大约10 mV,因此R2的分压应大于10 mV,可以得出R1的选取阻值应大于400 Ω。其次,应保证ADC输入电阻不要太大。电阻R1//R2越大,ADC采样时间越长,采样时间满足:
tsample>(Rs+2 kΩ)ln213×40 pF+800 ns (1)
式中Rs为输入电阻,当R1等于100 kΩ时,tsample>36μs。
2 软件设计
2.1 软件流程
软件流程如图3所示,主要分为以下几部分:单片机及TC35初始化,滤波检测,发送报警短信,接收短信并解码处理,低功耗模式。
2.2 AT指令集
AT指令集是GSM模块与外部处理器之间的通信协议。用户可以通过AT指令进行呼叫、短信、电话本、数据业务、传真等方面的控制。所有单片机对TC35的控制都是通过UART串口发送AT指令完成的,AT指令的发送要按照规定的语法格式,每一个命令行的开始都要以AT(或at)开头,结尾要以<CR>结束。发送AT指令后通常会受到返回字符,字符格式为<CR><LF><返回字符><CR><LF>。<CR>是回车字符(ASCII码为16进制0d,即0x0d),<LF>是换行字符(ASCII码为16进制0a,即0x0a)。系统用到的AT指令见表1。
2.3 初始化过程
初始化过程分为单片机初始化和TC35初始化。单片机初始化包括关闭看门狗,系统时钟初始化,端口(Port)初始化,UART串口初始化和ADC模块初始化;TC35初始化包括发送AT指令“AT&F”,“AT+CMGF=1”,“AT+CNMI=3,1,0,2”,“AT+CMGD=1”。
单片机的初始化系统时钟为16 MHz,采用外部时钟源。端口初始化包括I/O的输入输出方向配置,初始化端口值配置。当从单片机系统接收串口数据时,TC35模块可以从300 b/s~115 Kb/s自适应传输速率。但是,单片机系统不能自适应TC35的串口速率。因此,单片机与TC35模块应设置同一传输速率,如单片机系统的UART串口设置9 600 b/s。UART串口选择移位寄存器低位优先(LSB first),8位数据位,1位停止位,UART同步模式,传输速率为9 600 b/s。ADC参考电压选择2.5 V。TC35初始化在单片机与TC35模块之间要通过AT指令进行配置,发送“AT+CMGF=1”设置短信格式为TEXT,发送“AT+CNMI=3,1,0,2”设置新短信提示,当TC35收到新短信后主动向单片机报告并显示存储地址,如“+CMTI:“SM”,1”。发送“AT+CMGD=1”删除地址1的短信,每次TC35使用时都要清空地址1的短信,当接收到新短信时,可以将短信存储到地址1的位置,解码短信后也要执行删除短信的命令。需要说明的是,一个已注册网关的SIM卡不需要设置短信中心号码。
2.4 接收短信并解码
TC35初始化完成后,用户可以发送手机短信到报警系统的SIM卡号码。配置系统的状态以控制报警器处于启动和停止;配置软件滤波模式以调节报警灵敏度;更新用户列表将报警短信发送给不同用户;自定义报警短信内容,用户可以根据实际情况定义报警提示短信。用户通过手机发送短信改变报警系统相关配置,当GSM模块接收到短信后,向单片机发送“+CMTI:“SM”,1”,单片机接收后向GSM模块发送读短信指令“AT+CMGR=1”,1为GSM模块存放短信的地址。GSM随后将接收到的用户短信发送给单片机解码,接收格式为:
“<C><LF>+CMGR:”REC UNREAD“,”+86138xKXXXXXX“,,”11/11/14,08:46:41+32“<CR><LF>F1<CR><LF>OK”。
单片机程序通过查找“OK”判断短信已经接收完毕,接下来可以通过检索引号的个数确定短信内容的位置并将短信息“F1”读到寄存器read_sm中,F后面的16进制数值作为相应的滤波模式使能。
本文中报警系统与用户的协议规定:所有发送短信要确保只有大写英文字母A~Z,阿拉伯数字0~9,及空格组成。用户可以通过手机发送短信改变报警系统的滤波模式,添加新用户手机号码以及自定义报警短信内容。如发送“1M138xxxxxxxx”到报警系统的SIM卡号码中,即可设置一个新用户手机号码。要添加第二条用户手机号码可以发送“2M132xxxxxxxx”。GSM模块接收到短信后,通过单片机向GSM模块发送相应的AT指令,即可将短信读入到单片机的寄存器中,通过短信解码,判断用户想实现哪种功能后,如果判断是“1M”,将号码存储到发送短信的目标号码表中,当下一次发生水浸时,则发送报警短信到全部目标用户手机号码中,实现短信群发报警;如果判断是“C”,则将其后的
字符作为自定义报警短信的内容;如果判断是“S”,则将其后的字符做为系统状态的启动或停止使能,解码流程如图4所示。
2.5 滤波检测
ADC模块集成在MSP430单片机中,按一定的周期采集导线两端的电压值,转换后的数字信号经过软件滤波后判断是否达到触发电压下限,系统采用算术平均值滤波,将N次的采样值求和后除以采样次数,得到的结果与系统设定的触发电压下限进行比较,如果滤波后达到触发电压下限则触发报警,否则继续采集电压并滤波。用户可根据实际的情况通过发送手机短信改变滤波参数,如触发电压下限值,采样周期和采样次数。为了便于用户操作,将滤波参数定义为16中不同的模式,见表2。
2.6 发送报警短信
GSM模块中应插入已经注册的SIM卡。水浸发生后,触发蜂鸣器声响报警和短信报警,TC35初始化成功后,发送报警短信需要3个步骤:首先,单片机发送配置目标手机号码“AT+CMGS=138xxxxxxxx”;然后,发送TEXT格式的文本信息“WARNING”,最后,发送16进制数1a。通过这三个步骤可以将“WARNING”发送给用户手机。
单片机发送AT指令后TC35模块会返回响应字符,以配置目标号码为例,说明如何实现软件设计。单片机发送“AT+CMGS=138xxxxxxxx”后,TC35模块收到后返回“>”字符表明目标号码配置成功,单片机程序判断是否收到“>”字符决定发送TEXT文本。为了在配置失败时不至于让程序死循环,需要设置一个计数器让程序跳出。
发送报警短信程序:
3 测试结果
向RS 232串口发送“AT&F<CR><LF>”指令,ASCII码16进制表示为::‘41’,‘54’,‘26’,‘46’,‘0D’,‘0A’,由于RS 232电平为负逻辑,转换为二进制反码为:1011_1110,1010_1011,…。如图5所示,示波器水平方向代表时间(单位:μs),每格代表100 μs;垂直方向代表电压值(单位:mV),每格代表2 000 mV。显示第一个高电平和最后一个低电平分别是起始位和停止位,之间为8位数据0111_1101,由于串口为低位优先(LSB),所以对于第一个二进制数据为1011_1110,与发送的串口指令相符。
为了比较直观地调试验证报警系统的功能,设计时充分利用了单片机系统模块的8位数码管。如图6所示,“3111”指示程序运行情况正常,右起前两位“05”指示当前滤波模式为05,右起第3位“1”指示当前已接收到新短信共1条,右起第4位“2”指示当前已发送报警短信2条。
4 结语
文中的报警系统,以GSM为网络核心,以低功耗的单片机芯片MSP430为处理器核心,设计了一款用于水浸检测的报警系统。通过生物实验室的测试,系统在实验室环境中实现了远程监测和灵活配置水浸灵敏度。在本系统的基础上增加短距无线通信功能并设计多节点的无线通信协议,将使系统具有更广阔的应用空间。