高紹斌,喬學工,王華倩
(太原理工大學 a.信息工程學院;b.電氣與動力工程學院,山西 太原 030024)
紅外線無線通信是指采用波長為950 nm左右的近紅外波段紅外線信號作為通信媒體進行無線數據傳輸的一種通信方式,它具有成本低廉、數據傳輸穩定可靠、抗電磁干擾能力強、能耗低、無電磁輻射等優點[1-2]。由于紅外線波長較短,對障礙物的衍射能力差,一般用于短距離點對點直接數據傳輸環境,是目前小型家電遙控系統中廣泛應用的數據通信手段[3]。本文針對無線紅外線通信具有方向性的弱點,提出一種適用于智能家居數據采集系統中點對多點紅外線通信協議,多個傳感器節點通過紅外無線通信的方式把感知信息傳給中央控制器。
紅外通信系統一般由紅外線發射和紅外線接收兩部分組成[4]。系統首先將待發送數據打包成數據幀,然后將數據幀送給發射模塊,發射模塊將待發射數據(通常是0、1的二進制數據)經調制編碼調制后,通過紅外發光管將電信號轉換成紅外光信號向空間發射。接收模塊接收到紅外光信號后,經濾波、放大、解調還原成能被單片機識別的二值信號,再由單片機解碼恢復得到原始數據。
如圖1所示為基于無線紅外通信的智能家居傳感器數據采集子系統結構示意圖,中央控制器(即主控節點)以輪詢的方式依次與傳感器節點(即從節點,如溫度傳感器、濕度傳感器、CO2傳感器、煙霧傳感器、漏水傳感器等)通信,傳感器節點收到中央控制器信號采集命令后將感知到的傳感數據打包成數據幀傳給中央控制器。當主控節點與某一傳感器節點不能直接通信時,系統通過選擇一個能與雙方直接通信的第三方從節點,通過轉發數據方式實現二者通信。該方法使系統通信穩定性得到了提高,同時擴展了無線紅外通信的使用范圍。

圖1 智能家居傳感數據采集子系統結構圖
本設計采用意法半導體STM8s103單片機作為主控芯片,該芯片具有8 kbyte Flash程序存儲空間和1 kbyte RAM,內置16 MHz RC振蕩器,無須外接晶振即可工作,10位精度ADC模塊能將傳感器采集的模擬信號轉換成數字信號以便信號傳輸和存儲,脈寬和頻率可調的PWM信號波形輸出端口可用于產生紅外線載波信號。STM8s103功耗非常低,正常工作電流只有4~6 mA,進入休眠狀態只有4 μA,非常適合使用在有較高功耗要求的無線傳感器網絡信號采集系統中。
如圖2為紅外線發送和接收硬件電路,紅外發射管采用Vishay公司生產的TSAL6200,TSAL6200是一款遠距離紅外發射管,發射紅外光波長為940 nm,有效發射距離大于30 m。其正極通過一個100 Ω限流電阻直接接到電源正極,負極接到三極管集電極,三極管基極接到單片機PWM輸出端口。其電路原理如圖2所示。

圖2 紅外通信收發電路圖
接收端采用Vishay公司生產的一體化紅外接收頭TSOP41,它能直接對接收到的38 kHz紅外光信號進行光電轉換、信號放大、檢波、解調,最后輸出被單片機識別的TTL電平,最遠可接收45 m范圍內紅外光信號,最高數據接收速率可達4 000 bit/s。如圖2所示TSOP41信號輸出引腳直接與單片機具有脈沖捕獲功能的PC2端相連,紅外接收頭將解調后的二值信號直接送與單片機,由單片機進行解碼恢復得到原始數據。
為了使無線紅外數據通信標準化,IRDA(紅外數據協會)為紅外通信制定了一系列標準,即IrDA標準協議[5]。其中Ir-DA1.1標準能以最高4 Mbit/s通信速率實現近距離(通信距離只有0~1 m)點對點通信,但其并不適合智能家居系統傳感數據采集中的一對多點無線通信環境,因此本文介紹一種新的點對多點紅外通信協議,以滿足智能家居系統一個主控器與多個傳感器節點的數據通信要求。
二進制信號編碼由單片機完成,分別以脈寬320 μs、間隔320 μs、周期640 μs電平組合表示為二進制信號“0”,以脈寬320 μs、間隔640 μs、周期960 μs電平組合表示為二進制信號“1”。為了提高信號抗干擾能力和發射效率,采用頻率為38 kHz,占空比為1/3脈沖序列為載波信號,將上述電平信號編碼組成的“0”和“1”信號序列與載波信號相乘(即載頻調制),最后將調制好的信號用紅外發射管把電信號轉換成紅外線信號向空間發射,如圖3所示。

圖3 信號調制圖
協議中數據以幀為單位進行傳送,一幀數據由引導同步碼、用戶數據和幀結束碼組成,如圖4所示。

圖4 數據幀格式
引導同步碼用以引導接收方進行用戶數據接收、區分命令幀和數據幀,其中命令幀引導同步由脈寬為6 ms、間隔為3 ms、周期為9 ms的脈沖電平組合表示,數據幀引導同步碼由脈寬為3 ms、間隔為3 ms、周期為6 ms的脈沖電平組合表示。用戶數據即為發送方用以傳送給接收方的有效數據內容。幀結束碼用以標志本輪發送數據結束,由脈寬為2 ms的脈沖電平表示。
本協議定義3種數據幀結構,分別為命令幀、數據幀和應答確認幀。
命令幀結構如圖5所示。

圖5 命令幀結構
命令幀結構說明:
目的地址:8 bit,表示數據傳送目的ID地址號。
源地址:8 bit,表示發送方ID地址號。
轉發地址:8 bit,表示轉發數據命令中需要轉發目的ID地址號。
命令位:4 bit,該協議定義兩種命令中0B0011表示直接發送數據命令;0B1100表示轉發數據命令。
奇偶校驗位:4 bit,分別是目的地址、源地址、轉發行地址、命令行的奇偶校驗位。
數據幀結構如圖6所示。

圖6 數據幀結構
數據幀由8 byte數據和1 byte奇偶校驗位組成,其中奇偶校驗位每一位分別為前8個數據字節奇偶校驗位。
為了提高數據通信可靠性,該協議引入文獻[6]中基于應答機制通信協議的設計思想,在數據傳輸時節點與節點之間采用發送確認幀和超時重發的策略。其中確認幀由5個脈寬為320 μs、間隔為320 μs、周期為640 μs的連續脈沖表示。
協議采用主從式網絡拓撲結構,主控節點(即智能家居中央控制器)以一定時間間隔依次向從節點(如溫度傳感器、濕度傳感器、CO2傳感器、煙霧傳感器、漏水傳感器等)發送命令幀,從節點響應主節點命令并把感知的傳感數據打包成數據幀傳送給主控節點。在網絡部署階段,系統為網絡中每一節點分配一個ID號并存于節點的E2PROM中,作為今后的通信地址碼。
主控節點設有定時器,定時時間到系統啟動輪詢機制,該協議設定定時間為30 s。為確保數據傳輸的穩定可靠,主節點和從節點通信分為兩個階段,分別為通信握手階段和數據傳輸階段,即主控節點與從節點在進行傳感數據傳輸之前,主控節點通過發送命令幀的方式與從節點建立通信鏈路。
通信握手階段:1)首先主控節點向從節點發送直接數據傳輸命令(0B0011)幀。2)發送的命令幀若得到從節點確認幀響應,即握手成功進入數據傳輸階段。3)發送命令幀后主控節點等待2個確認幀時間長度沒有收到確認幀,給該從節點重發直接數據傳送命令幀,如此重復3次若沒收到確認幀響應,即直接通信嘗試失敗。4)直接通信失敗,主控節點選擇一個除該節點以外的另一從節點發送轉發數據命令(0B1100)幀,等待1個命令幀加上3個確認幀時間長度,若得到該從節點確認幀響應,握手成功進入數據傳輸階段,否則從剩余從節點中選擇另一節點發送一轉發數據命令幀直到握手成功進入數據傳輸階段。
從節點接收到命令幀后:1)首先提取命令幀中的校驗位對接收到的命令幀進行校驗,若數據校驗正確,提取命令幀中的目的地址與本節點ID號相匹配;若校驗數據錯誤則回到命令幀接收狀態。2)ID匹配成功,則提取命令字行,否則回到命令幀接收狀態。3)命令為直接發送數據命令,則發送確認幀響應,接收命令幀成功,進入數據傳輸階段。4)命令為轉發數據命令,提取轉發地址并向該ID地址節點發送直接數據傳輸命令,并等待接收確認幀。5)接收到轉發節點確認幀,發送確認幀響應主控節點,進入數據傳輸階段。6)等待2個確認幀長度時間沒有收到確認幀,即轉發數據失敗,回到命令幀接收狀態。
數據傳輸階段,通信握手成功后主控節點等待數據接收:1)接收到數據幀,若數據校驗正確,發送確認幀,數據傳輸完畢,進入下一節點通信握手階段;若數據校驗錯誤等待接收下一幀數據。2)通信握手階段發送命令為直接數據傳輸命令,等待3個數據幀時間長度,若未正確接收數據,數據傳輸失敗,返回到通信握手階段尋找另外一條通信鏈路。3)通信握手階段發送命令為轉發數據傳輸命令,等待6個數據幀時間長度若未正確接收到數據,數據傳輸失敗,返回通信握手階段尋找另外一條通信鏈路。
通信握手成功后從節點:1)接收到命令為直接數據傳輸,從節點直接向源地址ID節點發送數據幀,并等待確認幀響應,收到確認幀,數據傳輸完畢。2)若等待2個確認幀時間長度未收到確認幀,重傳數據副本,等待確認幀,此過程重復嘗試3次失敗,則放棄數據幀傳輸,返回命令幀接收階段。3)從節點接收到轉發數據命令,進入數據幀接收狀態,接收到數據并校驗正確后將接收到的數據轉發給主控節點。4)若等待3個數據幀時間長度未正確接收數據,數據幀接收失敗,返回命令幀接收階段。
軟件包括系統硬件初始化、數據發送程序和數據接收程序。
系統初始化的主要任務是初始化硬件資源,包括設置TIM1_CH1輸出占空比為1/3、頻率為38 kHz的脈沖序列,用作載波信號;設置TIM1_CH2為脈沖捕獲中斷方式,用以計算接收數據的脈沖寬度及周期。
數據發送程序,主要包括發送命令幀子程序(void Send_Command_Frame(unsigned char DestAddress,unsigned char SourAddress,unsigned char TranAddress,unsigned char command)),發送數據幀程序(void Send_Data_Frame(unsigned char*DataBuff)),發送確認幀(void Send_Confirm_Frame(void))。
數據接收程序,數據接收主要在STM8脈沖捕獲中斷服務程序void TIM1_CAP_COM_IRQHandler(void)中完成,主要任務有引導同步碼檢測、命令幀與數據幀判斷、幀結束碼檢測,根據脈沖周期時間實現數據“0”和“1”的判別,接收數據奇偶校驗。
本設計經實驗測試結果表明協議具有數據傳輸可靠性高、抗干擾能力強、功耗小、實現成本低等優點。該協議在智能家居系統傳感器數據采集系統中運行效果良好,能穩定可靠實現室內30 m范圍內一個主控節點與多個從節點之間的數據傳輸,該協議極大擴展了無線紅外通信的應用范圍,具有較好的應用前景。
[1] 趙軍.淺析紅外通信技術在數據通訊中的作用[J].中國新技術新產品,2013(4):41.
[2] 張建.紅外通信技術淺析[J].信息與電腦,2012(2):169.
[3] 張毅,張靈至,盧威.面向物聯網的ZigBee-紅外控制系統設計[J].電子技術應用,2013,39(5):82-89.
[4] 黃濤,褚淑杰.基于紅外通信的智能家居系統[J].微計算機信息,2005,21(1):141-143.
[5] 邱磊,肖兵.基于IrDA協議棧的紅外通信綜述[J].無線通信技術,2004(4):28-32.
[6]寇強,黨宏社.一種串口多機應答式通信協議的設計與實現[J].電視技術,2008,32(S1):59-61.