創(chuàng)新者:李俊男 蘇 楊 薛 端 王君賢
基于STM32溫度及光敏無線傳感器設(shè)計
創(chuàng)新者:李俊男 蘇 楊 薛 端 王君賢
采用ST Microelectronic公司生產(chǎn)的STM32F103C8作為主芯片連接DS18B20單總線數(shù)字溫度計、光敏二極管和nRF24L01無線傳輸模塊的外圍設(shè)備,構(gòu)成一個無線傳感節(jié)點。將環(huán)境中的溫度及光強數(shù)據(jù)通過無線模塊實時的發(fā)送到匯聚節(jié)點的LCD屏上顯示,當(dāng)溫度或光強超過設(shè)定值時,傳感節(jié)點自動報警。文中對傳感器系統(tǒng)的硬件電路、讀寫時序和驅(qū)動程序進行了詳細的闡述,并對無線模塊的固件編程進行了分析。
隨著人們對物理世界的不斷探索,我們獲取信息的方式和途徑越來越多樣化,信息的來源、種類、數(shù)量呈現(xiàn)海量化的態(tài)勢。傳感器作為連接物理世界與電子世界的重要媒介,能將物理世界中模擬信號轉(zhuǎn)化成為計算機能夠處理的數(shù)字信號。
隨著物聯(lián)網(wǎng)領(lǐng)域的發(fā)展,現(xiàn)代傳感器不僅包括了傳感部件能夠感知周圍世界,而且也集成了微型處理器與無線通信模塊,可實現(xiàn)各傳感節(jié)點間信息的交換與通信,而且能夠?qū)η岸烁兄男畔⑦M行綜合分析處理和網(wǎng)絡(luò)傳輸。
系統(tǒng)模塊組成
微處理器模塊采用的是ARM架構(gòu)Cortex-M3內(nèi)核系列的 CPU,最高工作頻率72MHz,其中集成了12位模數(shù)轉(zhuǎn)換器(ADC),較高的采集頻率與很短轉(zhuǎn)換時間,同時也保證了轉(zhuǎn)換精度。采用了最優(yōu)化電源配置管理,最小化系統(tǒng)能耗,所有外設(shè)處于工作狀態(tài)時,系統(tǒng)消耗18mA,待機時下降到2μA。
傳感設(shè)備模塊使用DS18B20單總線數(shù)字溫度計,其可工作環(huán)境溫度變化范圍大,采集數(shù)據(jù)精度高,可滿足絕大多數(shù)工作環(huán)境及需求,該設(shè)備另一特點,無需外圍電源,能耗極低,從而可延長傳感器節(jié)點使用壽命。
無線傳輸芯片為nRF24L01,其內(nèi)置2.4GHz天線,體積小巧、成本低廉,采用Enhanced ShockBurstTM模式控制技術(shù),優(yōu)化模塊收發(fā)模式,減小系統(tǒng)開支。
硬件電路設(shè)計分析
使用Altium Designer電路設(shè)計軟件進行原理圖與PCB板的繪制,所有元器件引腳均采用網(wǎng)絡(luò)標(biāo)號的形式相連接,圖1為系統(tǒng)電源模塊主電路圖。傳感器節(jié)點自帶12V的鋰電池,U1芯片采用MP2359(單片集成降壓轉(zhuǎn)換器)良好的線性輸出,避免電源輸出發(fā)生波動對系統(tǒng)工作電路產(chǎn)生影響,起到保護電路的作用。此外考慮到傳感節(jié)點能耗和使用壽命,并且環(huán)境溫濕度及光強在較短的時間內(nèi)不會發(fā)生急劇變化,在程序中配合實際硬件電路,控制了傳感器的采集頻率與發(fā)送頻率,從軟硬件方面同時減小系統(tǒng)開支。
傳感器網(wǎng)絡(luò)及系統(tǒng)結(jié)構(gòu)框圖
物聯(lián)網(wǎng)整體架構(gòu)由智能感知層、無線網(wǎng)絡(luò)傳輸層和綜合應(yīng)用層組成,其三大關(guān)鍵技術(shù)類別包括智能感知識別、網(wǎng)絡(luò)通訊及大數(shù)據(jù)分析。傳感節(jié)點(Node)采集了海量數(shù)據(jù)后發(fā)送給匯聚節(jié)點,數(shù)據(jù)量龐大且大部分重復(fù),因此在匯聚節(jié)點處應(yīng)采用數(shù)據(jù)挖掘與數(shù)據(jù)融合技術(shù)篩選出具有代表性的特征數(shù)據(jù)完成傳輸,最后實現(xiàn)對監(jiān)控環(huán)境的數(shù)據(jù)分析。
總體的系統(tǒng)架構(gòu)基于嵌入式平臺,前端由數(shù)據(jù)采集模塊完成模擬信號的采集,通過串口輸入主芯片實現(xiàn)信號的量化,接著通過無線傳輸模塊將獲取的環(huán)境數(shù)據(jù)發(fā)送至匯聚節(jié)點(Sink),再進一步完成數(shù)據(jù)的分析處理。
傳感節(jié)點以STM32F103C8作為主芯片,主頻高達72MHz,能快速的進行取指、譯碼、執(zhí)行過程,在較短的時鐘周期內(nèi)就能完成一條指令語句,內(nèi)部集成了12位高精度的ADC模塊,能夠快速準(zhǔn)確的對輸入的模擬信號進行AD轉(zhuǎn)換。內(nèi)核中將地址總線、數(shù)據(jù)總線和指令總線使用分開設(shè)計的方案,不僅可以快速完成指令和數(shù)據(jù)的傳輸與執(zhí)行,而且優(yōu)化電源管理,減小系統(tǒng)開銷。內(nèi)部集成有512KB的Flash和64KB的SRAM可以以CPU的時鐘周期的速度完成數(shù)據(jù)的處理與轉(zhuǎn)移。處理完成的環(huán)境數(shù)據(jù)通過無線模塊按照設(shè)定的發(fā)送頻率將數(shù)據(jù)發(fā)射至匯聚節(jié)點。
DS18B20數(shù)字溫度計是可編程配置為9-12位數(shù)字顯示溫度的設(shè)備,數(shù)據(jù)的輸出/輸入通過一根單總線與微控制器相連。進行數(shù)據(jù)的讀、寫和執(zhí)行溫度轉(zhuǎn)換的能量均來自數(shù)據(jù)線。其具有超小的體積、超低的硬件開銷、抗干擾能力強、精度高等特點,可用于環(huán)境控制、樓宇內(nèi)溫度感應(yīng)、設(shè)備或機械裝置溫度檢測及過程監(jiān)控等。
DS180B20主要特征:
●用于通信的單總線接口只需一個端口引腳;
●電源供電范圍3.0V~5.5V,電源也可來自數(shù)據(jù)線;
●檢測溫度范圍-55℃~+125℃,其中-10℃~+85℃時的精確度為±0.5℃;
●可編程實現(xiàn)9~12位的分辨率;
●全數(shù)字溫度轉(zhuǎn)換傳輸。
測量溫度操作
圖1 系統(tǒng)電源主電路圖
圖2 無線傳感網(wǎng)絡(luò)
圖3 傳感器系統(tǒng)模塊組成框圖
DS18B20的核心功能就是將溫度直接轉(zhuǎn)換成數(shù)字量的傳感器。主機發(fā)送一個轉(zhuǎn)換命令(44h),DS18B20就執(zhí)行溫度轉(zhuǎn)換操作并將數(shù)據(jù)存儲在一個16位的高速暫存存儲器中,其中有2個符號拓展位。一旦轉(zhuǎn)換完成后,主機通過發(fā)送讀暫存器命令(BEh)就能從單總線上獲取溫度信息。溫度寄存器的最高有效位中包含了符號位,用于指示溫度為正還是為負(fù)。
初始化操作——復(fù)位與存在脈沖
DS18B20所有通信均在單總線上進行并以初始化序列作為開始。初始化序列中包含了主機發(fā)出的一個復(fù)位脈沖和從機(DS18B20)發(fā)出的一個存在脈沖,見圖4所示。從機發(fā)送存在脈沖是對復(fù)位脈沖的響應(yīng),是讓主機知道總線上的從機已經(jīng)準(zhǔn)備就緒。
在初始化序列期間,主機發(fā)射復(fù)位脈沖是通過將總線拉低最少480μs,接著主主機釋放總線并進入接收模式。當(dāng)總線被釋放后,4.7kΩ的上拉電阻又會將總線拉高。當(dāng)DS18B20檢測到上升沿,其等待15μs~60μs發(fā)射存在脈沖通過將總線拉低并維持60μs~240μs。
讀寫時間片
DS18B20數(shù)據(jù)讀寫操作是通過使用時間片控制位和命令字來指定操作方式。
(1)寫時間片
當(dāng)主機將數(shù)據(jù)線由高電平拉低進行寫時間片的初始化。存在兩種類型的寫時間片:寫“1”和寫“0”時間片。所有寫時間片最少必須維持60μs,在兩個寫時間片周期最少間隔1μs的恢復(fù)時間。兩種類型的寫時間片都是通過主機將總線拉低的方式,見圖5所示。
要生成寫邏輯1的時間片,主機將總線
拉低15μs后釋放總線??偩€被釋放后,4.7kΩ的上拉電阻將會把總線拉高。要生成邏輯0時間片,主機將總線拉低并維持最少60μs。在DQ線被拉低后DS18B20的采樣窗口時間為15μs~60μs,如果在采樣期間總線為高電平,DS18B20被寫“1”;如果在采樣期間總線為低電平,DS18B20被寫“0”。
圖4 初始化時序圖
圖5 讀寫時間片時序圖
(2)讀時間片
當(dāng)主機發(fā)送時間片時,DS18B20只能發(fā)送數(shù)據(jù)給主機。主機發(fā)送讀暫存器命令(BEh)后,主機必須立刻生成讀時間片。所有的讀時間片都必須維持最少60μs,兩個讀時間片的間隔最少有1μs的恢復(fù)時間。主機通過拉低總線最少1μs后釋放總線來進行時間片的初始化,如圖2所示。主機初始化讀時間片后,DS18B20在總線上開始發(fā)送“1”或“0”。在讀時間片結(jié)束后DS18B20將會釋放總線,隨后總線又會被上拉電阻拉回高電平的空閑狀態(tài)。初始化讀時間片的下降沿出現(xiàn)后15μs,DS18B20輸出有效數(shù)據(jù)。
nRF24L01是一塊帶有嵌入式基帶協(xié)議機制(Enhanced ShockBurst?)的單片2.4GHz收發(fā)器適用于超低功耗的無線設(shè)備。無線收發(fā)器包括:頻率發(fā)生器、Enhanced ShockBurstTM模式控制器、功率放大器、晶體震蕩器、調(diào)制/解調(diào)器和頻道選擇。
模塊主要性能介紹:
(1) nRF24L01工作頻段2.4GHz全球開放ISM頻段免許可證使用;
(2)最高工作速率2Mbps,高效GFSK調(diào)制,抗干擾能力強;
(3)內(nèi)置硬件CRC檢錯和點對多點通信地址控制,自動應(yīng)答及自動重發(fā)功能;
(4)工作電壓范圍1.9~3.6V,待機模式下電流為22uA;掉電模式低至900nA,內(nèi)置2.4GHz天線,體積小巧:15mm×29mm。
nRF24L01的引腳及其功能描述:
CSN:芯片的片選線,CSN 為低電平芯片被選中;
圖6 nRF24L01接口圖6 nRF24L01接口
SCK:芯片控制的時鐘線(SPI 時鐘);
MISO:芯片主收從發(fā)數(shù)據(jù)控制線(Master Input Slave Output);
MOSI:芯片主發(fā)從收數(shù)據(jù)控制線(Master Output Slave Input);
IRQ:中斷信號。通過IRQ與nRF24L01進行中斷通信;
CE: 芯片的模式控制線。CE 協(xié)同nRF24L01的CONFIG 寄存器共同決定NRF24L01 的工作狀態(tài)。
以下為nRF24L01的主要工作模式。
表1 nRF24L01主要工作模式
Enhanced ShockBurstTM收發(fā)模式概述
Enhanced ShockBurstTM自動進行數(shù)據(jù)包處理與定時設(shè)置。在發(fā)送數(shù)據(jù)包期間,ShockBurstTM組裝要發(fā)送的數(shù)據(jù)包和配置時鐘位;在接收期間,ShockBurstTM不斷搜索來自解調(diào)信號中的有效地址。當(dāng)ShockBurstTM發(fā)現(xiàn)有效地址時,它就會處理空閑的數(shù)據(jù)包并通過CRC校驗其有效性,如果數(shù)據(jù)包為有效載荷就會被送入RX FIFO空缺時間片。所有數(shù)據(jù)包處理與定時設(shè)置位都是由ShockBurstTM控制。
Enhanced ShockBurstTM模式有如下的特征:
●當(dāng)工作在應(yīng)答模式時,快速的空中傳輸及啟動時間,極大的降低了電流消耗;
●由于獲得高速的射頻發(fā)射,數(shù)據(jù)在空中傳輸時間很短,極大的降低了無線傳輸中的碰撞現(xiàn)象;
●低成本。nRF24L01集成了所有高速鏈路層操作。SPI接口可以利用單片機通用IO口進行模擬。
掉電模式
進入掉電模式后最小化系統(tǒng)開銷,所有寄存器中的內(nèi)容仍保持且SPI接口依然處于激活狀態(tài)。
待機模式
圖7 PID值檢測
圖8 DS18B20接口電路
待機模式Ⅰ最小化平均工作電流且維持快速啟動時間,在該模式下只有部分晶體振蕩器處于激活狀態(tài)。在待機模式Ⅱ下,額外時鐘緩沖器處于工作模式,如果有新的數(shù)據(jù)包被加載到TX FIFO寄存器,設(shè)置130μs延時后,PLL立即啟動將數(shù)據(jù)包發(fā)射出去 。
應(yīng)用于Enhanced ShockBurstTM模式下數(shù)據(jù)包識別和CRC校驗
每個數(shù)據(jù)包都含有兩位PID(數(shù)據(jù)包識別)來識別接收的數(shù)據(jù)是新數(shù)據(jù)包還是重發(fā)的數(shù)據(jù)包。在發(fā)送方每從MCU取得一新數(shù)據(jù)包后PID值加1。CRC校驗是數(shù)據(jù)包中強制錯誤檢測機制。其有1個或2個字節(jié)來計算是否為重發(fā)數(shù)據(jù)。如果在發(fā)送過程中有一些數(shù)據(jù)包丟失了,在檢測數(shù)據(jù)包時就會出現(xiàn)與上一包數(shù)據(jù)相同的PID值,此時nRF24L01將對兩包數(shù)據(jù)的CRC值進行比較。如果CRC值也相同的話就認(rèn)為后一包是前一包的重發(fā)數(shù)據(jù)而被舍棄。
DS18B20硬件連接與驅(qū)動程序分析
圖8為DS18B20與STM32F103C8接口原理圖,這里使用的是一個四孔的插槽,既可以接DS18B20這樣的三腳溫度計設(shè)備,也能夠插DHT11型的四腳傳感器。其中主機的PA6引腳與DS18B20的數(shù)據(jù)線端口相連,同時DQ端也連接著一個4.7kΩ的上拉電阻,此外VCC與GND端同時接入了一只0.1μF去耦電容,起到一個電池的作用,滿足驅(qū)動電路電流的變化,避免相互間的耦合干擾。
下面是與硬件電路相匹配的主要驅(qū)動程序:
數(shù)據(jù)融合算法分析
算法設(shè)計:1)數(shù)據(jù)盒子生成;2)感知節(jié)點編址與尋址;3)匯聚節(jié)點數(shù)據(jù)上報;本文提出的感知層匯聚節(jié)點數(shù)據(jù)盒子的理念,適合于輕量級的數(shù)據(jù)管理,不需嵌入式操作系統(tǒng)支持,不需要動用嵌入式數(shù)據(jù)庫。該算法計算出所有待定位節(jié)點距離中心節(jié)點以及所有相鄰節(jié)點的距離,將距離信息和臨節(jié)點表傳到控制中心進行集中計算,確定節(jié)點位置。
對nRF24L01固件編程的基本思路如下
(1)Enhanced ShockBurstTM發(fā)射有效載荷:
A.配置PRIM_RX位為低電平并維持 CSN 位為低電平;
B.當(dāng)MCU有數(shù)據(jù)要發(fā)送,配置接收節(jié)點(TX_ADDR)和有效載荷數(shù)據(jù)(TX_PLD)的時鐘地址,通過SPI解控進入nRF24L01;
C.配置CONFIG寄存器,使之進入發(fā)送模式,微控制器把CE置高(至少10us),激發(fā)nRF24L01進行Enhanced ShockBurstTM發(fā)射;
D.將無線電源開啟,16MHz的內(nèi)部時鐘啟動,射頻數(shù)據(jù)包完成,數(shù)據(jù)包高速發(fā)射(通過MCU配置)。
(2) Enhanced ShockBurstTM接收模式:
A.配置本機地址和需要接收的數(shù)據(jù)包大??;
B.配置PRIM_RX位為高電平并把CE置高,使之進入接收模式;
C.130us后,nRF24L01進入監(jiān)視狀態(tài),等待數(shù)據(jù)包的到來;
D.當(dāng)接收到有效的數(shù)據(jù)包(地址匹配和CRC校驗正確),有效載荷自動存儲在RX_FIFO中,同時RX _DR為置高,并產(chǎn)生中斷,通知微控制器數(shù)據(jù)包已接收;
E.MCU通過SPI接口可配置時鐘輸出來匹配載荷速率;
F.MCU設(shè)置CE引腳為低電平進入待機模式Ⅰ(低功耗模式)。
環(huán)境數(shù)據(jù)的傳輸與系統(tǒng)響應(yīng)
匯聚節(jié)點通過STM32的靈活靜態(tài)存儲控制(FSMC)接口來控制 TFTLCD (Thin Film Transistor-Liquid Crystal Display)的顯示,傳感節(jié)點通過無線模塊將環(huán)境數(shù)據(jù)發(fā)送給匯聚節(jié)點,匯聚節(jié)點采用中斷服務(wù)方式進行接收,在主程序中調(diào)用庫函數(shù)LCD_ShowNum()顯示當(dāng)前環(huán)境數(shù)據(jù)。
在傳感節(jié)點采集完數(shù)據(jù)后,其先發(fā)送兩個頭數(shù)據(jù)幀:0xff、0xff,接著發(fā)送溫度和光強數(shù)據(jù)。匯聚節(jié)點通過串口中斷服務(wù)函數(shù)進行接收,匯聚節(jié)點會先檢測接收到的前兩個數(shù)據(jù)是否是0xff、0xff,如果不是,則丟棄,如果是,則將接收到的溫度和光強值與設(shè)定閾值進行比較,當(dāng)兩個值都在閾值范圍內(nèi)時,正常顯示溫度和光強數(shù)據(jù)且LED綠燈常亮;如果采集到的數(shù)據(jù)中有一個或兩個數(shù)據(jù)超設(shè)定值時,支節(jié)點與匯聚節(jié)點的蜂鳴器響起,同時LED紅燈閃爍,綠燈熄滅。
無線傳感節(jié)點有一個自帶的電源設(shè)備。目前傳感器網(wǎng)絡(luò)中節(jié)點的工作周期與使用壽命作為其使用性能指標(biāo)的重要參數(shù),電源模塊對整個傳感器系統(tǒng)的工作運行起著確定性的作用,考慮到上述因素,且兼顧環(huán)境溫度及光強在較短的時間內(nèi)不會發(fā)生急劇變化等情況,在設(shè)計程序中對傳感器環(huán)境數(shù)據(jù)采集頻率和發(fā)送頻率進行適當(dāng)控制,降低節(jié)點工作能耗,從而可以延長其使用壽命。
物聯(lián)網(wǎng)是把傳統(tǒng)的信息通信網(wǎng)絡(luò)延伸到更為廣泛的物理世界,特別是傳感器網(wǎng)絡(luò)的技術(shù)的發(fā)展,能夠為物聯(lián)網(wǎng)的廣泛運用提供支持。無線傳感器網(wǎng)絡(luò)設(shè)計用于工作在特殊環(huán)境下和完成指定任務(wù)。以互聯(lián)網(wǎng)為發(fā)展平臺孕育出的傳感器網(wǎng)絡(luò)是一種新穎的信息獲取和處理的技術(shù)。
本文提供的系統(tǒng)硬件架構(gòu)框圖與設(shè)計電路,充分考慮了工程實際情況和專項任務(wù)的特點,完成了環(huán)境溫度及光強的實時數(shù)據(jù)采集,并傳輸至匯聚節(jié)點進行數(shù)據(jù)分析與處理,經(jīng)過實際驗證,該系統(tǒng)穩(wěn)定性高,實時性強,滿足現(xiàn)場溫度監(jiān)測要求。
李俊男 蘇 楊 薛 端 王君賢
云南大學(xué)信息學(xué)院
10.3969/j.issn.1001-8972.2016.09.027