一種基于MMS的低成本汽車安防系統設計與實現
1.引言
??? 隨著人民生活水平的不斷提高,個人擁有汽車變得越來越普遍。但是,隨之而來的車輛頻繁被盜問題漸受關注。傳統的汽車安防系統以全球衛星定位系統(以下簡稱GPS)為核心,這種技術最大的優勢是可以定位被盜車輛所處的位置,可以遠程控制車輛,但是無法獲取圖像聲音信息不能了解車輛所處的環境,無法有效追捕犯罪嫌疑人。還有一些系統使用 GPRS實時傳輸圖像數據,這種方案受網絡帶寬的限制嚴重,圖像質量差,對處理器運算能力要求高,系統使用費用高。
??
???? 針對上述問題,我們提出并設計了一種基于多媒體信息服務(Multimedia Message Service,以下簡稱MMS)——也就是人們常說的“彩信”汽車安防系統。該系統利用了中國移動的 MMS業務、短消息業務,無線網絡覆蓋面大,使用費用低廉,操控方法簡單。圖1所示為基于 MMS的汽車安防系統的應用框圖,用戶在遠程通過短信控制本系統,系統通過在車輛內適當部位安裝的攝像頭、麥克風獲得高質量的圖像語音信息,制作成 MMS,通過我們專門針對低成本嵌入式系統研發的MMS發送程序將 MMS發送到用戶的終端,從而使用戶能更清晰地掌握車輛內外的狀況。
2.系統結構
????? 我們使用了如圖2所示的硬件框架,本系統以S3C44B0處理器為核心:輔以2M NOR Flash存儲引導程序、內核、ROM文件系統;16M NAND Flash承載YAFF文件系統,以彌補 NOR Flash空間不足無法容納 PPPD、系統應用程序、無法保存系統配置信息的缺陷; 16M SDRAM運行代碼、動態數據交換、RAM文件系統;UART0連接CWT2000 GPRS模塊,用于收發與用戶交互的短信,發送MMS到用戶指定的終端; UART1連接C328 JPEG攝像頭可以直接獲取JPEG格式的高分辨率圖像數據。
??? 本系統的軟件基于uCLinux操作系統內核版本 2.4.32,圖3展示的是本系統的軟件結構框圖。圖3中,內核空間的 MTD、UART驅動、TCP/IP、PPP等在編譯內核時必須選擇支持, PPPD/Chat撥號程序用于通過 GPRS模塊登陸互連網。上述軟件結構框圖中部分模塊在 uCLinux分發版中包含,因此本系統需要實現 JPEG采集、MMS制作、MMS發送、短信收發以及系統控制流程模塊。接下來的章節將介紹各模塊的實現技術。
?
3.軟件設計
??? 本節將重點介紹圖3中的系統控制流程、 JPEG采集、 MMS制作以及 MMS發送模塊。由于短信收發模塊過于簡單,且在許多資料中都有詳細介紹,本文不再贅述。
3.1 系統控制流程系統控制流程模塊負責對其它模塊進行調用,對所有資源進行協調,實現系統設計的工作流程,滿足良好的交互性、穩定性。
???? 首先,系統需要初始化,如獲取用戶終端(手機)號碼, MMS發送過程所需的MMS網關、端口、MMS中心地址,這些信息都保存在系統配置文件中,另外還需要初始化一些相關的數據結構。初始化之后系統進入到一個超級循環當中,隨時準備接收來自用戶終端的命令短信息。目前,命令短信息有兩個,其中最重要的是“Get”命令,用以獲取 MMS信息;還有一個“Set”命令用以設置用戶終端號碼,該命令由于流程圖的尺寸問題在圖 4中省略了。收到“Get”命令之后,系統依次調用JPEG采集模塊、 MMS制作模塊、GPRS撥號、MMS發送模塊。這些模塊的調用,除了MMS制作模塊,都遵循一個基本原則,我們稱之為三次嘗試原則。如果某模塊調用不成功,將重復三次,三次都失敗,將發送錯誤報告短信到用戶終端。比較特殊的是GPRS撥號,在3次撥號失敗后將對GPRS模塊進行復位,再嘗試撥號。該原則符合無線通訊自身的特殊性,可以有效提高程序的效率和穩定性。另外有一點需要注意,在 GPRS狀態下是無法發送短信的,因此,撥號登陸成功之后需要斷開 GPRS連接才能發送短信。這也是為什么無論 MMS發送是否成功,都必須先斷開 GPRS,再發送報錯或成功報告短信的原因。
3.2 JPEG圖像采集
???? ?JPEG圖像采集模塊通過串口控制 C328 JPEG攝像頭直接獲取 JPEG圖像,這種選擇大大降低了處理器的負擔。關于該攝像頭的硬件信息見參考文獻 [1]。該軟件模塊大部分為順序過程,后面的過程都建立在前一個過程正確執行的基礎上。總體上可以分為三個步驟:初始化 S3C44B0串口、初始化攝像頭、獲取圖像,詳細過程如下:
1.初始化 S3C44B0串口,包括: O_RDWR | O_NOCTTY | O_NDELAY方式打開 UART1也就是“/dev/ttS1”[2],設置波特率 57600,8位數據位,1位停止位,無奇偶校驗,讀寫超時設置為 1秒,初始化 jpeg_picture結構體:
struct jpeg_picture
{
int fd; //串口的文件描述符
unsigned char resolution; // 圖像分辨率代碼
long jpeglength;? //圖像長度24位表示
unsigned char *pjpeg; // 圖像存儲地址
};
1 JPEG攝像頭,包括:發送 SYNC命令與攝像頭建立連接,,發送 Initial命令設置輸出 JPEG格式圖像、分辨率 640X480,發送 Set Package Size命令設置數據包的大小為 512字節。
2? 獲取圖像,包括:發送 Snapshot命令捕獲圖像快照并壓縮,發送 Get Picture命令獲取 Snapshot類型圖像,接收 Data命令確認數據類型為 Snapshot以及圖像數據大小,并為圖像分配對應空間,之后開始接收數據包,每收到一個數據包后發送帶有數據包 ID的 ACK命令給攝像頭,直到最后一個數據包 ID為 F0F0,數據接收過程結束。
???? 通訊協議采用一種如圖 4的應答方式, ACK代表上一個命令或操作成功,NACK則說明失敗,確保了通訊穩定。 C328定義的命令是統一的 6個字節長度,起始為固定的 0xAA,然后是命令字節,后 4個字節是與命令相關的參數字節。
3.3 MMS制作
??? MMS 可以包含靜態圖像、語音、動態圖像等多種多媒體信息 [3 4]。圖 5左側為一個通用 MMS結構,由 MMS信息頭、 MMS信息體構成。 MMS信息頭包含如何從發送終端將數據發往接收終端的信息[5]。MMS信息體是 MMS的實質內容,可以由多個部分多種類型媒體。本系統中目前僅有 JPEG的圖像數據,不需要支持所有格式的多媒體信息,因此可以實現針對多幅 JPEG圖像的簡化版 MMS制作模塊。我們使用了最簡化的 MMS信息頭,包括:消息類型、事務 ID、版本號、From、To等,詳情見表 1。?
?
??? MMS 編碼必須遵循無線會話協議( Wireless Session Protocol,以下簡稱 WSP)。WSP使用一種與 HTTP/1.1相同的語法描述數據的組織結構,具體可參考 RFC[2068]。HTTP/1.1使用 ASCII字符編碼來傳輸數據,而 WSP為降低傳輸帶寬,將 HTTP/1.1中的一些著名域對應的字符串定義為一個字節,并在對這些緊湊格式編碼時加上 0x80,使著名域的編碼大于 127(擴展 ASCII字符),從而將它們與普通 ASCII字符區別開。因此 MMS信息頭的基本編碼格式為:“域編碼”+“內容”,詳情請參考表 1。編碼順序如下:消息類型、事務 ID、版本號必須依次排在最前面,而 MMS信息體內容類型則應該排在 MMS信息頭的最后。
①用字符串表示一個隨機數。②國內格式為:長度 +“+86”+“11位手機號” +“/TYPE=PLMN.”
???? 緊跟在 MMS信息頭之后的就是 MMS信息體,圖 5中所示這部分有:成員數量、成員(圖像、文本、聲音等)。成員數量是一個變長整形數。 MMS信息體的成員由:成員信息頭、成員數據構成。我們的系統中僅有 JPEG圖像,所以成員信息頭可以編碼為: 0x01,YYYY(JPEG圖像大小,變長整數),0x9E。最后將 JPEG圖像附在成員信息頭之后即可完成 MMS制作。注意,由于圖像的存儲空間為動態分配,之后要將所占內存釋放。
3.4 MMS發送
???? 最后,系統使用了項目組針對嵌入式系統開發的 MMS發送簡化過程來發送彩信。該簡化過程分為三個步驟:建立連接、發送數據、斷開連接[6],如圖 6所示為發送數據簡化過程的時序圖。建立連接和斷開連接的時序圖與此類似,不在這里給出。在該簡化過程的實現中,使用了一種直接構造 PDU進行發送的實現方法。協議數據單元( Protocol Data Unit,以下簡稱 PDU)為 MMS發送時各層所要增加的數據頭,而這些數據頭很多部分都固定。因此,通過直接發送 PDU的方法,可以避免構造完整無線應用協議棧( WAP),擺脫對多線程的依賴,以及無關操作所需的存儲消耗,實現單線程、高效、高速、穩定的 MMS發送。?
??
?
??? MMS發送的網絡協議棧關系的簡化過程僅僅需要嵌入式系統提供 UDP支持,能連接到 GPRS網絡,即可發送 MMS到終端。
4.結論與展望
??? 本系統目前已經通過了長沙、深圳、北京、上海等地的測試。項目充分利用了GPRS網絡覆蓋廣泛,通訊質量穩定的特點,提出了一個簡單方便的、穩定的、易于擴展的基于 MMS的安防系統框架,為提取犯罪嫌疑人的犯罪證據提供了一種新手段。該框架有較廣泛的應用范圍,可以為相關行業提供參考。
?? 本文作者創新點:結合了短消息操作簡單、彩信直觀的特點,在低成本 ARM7平臺實現了基于彩信的安防系統;在系統中使用一種直接 PDU構造方法實現了一個簡化版的彩信發送過程,該過程實現簡單,適合嵌入式系統。
評論
查看更多