劉 月, 譚楠玲, 胡菁蕓, 鮑震杰, 靳亞東
(西藏民族大學信息工程學院,陜西 咸陽 712082)
隨著科技的發(fā)展,近年來嵌入式系統(tǒng)與數(shù)字傳感器相結合的短距離無線數(shù)據(jù)采集網(wǎng)絡得到了發(fā)展,這種新型網(wǎng)絡可以實現(xiàn)網(wǎng)絡的自組織,還可以自主完成數(shù)字形式的數(shù)據(jù)采集功能。短距離無線數(shù)據(jù)采集網(wǎng)絡的特點有網(wǎng)絡的動態(tài)性、自發(fā)性、以數(shù)據(jù)為中心、網(wǎng)絡大規(guī)模、網(wǎng)絡可靠,短距離無線數(shù)據(jù)采集網(wǎng)絡較之以往的數(shù)據(jù)采集傳輸技術更加簡潔。本文主要實現(xiàn)短距離無線數(shù)據(jù)采集的功能,基于短距離無線的點對點的組網(wǎng),確保了節(jié)點之間的雙向數(shù)據(jù)傳輸?shù)挠行?、可靠性、實時性。
NRF24L01是一款美國Nordic公司研發(fā)的可進行無線短距離收發(fā)數(shù)據(jù)的射頻信通芯片,它的工作頻段在2.4-2.5GH,工作特點是功耗低、傳輸速度快、以及即時性高。其中它的無線接收器還包括了頻率發(fā)生器,增強型“SchockBurst”模式控制器[1]。功率放大器,晶體振蕩器,調制器和解調器[2]。NRF24L01可以利用最少的外部元件獲得低功耗、高性能的通信模塊。
1.1.1 NRF24L01芯片的外部說明:
NRF24L01無線收發(fā)芯片采用的是4.0*4.0mm QLP20的形式封裝。其主要優(yōu)點是體積小,集成度高[3]。
1.1.2 NRF24L01的內(nèi)部結構
NRF24L01具有電源引腳、接地引腳和6個普通I/O信號引腳,在編程實現(xiàn)無線短距離通信時,需要用到類似串口[4]的設置方式去設置這6個I/O口。NRF24L01的地址可以自由的選擇或者打開一個或是多個接收通道,也可以根據(jù)需求自行配置。
1.1.3 NRF24L01收發(fā)原理
在開始發(fā)送數(shù)據(jù)時,首先需要將NRF24L01的無線通信模塊設置為發(fā)送模式[5],在發(fā)送數(shù)據(jù)時,則向緩沖區(qū)寫入接收方的地址和信息和有效數(shù)據(jù),地址要和發(fā)送方一致并且只需要輸入一次就行,而數(shù)據(jù)的傳輸則需要CSN變?yōu)榈碗娖讲拍苡行懭?。所以在此過程中大約有130微秒的時延。
在接收地址都相同的情況下,可以打開NRF24L01的自動應答,開啟這個模式后NRF24L01就能實現(xiàn)在發(fā)送數(shù)據(jù)后快速轉換為接收模式的目的,去接收傳輸?shù)臄?shù)據(jù),接收成功則表示通信成功,如果接收方?jīng)]有收到響應信號,發(fā)送方就會繼續(xù)發(fā)送信息,但是發(fā)送的次數(shù)是有限的,當次數(shù)超標則數(shù)據(jù)將會繼續(xù)保留,成為下次發(fā)送的數(shù)據(jù)。同時會產(chǎn)生中斷發(fā)送給單片機。
圖1 NRF24L01通信模塊原理圖
DS18B20溫度傳感器工作時一般采用單總線協(xié)議[5],傳輸數(shù)據(jù)時采用一個單獨的端口,在與總線連接時通過漏極或者三態(tài)口此時則需要連接上一個上拉電阻。如下圖所示,上拉電阻的主要作用是在DS18B20沒接通電源時供電,以及在DS18B20有連接電源時確保傳感器的穩(wěn)定工作。
有兩種外部供電的連接方式,一是單只的溫度傳感器與單片機相連。
二是多個的溫度傳感器與單片機相連,如圖下圖所示。值得說明的是在多個溫度傳感器與單片機相連的情況下。由于DS18B20溫度傳感器在生產(chǎn)時擁有唯一的序列號[6]。這個使得當一條總線上同時連接多個傳感器時單片機能夠通過序列號實現(xiàn)傳感器的區(qū)分,識別在整個系統(tǒng)中總線上每個設備的地址并做下記錄,這個特性可以使得分布在不同地方的溫度傳感器能夠得到相應的處理,使得數(shù)據(jù)的處理更加方便。這個特點還使得 DS18B20溫度傳感器在環(huán)境控制、溫度測量等方面更加靈活實用。
在DS18B20無供電的情況下,其工作環(huán)境是“寄生源模式”[7],其中VDD引腳接地,如下圖所示。在此模式下DS18B20不需要外部的電源供給,也能完成溫度信息的采集。
圖2 “寄生電源模式”下的DS18B20溫度傳感器電路
選取了STC公司所生產(chǎn)的STC89C52RC微控制器[8],正常工作需要提供5V的電源電壓。射頻通訊模塊采用的是NRF24L01芯片,它的工作電壓為3.3V,綜上供電模塊需提供5V和3.3V的DC電源[9],為了提供更穩(wěn)定的電源環(huán)境以及提高獲得外部電源的便利性,本系統(tǒng)設計了兩種供電模式,可在不同的條件下選擇。
一種是USB接口連接外部電源提供該系統(tǒng)的電源電壓,另一種就是使用電池供電。在實驗系統(tǒng)和演示功能時采用USB連接外部電源的方式,這種供電方式提供的電源電壓環(huán)境更加穩(wěn)定,可以確保系統(tǒng)的平穩(wěn)運行。在實用和便利的階段,則采用電池供電的方式。
由于STC89C52RC和NRF24L01所需的工作電壓不同,所以需要進行電壓的轉換。我們實用調壓芯片7805將外部接入的9V電壓轉換為STC89C52RC正常工作所需的5V電壓,在轉換過程中我們發(fā)現(xiàn)調壓芯片7805轉換的效率不佳,只能達到百分之六十左右,故而在轉換NRF24L01所需的工作電壓時,選擇采用LM1117直流電壓[10]轉換芯片得到NRF24L01所需的3.3V工作電壓。電路圖如下圖所示:
無線短距離數(shù)據(jù)采集系統(tǒng)的子節(jié)點可以對外界的溫度進行感應,子節(jié)點通過分布在不同地區(qū)的DS18B20溫度傳感器可以對周圍的環(huán)境溫度數(shù)據(jù)進行采集。DS18B20對于大學生的我們來說不僅價格實惠而且具有極強的抗干擾性,還擁有極高的精度,因此我們選擇了DS18B20作為系統(tǒng)中的溫度測量感知模塊。
圖3 電源電路原理圖
選擇STC89C52RC作為該系統(tǒng)的微控制器[11],該款單片機具有極高的靈活性,能夠使得本系統(tǒng)在運行和實現(xiàn)功能的過程中平穩(wěn)的運行。
本文系統(tǒng)的通信模塊采用了NRF24L01芯片作為射頻通信器的控制芯片。系統(tǒng)中的通信模塊和微控制系統(tǒng)之間的連接通過8針接口,而與微控制模塊的通信實現(xiàn)則通過SPI串口的通信協(xié)議,從而調整和掌控通信模塊的工作模式。
在使用XC1和XC2引腳時NRF24L01的晶振時鐘頻率范圍是16MHz。
為了便于查看和驗證短距離無線數(shù)據(jù)采集網(wǎng)絡的溫度數(shù)值,也為了觀察溫度變化時系統(tǒng)能否成功的實現(xiàn)數(shù)據(jù)的采集和傳輸,主節(jié)點中設計了顯示模塊,為了節(jié)約成本,顯示的子系統(tǒng)模塊選用了LCD2864液晶屏幕顯示,這使得顯示子系統(tǒng)的系統(tǒng)設計更加簡潔。
PCB[12]為印刷電路板是整個網(wǎng)絡中不可缺少的重要組成部分,為了避免像傳統(tǒng)的連線方式那樣因為線路的連接而導致節(jié)點分布復雜,它用電路連接的形式將各個節(jié)點所要用到的各模塊進行連接,以這樣的方式通過電路板的設計將節(jié)點盡可能的小型化,使得該系統(tǒng)的線路連接也更加簡潔,簡潔的線路和微型化的節(jié)點在網(wǎng)絡中的設置,可以提高整體系統(tǒng)在運行時的穩(wěn)定性。
本文系統(tǒng)的目標是在硬件的基礎上建立可以實現(xiàn)短距離溫度檢測功能以及組網(wǎng)功能的無線數(shù)據(jù)采集網(wǎng)絡,確保系統(tǒng)的穩(wěn)定運行和數(shù)據(jù)的穩(wěn)定傳輸。系統(tǒng)流程圖如下圖所示:
3.2.1 NRF24L01的發(fā)送函數(shù)
在子節(jié)點完成初始化之后,通信模塊開啟發(fā)送模式,將采集系統(tǒng)檢測到的數(shù)據(jù)進行檢測,然后經(jīng)過一定的算法處理存儲在指定的數(shù)組tx_buf [ ]中,完成這一系列的動作之后再進行下一組的數(shù)據(jù)傳輸。
3.2.2 NRF24L01的接收函數(shù)
初始化主節(jié)點之后,將通信模塊的模式進行設置改為[13]。以便于系統(tǒng)進入等待狀態(tài)來監(jiān)察空中無線數(shù)據(jù)的信號,系統(tǒng)接收到的數(shù)據(jù)在接受一定的判斷之后,經(jīng)過數(shù)碼管[14]進行數(shù)據(jù)的顯示。
節(jié)點一的發(fā)送主函數(shù):
#include "inc/nRF24L01.h"
#include "inc/ds18b20.h"
#include
//主函數(shù)
void main(void)
{
uinttemp,OldTemp;
uinttempEps=0;
init_NRF24L01();
Delay(100);
//主循環(huán)
while(1)
{
temp = Get_Temp();
tempEps=abs(temp-OldTemp);
OldTemp=temp;
DisplayTemperture(temp);
if(tempEps>0){
TxBuf[0] = PointTwo;
TxBuf[1] = temp/100;
TxBuf[2] = temp/10%10;
TxBuf[3] = temp%10;
nRF24L01_TxPacket(TxBuf); // Transmit Tx buffer data
SPI_RW_Reg(WRITE_REG+STATUS,0XFF);
}
}
}
1.在選擇USB外接電源方式供電的情況下,連接通訊板實現(xiàn)一對三的無線溫度數(shù)據(jù)采集以及傳輸功能,通訊板的連接畫面如下圖所示:
圖5 一對三通訊板連接圖
2.啟動節(jié)點的電源開關,子節(jié)點會自動的產(chǎn)生和主節(jié)點的連接,然后將采集到的數(shù)據(jù)傳輸過去,然后用主節(jié)點的液晶屏幕接收對環(huán)境的溫度進行顯示。
運行結果如下圖所示:
3.將手指放在節(jié)點一的溫度傳感器上,讓溫度傳感器感受環(huán)境溫度的變化,然后進行溫度數(shù)據(jù)的采集,主節(jié)點的液晶屏幕顯示的數(shù)值同時上升,溫度升高過程如下:
圖6 啟動電源開關,開始傳輸數(shù)據(jù)
圖7 節(jié)點一溫度上升
4.拿開節(jié)點一附近的手指,節(jié)點一測量的溫度數(shù)值慢慢下降,主節(jié)點的液晶屏幕顯示的溫度也逐漸發(fā)生變化,溫度下降過程:
圖8 節(jié)點一溫度下降
5.拿開手指后,節(jié)點一的溫度下降到室內(nèi)溫度后,節(jié)點一的溫度將保持穩(wěn)定不再繼續(xù)下降,因此液晶屏幕上的溫度數(shù)值也保持穩(wěn)定不再發(fā)生變化。
接收數(shù)據(jù)由主節(jié)點完成,數(shù)據(jù)的發(fā)送由子節(jié)點完成,經(jīng)過不斷的測試和改良,證實了本文系統(tǒng)網(wǎng)絡能夠穩(wěn)定的實現(xiàn)組網(wǎng)[15]的運行以及環(huán)境溫度的實時測量采集和數(shù)據(jù)傳輸?shù)娘@示。
本文系統(tǒng)實現(xiàn)的是短距離無線數(shù)據(jù)的采集,使用4塊STC89C52RC的集成芯片,然后通過NRF24L01的射頻識別的通信模塊實現(xiàn)一對三的溫度數(shù)據(jù)的采集和顯示。通過調試代碼程序和測試通信板的接收以及發(fā)送功能,將三個子節(jié)點中采集的實時環(huán)境溫度數(shù)據(jù)傳輸?shù)街鞴?jié)點上液晶屏幕顯示。當我們用手指接觸不同的子節(jié)點,讓不同的子節(jié)點所測試的環(huán)境溫度發(fā)生變化,主節(jié)點的液晶屏幕相應子節(jié)點的數(shù)值也會發(fā)生相應的變化。
特點是利用的NRF24L01的通信射頻識別模塊以及STC89C52RC的單片機實現(xiàn)了短距離無線的溫度數(shù)據(jù)采集以及傳輸功能,而且還能利用液晶屏幕進行采集溫度數(shù)值的顯示,利用DS18B20實現(xiàn)溫度變化的感知。
本設計的短距離無線數(shù)據(jù)采集系統(tǒng),采集數(shù)據(jù)準確,整體系統(tǒng)運行穩(wěn)定,消耗低,能夠有效簡潔的實現(xiàn)短距離無線數(shù)據(jù)的準確采集。