《家庭安防远程监控系统设计ppt培训课件》由会员分享,可在线阅读,更多相关《家庭安防远程监控系统设计ppt培训课件(38页珍藏版)》请在金锄头文库上搜索。
1、嵌入式系统原理与设计家庭安防远程监控系统设计,本节提要,1,2,3,功能需求分析及总体设计,系统硬件设计,软件设计,8.1 功能需求分析及总体设计,家庭安防监控系统主要是通过远程安防监控器实现对家庭智能化系统中各种与信息相关的通讯设备、家用电器和家庭保安装置进行集中的或异地的控制和家庭事务性管理,实现对家庭中重要设备进行远程信息查询、安防报警、远程监控等功能。,图8-1家庭安防系统总体结构图,整个安防监控器的电路框图如图8-2所示,由电源电路、人机交互模块、主控模块、移动通信模块、设备控制模块、数据采集模块、PSTN模块、语音录放模块等电路组成。,本节提要,1,2,3,功能需求分析及总体设计,
2、系统硬件设计,软件设计,8.2系统硬件设计,系统功能较多,考虑系统对实时性、功耗、成本、扩展性等要求,安防监控器采用S3C44B0X作为处理器,采用双音多频解码集成电路芯片MT8888和ISD4004语音芯片实现报警器的主要功能,PSTN模块主要由主控芯片电路、语音模块电路、振铃检测电路、摘挂机电路、双音频信号收发器电路、输出放大电路和输入放大电路等部分组成。,表8-1 S3C44B0X主要端口分配表,监控器所涉及的关键技术主要在以下几个方面: 1.DTMF(Dual Tone Multi Frequency)收发芯片MT8888CE的电路设计; 2.基于语音芯片ISD4004的录放音电路设计
3、; 3.电话控制模块家电控制语音提示信息的存放和寻址。本章主要对这几个模块的电路设计进行介绍,其它电路如电源、串口、键盘、LCD等电路设计参考第五章。,8.2.1振铃检测电路设计,8.2.2 摘挂机电路设计,8.2.3电话DTMF收发器电路设计,8.2.4语音模块设计,8.2.5 GSM通信模块,本节提要,1,2,3,功能需求分析及总体设计,系统硬件设计,软件设计,8.3软件设计,要实现家电(空调、电视、等)的远程开、关控制,家电状态的远程查询,必须对设备进行编号,设计规范的查询控制的命令格式,才能进行正确地监控家电设备。在一般家庭中电器类型有以下几种: 1:空调 2:电视 3:热水器 4:灯
4、开关 5:煤气监测器 6:火焰监测器 设备的监控命令设计为如下格式:监控命令格式:命令类型+命令分类+设备序号+设备状态。命令类型主要分为查询命令和控制命令两种;命令分类是指查询命令中的查询分类,控制命令中的分类,如0表示关、1表示开;设备序号是指家电设备的编号;设备状态是在查询和控制动作的返回结果,具体见表8-2。,表8-2 监控命令格式,根据系统功能将任务划分为GSM短信查询控制任务、报警任务、电话查询控制任务、键盘设置等任务,本章主要针对前3个任务进行设计分析,编程内容包括: 主函数设计 报警任务 GSM短信查询控制任务 PSTN电话查询控制任务 串口中断服务程序 外部中断0服务程序,任
5、务状态切换图,8.3.1 主程序设计,/*任务优先级定义*/ #define Phone_Prio 7 #define GSM_Prio 6 #define Alarm_Prio 5 /*任务堆栈定义*/ #define STACKSIZE 50 OS_STK Phone_StackSTACKSIZE=0, ; /Phone_Task堆栈 OS_STK GSM_StackSTACKSIZE=0, ; /GSM_Task堆栈 OS_STK Alarm_StackSTACKSIZE=0, ; /Alarm_Task堆栈 /*任务定义*/,/*任务定义*/ void Phone_Task(void
6、*Id); /GSM_Task void GSM_Task(void *Id); /GSM_Task void Alarm _Task(void *Id); /GSM_Task /*事件定义*/ OS_EVENT *E_GSM_Mbox; /申明短信消息事件 typedef struct gsm_cmd /定义命令参数消息结构INT8U phone_no14; /手机号码INT8U dev_no; /设备编号INT8U cmd_type; / instruction命令类型INT8U cmd_class; /命令种类INT8U dev_status; /设备状态 *GSM_CMD;,struc
7、t GSM_CMD GSM_Command; /定义命令短信消息 / OSMboxPend(E_GSM_Mbox,0,void main() ARMTargetInit(); /开发板初始化 OSInit(); /操作系统初始化 /其他初始化操作 OSTaskCreate(Phone_Task,(void*)0,(OS_STK*),8.3.2报警任务,系统报警任务功能是指系统定时查询各个设备的状态,并与设定的报警值进行比较,如果超出设定值则通过通信模块进行报警。,void Alarm_Task(void *Id) INT8U i,j,k=0; INT8U DeviceStatus=0; INT
8、8U *msg; for(;) for(i=0;idev_no=i;if(DeviceStatus Devicei.UpStatus) /如果状态超出设定范围,则报警。for(j=0;jmobile_no=MobilePhonej; GSM_Command -dev_status = DeviceStatus; SendMessage(GSM_Command); msg=OSMboxPend(E_GSM_Mbox, 2000, /如果在规定时间内有短信回复,跳出循环 ,if(msg=NULL) /当短信没有回复,则认为短信报警信息失败,电话报警 while(k2) for(j=0;jmsg_d
9、ata); /解析短信内容,获取有效控制或查询命令参数 GSM_Command -phone_no= msg-phone_no; GSM_Command -dev_no=data0; /保存短信参数 GSM_Command -dev_type=data1; GSM_Command -dev_class=data2; OSMboxPost(E_GSM_Mbox,GSM_Command); /发送短信消息邮箱,激活GSM任务 ,8.3.4 电话查询控制任务,该任务负责有线电话线路的监听,将获取的数据放入消息数组中。电话查询控制是通过远程电话根据监控器提示音进行按键输入控制或查询命令来实现的。电话振
10、铃检测与外部中断0相关联,如果出现打入电话,可采用在中断服务程序中加入信号量事件来传递接入电话信号。,void Phone_Task(void *Id) char * password; INT8U i; INT8U j=1; INT8U data3; INT8U CmdType=0; INT8U CmdClass =0; INT8U DeviceNo=0; INT8U DeviceStatus =0; for(;) OSSemPend (E_PConnect_Sem , 0 , /播放提示输入密码错误 ,i+; if(!strcmp(password, PASSWORD) for(i=0;i
11、3;i+)PlayRecord(0,InputInstructioni); /播放提示录音/挂机 ,外部中断0中断服务程序负责监听电话和接通电话,通过信号量来通知任务电话接通信息。中断服务程序如下: void ConnectPhone_ISR() rGPF=|0x1;/设置端口GPF0,使继电器K1导通,接通电话 OSSemPost(E_PConnect_Sem); /发送信号量,激活电话任务 void ReadPhone_ISR() unsigned char data; StopPlay(); /中断录音播放 data=DTMF_Read(); /读取按键值OSMboxPost(E_PRe
12、ad_MBox, /发送按键消息,激活电话任务 ,8.3.5 其他函数说明,1. 设备相关函数 设备状态查询函数:unsigned char DeviceCheck(unsigned char deviceno) 设备状态控制函数:unsigned char DeviceControl(unsigned char deviceno, unsigned char cmdclass); 2. 短信相关函数 短消息发送函数:void SendMessage(unsigned char *message) 短消息读取函数:void ReadMessage(void * msg) 短消息解析函数unsi
13、gned char * MessageAnalyze(char *message),3. 电话相关函数 电话拨号函数:unsigned char CallPhone(unsigned char *PhoneNo) 电话摘机函数:void ConnectPhone() 电话挂机函数:void StopPhone() 远端按键读函数:unsigned char DTMF_Read(); 4. 录音相关函数 播放录音函数:void PlayRecord(unsigned char device_no, unsigned char record_no) 停止放音函数:void StopPlay(void);,