基于SIM300的無(wú)線LED顯示屏控制系統(tǒng)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:針對(duì)目前LED 點(diǎn)陣顯示屏的廣泛應(yīng)用以及GPRS 網(wǎng)絡(luò)全國(guó)覆蓋的優(yōu)勢(shì), 提出基于GPRS技術(shù)的無(wú)線LED 顯示屏控制系統(tǒng)方案。詳細(xì)介紹控制系統(tǒng)的系統(tǒng)結(jié)構(gòu)、軟硬件設(shè)計(jì)過(guò)程和通信協(xié)議的制定。此設(shè)計(jì)在多LED 顯示屏組網(wǎng)控制,而LED 屏又分布范圍較廣時(shí)優(yōu)勢(shì)較明顯,可以拓寬LED 顯示屏的應(yīng)用領(lǐng)域,具有一定的應(yīng)用價(jià)值。
0 引言
隨著LED 技術(shù)的發(fā)展與提高,大型LED 顯示屏已廣泛應(yīng)用于各類公共場(chǎng)所,用于顯示文字、圖形、視頻圖像等多媒體信息。在城市信息現(xiàn)代化建設(shè)中,LED 顯示屏成為現(xiàn)代信息傳播的重要媒體之一。隨著戶外LED 屏數(shù)量的劇增和使用范圍的擴(kuò)大,對(duì)LED 顯示屏的管理與控制提出了新的要求。
1 系統(tǒng)工作原理
本系統(tǒng)主要由上位機(jī)和下位機(jī)組成。上位機(jī)為安裝有LED 屏管理軟件而且能連接Internet 或GPRS 網(wǎng)絡(luò)的設(shè)備,例如PC、移動(dòng)設(shè)備等。下位機(jī)為以AVR 單片機(jī)控制模塊為主的LED 屏無(wú)線控制器。系統(tǒng)拓?fù)浣Y(jié)構(gòu)如圖1 所示。
系統(tǒng)主要利用GPRS 模塊作為無(wú)線Modem, 實(shí)現(xiàn)了LED 顯示屏無(wú)線控制器(作為客戶端)撥號(hào)上網(wǎng),與Internet 網(wǎng)絡(luò)上的上位機(jī)(作為服務(wù)端)進(jìn)行TCP 無(wú)線通信,實(shí)現(xiàn)數(shù)據(jù)傳輸,完成對(duì)LED 屏的無(wú)線數(shù)據(jù)更新。
2 下位機(jī)硬件設(shè)計(jì)
如圖2 所示,LED 屏無(wú)線控制器主要由四部分組成: 電源模塊、GPRS 模塊、AVR 單片機(jī)控制模塊、LED顯示屏。
2.1 AVR 單片機(jī)控制模塊
為了保證通信數(shù)據(jù)的實(shí)時(shí)性和效率, 又能兼顧驅(qū)動(dòng)LED 顯示屏, 所以本模塊采用的MCU 是擁有雙串口的ATMEL 公司的ATmega 162.它是一款基于AVRRISC 的低功耗CMOS 的8 位單片機(jī),其穩(wěn)定性、可靠性非常高, 能適應(yīng)各種環(huán)境, 適用于各種不同的無(wú)線LED 顯示屏使用環(huán)境。
本模塊主要處理GPRS 模塊接收到的信息, 并將接收到的屏顯信息傳送給LED 屏,同時(shí)通過(guò)串口發(fā)出AT 指令監(jiān)視GPRS 模塊是否有新消息。一旦有,立刻進(jìn)入串口中斷,對(duì)數(shù)據(jù)進(jìn)行處理。在TCP/IP 協(xié)議下,數(shù)據(jù)采用十六進(jìn)制的方式傳輸,不需要進(jìn)行漢字解碼,大大簡(jiǎn)化了系統(tǒng)外圍電路的設(shè)計(jì)。
2.2 GPRS 模塊電路
GPRS 模塊采用了SIMCOM 公司的SIM300.該模塊體積小巧,性能突出,可廣泛應(yīng)用于無(wú)線語(yǔ)音傳輸、車載系統(tǒng)、遠(yuǎn)程抄表、安全監(jiān)控、遙控遙測(cè)、手持設(shè)備等領(lǐng)域。
SIM300 模塊具有功能完備的系統(tǒng)接口,在內(nèi)部集成了TCP/IP 協(xié)議棧,擴(kuò)展了TCP/IP AT 指令,可以通過(guò)串口對(duì)其提供的AT 指令進(jìn)行交互操作。這樣可以降低開發(fā)難度,易于實(shí)現(xiàn)數(shù)據(jù)傳輸,而且成本較低,系統(tǒng)的可擴(kuò)展性好。
SIM300 需要外接SIM 卡卡座,其串口與單片機(jī)的串口相連,將GPRS 模塊接收到的信息傳送給單片機(jī),然后進(jìn)行數(shù)據(jù)處理。而AVR 單片機(jī)則控制SIM300 模塊的開關(guān),AVR 單片機(jī)與SIM300 模塊的連接示意圖如圖3 所示。
2.3 LED 屏驅(qū)動(dòng)電路
本系統(tǒng)的LED 條屏采用比較經(jīng)典的74HC595 作為點(diǎn)陣輸出的列驅(qū)動(dòng),采用ULN2803 作為行驅(qū)動(dòng)。此方案的驅(qū)動(dòng)電路設(shè)計(jì)軟硬件設(shè)計(jì)簡(jiǎn)單,而且功耗低、驅(qū)動(dòng)能力強(qiáng)、占用的I/O 口線較少,是一種造價(jià)低廉、應(yīng)用靈活的設(shè)計(jì)方案。
[!--empirenews.page--]
3 通信協(xié)議設(shè)計(jì)
由于本系統(tǒng)采用了GPRS 網(wǎng)絡(luò)的通信模式, 所以上位機(jī)設(shè)置一個(gè)LED 控制器管理平臺(tái)來(lái)管理所有的LED 控制器。這個(gè)LED 控制器管理平臺(tái)(即"上位機(jī)軟件")通過(guò)TCP/IP 協(xié)議與LED 屏無(wú)線控制器進(jìn)行通信,而且可以同時(shí)控制多臺(tái)。上位機(jī)軟件與LED 屏無(wú)線控制器之間采用GPRS 方式進(jìn)行連接, 它們之間的連接關(guān)系如圖4 所示。
LED 屏無(wú)線控制器是客戶端, 其數(shù)據(jù)的收發(fā)通過(guò)上位機(jī)軟件控制。當(dāng)LED 屏控制器上電運(yùn)行后,會(huì)主動(dòng)向上位機(jī)軟件建立連接并握手,登錄成功后,上位機(jī)軟件與LED 控制器才能進(jìn)行數(shù)據(jù)傳輸。
上位機(jī)軟件與各LED 屏無(wú)線控制器之間通信協(xié)議是以TCP 協(xié)議為基礎(chǔ)協(xié)議, 并自定義了一個(gè)STCP協(xié)議層用于封裝PDU(數(shù)據(jù)單元)數(shù)據(jù)層協(xié)議。STCP 協(xié)議層只為PDU 的承載框架, 提供安全可靠的傳輸過(guò)程。通信網(wǎng)絡(luò)層結(jié)構(gòu)圖如圖5 所示。
圖5 通信網(wǎng)絡(luò)層結(jié)構(gòu)圖
在自定義的STCP 通信協(xié)議中,制定了一系列管理無(wú)線LED 顯示屏控制器的通信指令,主要為上位機(jī)軟件的編程提供具體的通信結(jié)構(gòu)和規(guī)范。通信包格式如表1所示:
表1 通信包格式
注:
完整數(shù)據(jù)長(zhǎng)度: 整型字節(jié)(4 個(gè)字節(jié)長(zhǎng)度),整個(gè)通信包的長(zhǎng)度;
命令字: 根據(jù)無(wú)線LED 顯示屏控制器通信指令表,見(jiàn)表2;
顯式控制字: 0-無(wú);1-上移;2-下移;3-左移;4-右移;5-靜止;6-閃爍;7-刪除;
數(shù)據(jù)內(nèi)容:需要顯示信息內(nèi)容;
校驗(yàn)和: 全部數(shù)據(jù)累加校驗(yàn)和;
根據(jù)無(wú)線LED 顯示屏控制器實(shí)際運(yùn)用需要,制定了發(fā)送、刪除、顯示、連接、斷開指令等。這些指令的代碼和主要作用如表2 所示。
表2 通信指令表
上位機(jī)軟件通過(guò)Internet 網(wǎng)絡(luò)將數(shù)據(jù)發(fā)送到無(wú)線LED 顯示屏控制器后,LED 顯示屏控制器需要對(duì)收到的數(shù)據(jù)進(jìn)行處理。根據(jù)指令的不同,可以控制LED 顯示屏的顯示內(nèi)容及顯示模式(例如上移、下移、左移、右移、靜止、閃爍、刪除等)。
[!--empirenews.page--]
4 軟件設(shè)計(jì)
本系統(tǒng)的軟件設(shè)計(jì)包括兩部分: 上位機(jī)軟件和AVR 單片機(jī)的控制程序。上位機(jī)軟件完成與GPRS 模塊的通信, 控制LED 顯示屏上顯示的數(shù)據(jù)信息;AVR單片機(jī)的控制軟件主要完成系統(tǒng)初始化,GPRS 網(wǎng)絡(luò)連接,接收上位機(jī)發(fā)送的信息,分析接收信息內(nèi)容,完成指令, 并按需將發(fā)布信息轉(zhuǎn)換為點(diǎn)陣信息, 送到LED顯示屏進(jìn)行顯示。
4.1 AVR 單片機(jī)的控制程序
AVR 單片機(jī)的控制程序主要完成以下功能:連接GPRS 網(wǎng)絡(luò)、數(shù)據(jù)傳輸、控制LED 屏顯示。
(1)初始化系統(tǒng)及SIM300 模塊,連接GPRS 網(wǎng)絡(luò);(2)依照顯示屏控制器與上位機(jī)的通信協(xié)議,與上位機(jī)通信握手,接收指令,解析指令,并將顯示數(shù)據(jù)等信息存儲(chǔ)與處理;(3)通過(guò)串口驅(qū)動(dòng)LED 屏,進(jìn)行信息的顯示等。
下面簡(jiǎn)單介紹SIM300 模塊與上位機(jī)實(shí)現(xiàn)TCP/IP無(wú)線通信流程。
AT+CGDCONT=1,"IP","CMNET" --注冊(cè)中國(guó)移動(dòng)網(wǎng)絡(luò)
OK
AT+CGCLASS? --顯示GPRS 信息移動(dòng)的類型
+CGCLASS: "B"
OK
AT+CGATT? --GPRS 服務(wù)附加/分離
+CGATT: 1
OK
AT+CGACT=1,1 --環(huán)境激活
OK
AT +CIPSTART = "TCP","202.196.87.7","2020" -- 啟動(dòng)
TCP 連接(上位機(jī)IP 地址及端口號(hào))
OK
CONNECT OK --連接成功
AT+CIPSEND --通過(guò)TCP 發(fā)送數(shù)據(jù)
> HELLO
SEND OK --發(fā)送成功
4.2 上位機(jī)軟件
本系統(tǒng)的上位機(jī)軟件主要采用VC 設(shè)計(jì)一個(gè)通信界面,實(shí)現(xiàn)與LED 遠(yuǎn)程控制器通信。用戶界面部分采用MFC 框架基于Dialog 實(shí)現(xiàn)。在利用Visual C++進(jìn)行通過(guò)TCP/IP 協(xié)議網(wǎng)絡(luò)傳輸數(shù)據(jù)開發(fā)時(shí), 采用IOCP 框架來(lái)實(shí)現(xiàn)Windows Socket 的完成端口模型。
IOCP 即I/O 完成端口(I/O Completion Port),是一個(gè)異步I/O 的API,它可以高效地將I/O 事件通知給應(yīng)用程序。一個(gè)套接字在被創(chuàng)建后,與一個(gè)完成端口進(jìn)行關(guān)聯(lián)。當(dāng)一個(gè)事件發(fā)生的時(shí)候,此完成端口就將被操作系統(tǒng)加入一個(gè)隊(duì)列中, 然后應(yīng)用程序可以對(duì)核心層進(jìn)行查詢以得到此完成端口。當(dāng)某項(xiàng)I/O 操作一旦完成, 某個(gè)可以對(duì)該操作結(jié)果進(jìn)行處理的工作線程就會(huì)收到一則通知。在此應(yīng)用程序中創(chuàng)建一定數(shù)量的工作線程來(lái)處理重疊I/O 請(qǐng)求的通知。
IOCP 框架的啟動(dòng)流程如圖6 所示。
IOCP 框架的實(shí)現(xiàn)步驟如下:
(1)初始化Winsock 工作環(huán)境,并創(chuàng)建完成端口,創(chuàng)建完成端口線程,建立一個(gè)監(jiān)聽(tīng)套接字,使套接字與完成端口關(guān)聯(lián)起來(lái);
(2)監(jiān)聽(tīng)套接字開始工作,當(dāng)監(jiān)聽(tīng)套接字接收到客戶端TCP 的連接請(qǐng)求時(shí),IOCP 會(huì)獲取并處理該消息,創(chuàng)建對(duì)應(yīng)的Socket 對(duì)象進(jìn)行接收處理,完成連接工作;
(3)當(dāng)客戶端完成TCP 連接后,可以開始數(shù)據(jù)通信,由I/O 線程來(lái)負(fù)責(zé)分發(fā)I/O 請(qǐng)求,通過(guò)線程池來(lái)分配邏輯處理環(huán)境;
(4)在接收數(shù)據(jù)后,將微軟提供的一個(gè)I/O 數(shù)據(jù)結(jié)構(gòu)(WSAOVERLAPPED)進(jìn)行擴(kuò)展,完成協(xié)議解析和數(shù)據(jù)處理。
此外,這里的線程池只是一個(gè)管理隊(duì)列,用于處理線程資源的管理, 用最少的線程完成最大業(yè)務(wù)邏輯的處理。真正執(zhí)行的線程函數(shù)也不完成詳細(xì)的業(yè)務(wù)處理,僅僅完成對(duì)I/O 請(qǐng)求的再調(diào)用,而由虛函數(shù)實(shí)現(xiàn)I/O 請(qǐng)求的再處理。
為了提高軟件的友好性, 框架采用Windows 的消息機(jī)制,與UI 進(jìn)行交互,通過(guò)窗口消息將框架的相關(guān)信息傳遞給UI 窗口。因此在框架中保留了一個(gè)指針成員, 并在需要的時(shí)候通過(guò)該指針調(diào)用消息響應(yīng)函數(shù)向窗口發(fā)送消息,UI 根據(jù)消息反映框架的運(yùn)行信息。
5 結(jié)語(yǔ)
根據(jù)近年來(lái)GSM/GPRS 數(shù)據(jù)通信技術(shù)等發(fā)展的趨勢(shì),本文提出了基于GPRS 網(wǎng)絡(luò)的、使用低成本SIM300模塊的無(wú)線LED 屏控制器的設(shè)計(jì)方案, 該系統(tǒng)利用TCP/IP 協(xié)議實(shí)現(xiàn)了基于GPRS 網(wǎng)絡(luò)的無(wú)線數(shù)據(jù)的傳送。上位機(jī)將文字或圖片信息數(shù)據(jù)通過(guò)GPRS 網(wǎng)絡(luò)傳輸?shù)竭h(yuǎn)程LED 屏終端, 也可以接收客戶端發(fā)送的數(shù)據(jù),再根據(jù)數(shù)據(jù)的內(nèi)容相應(yīng)地完成各種命令,控制LED屏顯示相應(yīng)的信息。該系統(tǒng)設(shè)計(jì)經(jīng)測(cè)試取得了良好的效果。