基于A(yíng)RM的智能車(chē)載終端設備系統的設計
2.4 GPRS無(wú)線(xiàn)數據傳輸模塊
GPRS無(wú)線(xiàn)數據傳輸模塊采用Simcom公司的GSM/GPRS雙頻模塊SIM300C,該模塊主要為語(yǔ)音傳輸、短消息和數據業(yè)務(wù)提供無(wú)線(xiàn)接口。SIM3 00C具有獨立的語(yǔ)音接口,配合車(chē)載終端上的LCD顯示屏和操作鍵盤(pán),可以方便地撥打電話(huà)。SIM300C模塊與主控制器LPC2103通過(guò)UART1接口進(jìn)行通信,傳輸速率設置為115200 bps。模塊與控制器間的通信協(xié)議是AT命令集,除了串口發(fā)送(TXD)、串口接收(RXD)之外還需要一些硬件握手信號,其中DCD信號用來(lái)檢測GPRS無(wú)線(xiàn)數據傳輸模塊是處于數據傳送狀態(tài)還是處于A(yíng)T命令傳送狀態(tài),DTR信號用來(lái)通知GPRS無(wú)線(xiàn)數據傳輸模塊傳送丁作是否已經(jīng)結束。GPRS無(wú)線(xiàn)數據傳輸模塊硬件設計原理圖如圖4所示。本文引用地址:http://dyxdggzs.com/article/147996.htm
3 車(chē)載終端的軟件設計
本系統選用源代碼開(kāi)放的實(shí)時(shí)操作系統μC/OS-II,下面從μC/OS-II操作系統的移植和用戶(hù)應用程序的編寫(xiě)兩方面介紹系統軟件的設計。
3.1 μC/OS-II操作系統的移植
μC/OS-II的移植實(shí)際上就是對與MCU相關(guān)的代碼進(jìn)行重寫(xiě)或修改,移植的主要工作是對與處理器有關(guān)的3個(gè)文件OS CPU.H、OS-CPU.C和OS CPU A.S的編寫(xiě)。
OS_CPU.H:主要包括了數據類(lèi)型、堆棧入口寬度、堆棧增長(cháng)方向、開(kāi)關(guān)中斷的宏和進(jìn)行任務(wù)切換的宏定義,宏可由typedef或#define來(lái)定義。
OS_CPU.C:該文件中用C語(yǔ)言編寫(xiě)了6個(gè)與操作系統相關(guān)的函數:OSTaskStkInit()、OSTaskCreateHook()、OSTaskDelHook()、OSTaskSw Hook()、OSTaskStatHook()、OSTimeTickHook()。其中,OSTaskStkInit()為堆棧初始化函數,必須根據具體的堆棧結構進(jìn)行編寫(xiě);OSTaskC reare()和OSTaskCreateExt()通過(guò)調用該函數,初始化任務(wù)的堆棧結構;后5個(gè)函數為鉤子函數,必須聲明,在移植初期可以為空函數。
OS_CPU_A.S:該文件中需要對處理器的寄存器進(jìn)行操作,需要修改3個(gè)與處理器相關(guān)的函數:最高優(yōu)先級任務(wù)調用函數OSgtartHighRdy()、任務(wù)切換函數OSCtxSw()、中斷任務(wù)切換函數OSIntCtxSw()。
3.2 用戶(hù)應用程序的設計
本系統采用多任務(wù)、多進(jìn)程模式,將各功能應用程序設計為不同的功能模塊,加載為多個(gè)不同優(yōu)先級的并發(fā)進(jìn)程。各功能模塊優(yōu)先次序如下:IC刷卡應用程序設為第1優(yōu)先級,GPS定位信息采集和處理程序設為第2優(yōu)先級,GPRS無(wú)線(xiàn)數據傳輸設為第3優(yōu)先級,LCD顯示程序設置為第4優(yōu)先級。
3.2.1 刷卡模塊程序設計
ZLG500A讀寫(xiě)卡模塊與IC卡之間的通信流程如圖5所示。
首先,模塊上電復位后,請求標準/所有的卡。如果在天線(xiàn)有效范圍內有一張以上的卡存在,調用反沖突函數uchar miffsanticoll(uchar Bcnt,uchar idata*_SNR),并取得所選擇的卡的唯一序列號。選中卡之后,根據所要訪(fǎng)問(wèn)的卡內存儲器位置,使用相應的密鑰進(jìn)行3輪確認。在成功確認后,可以對卡內存儲器進(jìn)行讀、寫(xiě)、增值、減值等一系列操作。以上這些步驟可以直接調用周立功公司提供的讀寫(xiě)卡模塊C51函數庫實(shí)現。
在主程序中,設置定時(shí)器0作為SPI串行接口的看門(mén)狗定時(shí)器,該定時(shí)器被設置成50 ms溢出。數據發(fā)送時(shí)開(kāi)定時(shí)器中斷,若中斷之前通信未能完成(ZLG500A在SDATA線(xiàn)上未返回響應信號),而造成該定時(shí)器產(chǎn)生中斷,則取消本次傳輸,發(fā)送子程序返回SPI_ERR;數據接收時(shí)關(guān)中斷,用軟件判斷溢出次數,若在500 ms內未收到ZLG500A返回的數據,則退出本次命令的執行,命令返回SPI_ERR。
3.2.2 GPS數據解析及處理
車(chē)載終端工作時(shí),GPS模塊會(huì )源源不斷地把接收到的GPS導航定位信息通過(guò)串行口輸出給ARM微處理器,這些數據信息主要由幀頭、幀尾和幀內數據組成。系統所需的GPS數據,如經(jīng)緯度、時(shí)間日期、速度等信息,均包含在“$GPRMC”幀內。“$GPRMC”的幀格式如下:
$GPRMC,024813.640,A,31 58.4608,N,11848.3737,E,10.05,324.27,150706,,,A*50
數據接收時(shí),首先通過(guò)依次檢測“$GPRMC”的ASCII碼是否正確。若檢測無(wú)誤,則確認該幀為有效幀,再接收幀內數據并進(jìn)行解析。然后按照表1的協(xié)議封裝成UDP數據包,通過(guò)GPRS傳輸到主控中心,主控中心通過(guò)軟件將車(chē)輛的位置實(shí)時(shí)顯示在電子地圖上。GPS數據傳輸協(xié)議如表1所列。
3.2.3 GPRS數據傳輸
由于本系統所用的GPRS模塊SIM300C內部嵌入了TCP/IP協(xié)議棧,因此只要發(fā)送相關(guān)AT指令,嵌入式TCP/IP協(xié)議就可完成SIM300C接入Internet的工作,實(shí)現無(wú)線(xiàn)數據傳輸的功能。
利用AT指令控制SIM300C模塊建立無(wú)線(xiàn)信道,并進(jìn)行數據傳輸的步驟如下:
①AT+CIPCSGP=1,“CMNET” 設置GPRS連接方式。
②A(yíng)T+CLPORT=“TCP”,“3030” 設置TCP端口號。
③AT+CIPSTART=“TCP”,“主站IP地址”,“端口號” 建立TCP連接,主站的IP地址必須為公網(wǎng)的IP地址,連接成功后返回“CONNECT OK”。
④AT+CIPSEND等待模塊返回“>”后,將要發(fā)送的數據送入GPRS模塊中,然后再發(fā)送回車(chē),數據即可發(fā)送出去。
若建立連接后長(cháng)時(shí)間沒(méi)有數據傳輸,移動(dòng)網(wǎng)關(guān)將會(huì )自動(dòng)關(guān)閉連接,重新分配IP地址。所以,為了保證網(wǎng)絡(luò )的正常連接,采用每2 min發(fā)送一個(gè)心跳包的方式。
結語(yǔ)
本文提出了一種基于ARM微處理器和μC/OS-II操作系統的智能車(chē)載終端設計方案,利用GPS、GPRS和IC卡讀寫(xiě)等技術(shù),實(shí)現公交刷卡消費和實(shí)時(shí)定位監控等功能的一體化,將城市中所有的公交車(chē)連成一個(gè)網(wǎng)絡(luò )系統,形成一個(gè)城市交通物聯(lián)網(wǎng)的雛形。實(shí)驗證明,該智能車(chē)載終
端具有模塊化、功耗低、性能穩定、可擴展等特點(diǎn)。
評論