资源描述
沈阳航空航天大学课 程 设 计 任 务 书课 程 名 称 计算机控制技术课程设计 院(系) 自动化学院 专业 自 动 化 班级 8407202 学号 200804072055 学生姓名 吕佳 课程设计题目 基于GSM短信模块的家庭防盗系统设计 课程设计时间 2011 年 7 月 11 日至 2011 年 7 月 22 日 课程设计内容及要求:指导教师 年 月 日负责教师 年 月 日学生签字 年 月 日目 录0. 前言11. GSM模块的基本原理12. 方案设计13. 硬件电路的工作原理(主要介绍重点电路的原理)23.1*模块23.1.1 *电路23.2*模块24. 软件编程25. 系统调试和结果分析26. 结论及进一步设想2参考文献(1级标题)3附录1 元件清单4课设体会5基于GSM短信模块的家庭防盗系统设计吕佳 沈阳航空航天大学自动化学院摘要:GSM短消息模块以其连接简单、费用低廉、覆盖范围广、实现方便等有点得到了广泛的应用。基于GSM短消息的家庭防盗系统的解决方案,利用GSM网络短消息业务实现了防盗系统与手机之间的通信,利用单片机的中断技术,及时的把家里的情况进行汇报;同时,通过给防盗系统发短信,可以进行相应的远程控制。经过测试,该系统经济,稳定性高,可靠性好等优点,具有广泛的市场推广价值。关键词:GSM模块;单片机;TC35i;可靠0. 前言1 引言GSM(Global System for Mobil Communications) :全球移动通讯系统俗称“全球通”,由欧洲开发的数字移动电话网络标准,它的开发目的是让全球各地共同使用一个移动电话网络标准,让用户使用一部手机就能行遍全球。GSM 系统有几项重要特点:网络容量大、手机号码资源丰富、稳定性强不易受干扰、信息灵敏、耗电量低。GSM系统集中了现代信源编码技术、信道编码、交织、均衡技术、数字调制技术、话音编码技术以及慢调频技术,同时在系统中引入了大量计算机控制和管理,因而保证了数据传输的正确性、安全性和可靠性。目前世界上主要的两大GSM 系统为GSM 900 及GSM1800,由于采用了不同频率,因此适用的手机也不尽相同。前者发展的时间较早,使用的国家较多, 后者发展的时间较晚,使用的国家也较少。物理特性方面前者频谱较低,波长较长,穿透力较差,但传送的距离较远,而手机发射功率较强, 耗电量较大,因此待机时间较短;而后者的频谱较高,波长较短,穿透力佳,但传送的距离短其手机的发射功率较小,待机时间则相应地较长。本文介绍了一种基于MCU(微控制单元)控制的智能家庭监控系统的硬件电路及软件设计。MCU通过UART(Universal Asynchronous Receiver Transmitter, 通用异步收发器)向TC35i发送AT指令,利用GSM网络模块的SMS短信业务,实现家庭安全智能监控与报警的自动控制等功能。系统通过有线网络,利用各种传感器对可能出现的煤气泄漏,火灾,家中门窗被打开等意外情况的检测,将信号传递给MCU,经过分析,给GSM发信号,通过GSM网络,达到通知主人的目的,使主人即使远在千里之外也能对家中发生的各种情况了如执掌;同时主人通过给系统发送短信命令,控制门、窗、煤气阀的开关状态,实现远程控制的目的。该系统使家庭生活更安全,更智能。1. GSM模块的基本原理西门子公司的TC35i模块是一个支持中文短信息的工业级GSM模块,工作在EGSM 900MHz和1800MHz双频段,可以传输语音和数据信号。TC35i的数据接口通过AT命令可双向传输指令和数据,可选波特率为300b/s115kb/s。它支持Text和PDU格式的SMS。它由供电模块(ASIC)、闪存、ZIF(零插拔力)连接器、天线接口等6部分组成。TC35i模块有40个引脚,通过一个ZIF连接器引出。这40个引脚可以划分为5类,即电源、数据输入/输出、SIM卡、音频接口和控制。图1 TC35i模块的结构原理图通过向串口发送AT指令,来实现对TC35i的发送短信和读短信等功能的控制,GSM AT 指令接口提供了一种移动台(MS)与数据终端设备(DTE)之间的通用接口。 在 MS 收到网络发来的短消息时, 能够通过串口发送给 DTE, 反过来, DTE可以向 MS 发送各种命令。更详细的资料可以参考GSM07.05 和 GSM07.07 规范。下表定义的是与 SMS 有关的常用 AT 指令。表1 TC35i的AT指令AT返回OK则证明系统正常工作AT+CSCA短信中心服务地址AT+CMGF优先信息格式,AT+CMGF=1执行text格式AT+CMGS发送短信息AT+CMGR读取短信息AT+CMGD删除短信息AT&F格式化2. 方案设计家庭防盗系统连接电路的基本组成如图2所示。图2 家庭防盗系统整体模块图本系统通过对家庭设施监控的设计,建立了自动报警的系统,实现了家庭信息采集自动部署,通过对家庭监控网中传感器网络的自组织与实现、智能化数据采集与传输,提出了基于GSM模块的防盗系统的解决方案,并通过实验得出了该系统的可靠性与可行性。根据设计要求,采用的方案如下。硬件部分实现对家庭系统得监控和控制,包括检测煤气超标的电路,检测窗户开关的电路,火灾监测电路,以及控制煤气阀,控制窗户开关的电路。其中包括传感器模块,单片机控制模块,以及控制煤气阀,驱动相应窗户的电机模块。软件部分实现对串口的初始化,发送初始化指令,检测短信息,检测报警,发送短信等功能。主要思想是,对TC35i模块初始化之后,检测短信息的内容,之后执行相应的功能,同时利用单片机中断技术,检测传感器输入单片机的信号,从而不占用单片机整体资源,达到快速相应传感器输入单片机的信号,真正起到时时响应信号,快速报警。3. 硬件电路的工作原理3.1单片机控制接口电路该模块实现的功能是单片机获取传感器信号,并向串口发送AT指令,GSM模块执行AT指令,同时控制驱动电机电路,实现有声报警。接口电路如图3所示。图3 单片机控制接口电路3.2监测煤气超标模块本设计选用电化学型传感器,电化学型气体传感器可分为原电池式、可控电位电解式、电量式和离子电极式四种类型。原电池式气体传感器通过监测电流来监测气体的体积分数,电量式气体传感器出现得早,通过测量离子极化电流来监测气体的体积分数,电化学式气体传感器主要的优点是检测气体的灵敏度高、选择性好。3.3监测防盗模块对于防盗传感器,本系统采用主动式红外对射传感器,它相对于传统的被动式热释红外传感器有以下优点:1、主动式队射红外传感器安装于门窗及一切需要设防的位置,采用多光束综合判断,当有一定体积的障碍物遮挡时,才被触发,极大的降低了传感器的误报;2、由于其安装在门窗等位置,使夜间能正常活动不受限制,这给用户提供了极大的夜间布防的可能。3.4火灾监测模块本系统采用离子式感烟探测器,作为本系统的烟雾敏感元件。离子式感烟探测器的工作原理是:有两个电离室串联,构成等效于电阻串联的偏置电路。其中一个是基本不与外界相通的内电离室,另一个是与外界相通的外电离室,(即检测电离室),两个电离室中均放入一片放射源镅24l(AM241),不断地放射出粒子,使两室内的气体都被部分电离。当有烟雾进入外电离室,因烟雾颗粒吸附一部分离子,使外室的离子电流减小等效于它的电阻增大,分压电位增高。当烟雾达到检测的限定浓度时,则电位增高到能触发开关电路(高电位触发型)而报警。3.5相应控制模块 控制窗户与电磁阀的相应模块,与相应的电机驱动电路控制电机的转动,实现传动功能。由于各个窗户不一样,在这里,这部分就不详细介绍了,本系统只在P0口给出相应的控制信号。4. 软件编程本系统的设计思想是通过单片机获取家庭里设置的传感器输出的信号,之后发送不同的AT指令,使GSM模块向目标手机发送不同的短信内容,实现报警的目的;同时,GSM模块将短信息的内容通过串口传递给单片机,单片机经过分析之后给出相应的驱动控制信号,实现远程控制的目的。4.1主程序设计系统开机之后,需要先对单片机的波特率、中断端口进行初始化设置。TC35i的数据接口采用串行异步收发,数据接口的配置为8位数据、1位停止位、无校验位、默认波特率为9600b/s。MCU设置完毕后,再对TC35i进行初试化,确定串口通信正常后,再进入检测端口的侦听以及等待控制信息的接收。主程序流程图如图4所示。图4 主程序流程图其中function是当检测接收到短信的时候,由读短信函数将function赋成相应的值,来执行相应的功能。如表2所示。表2 function值对应功能表function值对应功能0没有收到短信1收到关窗户短信2 收到关煤气短信其他 收到非控制短信息locale是当中断发生时检测相应的传感器信号,其功能如表3所示。表3 locale值对应功能表locale值对应功能0没有异常1窗户开2煤气泄漏3发生火灾其他 中断误触发max表示接收到的字符的个数,当收到的字符数超过30个的时候,表明收到短信,否则为其他指令,不予处理。4.2 TC35i的初始化程序系统上电后,单片机需要通过串行通信口对TC35i发送格式化命令、AT握手指令,如果TC35i能够回复字符串OK,说明TC35i的GSM模块以及串行通信接口都能够正常运行。然后再向TC35i发送设置text指令,设置短信模式为TEXT模式,最后设置SIM卡的中心号码,为后来执行发短信的功能做好准备。当发送指令之后,都要检测是否返回OK,如果长时间不返回OK,则表示系统没有正常运行,需要重新初始化,即跳转到start位置,start位置为程序开始位置。其程序流程图如图5所示。图5 初始化流程图4.3远程控制程序当TC35i接收到短信后,触发MCU的串口中断,然后由MCU读取短信内容,并对其进行分析处理。如果发现短信中包含合法的有效信息,将会对function赋值,将短信删除。如果单片机分析短信内容时,没有发现有效的控制指令,该条短信将会被直接删除当function大于0时,表示接收并提取了短信内容,其相应的功能如表2介绍,本程序就是判断function的值,并执行相应的功能函数,之后将function清零,以确保执行一次,其流程图如图6所示。图6 远程控制流程图4.4检测报警程序当单片机、TC35i初始化设置和执行远程控制程序完毕以后,系统进入检测报警状态。当侦测端口接收到各监控装置发送来的信号后,触发单片机的外部中断,然后进行对信号的分析处理,再向TC35i发送AT指令,控制其向目的手机发送预先设定好的报警短信息。检测报警程序通过检测locale的值,确定要执行的功能,locale的功能如表2介绍,当目标手机没有接收到短线,即发送短信结束时没有返回OK,则跳转到start位置,因为没改变locale,所以会继续执行发送相应短信功能,知道返回OK为止。其流程如图7所示。图7 检测报警流程图4.5 检测短信程序 检测收到短信内容的时候,要进行判断,如果收到的字符数小于30个,则说明不是接收到短信的内容,应继续发送读短信指令;当收到的字符数大于30个时,说明读取了短信的内容,执行读短信函数去提取短信息,从而给function赋予相应的值。其流程图如图8。图8 检测短信流程图4.6 读短信程序当检测到max大于30的时候,则读取短信,因为要控制的方面比较少,所以,我们只要检测第一个字母即可,若第一个字母为w,则表示发送的命令为window,即关窗指令,令function为1;若第一个字母为g,则表示发送的命令为gas,即关煤气阀指令,令function为2;若除了上述以外的情况,则令function为3,表示收到的为非控制短信息。之后将收到的短信删除。其流程图为图9所示。图8 读短信流程图4.7 发送指令程序发送指令是指发送相应指令的数组,之后延迟一小会,然后执行check_OK函数。其功能近似,流程图可以总结为图9所示的内容。图9 读短信流程图4.8 检查OK程序每当发送指令函数执行之后,GSM模块若成功执行,则返回OK,本程序进行OK的检测,若长时间检测不到OK,则应该跳出程序,进行格式化,然后重新检测。该子程序的思想就是设定一个check变量,初始为0,当查询收到OK,则立即跳出,将check置为1,否则就查询65536次,若仍未收到,就跳转到start处,进行初始化。其程序流程如图10所示。 图10 检查OK流程图4.9 外部中断处理程序当发生外部中断时,要处理是哪个传感器出触发的中断,因此当进入中断函数的时候,应进行判断相应接传感器引脚的高低电平,之后将locale置为相应的值,以实现表3所述的功能。其流程如图11。图11 外部中断处理程图5. 系统调试和结果分析调试=测试+代码完善,也就是说调试的主要手段是先通过测试发现问题并对其进行定位,从而以之为依据对代码进行完善。从时间上分调试方法分为开发期调试和运行期调试。开发期调试是指在开发期间为每个功能模块甚至小到每个接口搭建运行环境以对它们进行功能性测试,并通过测试完善代码,达到调试的目的。开发期调试保证当前工作的有效性,确保之前所写的代码正确可用,从而能无所顾虑地迅速投入下一步工作。运行期测试基本上就指集成测试,可以是整个系统的集成测试,也可以是多个模块组合测试,比如单独测试服务器端系统或者手机端系统。这样的测试主要是功能性测试,用于检测系统是否实现了预期的功能,并从测试中发现重大Bug。测试的时候除了观察程序运行情况外,往往还需要通过收集测试数据一一验证预期的目标是否达到。对短消息安全系统服务器端来说,需要在运行期测试的主要功能模块有短消息引擎和安全服务模块。在测试短消息引擎时,需要测试主要接口是否能正常工作,是否能正确收发短消息,是否能正确组织和解析短消息。首先经过串口调试助手,向GSM模块发指令,检测返回的内容,根据返回的内容编写单片机程序,实现收发短信的功能。6. 结论及进一步设想本文所做的主要工作是:围绕“单片机控制GSM模块收发短信”这一热点课题,阐述了基于GSM短消息的家庭防盗系统的设计方案、开发方法和开发过程,介绍了主要的器件GSM模块TC35i的功能特点,讨论了本设计的关键技术,简单介绍了GSM模块的工作原理、短信息业务等,包括用AT指令控制TC35i模块、实现text功能的应用。基于GSM模块的家庭防盗系统结构简单、价格低廉、通用性、实用性强、能够直接或者在稍作改造后用于诸如工厂、煤矿等需要远程自动控制的场合。具有一定的社会和经济意义。系统在实际调试中还有点问题存在,因此要继续进行程序结构优化,使系统运行可靠。本设计只是家庭防盗报警中的一小部分,目前很多公司都在致力于智能家庭防盗的研究,智能家庭防盗的发展趋势如下:(1)安全防范:智能安防可以实时监控着非法闯入、火灾、煤气泄露、紧急呼救的发生。一旦出现警情,系统会自动向中心发出报警信息,同时启动相关电器进入应急联动状态,从而实现主动防范。(2)消费电子产品的智能控制:例如可以自动控制加热时间、加热温度的微波炉,可以自动调节温度、湿度的智能空调,可以根据指令自动搜索电视节目并摄录的电视机/录像机等等。(3)交互式智能控制:可以通过语音识别技术实现智能家电的声控功能;通过各种主动式传感器(如温度、声音、动作等)实现智能信息家电的主动性动作响应。用户还可以自己定义不同场景智能信息家电的响应。例如你可以在电话里告诉智能家居控制器:“晚上5点把后门的灯打开,并把空调设定到25度。”随着智能控制技术的发展,我国将全面普及智能家庭网络系统和产品,开始走进普通居民的家居中,智能家庭防盗将不再遥不可及。参考文献1 刘复华. 单片机及其应用系统. 北京:清华大学出版社,19922 王书伟,张茜萍. 基于AT89S52与TC35i实现的短信息处理系统. 网络与通信,2007,第三期3 李广弟. 单片机基础 M .北京:航空航天大学出版社 ,2001: 56 - 804 张光喜. Siemens TC35i短信收发模块的设计. 一线技术,20105 梅烨,杜清珍. TC35i在远程压力监控系统中的应用. 自动化仪表第 27卷第 12期 2006年 12月6 仵博,刘兴,东吴敏. 基于GSM的通用远程报警控制器的研制. 计算机工程与应用,2007, 43( 8)7 张珊,刘立柱.基于 W77E58 单片机的通用GSM无线传真终端实现J.微计算机信息,2005,3:87- 888 曾武玲. 基于短消息网关的短消息增值应用J. 微电子技术, 2002 (3): 14218.9 潘斌,郭红霞. 短信收发模块 TC35i 的外围电路设计J.单片机与嵌入式系统应用, 2004 (7) : 20224.附录1 源程序 #include#define ENTER 0x0dsbit window = P26;sbit gas = P27;sbit beep = P23;sbit fire = P25;unsigned char code AT_AT=AT;unsigned char code AT_TEXT=AT+CMGF=1; /设置为text模式发送unsigned char code AT_CENTER_NUM=AT+CSCA=+8613010240500;/中心号码unsigned char code AT_TARGET_PHONE=AT+CMGS=18809843037;/目标手机号unsigned char code AT_READ_MESSAGE=AT+CMGR=1;/读取第一条短信命令unsigned char code AT_DELETE_MESSAGE=AT+CMGD=1;/删除短信命令unsigned char code AT_RESET=AT&F;/格式化命令unsigned char code AT_HOST_WINDOW=window;unsigned char code AT_HOST_GAS=gas;unsigned char code AT_MESSAGE_WINDOW=windows open;unsigned char code AT_MESSAGE_GAS=gas leakage;unsigned char code AT_MESSAGE_FIRE=fire;unsigned char RS_TC87; /接收数组unsigned char max=0;unsigned char i_recieve=0; /接收字节的个数unsigned char datatemp;bit flag = 2;bit check = 0; unsigned char p1=0;unsigned char function;/远程控制-1:关窗,2:关煤气unsigned char locale;/当地状态unsigned int number;/延迟计数void delay(unsigned char x)unsigned char i;for(; x 0; x-)for(i = 110; i 0; i-);/发送一个字节/void send(unsigned char x)ES = 0;SBUF = x;while(!TI);TI = 0;ES = 1;/检测返回OK/void check_OK(void)unsigned char i; check = 0;while(-number)if(RS_TCmax-3 = O) & (RS_TCmax-2 = K)check = 1;i_recieve = 0;number = 1; max = 0;/delay(1);for(i = 0; i 15; i+);/初始化测试/void test_TC(void)unsigned char i;for(i = 0; i 2; i+)send(AT_ATi);send(ENTER);check_OK();/设置text模式/void set_text()unsigned char i;for(i = 0; i 9; i+)send(AT_TEXTi);send(ENTER);check_OK();/设置中心号码/void set_center_number()unsigned char i;for(i = 0; i 22; i+)send(AT_CENTER_NUMi);send(ENTER);check_OK();/发送短信/void send_message_window(unsigned char n)unsigned char i;for(i = 0; i 19; i+)send(AT_TARGET_PHONEi);send(ENTER);delay(255);for(i = 0; i n; i+)send(AT_MESSAGE_WINDOWi);delay(255);send(0x1A);send(ENTER);check_OK();void send_message_gas(unsigned char n)unsigned char i;for(i = 0; i 19; i+)send(AT_TARGET_PHONEi);send(ENTER);delay(255);for(i = 0; i n; i+)send(AT_MESSAGE_GASi);delay(255);send(0x1A);send(ENTER);check_OK();void send_message_fire(unsigned char n)unsigned char i;for(i = 0; i 19; i+)send(AT_TARGET_PHONEi);send(ENTER);delay(255);for(i = 0; i n; i+)send(AT_MESSAGE_FIREi);delay(255);send(0x1A);send(ENTER);check_OK();/删除短信/void delete_message()unsigned char i;for(i = 0; i 9; i+)send(AT_DELETE_MESSAGEi);max = 0;i_recieve = 0;send(ENTER);send(ENTER);send(0x0a);check_OK();/发送读短信命令/void order_read_message()unsigned char i;for(i = 0; i 9; i+)send(AT_READ_MESSAGEi);send(ENTER);send(ENTER);send(0x0A);i_recieve = 0;max = 0;/读短信/void read_message()switch(RS_TC74)case w:function = 1;break;case g:function = 2;break;default :function = 3;break;delete_message();/格式化/void reset()unsigned char i;flag = 1;for(i = 0; i 30 表示接收到的内容是短信的内容P1 = 0x05;switch(function)case 1: /-控制窗户-P1 = 0x50;beep = 0;P0 = 0xd0; /1101 0000function = 0;break;case 2:/-控制煤气阀-P1 = 0x55;beep = 0;P0 = 0xe0;/0111 0000function = 0;break;default:P0 = 0xf0;function = 0;break; else if(locale)P1 = 0x06;switch(locale)case 1:/-窗户开-send_message_window(6);if(!check)goto start;locale = 0;break;case 2:/-煤气泄漏-send_message_gas(3);if(!check)goto start;locale = 0;break;case 3:/-发生火灾-send_message_fire(4);if(!check)goto start;locale = 0;break;default :break;else if(max 40)P1 = 0x04;read_message();if(!check)goto start;void int0(void) interrupt 0if(!window)locale = 1;else if(!gas)locale = 2;else if(!fire)locale = 3;beep = 0;void uart(void) interrupt 4if(RI)RI = 0;ES = 0;datatemp = SBUF;RS_TCi_recieve = datatemp;if(i_recieve max)max = i_recieve;i_recieve +;ES = 1;课设体会首先我要感谢乔志华老师给了我这次学习GSM模块的机会,也让我学到了单片机的很多在课堂上学不到的东西,尤其是有关单片机串口通信方面的知识。经过这次课程设计,让我体会到了实际动手的重要性,在遇到问题的时候,多看论文,多看程序,学习人家的思想以及解决问题的方法。也学会了怎样去阅读程序,怎样去规范自己的程序,同时还有创新和编程技巧。在课程设计期间,乔老师耐心的给我指导有关编程方面的知识,同时耐心回答了我提出的古怪的问题。我们还一起讨论了怎么去站在系统的角度去考虑问题,怎么样先去从整体提出解决方案,然后再各个击破,真正做到了用软件工程的思想去解决问题。采用自顶向下的思想去解决问题,不仅想问题的思路会发生变化,会考虑单独从技术触发所不能考虑的问题,而且运用软件工程的思想,考虑的问题更全面,效率更高。虽然我这次课程设计没有应用软件工程从整体考虑问题,但是通过这次课程设计,使我充分的了解到软件工程思想的重要性。同时也感到,虽然有了软件工程的思想,但是如果不加以实际的运用,很难将自己的理论基础转化为实际有力的解决问题的能力,在理论联系实际的方面,还要加强锻炼和学习。2011年7月 21日完
展开阅读全文