高紹斌,喬學工,王華倩
(太原理工大學 a.信息工程學院;b.電氣與動力工程學院,山西 太原 030024)
紅外線無線通信是指采用波長為950 nm左右的近紅外波段紅外線信號作為通信媒體進行無線數(shù)據(jù)傳輸?shù)囊环N通信方式,它具有成本低廉、數(shù)據(jù)傳輸穩(wěn)定可靠、抗電磁干擾能力強、能耗低、無電磁輻射等優(yōu)點[1-2]。由于紅外線波長較短,對障礙物的衍射能力差,一般用于短距離點對點直接數(shù)據(jù)傳輸環(huán)境,是目前小型家電遙控系統(tǒng)中廣泛應用的數(shù)據(jù)通信手段[3]。本文針對無線紅外線通信具有方向性的弱點,提出一種適用于智能家居數(shù)據(jù)采集系統(tǒng)中點對多點紅外線通信協(xié)議,多個傳感器節(jié)點通過紅外無線通信的方式把感知信息傳給中央控制器。
紅外通信系統(tǒng)一般由紅外線發(fā)射和紅外線接收兩部分組成[4]。系統(tǒng)首先將待發(fā)送數(shù)據(jù)打包成數(shù)據(jù)幀,然后將數(shù)據(jù)幀送給發(fā)射模塊,發(fā)射模塊將待發(fā)射數(shù)據(jù)(通常是0、1的二進制數(shù)據(jù))經(jīng)調(diào)制編碼調(diào)制后,通過紅外發(fā)光管將電信號轉換成紅外光信號向空間發(fā)射。接收模塊接收到紅外光信號后,經(jīng)濾波、放大、解調(diào)還原成能被單片機識別的二值信號,再由單片機解碼恢復得到原始數(shù)據(jù)。
如圖1所示為基于無線紅外通信的智能家居傳感器數(shù)據(jù)采集子系統(tǒng)結構示意圖,中央控制器(即主控節(jié)點)以輪詢的方式依次與傳感器節(jié)點(即從節(jié)點,如溫度傳感器、濕度傳感器、CO2傳感器、煙霧傳感器、漏水傳感器等)通信,傳感器節(jié)點收到中央控制器信號采集命令后將感知到的傳感數(shù)據(jù)打包成數(shù)據(jù)幀傳給中央控制器。當主控節(jié)點與某一傳感器節(jié)點不能直接通信時,系統(tǒng)通過選擇一個能與雙方直接通信的第三方從節(jié)點,通過轉發(fā)數(shù)據(jù)方式實現(xiàn)二者通信。該方法使系統(tǒng)通信穩(wěn)定性得到了提高,同時擴展了無線紅外通信的使用范圍。
圖1 智能家居傳感數(shù)據(jù)采集子系統(tǒng)結構圖
本設計采用意法半導體STM8s103單片機作為主控芯片,該芯片具有8 kbyte Flash程序存儲空間和1 kbyte RAM,內(nèi)置16 MHz RC振蕩器,無須外接晶振即可工作,10位精度ADC模塊能將傳感器采集的模擬信號轉換成數(shù)字信號以便信號傳輸和存儲,脈寬和頻率可調(diào)的PWM信號波形輸出端口可用于產(chǎn)生紅外線載波信號。STM8s103功耗非常低,正常工作電流只有4~6 mA,進入休眠狀態(tài)只有4 μA,非常適合使用在有較高功耗要求的無線傳感器網(wǎng)絡信號采集系統(tǒng)中。
如圖2為紅外線發(fā)送和接收硬件電路,紅外發(fā)射管采用Vishay公司生產(chǎn)的TSAL6200,TSAL6200是一款遠距離紅外發(fā)射管,發(fā)射紅外光波長為940 nm,有效發(fā)射距離大于30 m。其正極通過一個100 Ω限流電阻直接接到電源正極,負極接到三極管集電極,三極管基極接到單片機PWM輸出端口。其電路原理如圖2所示。
圖2 紅外通信收發(fā)電路圖
接收端采用Vishay公司生產(chǎn)的一體化紅外接收頭TSOP41,它能直接對接收到的38 kHz紅外光信號進行光電轉換、信號放大、檢波、解調(diào),最后輸出被單片機識別的TTL電平,最遠可接收45 m范圍內(nèi)紅外光信號,最高數(shù)據(jù)接收速率可達4 000 bit/s。如圖2所示TSOP41信號輸出引腳直接與單片機具有脈沖捕獲功能的PC2端相連,紅外接收頭將解調(diào)后的二值信號直接送與單片機,由單片機進行解碼恢復得到原始數(shù)據(jù)。
為了使無線紅外數(shù)據(jù)通信標準化,IRDA(紅外數(shù)據(jù)協(xié)會)為紅外通信制定了一系列標準,即IrDA標準協(xié)議[5]。其中Ir-DA1.1標準能以最高4 Mbit/s通信速率實現(xiàn)近距離(通信距離只有0~1 m)點對點通信,但其并不適合智能家居系統(tǒng)傳感數(shù)據(jù)采集中的一對多點無線通信環(huán)境,因此本文介紹一種新的點對多點紅外通信協(xié)議,以滿足智能家居系統(tǒng)一個主控器與多個傳感器節(jié)點的數(shù)據(jù)通信要求。
二進制信號編碼由單片機完成,分別以脈寬320 μs、間隔320 μs、周期640 μs電平組合表示為二進制信號“0”,以脈寬320 μs、間隔640 μs、周期960 μs電平組合表示為二進制信號“1”。為了提高信號抗干擾能力和發(fā)射效率,采用頻率為38 kHz,占空比為1/3脈沖序列為載波信號,將上述電平信號編碼組成的“0”和“1”信號序列與載波信號相乘(即載頻調(diào)制),最后將調(diào)制好的信號用紅外發(fā)射管把電信號轉換成紅外線信號向空間發(fā)射,如圖3所示。
圖3 信號調(diào)制圖
協(xié)議中數(shù)據(jù)以幀為單位進行傳送,一幀數(shù)據(jù)由引導同步碼、用戶數(shù)據(jù)和幀結束碼組成,如圖4所示。
圖4 數(shù)據(jù)幀格式
引導同步碼用以引導接收方進行用戶數(shù)據(jù)接收、區(qū)分命令幀和數(shù)據(jù)幀,其中命令幀引導同步由脈寬為6 ms、間隔為3 ms、周期為9 ms的脈沖電平組合表示,數(shù)據(jù)幀引導同步碼由脈寬為3 ms、間隔為3 ms、周期為6 ms的脈沖電平組合表示。用戶數(shù)據(jù)即為發(fā)送方用以傳送給接收方的有效數(shù)據(jù)內(nèi)容。幀結束碼用以標志本輪發(fā)送數(shù)據(jù)結束,由脈寬為2 ms的脈沖電平表示。
本協(xié)議定義3種數(shù)據(jù)幀結構,分別為命令幀、數(shù)據(jù)幀和應答確認幀。
命令幀結構如圖5所示。
圖5 命令幀結構
命令幀結構說明:
目的地址:8 bit,表示數(shù)據(jù)傳送目的ID地址號。
源地址:8 bit,表示發(fā)送方ID地址號。
轉發(fā)地址:8 bit,表示轉發(fā)數(shù)據(jù)命令中需要轉發(fā)目的ID地址號。
命令位:4 bit,該協(xié)議定義兩種命令中0B0011表示直接發(fā)送數(shù)據(jù)命令;0B1100表示轉發(fā)數(shù)據(jù)命令。
奇偶校驗位:4 bit,分別是目的地址、源地址、轉發(fā)行地址、命令行的奇偶校驗位。
數(shù)據(jù)幀結構如圖6所示。
圖6 數(shù)據(jù)幀結構
數(shù)據(jù)幀由8 byte數(shù)據(jù)和1 byte奇偶校驗位組成,其中奇偶校驗位每一位分別為前8個數(shù)據(jù)字節(jié)奇偶校驗位。
為了提高數(shù)據(jù)通信可靠性,該協(xié)議引入文獻[6]中基于應答機制通信協(xié)議的設計思想,在數(shù)據(jù)傳輸時節(jié)點與節(jié)點之間采用發(fā)送確認幀和超時重發(fā)的策略。其中確認幀由5個脈寬為320 μs、間隔為320 μs、周期為640 μs的連續(xù)脈沖表示。
協(xié)議采用主從式網(wǎng)絡拓撲結構,主控節(jié)點(即智能家居中央控制器)以一定時間間隔依次向從節(jié)點(如溫度傳感器、濕度傳感器、CO2傳感器、煙霧傳感器、漏水傳感器等)發(fā)送命令幀,從節(jié)點響應主節(jié)點命令并把感知的傳感數(shù)據(jù)打包成數(shù)據(jù)幀傳送給主控節(jié)點。在網(wǎng)絡部署階段,系統(tǒng)為網(wǎng)絡中每一節(jié)點分配一個ID號并存于節(jié)點的E2PROM中,作為今后的通信地址碼。
主控節(jié)點設有定時器,定時時間到系統(tǒng)啟動輪詢機制,該協(xié)議設定定時間為30 s。為確保數(shù)據(jù)傳輸?shù)姆€(wěn)定可靠,主節(jié)點和從節(jié)點通信分為兩個階段,分別為通信握手階段和數(shù)據(jù)傳輸階段,即主控節(jié)點與從節(jié)點在進行傳感數(shù)據(jù)傳輸之前,主控節(jié)點通過發(fā)送命令幀的方式與從節(jié)點建立通信鏈路。
通信握手階段:1)首先主控節(jié)點向從節(jié)點發(fā)送直接數(shù)據(jù)傳輸命令(0B0011)幀。2)發(fā)送的命令幀若得到從節(jié)點確認幀響應,即握手成功進入數(shù)據(jù)傳輸階段。3)發(fā)送命令幀后主控節(jié)點等待2個確認幀時間長度沒有收到確認幀,給該從節(jié)點重發(fā)直接數(shù)據(jù)傳送命令幀,如此重復3次若沒收到確認幀響應,即直接通信嘗試失敗。4)直接通信失敗,主控節(jié)點選擇一個除該節(jié)點以外的另一從節(jié)點發(fā)送轉發(fā)數(shù)據(jù)命令(0B1100)幀,等待1個命令幀加上3個確認幀時間長度,若得到該從節(jié)點確認幀響應,握手成功進入數(shù)據(jù)傳輸階段,否則從剩余從節(jié)點中選擇另一節(jié)點發(fā)送一轉發(fā)數(shù)據(jù)命令幀直到握手成功進入數(shù)據(jù)傳輸階段。
從節(jié)點接收到命令幀后:1)首先提取命令幀中的校驗位對接收到的命令幀進行校驗,若數(shù)據(jù)校驗正確,提取命令幀中的目的地址與本節(jié)點ID號相匹配;若校驗數(shù)據(jù)錯誤則回到命令幀接收狀態(tài)。2)ID匹配成功,則提取命令字行,否則回到命令幀接收狀態(tài)。3)命令為直接發(fā)送數(shù)據(jù)命令,則發(fā)送確認幀響應,接收命令幀成功,進入數(shù)據(jù)傳輸階段。4)命令為轉發(fā)數(shù)據(jù)命令,提取轉發(fā)地址并向該ID地址節(jié)點發(fā)送直接數(shù)據(jù)傳輸命令,并等待接收確認幀。5)接收到轉發(fā)節(jié)點確認幀,發(fā)送確認幀響應主控節(jié)點,進入數(shù)據(jù)傳輸階段。6)等待2個確認幀長度時間沒有收到確認幀,即轉發(fā)數(shù)據(jù)失敗,回到命令幀接收狀態(tài)。
數(shù)據(jù)傳輸階段,通信握手成功后主控節(jié)點等待數(shù)據(jù)接收:1)接收到數(shù)據(jù)幀,若數(shù)據(jù)校驗正確,發(fā)送確認幀,數(shù)據(jù)傳輸完畢,進入下一節(jié)點通信握手階段;若數(shù)據(jù)校驗錯誤等待接收下一幀數(shù)據(jù)。2)通信握手階段發(fā)送命令為直接數(shù)據(jù)傳輸命令,等待3個數(shù)據(jù)幀時間長度,若未正確接收數(shù)據(jù),數(shù)據(jù)傳輸失敗,返回到通信握手階段尋找另外一條通信鏈路。3)通信握手階段發(fā)送命令為轉發(fā)數(shù)據(jù)傳輸命令,等待6個數(shù)據(jù)幀時間長度若未正確接收到數(shù)據(jù),數(shù)據(jù)傳輸失敗,返回通信握手階段尋找另外一條通信鏈路。
通信握手成功后從節(jié)點:1)接收到命令為直接數(shù)據(jù)傳輸,從節(jié)點直接向源地址ID節(jié)點發(fā)送數(shù)據(jù)幀,并等待確認幀響應,收到確認幀,數(shù)據(jù)傳輸完畢。2)若等待2個確認幀時間長度未收到確認幀,重傳數(shù)據(jù)副本,等待確認幀,此過程重復嘗試3次失敗,則放棄數(shù)據(jù)幀傳輸,返回命令幀接收階段。3)從節(jié)點接收到轉發(fā)數(shù)據(jù)命令,進入數(shù)據(jù)幀接收狀態(tài),接收到數(shù)據(jù)并校驗正確后將接收到的數(shù)據(jù)轉發(fā)給主控節(jié)點。4)若等待3個數(shù)據(jù)幀時間長度未正確接收數(shù)據(jù),數(shù)據(jù)幀接收失敗,返回命令幀接收階段。
軟件包括系統(tǒng)硬件初始化、數(shù)據(jù)發(fā)送程序和數(shù)據(jù)接收程序。
系統(tǒng)初始化的主要任務是初始化硬件資源,包括設置TIM1_CH1輸出占空比為1/3、頻率為38 kHz的脈沖序列,用作載波信號;設置TIM1_CH2為脈沖捕獲中斷方式,用以計算接收數(shù)據(jù)的脈沖寬度及周期。
數(shù)據(jù)發(fā)送程序,主要包括發(fā)送命令幀子程序(void Send_Command_Frame(unsigned char DestAddress,unsigned char SourAddress,unsigned char TranAddress,unsigned char command)),發(fā)送數(shù)據(jù)幀程序(void Send_Data_Frame(unsigned char*DataBuff)),發(fā)送確認幀(void Send_Confirm_Frame(void))。
數(shù)據(jù)接收程序,數(shù)據(jù)接收主要在STM8脈沖捕獲中斷服務程序void TIM1_CAP_COM_IRQHandler(void)中完成,主要任務有引導同步碼檢測、命令幀與數(shù)據(jù)幀判斷、幀結束碼檢測,根據(jù)脈沖周期時間實現(xiàn)數(shù)據(jù)“0”和“1”的判別,接收數(shù)據(jù)奇偶校驗。
本設計經(jīng)實驗測試結果表明協(xié)議具有數(shù)據(jù)傳輸可靠性高、抗干擾能力強、功耗小、實現(xiàn)成本低等優(yōu)點。該協(xié)議在智能家居系統(tǒng)傳感器數(shù)據(jù)采集系統(tǒng)中運行效果良好,能穩(wěn)定可靠實現(xiàn)室內(nèi)30 m范圍內(nèi)一個主控節(jié)點與多個從節(jié)點之間的數(shù)據(jù)傳輸,該協(xié)議極大擴展了無線紅外通信的應用范圍,具有較好的應用前景。
[1] 趙軍.淺析紅外通信技術在數(shù)據(jù)通訊中的作用[J].中國新技術新產(chǎn)品,2013(4):41.
[2] 張建.紅外通信技術淺析[J].信息與電腦,2012(2):169.
[3] 張毅,張靈至,盧威.面向物聯(lián)網(wǎng)的ZigBee-紅外控制系統(tǒng)設計[J].電子技術應用,2013,39(5):82-89.
[4] 黃濤,褚淑杰.基于紅外通信的智能家居系統(tǒng)[J].微計算機信息,2005,21(1):141-143.
[5] 邱磊,肖兵.基于IrDA協(xié)議棧的紅外通信綜述[J].無線通信技術,2004(4):28-32.
[6]寇強,黨宏社.一種串口多機應答式通信協(xié)議的設計與實現(xiàn)[J].電視技術,2008,32(S1):59-61.