第8章家庭安防遠程監(jiān)控系統(tǒng)設(shè)計_第1頁
第8章家庭安防遠程監(jiān)控系統(tǒng)設(shè)計_第2頁
第8章家庭安防遠程監(jiān)控系統(tǒng)設(shè)計_第3頁
第8章家庭安防遠程監(jiān)控系統(tǒng)設(shè)計_第4頁
第8章家庭安防遠程監(jiān)控系統(tǒng)設(shè)計_第5頁
已閱讀5頁,還剩33頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

嵌入式系統(tǒng)原理與設(shè)計

第八講家庭安防遠程監(jiān)控系統(tǒng)設(shè)計

本節(jié)提要123功能需求分析及總體設(shè)計系統(tǒng)硬件設(shè)計

軟件設(shè)計

8.1功能需求分析及總體設(shè)計

家庭安防監(jiān)控系統(tǒng)主要是通過遠程安防監(jiān)控器實現(xiàn)對家庭智能化系統(tǒng)中各種與信息相關(guān)的通訊設(shè)備、家用電器和家庭保安裝置進行集中的或異地的控制和家庭事務(wù)性管理,實現(xiàn)對家庭中重要設(shè)備進行遠程信息查詢、安防報警、遠程監(jiān)控等功能。圖8-1家庭安防系統(tǒng)總體結(jié)構(gòu)圖整個安防監(jiān)控器的電路框圖如圖8-2所示,由電源電路、人機交互模塊、主控模塊、移動通信模塊、設(shè)備控制模塊、數(shù)據(jù)采集模塊、PSTN模塊、語音錄放模塊等電路組成。主控模塊PSTN模塊語音錄放模塊移動通信模塊數(shù)據(jù)采集模塊人機交互模塊設(shè)備控制模塊電源模塊本節(jié)提要123功能需求分析及總體設(shè)計系統(tǒng)硬件設(shè)計軟件設(shè)計

8.2系統(tǒng)硬件設(shè)計系統(tǒng)功能較多,考慮系統(tǒng)對實時性、功耗、成本、擴展性等要求,安防監(jiān)控器采用S3C44B0X作為處理器,采用雙音多頻解碼集成電路芯片MT8888和ISD4004語音芯片實現(xiàn)報警器的主要功能,PSTN模塊主要由主控芯片電路、語音模塊電路、振鈴檢測電路、摘掛機電路、雙音頻信號收發(fā)器電路、輸出放大電路和輸入放大電路等部分組成。表8-1S3C44B0X主要端口分配表端口號連接端口功能描述端口號連接端口功能描述GPF0K1繼電器K1控制,接通電話通道nOEMT8888/RDMT8888讀控制引腳GPF1K2繼電器K2控制,選擇播放錄音通道nWEMT8888/WRMT8888寫控制引腳GPF2K3繼電器K3控制,選擇錄音通道ExINT0D4A74LS123/Q電話振鈴輸入檢測GPF3ISD4004RARISD4004行地址時鐘引腳ExINT1D4B74LS123/QMT8888按鍵輸入信號檢測GPF4ISD4004/SSISD4004片選ExINT2ISD4004/INTISD4004中斷引腳D0-D3MT8888D0-D3MT8888數(shù)據(jù)引腳SIOCKISD4004SCLKISD4004時鐘引腳A1MT8888RS0MT8888地址選擇引腳SIOTxDISD4004MOSIISD4004數(shù)據(jù)輸入引腳nGCS3MT8888/CSMT8888片選引腳SIORxDISD4004MISOISD4004數(shù)據(jù)輸出引腳監(jiān)控器所涉及的關(guān)鍵技術(shù)主要在以下幾個方面:1.DTMF(DualToneMultiFrequency)收發(fā)芯片MT8888CE的電路設(shè)計;2.基于語音芯片ISD4004的錄放音電路設(shè)計;3.電話控制模塊家電控制語音提示信息的存放和尋址。本章主要對這幾個模塊的電路設(shè)計進行介紹,其它電路如電源、串口、鍵盤、LCD等電路設(shè)計參考第五章。8.2.1振鈴檢測電路設(shè)計8.2.2摘掛機電路設(shè)計8.2.3電話DTMF收發(fā)器電路設(shè)計8.2.4語音模塊設(shè)計8.2.5GSM通信模塊主控制器串口DC電源GSM模塊SIM本節(jié)提要123功能需求分析及總體設(shè)計系統(tǒng)硬件設(shè)計

軟件設(shè)計

8.3軟件設(shè)計要實現(xiàn)家電(空調(diào)、電視、等)的遠程開、關(guān)控制,家電狀態(tài)的遠程查詢,必須對設(shè)備進行編號,設(shè)計規(guī)范的查詢控制的命令格式,才能進行正確地監(jiān)控家電設(shè)備。在一般家庭中電器類型有以下幾種:1:空調(diào)2:電視3:熱水器4:燈開關(guān)5:煤氣監(jiān)測器6:火焰監(jiān)測器設(shè)備的監(jiān)控命令設(shè)計為如下格式:監(jiān)控命令格式:命令類型+命令分類+設(shè)備序號+設(shè)備狀態(tài)。命令類型主要分為查詢命令和控制命令兩種;命令分類是指查詢命令中的查詢分類,控制命令中的分類,如0表示關(guān)、1表示開;設(shè)備序號是指家電設(shè)備的編號;設(shè)備狀態(tài)是在查詢和控制動作的返回結(jié)果,具體見表8-2。表8-2監(jiān)控命令格式命令類型命令分類設(shè)備序號設(shè)備狀態(tài)30查詢命令1控制命令1開空調(diào)(控制1)1空調(diào)1開0關(guān)空調(diào)(控制、查詢2)0關(guān)1開電視(控制)2電視1開0關(guān)電視(控制、查詢)0關(guān)1開熱水器(控制)3熱水器1開0關(guān)熱水器(控制、查詢)0關(guān)1開燈(控制)4燈開關(guān)1開0關(guān)燈(控制、查詢)0關(guān)1開煤氣開關(guān)(控制)5煤氣監(jiān)測器1濃度高0關(guān)開煤氣開關(guān)(控制、查詢)0無煤氣1開噴水開關(guān)(控制)6火焰監(jiān)測器1有火焰0關(guān)噴水開關(guān)(控制、查詢)0無火焰

根據(jù)系統(tǒng)功能將任務(wù)劃分為GSM短信查詢控制任務(wù)、報警任務(wù)、電話查詢控制任務(wù)、鍵盤設(shè)置等任務(wù),本章主要針對前3個任務(wù)進行設(shè)計分析,編程內(nèi)容包括:主函數(shù)設(shè)計報警任務(wù)GSM短信查詢控制任務(wù)PSTN電話查詢控制任務(wù)串口中斷服務(wù)程序外部中斷0服務(wù)程序任務(wù)狀態(tài)切換圖8.3.1主程序設(shè)計開始系統(tǒng)初始化創(chuàng)建任務(wù)GSM查詢控制任務(wù)報警任務(wù)……電話查詢控制任務(wù)啟動任務(wù)///******************任務(wù)優(yōu)先級定義***************///#definePhone_Prio7#defineGSM_Prio6#defineAlarm_Prio5///******************任務(wù)堆棧定義***************///#defineSTACKSIZE50OS_STKPhone_Stack[STACKSIZE]={0,};//Phone_Task堆棧OS_STKGSM_Stack[STACKSIZE]={0,};//GSM_Task堆棧OS_STKAlarm_Stack[STACKSIZE]={0,};//Alarm_Task堆棧///******************任務(wù)定義***************//////******************任務(wù)定義***************///voidPhone_Task(void*Id);//GSM_TaskvoidGSM_Task(void*Id);//GSM_TaskvoidAlarm_Task(void*Id);//GSM_Task///*****************事件定義*****************///OS_EVENT*E_GSM_Mbox;//申明短信消息事件typedefstructgsm_cmd{//定義命令參數(shù)消息結(jié)構(gòu)INT8Uphone_no[14];//手機號碼INT8Udev_no;//設(shè)備編號INT8Ucmd_type;//instruction命令類型INT8Ucmd_class;//命令種類INT8Udev_status;//設(shè)備狀態(tài)}*GSM-_CMD;structGSM_CMDGSM_Command;//定義命令短信消息//OSMboxPend(E_GSM_Mbox,0,&err);//OSMboxPost(E_GSM_Mbox,GSM_Command);OS_EVENT*E_PConnect_Sem;//申明電話連接消息事件//OSSemPend(E_PConnect_Sem,0,&err);//OSSemPost(E_PConnect_Sem);OS_EVENT*E_PRead_MBox;//申明電話按鍵讀取消息事件INT8U*PRead_Message;//定義電話按鍵讀取消息//OSMboxPend(E_PRead_MBox,0,&err);//OSMboxPost(E_PRead_MBox,PRead_Message);typedefstructgsm_msg{//定義短信消息結(jié)構(gòu)INT8Uphone_no[14];//短信手機號碼INT8Umsg_time[20];//短消息發(fā)送時間INT8*msg_data;//短消息內(nèi)容}*GSM_MSG;voidmain(){ARMTargetInit();//開發(fā)板初始化OSInit();//操作系統(tǒng)初始化……//其他初始化操作OSTaskCreate(Phone_Task,(void*)0,(OS_STK*)&Phone_Stack,Phone_Prio);//創(chuàng)建電話監(jiān)控任務(wù)OSTaskCreate(GSM_Task,(void*)0,(OS_STK*)&GSM_Stack,GSM_Prio);//創(chuàng)建短信監(jiān)控任務(wù)OSTaskCreate(Alarm_Task,(void*)0,(OS_STK*)&Alarm_Stack,Alarm_Prio);//創(chuàng)建報警任務(wù)……//創(chuàng)建其他任務(wù)InitRtc();//初始化系統(tǒng)時鐘E_GSM_Mbox=OSMboxCreate(GSM_Command);E_PConnect_Sem=OSSemCreate(1);E_PRead_Mbox=OSMboxCreate(PRead_Message);OSStart();//操作系統(tǒng)任務(wù)調(diào)度開始return0;}8.3.2報警任務(wù)系統(tǒng)報警任務(wù)功能是指系統(tǒng)定時查詢各個設(shè)備的狀態(tài),并與設(shè)定的報警值進行比較,如果超出設(shè)定值則通過通信模塊進行報警。開始讀取各個設(shè)備狀態(tài)判斷是否超出設(shè)定范圍讀取手機電話號碼任務(wù)掛起發(fā)送報警短信判斷是否超出設(shè)定范圍是否接收到短信回復(fù)是否是否手機電話是否讀完否撥打有線電話號碼是是否接起播放報警錄音否掛機電話是否讀完否是是voidAlarm_Task(void*Id){INT8Ui,j,k=0;INT8UDeviceStatus=0;INT8U*msg;for(;;){for(i=0;i<devnum;i++)//檢查每個設(shè)備狀態(tài){DeviceStatus=DeviceCheck(i);GSM_Command->dev_no=i;if(DeviceStatus<Device[i].BottomStatus||DeviceStatus>Device[i].UpStatus)//如果狀態(tài)超出設(shè)定范圍,則報警。

for(j=0;j<=MobileNum;j++){//從電話薄中取出電話號碼進行報警*GSM_Command->mobile_no=MobilePhone[j];GSM_Command->dev_status=DeviceStatus;SendMessage(GSM_Command);msg=OSMboxPend(E_GSM_Mbox,2000,&err);//設(shè)定短信回復(fù)等待時間if(msg)break;//如果在規(guī)定時間內(nèi)有短信回復(fù),跳出循環(huán)}if(msg==NULL){//當(dāng)短信沒有回復(fù),則認為短信報警信息失敗,電話報警while(k<2){for(j=0;j<=PhoneNum;j++){phoneflag=CallPhone(PhoneNo[j]);if(phoneflag){//判斷電話在規(guī)定時間內(nèi)是否接通//接通則播放報警錄音,否則拔下一個電話號碼PlayRecord(i,DeviceStatus);//播放設(shè)備i的報警狀態(tài)StopPhone();//掛機Break;}}if(phoneflag==0){OSTimeDly(18000);k++;}else{k=0;break;}}}}}}}8.3.3GSM短信查詢控制任務(wù)查詢?nèi)蝿?wù)主要功能是接收GSM通信模塊傳遞的命令,解析命令參數(shù),然后查詢/控制各個電器設(shè)備,返回查詢/控制狀態(tài)。開始讀取串口中斷發(fā)送的消息查詢命令控制命令查詢設(shè)備狀態(tài)發(fā)送設(shè)備狀態(tài)控制設(shè)備動作發(fā)送設(shè)備狀態(tài)任務(wù)掛起查詢設(shè)備選擇設(shè)備1設(shè)備2設(shè)備n控制設(shè)備選擇設(shè)備1設(shè)備2設(shè)備n判斷短信內(nèi)容voidGSM_Task(void*Id){void*msg=NULL;INT8Uerror;for(;;){OSMboxPend(E_GSM_Mbox,0,&err);//等待短信到來switch(E_GSM_Mbox->OSEventPtr->cmd_type)//提取短信命令類型{case0://查詢命令

GSM_Command->dev_status=DeviceCheck(E_GSM_Mbox->OSEventPtr->dev_no);//查詢指定設(shè)備狀態(tài)

SendMessage(GSM_Command);//發(fā)送查詢結(jié)果

break;case1://控制命令

GSM_Message->dev_status=DeviceControl(E_GSM_Mbox->OSEventPtr->dev_no,\E_GSM_Mbox->OSEventPtr->cmd_class);SendMessage(GSM_Message);//控制設(shè)備動作,返回狀態(tài)SendMessage(GSM_Command);//發(fā)送控制結(jié)果

break;}}}2.短信接收中斷服務(wù)程序設(shè)計短信的接收是放在串口中斷服務(wù)程序中執(zhí)行的,需要編寫串口接收中斷服務(wù)程序。開始發(fā)出“AT+CMGR=0<CR>”命令讀SIM卡中的短信結(jié)束發(fā)出“AT+CMGD=0<CR>”命令刪除SIM卡中的短信解析短信內(nèi)容通過消息郵箱發(fā)送消息voidUART0RD_GSM_ISR(){unsignedchardata[4];structGSM_MSGmsg;unsignedchari;ReadMessage(msg);//讀取短信data=MessageAnalyze(msg->msg_data);//解析短信內(nèi)容,獲取有效控制或查詢命令參數(shù)GSM_Command->phone_no=msg->phone_no;GSM_Command->dev_no=data[0];//保存短信參數(shù)GSM_Command->dev_type=data[1];GSM_Command->dev_class=data[2];OSMboxPost(E_GSM_Mbox,GSM_Command);//發(fā)送短信消息郵箱,激活GSM任務(wù)}8.3.4電話查詢控制任務(wù)該任務(wù)負責(zé)有線電話線路的監(jiān)聽,將獲取的數(shù)據(jù)放入消息數(shù)組中。電話查詢控制是通過遠程電話根據(jù)監(jiān)控器提示音進行按鍵輸入控制或查詢命令來實現(xiàn)的。電話振鈴檢測與外部中斷0相關(guān)聯(lián),如果出現(xiàn)打入電話,可采用在中斷服務(wù)程序中加入信號量事件來傳遞接入電話信號。開始讀取外部中斷0發(fā)送的消息查詢控制語音提示查詢命令控制命令查詢設(shè)備狀態(tài)發(fā)送設(shè)備狀態(tài)控制設(shè)備動作發(fā)送設(shè)備狀態(tài)輸入密碼驗證任務(wù)掛起無效有效掛機查詢設(shè)備選擇設(shè)備1設(shè)備2設(shè)備n控制設(shè)備選擇設(shè)備1設(shè)備2設(shè)備n判斷按鍵內(nèi)容voidPhone_Task(void*Id){char*password;INT8Ui;INT8Uj=1;INT8Udata[3];INT8UCmdType=0;INT8UCmdClass=0;INT8UDeviceNo=0;INT8UDeviceStatus=0;for(;;){OSSemPend(E_PConnect_Sem,0,&err);//等待外部中斷0發(fā)送電話接通信號量ConnectPhone();//摘機for(;;){PlayRecord(0,PasswordInstruction);//播放提示輸入密碼錄音

password[i]=OSMboxPend(E_PRead_MBox,0,&err);//等待外部中斷1發(fā)送消息

if(password[i]==’#’){strncpy(password,password,i)//密碼取i個符號有效if(strcmp(password,PASSWORD)){i=0;break;}elseif(j<2){PlayRecord(0,PasswordReinput);//播放密碼重新輸入提示錄音j++;}elsePlayRecord(0,PasswordError);//播放提示輸入密碼錯誤}i++;}if(!strcmp(password,PASSWORD)){for(i=0;i<3;i++){PlayRecord(0,InputInstruction[i]);//播放提示錄音

&data[i]=OSMboxPend(E_PRead_MBox,0,&err);//等待外部中斷1發(fā)送消息}PlayRecord(0,WaitRecord);//播放等待錄音CmdType=data[0];//從PSTN電路中讀取輸入按鍵值CmdClass=data[1];DeviceNo=data[2];switch(CmdType){case0://查詢命令DeviceStatus=DeviceCheck(DeviceNo);break;case1://控制命令

DeviceStatus=DeviceControl(DeviceNo,CmdClass);break;}PlayRecord(DeviceNo,DeviceStatus);}StopPhone();//掛機}}外部中斷0中斷服務(wù)程序負責(zé)監(jiān)聽電話

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論