創新者:李俊男 蘇 楊 薛 端 王君賢
基于STM32溫度及光敏無線傳感器設計
創新者:李俊男 蘇 楊 薛 端 王君賢
采用ST Microelectronic公司生產的STM32F103C8作為主芯片連接DS18B20單總線數字溫度計、光敏二極管和nRF24L01無線傳輸模塊的外圍設備,構成一個無線傳感節點。將環境中的溫度及光強數據通過無線模塊實時的發送到匯聚節點的LCD屏上顯示,當溫度或光強超過設定值時,傳感節點自動報警。文中對傳感器系統的硬件電路、讀寫時序和驅動程序進行了詳細的闡述,并對無線模塊的固件編程進行了分析。
隨著人們對物理世界的不斷探索,我們獲取信息的方式和途徑越來越多樣化,信息的來源、種類、數量呈現海量化的態勢。傳感器作為連接物理世界與電子世界的重要媒介,能將物理世界中模擬信號轉化成為計算機能夠處理的數字信號。
隨著物聯網領域的發展,現代傳感器不僅包括了傳感部件能夠感知周圍世界,而且也集成了微型處理器與無線通信模塊,可實現各傳感節點間信息的交換與通信,而且能夠對前端感知的信息進行綜合分析處理和網絡傳輸。
系統模塊組成
微處理器模塊采用的是ARM架構Cortex-M3內核系列的 CPU,最高工作頻率72MHz,其中集成了12位模數轉換器(ADC),較高的采集頻率與很短轉換時間,同時也保證了轉換精度。采用了最優化電源配置管理,最小化系統能耗,所有外設處于工作狀態時,系統消耗18mA,待機時下降到2μA。
傳感設備模塊使用DS18B20單總線數字溫度計,其可工作環境溫度變化范圍大,采集數據精度高,可滿足絕大多數工作環境及需求,該設備另一特點,無需外圍電源,能耗極低,從而可延長傳感器節點使用壽命。
無線傳輸芯片為nRF24L01,其內置2.4GHz天線,體積小巧、成本低廉,采用Enhanced ShockBurstTM模式控制技術,優化模塊收發模式,減小系統開支。
硬件電路設計分析
使用Altium Designer電路設計軟件進行原理圖與PCB板的繪制,所有元器件引腳均采用網絡標號的形式相連接,圖1為系統電源模塊主電路圖。傳感器節點自帶12V的鋰電池,U1芯片采用MP2359(單片集成降壓轉換器)良好的線性輸出,避免電源輸出發生波動對系統工作電路產生影響,起到保護電路的作用。此外考慮到傳感節點能耗和使用壽命,并且環境溫濕度及光強在較短的時間內不會發生急劇變化,在程序中配合實際硬件電路,控制了傳感器的采集頻率與發送頻率,從軟硬件方面同時減小系統開支。
傳感器網絡及系統結構框圖
物聯網整體架構由智能感知層、無線網絡傳輸層和綜合應用層組成,其三大關鍵技術類別包括智能感知識別、網絡通訊及大數據分析。傳感節點(Node)采集了海量數據后發送給匯聚節點,數據量龐大且大部分重復,因此在匯聚節點處應采用數據挖掘與數據融合技術篩選出具有代表性的特征數據完成傳輸,最后實現對監控環境的數據分析。
總體的系統架構基于嵌入式平臺,前端由數據采集模塊完成模擬信號的采集,通過串口輸入主芯片實現信號的量化,接著通過無線傳輸模塊將獲取的環境數據發送至匯聚節點(Sink),再進一步完成數據的分析處理。
傳感節點以STM32F103C8作為主芯片,主頻高達72MHz,能快速的進行取指、譯碼、執行過程,在較短的時鐘周期內就能完成一條指令語句,內部集成了12位高精度的ADC模塊,能夠快速準確的對輸入的模擬信號進行AD轉換。內核中將地址總線、數據總線和指令總線使用分開設計的方案,不僅可以快速完成指令和數據的傳輸與執行,而且優化電源管理,減小系統開銷。內部集成有512KB的Flash和64KB的SRAM可以以CPU的時鐘周期的速度完成數據的處理與轉移。處理完成的環境數據通過無線模塊按照設定的發送頻率將數據發射至匯聚節點。
DS18B20數字溫度計是可編程配置為9-12位數字顯示溫度的設備,數據的輸出/輸入通過一根單總線與微控制器相連。進行數據的讀、寫和執行溫度轉換的能量均來自數據線。其具有超小的體積、超低的硬件開銷、抗干擾能力強、精度高等特點,可用于環境控制、樓宇內溫度感應、設備或機械裝置溫度檢測及過程監控等。
DS180B20主要特征:
●用于通信的單總線接口只需一個端口引腳;
●電源供電范圍3.0V~5.5V,電源也可來自數據線;
●檢測溫度范圍-55℃~+125℃,其中-10℃~+85℃時的精確度為±0.5℃;
●可編程實現9~12位的分辨率;
●全數字溫度轉換傳輸。
測量溫度操作

圖1 系統電源主電路圖

圖2 無線傳感網絡

圖3 傳感器系統模塊組成框圖
DS18B20的核心功能就是將溫度直接轉換成數字量的傳感器。主機發送一個轉換命令(44h),DS18B20就執行溫度轉換操作并將數據存儲在一個16位的高速暫存存儲器中,其中有2個符號拓展位。一旦轉換完成后,主機通過發送讀暫存器命令(BEh)就能從單總線上獲取溫度信息。溫度寄存器的最高有效位中包含了符號位,用于指示溫度為正還是為負。
初始化操作——復位與存在脈沖
DS18B20所有通信均在單總線上進行并以初始化序列作為開始。初始化序列中包含了主機發出的一個復位脈沖和從機(DS18B20)發出的一個存在脈沖,見圖4所示。從機發送存在脈沖是對復位脈沖的響應,是讓主機知道總線上的從機已經準備就緒。
在初始化序列期間,主機發射復位脈沖是通過將總線拉低最少480μs,接著主主機釋放總線并進入接收模式。當總線被釋放后,4.7kΩ的上拉電阻又會將總線拉高。當DS18B20檢測到上升沿,其等待15μs~60μs發射存在脈沖通過將總線拉低并維持60μs~240μs。
讀寫時間片
DS18B20數據讀寫操作是通過使用時間片控制位和命令字來指定操作方式。
(1)寫時間片
當主機將數據線由高電平拉低進行寫時間片的初始化。存在兩種類型的寫時間片:寫“1”和寫“0”時間片。所有寫時間片最少必須維持60μs,在兩個寫時間片周期最少間隔1μs的恢復時間。兩種類型的寫時間片都是通過主機將總線拉低的方式,見圖5所示。
要生成寫邏輯1的時間片,主機將總線
拉低15μs后釋放總線。總線被釋放后,4.7kΩ的上拉電阻將會把總線拉高。要生成邏輯0時間片,主機將總線拉低并維持最少60μs。在DQ線被拉低后DS18B20的采樣窗口時間為15μs~60μs,如果在采樣期間總線為高電平,DS18B20被寫“1”;如果在采樣期間總線為低電平,DS18B20被寫“0”。

圖4 初始化時序圖

圖5 讀寫時間片時序圖
(2)讀時間片
當主機發送時間片時,DS18B20只能發送數據給主機。主機發送讀暫存器命令(BEh)后,主機必須立刻生成讀時間片。所有的讀時間片都必須維持最少60μs,兩個讀時間片的間隔最少有1μs的恢復時間。主機通過拉低總線最少1μs后釋放總線來進行時間片的初始化,如圖2所示。主機初始化讀時間片后,DS18B20在總線上開始發送“1”或“0”。在讀時間片結束后DS18B20將會釋放總線,隨后總線又會被上拉電阻拉回高電平的空閑狀態。初始化讀時間片的下降沿出現后15μs,DS18B20輸出有效數據。
nRF24L01是一塊帶有嵌入式基帶協議機制(Enhanced ShockBurst?)的單片2.4GHz收發器適用于超低功耗的無線設備。無線收發器包括:頻率發生器、Enhanced ShockBurstTM模式控制器、功率放大器、晶體震蕩器、調制/解調器和頻道選擇。
模塊主要性能介紹:
(1) nRF24L01工作頻段2.4GHz全球開放ISM頻段免許可證使用;
(2)最高工作速率2Mbps,高效GFSK調制,抗干擾能力強;
(3)內置硬件CRC檢錯和點對多點通信地址控制,自動應答及自動重發功能;
(4)工作電壓范圍1.9~3.6V,待機模式下電流為22uA;掉電模式低至900nA,內置2.4GHz天線,體積小巧:15mm×29mm。
nRF24L01的引腳及其功能描述:
CSN:芯片的片選線,CSN 為低電平芯片被選中;

圖6 nRF24L01接口圖6 nRF24L01接口
SCK:芯片控制的時鐘線(SPI 時鐘);
MISO:芯片主收從發數據控制線(Master Input Slave Output);
MOSI:芯片主發從收數據控制線(Master Output Slave Input);
IRQ:中斷信號。通過IRQ與nRF24L01進行中斷通信;
CE: 芯片的模式控制線。CE 協同nRF24L01的CONFIG 寄存器共同決定NRF24L01 的工作狀態。
以下為nRF24L01的主要工作模式。

表1 nRF24L01主要工作模式
Enhanced ShockBurstTM收發模式概述
Enhanced ShockBurstTM自動進行數據包處理與定時設置。在發送數據包期間,ShockBurstTM組裝要發送的數據包和配置時鐘位;在接收期間,ShockBurstTM不斷搜索來自解調信號中的有效地址。當ShockBurstTM發現有效地址時,它就會處理空閑的數據包并通過CRC校驗其有效性,如果數據包為有效載荷就會被送入RX FIFO空缺時間片。所有數據包處理與定時設置位都是由ShockBurstTM控制。
Enhanced ShockBurstTM模式有如下的特征:
●當工作在應答模式時,快速的空中傳輸及啟動時間,極大的降低了電流消耗;
●由于獲得高速的射頻發射,數據在空中傳輸時間很短,極大的降低了無線傳輸中的碰撞現象;
●低成本。nRF24L01集成了所有高速鏈路層操作。SPI接口可以利用單片機通用IO口進行模擬。
掉電模式
進入掉電模式后最小化系統開銷,所有寄存器中的內容仍保持且SPI接口依然處于激活狀態。
待機模式

圖7 PID值檢測

圖8 DS18B20接口電路
待機模式Ⅰ最小化平均工作電流且維持快速啟動時間,在該模式下只有部分晶體振蕩器處于激活狀態。在待機模式Ⅱ下,額外時鐘緩沖器處于工作模式,如果有新的數據包被加載到TX FIFO寄存器,設置130μs延時后,PLL立即啟動將數據包發射出去 。
應用于Enhanced ShockBurstTM模式下數據包識別和CRC校驗
每個數據包都含有兩位PID(數據包識別)來識別接收的數據是新數據包還是重發的數據包。在發送方每從MCU取得一新數據包后PID值加1。CRC校驗是數據包中強制錯誤檢測機制。其有1個或2個字節來計算是否為重發數據。如果在發送過程中有一些數據包丟失了,在檢測數據包時就會出現與上一包數據相同的PID值,此時nRF24L01將對兩包數據的CRC值進行比較。如果CRC值也相同的話就認為后一包是前一包的重發數據而被舍棄。
DS18B20硬件連接與驅動程序分析
圖8為DS18B20與STM32F103C8接口原理圖,這里使用的是一個四孔的插槽,既可以接DS18B20這樣的三腳溫度計設備,也能夠插DHT11型的四腳傳感器。其中主機的PA6引腳與DS18B20的數據線端口相連,同時DQ端也連接著一個4.7kΩ的上拉電阻,此外VCC與GND端同時接入了一只0.1μF去耦電容,起到一個電池的作用,滿足驅動電路電流的變化,避免相互間的耦合干擾。
下面是與硬件電路相匹配的主要驅動程序:


數據融合算法分析
算法設計:1)數據盒子生成;2)感知節點編址與尋址;3)匯聚節點數據上報;本文提出的感知層匯聚節點數據盒子的理念,適合于輕量級的數據管理,不需嵌入式操作系統支持,不需要動用嵌入式數據庫。該算法計算出所有待定位節點距離中心節點以及所有相鄰節點的距離,將距離信息和臨節點表傳到控制中心進行集中計算,確定節點位置。
對nRF24L01固件編程的基本思路如下
(1)Enhanced ShockBurstTM發射有效載荷:
A.配置PRIM_RX位為低電平并維持 CSN 位為低電平;
B.當MCU有數據要發送,配置接收節點(TX_ADDR)和有效載荷數據(TX_PLD)的時鐘地址,通過SPI解控進入nRF24L01;
C.配置CONFIG寄存器,使之進入發送模式,微控制器把CE置高(至少10us),激發nRF24L01進行Enhanced ShockBurstTM發射;
D.將無線電源開啟,16MHz的內部時鐘啟動,射頻數據包完成,數據包高速發射(通過MCU配置)。
(2) Enhanced ShockBurstTM接收模式:
A.配置本機地址和需要接收的數據包大小;
B.配置PRIM_RX位為高電平并把CE置高,使之進入接收模式;
C.130us后,nRF24L01進入監視狀態,等待數據包的到來;
D.當接收到有效的數據包(地址匹配和CRC校驗正確),有效載荷自動存儲在RX_FIFO中,同時RX _DR為置高,并產生中斷,通知微控制器數據包已接收;
E.MCU通過SPI接口可配置時鐘輸出來匹配載荷速率;
F.MCU設置CE引腳為低電平進入待機模式Ⅰ(低功耗模式)。
環境數據的傳輸與系統響應
匯聚節點通過STM32的靈活靜態存儲控制(FSMC)接口來控制 TFTLCD (Thin Film Transistor-Liquid Crystal Display)的顯示,傳感節點通過無線模塊將環境數據發送給匯聚節點,匯聚節點采用中斷服務方式進行接收,在主程序中調用庫函數LCD_ShowNum()顯示當前環境數據。
在傳感節點采集完數據后,其先發送兩個頭數據幀:0xff、0xff,接著發送溫度和光強數據。匯聚節點通過串口中斷服務函數進行接收,匯聚節點會先檢測接收到的前兩個數據是否是0xff、0xff,如果不是,則丟棄,如果是,則將接收到的溫度和光強值與設定閾值進行比較,當兩個值都在閾值范圍內時,正常顯示溫度和光強數據且LED綠燈常亮;如果采集到的數據中有一個或兩個數據超設定值時,支節點與匯聚節點的蜂鳴器響起,同時LED紅燈閃爍,綠燈熄滅。
無線傳感節點有一個自帶的電源設備。目前傳感器網絡中節點的工作周期與使用壽命作為其使用性能指標的重要參數,電源模塊對整個傳感器系統的工作運行起著確定性的作用,考慮到上述因素,且兼顧環境溫度及光強在較短的時間內不會發生急劇變化等情況,在設計程序中對傳感器環境數據采集頻率和發送頻率進行適當控制,降低節點工作能耗,從而可以延長其使用壽命。
物聯網是把傳統的信息通信網絡延伸到更為廣泛的物理世界,特別是傳感器網絡的技術的發展,能夠為物聯網的廣泛運用提供支持。無線傳感器網絡設計用于工作在特殊環境下和完成指定任務。以互聯網為發展平臺孕育出的傳感器網絡是一種新穎的信息獲取和處理的技術。
本文提供的系統硬件架構框圖與設計電路,充分考慮了工程實際情況和專項任務的特點,完成了環境溫度及光強的實時數據采集,并傳輸至匯聚節點進行數據分析與處理,經過實際驗證,該系統穩定性高,實時性強,滿足現場溫度監測要求。

李俊男 蘇 楊 薛 端 王君賢
云南大學信息學院
10.3969/j.issn.1001-8972.2016.09.027