



摘 要:本文主要闡述了學(xué)生結(jié)合CDMA通信模塊通過AT89C51單片機(jī)實(shí)現(xiàn)遠(yuǎn)程報(bào)警系統(tǒng)的實(shí)驗(yàn),該實(shí)驗(yàn)對(duì)于中職學(xué)生雖然有一定難度,但通過合適的教學(xué)和有效的學(xué)習(xí),學(xué)生不僅能很好地完成實(shí)驗(yàn),而且能鞏固單片機(jī)的基礎(chǔ)知識(shí),培養(yǎng)他們對(duì)單片機(jī)的學(xué)習(xí)興趣。
關(guān)鍵詞:CDMA模塊;單片機(jī);智能報(bào)警系統(tǒng)
《單片機(jī)》是中職學(xué)校電子、通信、自動(dòng)控制等專業(yè)的專業(yè)課程。長(zhǎng)期以來,這門課程的教學(xué)普遍存在偏重于抽象原理和指令的分析和講解,輕視學(xué)生動(dòng)手能力的訓(xùn)練,與現(xiàn)實(shí)生活結(jié)合的實(shí)驗(yàn)項(xiàng)目尤其少。學(xué)生學(xué)習(xí)《單片機(jī)》課程之后,往往不能很好地理解單片機(jī)的應(yīng)用與操作。由于不能進(jìn)行深入的應(yīng)用,學(xué)習(xí)到的指令也會(huì)很快忘記。本文對(duì)基于CDMA通信模塊的遠(yuǎn)程報(bào)警系統(tǒng)教學(xué)實(shí)驗(yàn)進(jìn)行了探討,該實(shí)驗(yàn)的目的是讓學(xué)生在以后的生活和工作中對(duì)單片機(jī)知識(shí)能靈活應(yīng)用,為解決目前教學(xué)中存在的問題提供一個(gè)參照。
一、引言
目前智能監(jiān)控系統(tǒng)種類很多,不同的產(chǎn)品實(shí)現(xiàn)的技術(shù)也不一樣。在傳輸方式上,智能監(jiān)控系統(tǒng)分為三種模式:①有線傳輸方式:以太網(wǎng)可以提供從10M到100M甚至千兆的傳輸帶寬。以太網(wǎng)上基于802.1p的QoS機(jī)制相對(duì)比較簡(jiǎn)單,通過家庭網(wǎng)關(guān)的配合可以滿足語音、視頻、數(shù)據(jù)多種信息流的QoS要求。以太網(wǎng)技術(shù)在目前的家庭設(shè)備互聯(lián)中是最簡(jiǎn)單也是最普及的。另外,以太網(wǎng)適用于小范圍區(qū)域的監(jiān)控系統(tǒng),尤其是家庭視頻監(jiān)控,一般家庭都有網(wǎng)絡(luò)布線,不需要再專門增加復(fù)雜的布局布線。②CDMA通訊方式:報(bào)警信號(hào)采用CDMA通信方式,它支持SMS協(xié)議,可以將報(bào)警信號(hào)通過短信方式或電話方式發(fā)送到住戶手機(jī)。③無線傳輸方式:采用支持協(xié)議標(biāo)準(zhǔn)為IEEE 802.11g的無線路由器,傳輸速率可以達(dá)到54M。由于無線路由器的覆蓋范圍通常在400m以內(nèi),所以對(duì)家庭視頻監(jiān)控有很大的優(yōu)勢(shì)。
本文構(gòu)建的系統(tǒng)用于對(duì)一個(gè)小區(qū)住戶室內(nèi)情況進(jìn)行實(shí)時(shí)監(jiān)控,并且在室內(nèi)發(fā)生危險(xiǎn)的情況下可以自動(dòng)報(bào)警。該系統(tǒng)主要由三部分組成:核心控制器、CDMA模塊、傳感器模塊。通過干簧管的特性,單片機(jī)采集門是否打開的信息,一旦門被打開,單片機(jī)就會(huì)控制CDMA模塊把報(bào)警信息發(fā)送到指定的手機(jī)上。
二、實(shí)驗(yàn)設(shè)計(jì)
(一)傳感器模塊設(shè)計(jì)。
K為干簧管、G為磁鐵,K與G分別固定在門和門框上。當(dāng)關(guān)門時(shí),磁鐵靠近干簧管,使干簧管內(nèi)的接點(diǎn)接通,INT0端口為高電平;當(dāng)有人開門潛入時(shí),干簧管離開磁鐵,接點(diǎn)斷開,INT0管腳為低電平,使單片機(jī)發(fā)生中斷。
(二)CDMA模塊的硬件設(shè)計(jì)。
該模塊借助中國電信有限公司現(xiàn)有的CDMA網(wǎng)絡(luò)實(shí)現(xiàn)用戶設(shè)備無線上網(wǎng),可以說只要能用CDMA移動(dòng)電話的地方,該模塊就可以使用。內(nèi)部結(jié)構(gòu)如圖1所示。
CDMA模塊包括一個(gè)CDMA處理器(MSM6050),AnyDATA.NET公司的DTGS-800模塊,電源管理模塊,一個(gè)帶有耳機(jī)和麥克風(fēng)放大器的集成編譯碼器,支持153kbps前向鏈路數(shù)據(jù)通信的RS-232串行接口。
1. 短消息發(fā)送過程。(見圖2)
步驟分解:
(1)AnyDATA 模塊提供兩種方式來檢測(cè)當(dāng)前模塊的狀態(tài)(是否有CDMA 網(wǎng)絡(luò)可以使用)。一種使用AT 命令檢測(cè),另一種通過對(duì)60針連接線中的一個(gè)特別針腳進(jìn)行檢測(cè)。
——AT 命令檢測(cè)法
模塊上電啟動(dòng)后,使用 AT+CAD? 命令檢測(cè)模塊的狀態(tài),此命令的返回格式為+CAD:0/1/2..5;OK。如果返回結(jié)果是1,說明模塊已經(jīng)處于就緒狀態(tài),可以進(jìn)行進(jìn)一步的工作。如果返回結(jié)果為0,則可能模塊還是初始化中,需要等幾秒鐘后再試,如果一直處于這種情況,可能在本地區(qū)沒有信號(hào)或者天線沒有安裝好。
——特定針腳檢測(cè)法
檢測(cè)模塊60 針接口的第16 針。如果此針為低電平,則說明模塊已經(jīng)處于就緒狀態(tài),可以進(jìn)行進(jìn)一步的工作,如果是高電平,則可能模塊還是初始化中,需要等幾秒鐘后再試,如果一直處于這種情況,可能在本地區(qū)沒有信號(hào)或者天線沒有安裝好。在此狀態(tài)下AT+SMSS?的可能返回值如下:
SMSS:1 表明上一個(gè)SMS 發(fā)送成功。
SMSS:2 表明上一個(gè)SMS 發(fā)送失敗。
(2)發(fā)送AT+SMSG=1。
返回結(jié)果 +SMSG:1,如果有返回,可以進(jìn)入下一步發(fā)送數(shù)據(jù)包,否則結(jié)束發(fā)送過程,發(fā)送失敗,稍后重試。在此狀態(tài)下AT+SMSS?的可能返回值如下:
SMSS:3 表明模塊等待DTE(數(shù)據(jù)終端設(shè)備)發(fā)送短消息數(shù)據(jù)包。
(3)發(fā)送特定格式的數(shù)據(jù)包。
(4)等5~15 秒鐘后,發(fā)送AT+SMSS? 查詢發(fā)送的情況,在此狀態(tài)下AT+SMSS? 的可能返回值如下:
SMSS:3 表明模塊等待DTE 發(fā)送數(shù)據(jù)包,此狀態(tài)一般會(huì)在DTE 發(fā)完數(shù)據(jù)后一秒內(nèi)結(jié)束。
SMSS:2 表明模塊狀態(tài)不在IDLE 及業(yè)務(wù)狀態(tài),需要重新檢測(cè)模塊的狀態(tài),發(fā)送失敗,稍后回到第一步重試。
SMSS:4 表明模塊收到的數(shù)據(jù)包格式有錯(cuò)誤,或者長(zhǎng)度不對(duì)。
SMSS:5 表明模塊正在發(fā)送數(shù)據(jù)中,可能處于以下兩種可能情況:模塊正在向基站/SMSC發(fā)送數(shù)據(jù),或數(shù)據(jù)已經(jīng)發(fā)送完畢,正在等待BS/SMSC 的L2 或L3 響應(yīng)消息。在這種狀態(tài)下可以等待5~15 秒后再次通過AT+SMSS? 查詢狀態(tài)。
(5)模塊收到SMSC 的L3 應(yīng)答,在此狀態(tài)下AT+SMSS?的可能返回值如下:
SMSS:1 表明短消息已經(jīng)成功從SMSC 發(fā)送到了目的地。
SMSS:2 表明從SMSC 到目的地的發(fā)送失敗,但是從源到SMSC 的發(fā)送是成功的。
(6)可選步驟。如果AT+SMSS? 返回的結(jié)果是1、2 或者4 ,則DTE 可以發(fā)送下一條SMS。
2. 簡(jiǎn)單短消息發(fā)送和接收格式。
當(dāng)采用簡(jiǎn)單短消息協(xié)議時(shí),發(fā)送SMS 時(shí)的數(shù)據(jù)格式如下:
typedef struct {
BYTE company_id;
BYTE len;
BYTE dest[13];
BYTE callback[13];
BYTE data[MAX_TX_SMS_DATA+1];
} sms_send_type;
- company_id 為公司標(biāo)識(shí),固定為0x07。
- len 為消息的長(zhǎng)度,包括len, dest, callback 及data 四個(gè)字段的長(zhǎng)度,計(jì)算方法為:len = 1 + 13 + 13 + 有效SMS 字節(jié)數(shù);l為len 字段本身的長(zhǎng)度;第一個(gè) 13 為目標(biāo)電話電碼字段的長(zhǎng)度;第二個(gè) 13 為回叫電話電碼字段的長(zhǎng)度。
- dest 為目標(biāo)電話號(hào)碼,長(zhǎng)度為13 位,如果號(hào)碼不足13 位,最后幾位用0x20,也就是空格填充,例:0x31 0x33 0x33 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x20 0x20 “13312345678”。
- callback 為回叫號(hào)碼,長(zhǎng)度為13 位,不足時(shí)在最后填空格,這個(gè)字段在國內(nèi)實(shí)際上沒有用處,一般不用填,直接填空格就行了。
- data 為SMS 的內(nèi)容,消息體的最大長(zhǎng)度與各地網(wǎng)絡(luò)有關(guān),一般最大限制在140 個(gè)字節(jié)左右,這是受七號(hào)信令中的MTP 包的大小限制的。MODEM 本身目前不支持短信分包業(yè)務(wù)。過大的包需要應(yīng)用層進(jìn)行分解。示例:發(fā)送給13312345678 這個(gè)號(hào)碼一串字符 “abcd”,消息格式如下:
0x07 0x1F 0x31 0x33 0x33 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x61 0x62 0x63 0x64
在發(fā)送SMS 時(shí),如果從PC 機(jī)到模塊的發(fā)送速度過快,由于MODEM 內(nèi)部緩沖有限,處理速度不夠快,容易丟失部分?jǐn)?shù)據(jù),造成的后果是數(shù)據(jù)不完整或發(fā)送錯(cuò)誤數(shù)據(jù),特別是在發(fā)送比較大的SMS 時(shí)很容易發(fā)生。簡(jiǎn)單的解決方法是在往串口輸送數(shù)據(jù)時(shí)每發(fā)送若干字節(jié)后停頓一小會(huì)。一般采取每發(fā)送10 個(gè)字節(jié)后停頓20ms。
(三)智能報(bào)警系統(tǒng)的基本構(gòu)成。
1. 硬件系統(tǒng)。
傳感器電路連接到單片機(jī)的INT0管腳上,當(dāng)傳感器接受到報(bào)警信號(hào)時(shí),會(huì)觸發(fā)單片機(jī)進(jìn)入中斷函數(shù)。單片通過RS232接口連接CDMA模塊,并通過RS232控制CDMA模塊往指定的手機(jī)上發(fā)送信息。
2. 軟件系統(tǒng)。
單片機(jī)控制程序采用keil軟件進(jìn)行開發(fā),當(dāng)有報(bào)警信號(hào)時(shí)就會(huì)觸發(fā)單片機(jī)進(jìn)入中斷,在中斷服務(wù)函數(shù)中,單片機(jī)通過串口往CDMA模塊發(fā)送信息,控制CDMA模塊發(fā)送短信信息。系統(tǒng)的軟件流程圖如圖4所示。
三、結(jié)束語
由于中職學(xué)生基礎(chǔ)知識(shí)相對(duì)薄弱,接受專業(yè)知識(shí)存在一定的難度,如果像以往只是重視單片機(jī)原理的講解,輕視動(dòng)手操作能力的培養(yǎng),學(xué)生就很難學(xué)到《單片機(jī)》中真正需要掌握的知識(shí)。該實(shí)驗(yàn)鍛煉了學(xué)生應(yīng)用所學(xué)知識(shí)解決現(xiàn)實(shí)生活問題的能力,同時(shí)他們學(xué)習(xí)《單片機(jī)》的興趣也明顯增強(qiáng),在動(dòng)手中深入地了解了該課程的學(xué)習(xí)內(nèi)容。
(作者單位:深圳市第一職業(yè)技術(shù)學(xué)校)
參考文獻(xiàn):
[1] 方芳. 遠(yuǎn)程無線視頻監(jiān)控系統(tǒng)[J]. 儀表技術(shù),2008,(1).
[2] 王雪飛,陳帥,張重,姜寶林. 無線數(shù)據(jù)模塊DTGS-800的應(yīng)用[J]. 中國高新技術(shù)企業(yè),2008,(23).
責(zé)任編輯 陳春陽