作者:于捷;王祖林;劉有才
引言
目前,基于GSM/GPRS模塊的無線遠程監控系統大多數采用嵌入式處理器,選用Linux操作系統。本文介紹一種采用Winbond公司的77FA8單片機控制明基的GSM/GPRS模塊BENQ23G發送MMS彩信的方法。該方法成本低、可靠性高,器件選用工業級產品,能夠在較寬溫度范圍內工作,即使在室外較惡劣的環境下也可以使用。
本系統組成如圖1所示。其中,單片機77E58有2個串口,串口O用于與BENQ23G模塊進行通信,控制BENQ23G發送彩信;串口1用于與串口攝像頭(如C328-JPEG模塊)進行通信,控制攝像頭捕獲圖像。外部傳感器報警接口用于連接外部報警傳感器,77E58最小系統收到外部傳感器報警觸發信號后,捕獲照片、封裝MMS彩信,控制BENQ23G模塊向指定的手機或遠程接收設備發送彩信;同時還可以撥打指定電話號碼,將現場聲音傳送過去。MIC 及信號放大電路用于采集外部現場聲音并進行放大。
從前面的分析可以看出,本系統充分利用了各個部件的硬件資源,最大限度地降低了硬件成本。本文主要介紹圖1所示的無線遠程監控系統通過中國移動夢網發送彩信時,所使用的傳輸協議命令格式和傳輸數據格式。
1 BENQ23G模塊簡介
BENQ23G是臺灣BenQ公司生產的嵌入TCP/IP協議的GSM/GPRS模塊,在BENQ23A模塊的基礎上增加了M2M(Machine-to —Maehine)功能,可以通過GPRS承載在BENQ23G模塊和因特網TCP/UDP服務器上實現連接。控制設備和BENQ23G模塊之間通過 UART串口連接,傳輸命令和數據。
控制設備首先通過UART串口設置網絡連接參數,然后撥號連接GPRS,BENQ23G模塊建立GPRS連接并和指定的因特網TCP/UDP服務器建立 Socket連接。如果Socket連接成功,則模塊在控制設備和因特網TCP/UDP服務器之間通過UART串口建立點對點數據連接模式,控制設備可以通過UART串口將數據原封不動地上傳至因特網TCP/UDP服務器,同時可以通過UART串口原封不動地下載因特網TCP/UDP服務器上的數據,而上傳和下載數據的TCP/UDP打包和解包工作由BENQ23G模塊實現。
控制設備在數據模式下通過UART串口發送數據時,如果BENQ23G模塊在規定時間間隔內沒有繼續收到UART串口的數據,就將前面接收的數據進行 TCP/UDP打包并發送到服務器。
當BENQ23G模塊通過UART串口連續收到控制模塊發送的3個“+”符號后,將退出點對點數據模式而進入命令模式,可以通過UART串口接收控制設備發送的AT指令。但這時BENQ23G模塊和服務器之間的TCP/UDP協議Socket連接并沒有中斷,控制設備如果想再次進入數據模式上傳數據給服務器,可以鍵入ATO命令實現。
控制設備可以在命令模式下通過鍵入ATH命令來中斷BENQ23G模塊和服務器之間的Socket連接。下面給出一個控制設備和彩信網關服務器連接的例子:
該例子說明如何通過BENQ23G模塊實現和遠程服務器的連接,以及上傳和下載數據。BENQ23G模塊AT指令的詳細說明見參考文獻。
測試MMS組成及編碼格式分析略,詳細的編碼含義見參考文獻。
2 基于BENQ23G發送MMS編碼格式分析
當控制設備需要發送彩信時,首先通過UART串口傳送AT指令完成相應的參數設置(如前面例子所示),再傳送“ATD*97#”指令進行 GPRS撥號,并等待BENQ23G模塊完成與服務器之間的Socket連接。當收到BENQ23G模塊發送的響應“Wait Socket Open”時,表明BENQ23G模塊完成了與服務器的連接,并進入數據模式,控制設備可以進行發送彩信操作。
2.1 首先建立會話連接
控制設備發送會話建立連接請求(8字節):
0001 0A OO OO 12 01 10 OO 00
發送數據序列中前4字節“0A 00 00 12”是WTP In—voke PDU。WTP Invoke PDU采用了固定長度格式,其結構如表1所列。
其中,CON=0,PDU Type=0001,GTR=0,TTR=1,RID=0,故第1字節為0A;TID High Byte=00000000,故第2字節為00;TID Low Byte=00000000,故第3字節為00;Version=00,TIDnew=0,U/p=1,RES=00,TCL=10,故第4字節為12。
發送數據序列中的第5到8字節“01 10 O000”是WSP協議數據單元。其中第5字節“01”是WSP會話連接Connect的代碼,第6到8字節是WSP Connect PDU。WSP Connect PDU結構如表2所列。
其中,第6字節“10”是WSP協議版本號,高4位是版本號的整數部分,低4位是版本號的小數部分,這里為V1.0;第7字節是能力字段長度,沒有使用能力請求,故長度為00;第8字節是報頭字段長度,沒有報頭,故長度為00。
服務器返回數據如下(30字節):
0001 12 80 00 02 B5 C5 1 5 00 15 45 6E 63 6F 64 69 6E........Encodin
0017 67 2D 76 65 72 73 69 6F 6E 00 31 2F 32 00 00 00 g—version.1.2..。
返回數據中第1~3字節是WTP Result PDU,其余為WSP協議數據單元。WTP Result PDU采用固定長度格式,其結構如表3所列。
其中,CON=0,PDU Type=0010,GTR=0,TTR=1,RID=O,故第1字節為12;TID High Byte=10000000,故第2字節為80;TID Low Byte=00000000,故第3字節為OO。
返回數據中的第4字節“02”是WSP會話連接確認ConnectReply的代碼;第5~30字節是WSP ConnectReplyPDU。
WSP ConneetReply PDU結構如表4所列。
第5~8字節“B5 C5 15”是會話標識;第10字節“15”是HeadersLen(21字節),Headers是以00結束的字符串,即Encoding—version 1.2。
2.2 控制設備發送WTP確認完成會話連接
控制設備發送WTP確認(WTP Acknowledgement,3字節):18 00 00。WTP Acknowledgement PDU采用固定長度格式,如表5所列。
其中,CON=0,PDU Type=0011,Tve/Tok=0,RES=0,RID=0,故第1字節為18;TID High Byte=00000000,故第2字節為00;TID Low Byte=00000000,故第3字節為OO。
2.3 控制設備發送WTP、WSP和MMS包
控制設備首先發送WTP和WSP(49字節):
0001 0E 00 01 1 2 60 1A 10 68 74 74 70 3A 2F 2F 6D 6D.......http://mm
0017 73 63 2E 6D 6F 6E 74 6 5 72 6E 65 74 2E 63 6F 6D SC.monternet.com
0033 2F BE 80 BE C7 80 A1 09 80 77 61 70 00 77 61 70/........wap.wap
0049 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00................
發送數據序列中,前4個字節“0E 00 01 12”是WTPInvoke PDU,后45個字節是WSP協議數據單元。
WTP Invoke PDU同樣采用了固定結構格式(如表1所列)。其中,CON=0,PDU Type=0001,GTR=1,TTR=1,RID=0,故第1字節為0E;TID High Byte=00000000,故第2字節為00;TID Low Byte=00000001,故第3字節為01;Version=00,TIDnew=0,U/P=1,RES=00,TCL=10,故第4字節為12。
發送數據序列中第5字節“60”是WSP方法Post的代碼,第6~49字節是WSP Post PDU。WSP Post PDU結構如表6所列。
第6字節“1A”是UriLen(26字節);第7字節“10”是HeadersLen(16字節);第8~33字節是Uri字段,URI=http:/mmsc.monternet.com/(中國移動夢網);第34字節“BE”是ContentType的內容類型(著名域值 applica—tion/vnd.wap.mms—message的代碼),即Content Type=application/vnd.wap.mms—message;第35~49字節是由3個Header組成的Headers字段,第35、 36字節是第1個Header,第37、38字節是第2個Header,第39~49字節是第3個Header。
Headerl:80 BE(Accept:application/vnd.wap.mms—message)。
Header2:C7 80(Cashe Control:None)。
Header3:A1是域Proxy authorization的代碼,第40字節“09”是域長度(9字節),第41字節“80”是Basic的代碼,第42~44字節是User— id=wap,第46~48字節是Password=wap。
數據字段就是緊接著發送的MMS包。
服務器返回數據序列如下:
返回數據中,第1~3字節是WTP Result PDU,其余為WSP協議數據單元。WTP Result PDU格式與前面相同,只是TID=8001,與WTP Invoke PDU中的TID=0001相對應。
返回數據中第4字節“04”是WSP會話響應Reply的代碼,第5~173字節是WSP Reply PDU。WSP ReplyPDU結構如表7所列。
第5字節“20”是Status編碼,表示成功;第6、7字節“81 26”是Headers的長度(解碼后為A6,即166個字節,從第8字節“61”到173字節“B1”);第8~38字節是Cont—entType的域值,ContentType=application/vnd.wap.
mms—message;第40~173字節是由6個Header組成的Headers字段,第40~52字節是第1個Header,第53~78字節是第2個Header,第79~111字節是第3個Header,第 112~143字節是第4個Header,第144~167字節是第5個Header,第168~173字節是第6個Header。
Header6:Date=48 29 41 EB,以秒計算的日期,起始日期為1970—01-01。
返回數據中,第174~209字節是Data字段,其內容與MMS頭內容相對應,解碼后含義:
2.4 控制設備發送WTP確認完成會話
控制設備發送WTP確認(WTP AcknowledgementPDU,3字節):1C 00 01。
WTP Acknowledgement PDU格式同表5。其中,CON=0,PDU Type=0011,Tve/Tok=1,RES=0,RID=0,故第l字節為1C;TID High Byte=00000000,故第2字節為00;TID Low Byte=00000001,故第3字節為01。
2.5 斷開服務器連接
如果要退出數據模式,控制設備可通過UART串口傳送符號+++,BENQ23G返回命令模式,但與服務器的Socket連接并沒有斷開。如果要斷開 BENQ23G與服務器的Socket連接,則控制設備需通過UART串口發送ATH命令給BENQ23G模塊。
3 結論
本文介紹了一種通過彩信傳送圖像的低成本遠程監控系統。該系統采用Winbond公司的77E58單片機作為控制器,由外部報警傳感器觸發,控制串口攝像頭捕獲現場圖像,封裝MMS彩信,并通過控制BenQ公司的GSM/GPRS模塊BENQ23G發送,同時還可以通過撥打預設號碼將現場聲音傳送出去。
責任編輯:gt
-
處理器
+關注
關注
68文章
19293瀏覽量
229927 -
單片機
+關注
關注
6037文章
44561瀏覽量
635570 -
監控系統
+關注
關注
21文章
3918瀏覽量
174879
發布評論請先 登錄
相關推薦
評論