基于Arduino的ZigBee無線傳感節(jié)點(diǎn)的硬件設(shè)計(jì)
摘要:針對傳統(tǒng)無線傳感節(jié)點(diǎn)的成本高、可擴(kuò)展性差等不足,提出一種基于Arduino開源平臺及ZigBee協(xié)議的無線傳感節(jié)點(diǎn)硬件系統(tǒng)。考慮到系統(tǒng)設(shè)計(jì)需求,首先給出該傳感節(jié)點(diǎn)硬件系統(tǒng)的總體框架,然后對硬件系統(tǒng)中的處理器模塊、傳感器模塊、無線通信模塊、電源模塊的設(shè)計(jì)給出了具體的方案。該無線傳感節(jié)點(diǎn)硬件系統(tǒng)能夠?qū)崿F(xiàn)高性能、低成本、低功耗的無線環(huán)境數(shù)據(jù)采集,較傳統(tǒng)方法更具有研究和應(yīng)用價(jià)值。
本文引用地址:http://www.ex-cimer.com/article/201610/306087.htm關(guān)鍵詞:無線傳感節(jié)點(diǎn);硬件;ZigBee;Arduino
無線傳感器網(wǎng)絡(luò)是物聯(lián)網(wǎng)底層網(wǎng)絡(luò)的重要技術(shù)形式,它綜合了傳感器技術(shù)、信息處理技術(shù)和無線通信等技術(shù)。無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)作為無線傳感網(wǎng)絡(luò)的基本組成部分,它的性能優(yōu)劣及實(shí)用性關(guān)系到整個(gè)網(wǎng)絡(luò)的工作效率和工作成本,因此高性能低成本的無線傳感節(jié)點(diǎn)成為無線傳感網(wǎng)絡(luò)設(shè)計(jì)的關(guān)鍵。目前傳統(tǒng)的無線傳感節(jié)點(diǎn)主要有兩種類型:一種是封裝好直接購買可用的節(jié)點(diǎn)如Micaz、TelosB節(jié)點(diǎn);另一種是在特定芯片如CC2430、CC2530上自主設(shè)計(jì)制作的節(jié)點(diǎn)。前一種節(jié)點(diǎn)性能佳,但價(jià)格較貴且可定制性差,后一種節(jié)點(diǎn),雖價(jià)格便宜,但開發(fā)工作量大,且可擴(kuò)展的接口少。
Arduino是近年來快速流行起來的一種控制器,其硬件電路的核心是一個(gè)AVR芯片,整塊電路板在功能上與單片機(jī)開發(fā)板類似,但是Arduino板要比單片機(jī)開發(fā)板在功能上強(qiáng)大很多。ZigBee是一種短距離無線通信技術(shù),它可以很好地解決物聯(lián)網(wǎng)中最后100 m的通信問題,并且已經(jīng)廣泛地應(yīng)用于智能交通、智能醫(yī)療、智能家居和工業(yè)自動(dòng)化當(dāng)中。本文針對現(xiàn)有的無線傳感網(wǎng)絡(luò)節(jié)點(diǎn)的發(fā)展現(xiàn)狀,從硬件角度著手,設(shè)計(jì)了一種基于Arduino的ZigBee無線傳感節(jié)點(diǎn),它將Arduino軟硬件開源、接口豐富、容易上手、價(jià)格低廉、可根據(jù)應(yīng)用需求實(shí)現(xiàn)個(gè)性化系統(tǒng)設(shè)計(jì)等特性與ZigBee技術(shù)傳輸延時(shí)較低、復(fù)雜度低、容量高、功率消耗極低、成本低廉等特性結(jié)合到一起,實(shí)現(xiàn)更具有實(shí)用性和更適用于物聯(lián)網(wǎng)的無線傳感網(wǎng)絡(luò)節(jié)點(diǎn)。
1 硬件整體設(shè)計(jì)
無線傳感網(wǎng)絡(luò)節(jié)點(diǎn)硬件電路包括處理器模塊、傳感器模塊、無線通信模塊及電源模塊。其中,電源部分為整個(gè)節(jié)點(diǎn)提供能量,其余3個(gè)均是耗能模塊。本文采用Arduino Uno R3功能板的電路作為硬件設(shè)計(jì)的基礎(chǔ)電路板,并結(jié)合實(shí)際需求在該電路基礎(chǔ)上進(jìn)行組成部件的刪減和功能模塊的增加。Arduino Uno R3是Arduino USB接口系列的最新版本。其上的所有參考設(shè)計(jì)均是基于AVR芯片ATmega328的,二者的管腳是兼容的。
節(jié)點(diǎn)的各個(gè)模塊中,處理器模塊采用單片機(jī)ATmega328P—PU作為CPU對傳感數(shù)據(jù)進(jìn)行采集、處理和傳輸,單片機(jī)ATmega16U2-MU作為轉(zhuǎn)換芯片實(shí)現(xiàn)USB接口數(shù)據(jù)與處理器串口數(shù)據(jù)的對接。傳感器模塊設(shè)為接口模式,沒有直接選定傳感器并將該傳感器連接到電路中。傳感器模塊接口包括數(shù)字信號接口和模擬信號接口。無線通信模塊采用Digi公司生產(chǎn)的XBee ZB模塊,XBee ZB模塊通過RX、TX串口與單片機(jī)進(jìn)行數(shù)據(jù)通信。電源模塊采用電池供電和USB供電協(xié)作模式,為了避免電池供電和USB供電同時(shí)接入電路產(chǎn)生沖突,采用 FDN34 0P場效應(yīng)管來實(shí)現(xiàn)電池供電和USB供電模式的自動(dòng)切換。此外,節(jié)點(diǎn)還通過硬件輔助的形式控制傳感模塊和無線通信模塊的工作狀態(tài),以降低節(jié)點(diǎn)的工作能耗。無線傳感網(wǎng)絡(luò)節(jié)點(diǎn)硬件系統(tǒng)結(jié)構(gòu)框圖如圖1所示。
2 模塊設(shè)計(jì)
2.1 處理器模塊
節(jié)點(diǎn)硬件系統(tǒng)處理器模塊的元器件選型主要是基于Arduino Uno R3功能板。Arduino Uno R3電路板的主控芯片是ATmega328P—PU,USB轉(zhuǎn)串口芯片是ATmega16U2-MU。單片機(jī)ATmega328P—PU是一款高性能低功耗的AVR微控制器,它的工作電壓是1.8~5.5 V,片上包含32 kB的Flash、1 kB的EEPROM以及2 kB的SRAM,有6個(gè)模擬輸入接口,有14個(gè)數(shù)字輸入輸出接口且數(shù)字接口中有6個(gè)PWM模擬輸出接口,晶振頻率是16 MHz。這款單片機(jī)能夠完全滿足傳感節(jié)點(diǎn)的處理器需求。該單片機(jī)的外圍電路中,需要在5 V電源與管腳reset之間連接一個(gè)110歐姆的電阻,因?yàn)锳rduino Uno R3提供自動(dòng)復(fù)位設(shè)計(jì),可以通過在主機(jī)上運(yùn)行相應(yīng)程序進(jìn)行自動(dòng)復(fù)位,但本節(jié)點(diǎn)的復(fù)位模式設(shè)計(jì)為外部電路觸發(fā)復(fù)位模式,所以需在管腳reset位置進(jìn)行電路修改。另外,需要在ATmega328P—PU的XTAL1、XTAL2引腳之間接尺寸小、可靠性能佳的陶瓷振蕩子CSTCE16MOV53-R0,而不是接普通的16 M晶振。負(fù)責(zé)USB一串口數(shù)據(jù)轉(zhuǎn)換功能的AVR芯片ATmega16U2-MU內(nèi)置有支持USB2.0的USB控制裝置,它支持?jǐn)?shù)據(jù)的全速轉(zhuǎn)換,有控制、批量、中斷以及同步這4種工作模式。ATmega 16U2-MU外接16 MHz晶振,以此給芯片的內(nèi)部PLL提供參考時(shí)鐘,使得內(nèi)部PLL可以為USB全速轉(zhuǎn)換提供需要的48 MHz±0.25%參考時(shí)鐘。ATmega16U2-MU的PD2(RXD1)引腳接單片機(jī)ATmega3 28P—PU的TXD輸出串口,PD3(TXD1)接單片機(jī)ATmega 328P—PU的RXD輸入串口,以提供TTL電壓水平的串口收發(fā)信號。另外,ATmega16U2-MU芯片的D-引腳接USB接口的數(shù)據(jù)線D-,D+ 引腳接USB接口的數(shù)據(jù)線D+。
2.2 傳感器模塊
為了增強(qiáng)無線傳感節(jié)點(diǎn)的復(fù)用性,傳感器模塊電路設(shè)計(jì)中,未包含傳感器元件,而是采用接口形式連接傳感器元件,并為其提供工作電路。物聯(lián)網(wǎng)中常用的傳感器元件按輸出信號類型可分為模擬傳感器和數(shù)字傳感器,因此節(jié)點(diǎn)傳感器接口需包含這兩種數(shù)據(jù)接口。節(jié)點(diǎn)傳感器數(shù)字信號接口和模擬信號接口直接由處理器模塊核心芯片ATmega328P—PU的數(shù)字輸入輸出口和模擬輸入口引出。ATmega328P—PU共有14個(gè)數(shù)字輸入輸出接口,本節(jié)點(diǎn)的設(shè)計(jì)中,TXD、 RXD數(shù)字接口作串口,有兩路數(shù)字接口作串口狀態(tài)燈控制口,有一路數(shù)字接口作無線通信模塊工作模式控制口,有一路數(shù)字接口作傳感器工作模式控制口,還有一路數(shù)字接口作電源能量監(jiān)測控制口,因此節(jié)點(diǎn)傳感器模塊中的傳感器數(shù)字接口共有7個(gè),模擬數(shù)字接口共有6個(gè)。常用的傳感器模塊如DHT11溫濕度模塊、 HX711稱重傳感器模塊、BH1750FVI光照度傳感器模塊等,均可通過該通用接口與節(jié)點(diǎn)進(jìn)行連接。
為了降低無線傳感節(jié)點(diǎn)的能耗,本節(jié)點(diǎn)設(shè)計(jì)傳感器數(shù)據(jù)進(jìn)行周期性采集,即傳感器在采集一段時(shí)間的環(huán)境信息后進(jìn)入休眠狀態(tài),再經(jīng)過固定的休眠時(shí)間后返回到工作狀態(tài),從而降低傳感器元件對電源能量的消耗。這里的傳感器工作模式切換設(shè)計(jì)為單片機(jī)接口控制傳感器模塊電源通斷模式。單片機(jī)接口控制電源通斷功能通過三極管S8550驅(qū)動(dòng)電路作開關(guān)、繼電器HK4100F作負(fù)載來實(shí)現(xiàn)。三極管S8550是一種常用的普通三極管,它是一種低電壓、大電流、小信號的PNP型硅材料三極管。繼電器HK4100F是一種價(jià)格低廉的6管腳電子控制器件,實(shí)際上是一種利用較小電流來控制較大電流的“自動(dòng)開關(guān)”,它能夠在電路中提供自動(dòng)調(diào)節(jié)、安全保護(hù)和轉(zhuǎn)換電路等功能,主要由鐵芯、線圈、銜鐵和觸點(diǎn)簧片組成。當(dāng)電路在線圈兩端加上一定電壓后.線圈會流過一定的電流,從而產(chǎn)生電磁效應(yīng),于是銜鐵在電磁吸引力的作用下克服彈簧的反彈拉力與鐵芯吸合,從而使繼電器的內(nèi)部動(dòng)觸點(diǎn)與靜觸點(diǎn)(常開觸點(diǎn))導(dǎo)通;當(dāng)線圈兩端斷電后,線圈的電磁吸引力消失,銜鐵會在彈簧的反作用力下回到原來的位置,從而使繼電器的內(nèi)部動(dòng)觸點(diǎn)與原來的靜觸點(diǎn)(常閉觸點(diǎn))導(dǎo)通,由此實(shí)現(xiàn)了外部電路的導(dǎo)通和切斷。
單片機(jī)接口控制傳感器模塊電源通斷具體的電路連接情況為,三極管S8550的基極經(jīng)4.7 kΩ電阻與單片機(jī)ATmega328P—PU的一路數(shù)字接口連接,發(fā)射極與繼電器HK4100F內(nèi)部線圈的一個(gè)外部引腳連接,集電極接地。繼電器 HK4100F常閉觸點(diǎn)的外部引腳接地,常開觸點(diǎn)的外部引腳接傳感器的工作電源正極。當(dāng)單片機(jī)引腳輸出高電平時(shí),三極管截止,繼電器線圈兩端無電位差,繼電器銜鐵釋放,常閉觸點(diǎn)導(dǎo)通,即傳感器電源關(guān)閉;當(dāng)單片機(jī)引腳輸出低電平時(shí),三極管飽和導(dǎo)通,繼電器銜鐵吸合,常開觸點(diǎn)閉合,即傳感器電源開啟。三極管截止瞬間,繼電器線圈中的電流無法突變?yōu)榱悖瑑啥藭a(chǎn)生一個(gè)電壓較高的感應(yīng)電動(dòng)勢,有可能會擊穿三極管,因此需要在繼電器線圈兩端并聯(lián)一個(gè)常見的反向耐電壓為100 V的小信號二極管1N4148,以釋放瞬間感應(yīng)電動(dòng)勢,如此,既保護(hù)了三極管,也消除了感應(yīng)電動(dòng)勢對其他電路的干擾。單片機(jī)接口控制HK4100F線圈通斷電路原理如圖2所示。
2.3 無線通信模塊
本節(jié)點(diǎn)的無線通信模塊采用的是美國Digi公司生產(chǎn)的XBee ZB模塊,該模塊按照ZigBee協(xié)議設(shè)計(jì)并把ZigBee協(xié)議內(nèi)置進(jìn)片內(nèi)Flash,其內(nèi)部包含有全部的工作外圍電路以及完整的ZigBee協(xié)議棧,雖然體型小,但卻是一個(gè)功能完善的ZigBee收發(fā)器(具備接收器和發(fā)射器),它的工作模式是雙向半雙工式,可交替地發(fā)送或接收數(shù)據(jù)昀。XBeeZB模塊只需少量的功耗便可進(jìn)行可靠的遠(yuǎn)端數(shù)據(jù)傳輸。該模塊的室內(nèi)傳輸距離為40米,室外傳輸距離為120米,發(fā)射功率為3 dBm,具有AT和API兩種配置模式且擁有專門的PC端配置軟件X—CUT,可直接在PC端對模塊進(jìn)行發(fā)射功率、信道等網(wǎng)絡(luò)拓?fù)鋮?shù)的配置,使用起來簡單快捷。XBee ZB模塊通過DOUT和DIN與處理器模塊中的單片機(jī)串口進(jìn)行通信,DOUT接單片機(jī)ATmega32 8P—PU的RXD引腳,DIN接TXD引腳。該模塊的工作模式共有5種,分別是空閑模式、發(fā)送模式、接收模式、命令模式和睡眠模式。當(dāng)XBee ZB模塊沒有接收或發(fā)送數(shù)據(jù)時(shí),模塊進(jìn)入空閑模式;當(dāng)串行接收緩沖區(qū)內(nèi)的串行數(shù)據(jù)已接收并打包準(zhǔn)備好時(shí),模塊自動(dòng)退出空閑模式準(zhǔn)備發(fā)送數(shù)據(jù),進(jìn)入發(fā)送模式;當(dāng)天線接收到一個(gè)合法的RF數(shù)據(jù)包時(shí),該數(shù)據(jù)將會轉(zhuǎn)送到串口發(fā)射緩沖區(qū)內(nèi),模塊進(jìn)入接收模式;當(dāng)命令模式字符序列形成時(shí),模塊進(jìn)入命令模式;當(dāng)接收到休眠觸發(fā)時(shí),模塊進(jìn)入睡眠模式,XBee ZB僅支持終端節(jié)點(diǎn)睡眠模式觸發(fā),且有管腳休眠和周期休眠兩種觸發(fā)模式。睡眠模式可大大降低模塊的能耗,XBee ZB模塊的管腳休眠觸發(fā)機(jī)制是:當(dāng)休眠控制管腳Sleep_RQ處于高電平狀態(tài)時(shí),模塊開啟睡眠模式;管腳處于低電平狀態(tài)時(shí),模塊關(guān)閉睡眠模式。本節(jié)點(diǎn)設(shè)計(jì)使用單片機(jī)數(shù)字輸出口控制來實(shí)現(xiàn)XBeeZB模塊的正常工作模式與睡眠模式之間的切換,電路連接上,ATmega328P—PU的一路數(shù)字接口引腳與 XBee ZB模塊的Sleep_RQ管腳連接以控制Sleep_RQ管腳的電平狀態(tài),再以軟件程序進(jìn)行輔助,設(shè)置XBee ZB模塊進(jìn)行周期性休眠,從而降低節(jié)點(diǎn)無線通信模塊的能耗。節(jié)點(diǎn)無線通信模塊電路連接框圖如圖3所示。
2.4 電源模塊
節(jié)點(diǎn)正常工作所需要的電壓有5 V和3.3 V。Arduino Uno R3電路中有3種供電方式,并且能夠自動(dòng)選擇供電方式,這3種供電方式分別是:外部直流電源通過電源插座供電、USB接口供電以及電池連接電源連接器的 GND和VIN引腳供電,其中,電源插座供電和電池供電的輸入電壓范圍為7~12 V。本節(jié)點(diǎn)在Arduino Uno R3供電原理基礎(chǔ)上選擇鋰電池供電和USB接口供電兩種模式共同提供5 V工作電壓,節(jié)點(diǎn)電路的另一路工作電壓3.3 V則由穩(wěn)壓管LP2985—33DBVR通過對5 V電壓進(jìn)行轉(zhuǎn)換獲得。電源模塊電路中5 V電壓供電方式的自動(dòng)選擇通過場效應(yīng)管FDN340P實(shí)現(xiàn),F(xiàn)DN340P是一種P溝道增強(qiáng)型絕緣柵場效應(yīng)晶體管,具有輸入電阻高、噪聲小、功耗低、動(dòng)態(tài)范圍大、無二次擊穿現(xiàn)象、安全工作區(qū)域?qū)挼忍攸c(diǎn)。節(jié)點(diǎn)電源供電電路中,一路鋰電池輸入VIN連接到穩(wěn)壓管NCP1117ST50T3G的輸入端,另一路經(jīng)二分之一分壓電路分壓后連接到電壓比較器的正輸入端V+,電壓比較器的負(fù)輸入端V-連接的參考電壓為3.3 V。電壓比較器的輸出Vo與場效應(yīng)管FDN340P的柵極連接,USB電源線與場效應(yīng)管FDN340P的漏極相連接,場效應(yīng)管的源極作為電壓輸出端并與5 V電源線連接。當(dāng)電源模塊僅有鋰電池供電時(shí),5 V電源直接由穩(wěn)壓管NCP1117ST50T3G輸出;當(dāng)電源模塊僅有USB供電時(shí),V+V-,Vo輸出高電位,F(xiàn)DN340P的柵極和源極之間的電位差為0,場效應(yīng)管關(guān)斷,USB供電截止,僅鋰電池供電。另外,USB電源線信號并不與FDN340P場效應(yīng)管的漏極直接連接,而是在二者之間連接了一個(gè)自恢復(fù)保險(xiǎn)絲MF—MSMF050—2(500mA),MF—MSMF050—2是一種可重置的保險(xiǎn)絲,它能夠?yàn)殡娐诽峁┻^電保護(hù),當(dāng)通過保險(xiǎn)絲的電流超過500 mA時(shí),保險(xiǎn)絲斷開連接,從而保護(hù)了USB電路。電源模塊供電電路框圖如圖4所示。
實(shí)際應(yīng)用中,節(jié)點(diǎn)的供電電源多是鋰電池,節(jié)點(diǎn)的正常工作依賴于鋰電池,因此電池余量的對實(shí)時(shí)監(jiān)測就顯得格外重要。本節(jié)點(diǎn)使用DS2438智能鋰電池監(jiān)測芯片作為監(jiān)測鋰電池電池剩余容量的硬件裝置。DS2438為電池組提供了一系列有用的功能,包括有唯一的標(biāo)識電池組的序列號,有內(nèi)置的數(shù)字溫度傳感器因此電池組不再需要接熱敏電阻,有測
量電池電壓和電流的內(nèi)置A/D轉(zhuǎn)換器,有記錄電池電流流入流出總量的集成電流累加器,有運(yùn)行時(shí)間記錄器,還有40字節(jié)的非易失EEPROM,主要用于儲存電池的一些重要參數(shù)如
電池化學(xué)類型、電池容量、電池充電方式以及電池組裝日期。DS2438芯片能夠自動(dòng)采集當(dāng)前電池的充放電狀態(tài)、溫度、電流、電壓以及剩余電量等數(shù)據(jù),并存放到片上存儲器中。本節(jié)點(diǎn)中,DS2438芯片的DQ引腳與單片機(jī)的一路數(shù)字接口相連接,當(dāng)芯片滿足工作條件時(shí),開始進(jìn)行電池信息采樣,等到DS2438 芯片采樣完成后,單片機(jī)再讀取DS2438的片上電流累加寄存器(ICA)中的數(shù)值并進(jìn)行相應(yīng)的數(shù)據(jù)處理,即可得到無線傳感節(jié)點(diǎn)供電鋰電池的當(dāng)前剩余電量值。
3 結(jié)束語
節(jié)點(diǎn)設(shè)計(jì)實(shí)現(xiàn)了以Arduino開源平臺為基礎(chǔ)以ZigBee技術(shù)進(jìn)行數(shù)據(jù)傳輸?shù)臒o線傳感節(jié)點(diǎn)硬件系統(tǒng)。并分別給出了硬件系統(tǒng)處理器模塊、傳感器模塊、無線通信模塊以及電源模塊各部分的設(shè)計(jì)方法,從硬件選型到具體設(shè)計(jì)思路都一一作了闡述。該硬件系統(tǒng)具備低能耗、可連接通用傳感器、有電源電壓檢測功能等特點(diǎn)。此設(shè)計(jì)方案成本低廉、性能較高、經(jīng)濟(jì)適用,符合設(shè)計(jì)初衷,且具有良好的應(yīng)用前景,可應(yīng)用于物聯(lián)網(wǎng)中,為監(jiān)測物聯(lián)網(wǎng)環(huán)境參數(shù)提供了高性能低成本的無線傳感節(jié)點(diǎn)設(shè)計(jì)方案。
評論