孫曉東, 王治強(qiáng), 楊偉光
(大連東軟信息學(xué)院 智能與電子工程學(xué)院, 大連 116023)
LED顯示屏在目前已經(jīng)是一個(gè)非常成熟的產(chǎn)品,通過LED顯示屏可以用圖文方式進(jìn)行信息發(fā)布, 是當(dāng)今很重要的宣傳展示手段. 傳統(tǒng)的LED顯示屏顯示的信息是通過USB接口文件拷貝進(jìn)行信息更新的, 有更新速度慢, 操作不便利的行業(yè)痛點(diǎn).
QQ物聯(lián)無線LED顯示屏是一種快速、方便更新LED屏幕信息的智能硬件. 是將QQ物聯(lián)技術(shù)和LED屏幕結(jié)合到一起, 給傳統(tǒng)LED顯示屏插上物聯(lián)網(wǎng)的翅膀, 一躍成為可以遠(yuǎn)程操控、安裝使用便利、有大數(shù)據(jù)服務(wù)的智能設(shè)備. 在操作方法上, 可以使用手機(jī)QQ隨時(shí)隨地編輯和發(fā)布信息, 還可以對(duì)常用詞條一鍵選擇發(fā)送, 或者基于模板編輯發(fā)送等貼心服務(wù)[1-4].
1 系統(tǒng)設(shè)計(jì)
系統(tǒng)體系架構(gòu)如圖1所示. 首先手機(jī)QQ客戶端與QQ物聯(lián)平臺(tái)建立連接, 用戶通過QQ聊天窗口發(fā)送文本信息, 通過WiFi將數(shù)據(jù)發(fā)送到QQ物聯(lián)云平臺(tái).QQ物聯(lián)模塊能夠?qū)Q物聯(lián)云上的信息通過WiFi傳遞給LED控制板. LED控制板進(jìn)行LED顯示屏的顯示控制, 最終將手機(jī)QQ客戶端中輸入的信息按照設(shè)定的模式正確的在LED顯示屏中顯示出來.

圖1 系統(tǒng)結(jié)構(gòu)框圖
1.1 QQ物聯(lián)無線LED顯示屏系統(tǒng)基本功能需求
WiFi入網(wǎng)功能: QQ物聯(lián)板需要在QQ物聯(lián)平臺(tái)注冊(cè)賬號(hào)后, 在云平臺(tái)中添加LED點(diǎn)陣屏設(shè)備, 并通過QQ物聯(lián)云平臺(tái)提供的設(shè)備ID以及QQ物聯(lián)平臺(tái)提供的秘鑰生成工具生成的SN序列號(hào)生成設(shè)備的二維碼, 使用手機(jī)QQ客戶端通過掃描二維碼, 使QQ物聯(lián)板通過手機(jī)QQ端選擇要加入的WiFi熱點(diǎn)以及輸入密碼使設(shè)備加入到網(wǎng)絡(luò)中, 這樣才能接收到手機(jī)QQ聊天界面發(fā)送來的信息, 以及將信息發(fā)送到LED控制板上[5].
LED屏顯示功能: LED控制板需要接收到QQ物聯(lián)板端發(fā)送過來的信息, 將信息進(jìn)行字符匹配, 然后將字符取模得到的值放入編寫好的LED點(diǎn)陣屏的驅(qū)動(dòng)函數(shù), 使LED點(diǎn)陣屏顯示出從QQ物聯(lián)板端發(fā)送過來的信息.
漢字顯示功能: 在QQ物聯(lián)板發(fā)送過來的文本信息中有需要有漢字的數(shù)據(jù)發(fā)送, 在LED控制板中需要接收到這些文本信息且需要取出這些漢字的的字模,從而顯示出對(duì)應(yīng)的漢字.
LED顯示屏滾動(dòng)顯示: 在LED點(diǎn)陣顯示中, 不僅需要靜態(tài)內(nèi)容的顯示, 也需要加入滾動(dòng)顯示, 來增加LED點(diǎn)陣顯示的多樣性.
設(shè)備綁定功能: 首先生成QQ物聯(lián)板設(shè)備的二維碼, 并在代碼中修改QQ物聯(lián)DATA.C中的參數(shù), 使用手機(jī)QQ客戶端通過掃描二維碼, 完成綁定, 只有QQ物聯(lián)板與手機(jī)QQ綁定后, 才能使用QQ物聯(lián)平臺(tái)中提供的接收QQ消息的功能[6].
WiFi搜索以及密碼保存功能: 在QQ物聯(lián)板斷電之后, 重新上電不需要在進(jìn)行選擇網(wǎng)絡(luò)和再次輸入密碼,QQ物聯(lián)板能夠直接自動(dòng)加入網(wǎng)絡(luò).
串口收發(fā)功能: 在QQ物聯(lián)板接收到手機(jī)QQ發(fā)送的消息后, 需要通過串口通信將QQ消息發(fā)送到LED控制板上.
1.2 硬件結(jié)構(gòu)
系統(tǒng)使用了兩款STM32芯片. 其中一個(gè)用來作為QQ物聯(lián)板的主控芯片, 另一個(gè)用來作為L(zhǎng)ED點(diǎn)陣屏的控制芯片[7]. 在QQ物聯(lián)板上放置一個(gè)QQ物聯(lián)集成的WiFi模塊手機(jī)QQ客戶端和QQ物聯(lián)設(shè)備通過WiFi網(wǎng)絡(luò)通信將數(shù)據(jù)發(fā)送到騰訊云, 并進(jìn)行數(shù)據(jù)傳輸, QQ物聯(lián)板WiFi模塊收到數(shù)據(jù)后, 通過UART通信方式將數(shù)據(jù)發(fā)送到LED控制板上, LED控制板再根據(jù)數(shù)據(jù)顯示相對(duì)應(yīng)的內(nèi)容. 在QQ物聯(lián)WiFi模塊、QQ物聯(lián)模塊、QQ物聯(lián)云平臺(tái)共同工作的情況下, 實(shí)現(xiàn)設(shè)備綁定以及WiFi連入網(wǎng)絡(luò)的功能[8].
1.3 軟件結(jié)構(gòu)
用戶代碼流程設(shè)計(jì)如圖2所示. 首先QQ物聯(lián)板中, 要對(duì)通信串口、LED指示燈引腳、WiFi模塊進(jìn)行初始化操作, 然后重置事件發(fā)生隊(duì)列、開啟隊(duì)列, 最后等待事件發(fā)生, 以及對(duì)事件進(jìn)行處理. 在LED控制板中, 對(duì)系統(tǒng)時(shí)鐘、中斷、串口通信以及LED點(diǎn)陣屏驅(qū)動(dòng)進(jìn)行初始化[9]. 隨之, 等待QQ物聯(lián)板中發(fā)送QQ收到的消息, 觸發(fā)串口接收中斷, 并處理中斷, 將數(shù)據(jù)信息顯示到LED點(diǎn)陣屏幕上.

圖2 軟件代碼流程圖
軟件控制中主要包括3個(gè)模塊的設(shè)計(jì), 在下面章節(jié)中分別介紹.
1.3.1 QQ物聯(lián)端數(shù)據(jù)包設(shè)計(jì)
QQ物聯(lián)端系統(tǒng)軟件功能主要包括登錄WiFi聯(lián)網(wǎng)、設(shè)備信息配置、串口功能[10]. 其QQ物聯(lián)板WiFi數(shù)據(jù)包格式如下所示.
(1) 包頭 (header): 固定為 0X6688.
(2) 長(zhǎng)度(len): 是指從 cmd 開始到整個(gè)數(shù)據(jù)包結(jié)束所占用的字節(jié)數(shù)包含校驗(yàn) (checksum). 由于 QQ物聯(lián)的數(shù)據(jù)包可能超過 255, 因此這里升級(jí)成 2 Byte, 分別是高 8 位和低 8 位, 實(shí)際長(zhǎng)度就是 len_high*256+len_low.
(3) 命令(cmd): 控制的命令.
(4) 消息序號(hào)(SN): 命令發(fā)送方在每次發(fā)送命令時(shí), 對(duì) SN 加一. 數(shù)據(jù)接收方收到數(shù)據(jù), 做相應(yīng)數(shù)據(jù)返回時(shí)將接收到的SN一起返回. 給發(fā)送方判斷其相應(yīng)的是哪一條請(qǐng)求.
(5) 傳輸數(shù)據(jù)(Payload): 真正的傳輸數(shù)據(jù), 內(nèi)部可能包含子命令, 這個(gè)根據(jù)實(shí)際的命令而定.
檢驗(yàn)和(checksum)的計(jì)算方式為把數(shù)據(jù)包按字節(jié)求和得出的結(jié)果對(duì) 256 求余(不含包頭0X6688兩個(gè)字節(jié)).
QQ物聯(lián)板在與LED控制板通信時(shí), QQ物聯(lián)板發(fā)送的數(shù)據(jù)中去掉了包頭、命令、消息序號(hào)等數(shù)據(jù)位.整體的數(shù)據(jù)包種只有信息數(shù)據(jù)、0x00(