創(chuàng)建經(jīng)濟(jì)實(shí)惠的無線傳感器網(wǎng)絡(luò)
背景
本文引用地址:http://www.ex-cimer.com/article/201808/387972.htm隨著更經(jīng)濟(jì)實(shí)惠、高度集成的單芯片通用ISM頻帶FSK收發(fā)器的出現(xiàn),加之與嵌入式低成本單片機(jī)單片機(jī)(MCU)的結(jié)合,實(shí)施無線傳感應(yīng)用已成為一種頗具吸引力的選擇方案。
只需將這兩項(xiàng)技術(shù)簡(jiǎn)單地結(jié)合在一起,便可構(gòu)造非?;镜腎SM頻帶915 MHz射頻(Radio Frequency,RF)網(wǎng)絡(luò),來監(jiān)控各種數(shù)字和模擬無線傳感器,例如遠(yuǎn)程溫度傳感器和基本運(yùn)動(dòng)檢測(cè)傳感器。
本文將定義一個(gè)基本的RF框架,用以實(shí)現(xiàn)對(duì)無線傳感器的近實(shí)時(shí)監(jiān)控。這一框架可輕松修改,以適應(yīng)其他需要近實(shí)時(shí)無線監(jiān)控或控制接口的應(yīng)用系統(tǒng)。
系統(tǒng)說明
RF收發(fā)器簡(jiǎn)介
高度集成的RF收發(fā)器(例如RFM生產(chǎn)的用在433、868以及915 MHz ISM頻帶的TRC102)正憑借更經(jīng)濟(jì)實(shí)惠的成本優(yōu)勢(shì)得到越來越多的應(yīng)用。這些器件通常具有串行通信接口,可通過SPI或I2C?接口輕松連接到各種嵌入式MCU。
遠(yuǎn)程無鑰門禁(Remote Keyless Entry,RKE)系統(tǒng)中常用的一種無線電調(diào)制方法是振幅鍵控(Amplitude Shift Keying,ASK),即通過改變頻率固定的載波的振幅來傳送數(shù)據(jù)。如果數(shù)據(jù)的編碼方式為最大振幅表示“1”(傳號(hào)),零振幅(功率放大器[PA]關(guān)閉)表示“0”(空號(hào)),則該調(diào)制方法稱為開關(guān)鍵控(On-Off Keying,OOK)。這些類型的系統(tǒng)常用于單向應(yīng)用。但是,使用此調(diào)制格式可實(shí)現(xiàn)非常簡(jiǎn)單且成本較低的收發(fā)器設(shè)計(jì)。
RF收發(fā)器解決方案中通常采用的RF調(diào)制方案是使用頻移鍵控(Frequency Shift Keying,F(xiàn)SK)。這是通過在平均頻率(或載波頻率)的任一側(cè)對(duì)載波頻率進(jìn)行位移來實(shí)現(xiàn)的。載波在載波頻率一側(cè)的位移量稱為偏差。相對(duì)于ASK調(diào)制,F(xiàn)SK調(diào)制具有多種優(yōu)勢(shì)。振幅調(diào)制對(duì)振幅和噪聲的變化非常敏感,而采用FSK編碼的傳送方案對(duì)信號(hào)衰減或其他與振幅相關(guān)的干擾的抵御能力更強(qiáng)。
雖然FSK系統(tǒng)的帶寬表面上是從f0– f到f0+ f,但實(shí)際上,帶寬的跨度要大于f0– f到f0+ f的范圍,因?yàn)閮蓚€(gè)頻率之間的轉(zhuǎn)移速度會(huì)產(chǎn)生額外的頻譜分量。簡(jiǎn)而言之,可認(rèn)為FSK調(diào)制是可靠性更高、噪聲更少的傳輸方式。為實(shí)現(xiàn)成功設(shè)計(jì),您需要更深入地了解FSK調(diào)制無線鏈路的需求。圖1顯示了此類FSK調(diào)制信號(hào)的典型頻譜。
圖1:FSK調(diào)制信號(hào)的典型頻譜
收發(fā)器是既可以發(fā)送又可以接收RF數(shù)據(jù)的器件??梢酝瑫r(shí)發(fā)送和接收數(shù)據(jù)的收發(fā)器系統(tǒng)稱為全雙工系統(tǒng)。反過來,在一定時(shí)間內(nèi)只能發(fā)送或接收的系統(tǒng)稱為半雙工系統(tǒng)。因此,半雙工系統(tǒng)只使用一個(gè)載波頻率,且兩個(gè)終端共享同一頻率。全雙工系統(tǒng)使用兩個(gè)載波頻率,分別稱為上行頻率和下行頻率。在本文中,由于遠(yuǎn)程傳感器單元的流耗限制,我們采用半雙工方法。
晶振精度
FSK調(diào)制收發(fā)器設(shè)計(jì)所使用的晶振的精度非常重要。我們的專用FSK系統(tǒng)使用百萬分率(parts per million,ppm)值很低的高精度晶振。晶振的精度越高,發(fā)送與接收頻率的偏移越少,偏差和基帶帶寬也就越小。如今,質(zhì)量較好的晶振的ppm值應(yīng)小于等于40。晶振的ppm值說明了其精度,ppm值越低,晶振的質(zhì)量越好。
圖2顯示了晶振精度對(duì)兩個(gè)收發(fā)器之間的發(fā)送/接收頻率的影響。晶振的精度越高,基帶濾波器的帶寬就可以配置得越窄,因此從接收器基帶中濾除的無用RF噪聲也就越多。
圖2:晶振精度對(duì)兩個(gè)收發(fā)器之間的發(fā)送/接收頻率的影響
電路布線注意事項(xiàng)
對(duì)于任何RF設(shè)計(jì),在布置印刷電路板(Printed Circuit Board,PCB)時(shí)所選擇的關(guān)鍵元件值以及設(shè)計(jì)做法是否合理,對(duì)確保實(shí)現(xiàn)良好的總體RF性能都起到至關(guān)重要的作用。
強(qiáng)烈建議使用收發(fā)器制造商推薦的PCB布線,因?yàn)樗麄兲峁┑腞F設(shè)計(jì)已經(jīng)過測(cè)試和驗(yàn)證。從參考晶振位置到FSK收發(fā)器的XTAL輸入引腳的PCB走線應(yīng)盡可能短。對(duì)于TRC102收發(fā)器,從天線輸出端到天線饋線的走線也應(yīng)盡可能短。
最后,在PCB上布一排過孔使正反兩面可以連接在一起。放置這些過孔的目的是提供牢固的接地連接以及使電位均衡,以免出現(xiàn)任何可能的自激振蕩。兩個(gè)過孔的間距應(yīng)在5-6 mm左右。如果需要提供牢固的接地連接,可以放置更多過孔。
收發(fā)器初始化
在使用任何RF收發(fā)器無線電器件之前,都必須對(duì)其進(jìn)行初始化。通常通過向控制接口寫入一系列串行命令來進(jìn)行器件初始化。對(duì)這些特定控制寄存器的說明已超出本文范圍,讀者應(yīng)參考所使用的RF收發(fā)器的數(shù)據(jù)手冊(cè)中的具體信息。通常,可配置的參數(shù)包括頻帶選擇、基帶頻率濾波器寬度、輸出功率管理控制、數(shù)據(jù)緩沖配置、數(shù)據(jù)傳輸速率以及先進(jìn)先出(First In First Out,F(xiàn)IFO)緩沖器控制。
收發(fā)器工作
收發(fā)器通過將中斷輸出線的電平拉低來向主機(jī)MCU發(fā)出中斷請(qǐng)求。這表示發(fā)生以下事件之一:
發(fā)送(TX)寄存器已準(zhǔn)備好接收下一字節(jié)
接收(RX)FIFO已達(dá)到預(yù)編程的位數(shù)
上電復(fù)位(Power on Reset,POR)確認(rèn)
發(fā)生了FIFO溢出/TX寄存器下溢
主機(jī)MCU收到來自收發(fā)器的中斷請(qǐng)求后,會(huì)通過讀取收發(fā)器的狀態(tài)位來確定中斷源。然后,MCU會(huì)決定所需的下一個(gè)串行命令以繼續(xù)通信或使收發(fā)器斷電。
數(shù)據(jù)緩沖
大多數(shù)收發(fā)器中都含有一個(gè)FIFO緩沖器。如果使能數(shù)據(jù)FIFO,則收到的數(shù)據(jù)流在時(shí)鐘控制下進(jìn)入16位緩沖器。收發(fā)器只在同步模式電路檢測(cè)到有效數(shù)據(jù)包后才開始填充FIFO。這可防止隨機(jī)錯(cuò)誤數(shù)據(jù)裝入FIFO。FIFO達(dá)到預(yù)定義位數(shù)后,器件的中斷輸出引腳上將發(fā)出緩沖器已滿信號(hào)。此引腳上的邏輯電平“1”表示RX FIFO中的位數(shù)已達(dá)到預(yù)編程限制。收發(fā)器產(chǎn)生中斷的電平可通過FIFO和復(fù)位命令設(shè)置。有關(guān)這些配置寄存器的詳細(xì)信息,請(qǐng)參見器件數(shù)據(jù)手冊(cè)。
對(duì)于我們的應(yīng)用,此值已設(shè)置為8位(一個(gè)字節(jié)),這樣在發(fā)送/接收過程中可以將數(shù)據(jù)逐字節(jié)裝入FIFO。這只適用于通過配置設(shè)置命令使能的FIFO模式。SPI緩沖器的讀取操作會(huì)使RX FIFO復(fù)位已接收位數(shù),并使中斷輸出引腳恢復(fù)到邏輯零電平。
RF協(xié)議選擇
對(duì)于本設(shè)計(jì),我們?cè)u(píng)估了各種當(dāng)前可用的RF通信協(xié)議。ZigBee?、Microchip的MiWi?和MiWi點(diǎn)對(duì)點(diǎn)(Peer to Peer,P2P)等協(xié)議均已經(jīng)過評(píng)估。但是,由于應(yīng)用需要近實(shí)時(shí)的特性,因此使用了非?;镜臅r(shí)分多址(Time Divisional Multi Access,TDMA)協(xié)議方案(見圖3)。通過將幀中第一個(gè)時(shí)隙定義為主機(jī)控制器發(fā)出的標(biāo)識(shí),我們可以很容易地確保在整個(gè)傳感器監(jiān)控系統(tǒng)中實(shí)現(xiàn)非常精確的延時(shí)。
圖3:TDMA系統(tǒng)
傳感器單元
對(duì)于我們的系統(tǒng),我們已決定在每個(gè)數(shù)據(jù)幀中使用10個(gè)時(shí)隙,第一個(gè)時(shí)隙作為幀起始,另外九個(gè)用于多個(gè)遠(yuǎn)程傳感器。這樣,我們最多可以近實(shí)時(shí)地監(jiān)控九個(gè)傳感器。我們將主機(jī)MCU的預(yù)定義時(shí)隙設(shè)置為每秒10個(gè),即每幀持續(xù)100 ms。這樣,我們便能夠以每秒10次的速率(或10 Hz)從各個(gè)傳感器提取RF數(shù)據(jù)。通過增加每秒時(shí)隙數(shù)可輕松實(shí)現(xiàn)更快的輪詢方案,但這樣會(huì)影響所需數(shù)據(jù)速率以及基帶濾波器帶寬間距。
硬件
傳感器單元上使用的PIC16F688 8位閃存MCU實(shí)際上每20 ms測(cè)量一次原始模擬傳感器輸入(每秒50次采樣)。然后,它每隔100 ms會(huì)將最后五次采樣一次發(fā)送給主機(jī)控制器。這樣可獲得更高的傳感器采樣率,而不會(huì)對(duì)系統(tǒng)的復(fù)雜性產(chǎn)生明顯影響。這種數(shù)據(jù)緩沖方案還有助于降低傳感器的總功耗要求,因?yàn)榻邮蘸桶l(fā)送RF數(shù)據(jù)包消耗了大部分功率。MCU單元在大多數(shù)時(shí)間都處于低功耗休眠狀態(tài)。它會(huì)每隔20 ms喚醒一次來對(duì)模數(shù)轉(zhuǎn)換器(Analog-to-Digital Converter,ADC)或數(shù)字I/O引腳進(jìn)行采樣,然后每隔100 ms進(jìn)行一次批量RF傳送(大約持續(xù)2 ms)。
固件
PIC16F688 MCU使用內(nèi)部基于RC的振蕩器來確保從休眠和低功耗狀態(tài)快速啟動(dòng)。為簡(jiǎn)化軟件,采用了基本狀態(tài)機(jī)軟件流,并將MCU配置為每隔20 ms喚醒一次。這些狀態(tài)中的一個(gè)被分配為等待主機(jī)控制器的RF幀起始(Start Of Frame,SOF)標(biāo)識(shí)的傳輸。此SOF標(biāo)識(shí)的接收操作用于將遠(yuǎn)程傳感器單元與精度更高的主機(jī)單元同步,該主機(jī)單元采用晶振進(jìn)行USB通信。如果在至少150 ms內(nèi)未檢測(cè)到SOF標(biāo)識(shí),則遠(yuǎn)程傳感器將進(jìn)入低功耗非活動(dòng)狀態(tài),在此狀態(tài)下,單元每秒喚醒一次來搜索SOF標(biāo)識(shí)。這樣主機(jī)便可通過打開或關(guān)閉SOF標(biāo)識(shí)的傳輸,只在需要時(shí)輪詢遠(yuǎn)程傳感器。
如果需要同時(shí)監(jiān)控更多傳感器,可以輕松地將這個(gè)非?;镜膮f(xié)議方案擴(kuò)展至允許更多時(shí)隙。但總是需要在各個(gè)傳感器單元的常規(guī)反應(yīng)時(shí)間(采樣傳感器)與總功耗預(yù)算之間進(jìn)行權(quán)衡。此協(xié)議方案可進(jìn)行修改以滿足系統(tǒng)以及可用電源的特定需求,例如為每個(gè)遠(yuǎn)程傳感器供電的電池尺寸以及預(yù)期使用壽命。
主機(jī)控制器單元
對(duì)于主機(jī)控制器,我們選擇了PIC18F14K50 8位閃存MCU,它是小型20引腳封裝形式的全速USB 2.0器件。選擇此器件的原因是其成本低廉,并且我們希望主機(jī)控制器通過USB端口直接與任何PC連接,以報(bào)告有關(guān)系統(tǒng)中每個(gè)遠(yuǎn)程傳感器狀態(tài)的近實(shí)時(shí)信息。也可以使用其他備用接口選項(xiàng)。主機(jī)單元由USB端口供電,然后以人機(jī)接口設(shè)備(Human Interface Device,HID)類USB設(shè)備的形式注冊(cè)到PC。
硬件
使用PIC18F14K50 MCU,實(shí)際的硬件設(shè)計(jì)與遠(yuǎn)程傳感器單元非常類似。使用相同的RF收發(fā)器設(shè)計(jì),但將PIC16F688 MCU換成PIC18F14K50 MCU,以提供所需的USB接口功能。此單元需要持續(xù)供電,用作簡(jiǎn)化的TDMA系統(tǒng)中的主節(jié)點(diǎn)。
固件
主機(jī)控制器上的固件包含配置為HID類的Microchip標(biāo)準(zhǔn)USB協(xié)議棧;對(duì)于遠(yuǎn)程傳感器單元使用相似的收發(fā)器初始化和數(shù)據(jù)傳輸程序;使用一臺(tái)非?;镜臓顟B(tài)機(jī)來控制RF無線電設(shè)備與PC間的數(shù)據(jù)傳送。如果使用運(yùn)行MS Windows?的PC,由于操作系統(tǒng)的多任務(wù)性質(zhì),無法始終保證時(shí)序精確。此外,我們不希望PC圖形用戶界面(Graphical User Interface,GUI)軟件過于復(fù)雜。因此,使用PIC18F14K50作為RF遠(yuǎn)程傳感器單元與PC GUI應(yīng)用程序之間的數(shù)據(jù)緩沖器。PIC? MCU用于保持TDMA時(shí)隙,以便在為PC緩沖采樣數(shù)據(jù)時(shí)實(shí)現(xiàn)同步。PC應(yīng)用程序已配置為每隔100 ms輪詢一次USB HID設(shè)備,以獲取任何可用的數(shù)據(jù)。在每個(gè)時(shí)隙/單元中增加了一個(gè)狀態(tài)/控制字節(jié),PC應(yīng)用程序可輕松確定是否有新的傳感器數(shù)據(jù)可用于屏幕更新。PIC18F14K50上的傳感器數(shù)據(jù)緩沖器已配置為可處理多個(gè)RF數(shù)據(jù)包,以防PC應(yīng)用程序沒有及時(shí)讀取可用數(shù)據(jù)。
PC GUI軟件
對(duì)于本應(yīng)用,傳感器數(shù)據(jù)通過GUI應(yīng)用程序內(nèi)的進(jìn)度條顯示,并且可以輕松記錄以對(duì)遠(yuǎn)程傳感器進(jìn)行數(shù)據(jù)跟蹤。軟件的開發(fā)平臺(tái)為Microsoft的Visual C#。軟件可作為多個(gè)無線遠(yuǎn)程傳感器單元實(shí)時(shí)行為的可視監(jiān)控器,顯示從每個(gè)無線傳感器收到的實(shí)時(shí)數(shù)據(jù)。GUI通過USB HID類函數(shù)連接到主機(jī)控制器來輪詢可用數(shù)據(jù)或控制系統(tǒng)行為,例如啟動(dòng)RF輪詢、停止RF輪詢和請(qǐng)求單次數(shù)據(jù)捕獲等。
各種傳感器類型
確定基本的RF傳感器框架后,實(shí)際的RF遠(yuǎn)程傳感器可以是從基本的溫度監(jiān)控器到加速(模擬或數(shù)字)監(jiān)控器、數(shù)字輸入(高/低電平檢測(cè))以及模擬電壓監(jiān)控(通過ADC轉(zhuǎn)換為數(shù)字值)中的任何一個(gè),甚至是基本的數(shù)字輸出控制信號(hào)。通過這個(gè)簡(jiǎn)化的TDMA輪詢方案,簡(jiǎn)單的RF框架還允許使用各種不同類型的遠(yuǎn)程傳感器。
為傳感器單元配對(duì)
每個(gè)傳感器提供的信息都可包括一個(gè)惟一標(biāo)識(shí)符、一個(gè)傳感器類型指示符和原始傳感器數(shù)據(jù)測(cè)量值。使用每個(gè)傳感器單元的惟一標(biāo)識(shí)符有助于將傳感器單元與主機(jī)控制器配對(duì)。主機(jī)標(biāo)識(shí)器可以向?qū)⒅甘灸男r(shí)隙可用的傳感器發(fā)送各種控制命令,甚至從系統(tǒng)中移除傳感器。主機(jī)控制器還可以發(fā)送組標(biāo)識(shí)符,這樣它將只輪詢與該特定傳感器組配對(duì)的傳感器。遺憾的是,這已超出本文范圍,但絕對(duì)可實(shí)現(xiàn)極其靈活易用的遠(yuǎn)程傳感器網(wǎng)絡(luò)。
安全增強(qiáng)功能
如果有人進(jìn)行竊聽并發(fā)送可對(duì)整個(gè)系統(tǒng)的完整性造成負(fù)面影響的虛假傳感器數(shù)據(jù),則會(huì)很容易對(duì)RF網(wǎng)絡(luò)的安全產(chǎn)生危害。通過在RF網(wǎng)絡(luò)中添加一個(gè)安全層,可以輕松防止這種危害。有多種安全方案和算法可用于惟一傳感器驗(yàn)證,例如Microchip的KEELOQ?加密算法。甚至可以與更高級(jí)的加密算法(例如擴(kuò)展的微型加密算法(eXtended Tiny Encryption Algorithm,XTEA)或高級(jí)加密標(biāo)準(zhǔn)(Advanced Encryption Standard,AES)算法)結(jié)合使用,以加密從遠(yuǎn)程傳感器傳輸?shù)街鳈C(jī)控制器的傳感器信息。
結(jié)論
本文介紹了如何實(shí)現(xiàn)可實(shí)時(shí)監(jiān)控傳感器行為的基本RF遠(yuǎn)程傳感器網(wǎng)絡(luò)。低成本RF收發(fā)器與MCU(如PIC18F14K50)的結(jié)合簡(jiǎn)化了此類系統(tǒng)的開發(fā)。遠(yuǎn)離無線傳感器系統(tǒng)的時(shí)代無疑已成為過去。
本文所述的框架可用于近實(shí)時(shí)無線監(jiān)控起重要作用的各種應(yīng)用。如果遠(yuǎn)程傳感器系統(tǒng)可以容許更大程度的延時(shí),則完全可以使用本文所列的其他RF通信協(xié)議。這些備選協(xié)議的靈活性更高,但也需要更高端的MCU資源才能實(shí)現(xiàn)。此外,通過添加簡(jiǎn)單的惟一網(wǎng)絡(luò)標(biāo)識(shí),基本的RF配對(duì)方案和加密算法可以使此類無線網(wǎng)絡(luò)更加穩(wěn)定可靠和安全。
評(píng)論