楊家桂,聶德品,陳勁松,武 岳
(1.安徽財經(jīng)大學(xué),安徽 蚌埠 233030;2.中鹽昆山有限公司,江蘇 昆山 215321)
如果物品與其主人或無自理能力的老人、小孩與看護(hù)人的距離超過一定值時,能及時提醒物品主人或看護(hù)人,會減少很多麻煩。本設(shè)計應(yīng)用PIC16F616 單片機(jī)控制無線數(shù)字傳輸芯片nRF24L01,以無線方式在客戶和被保護(hù)對象之間進(jìn)行數(shù)據(jù)雙向傳輸,保證被保護(hù)對象在控制范圍內(nèi),實現(xiàn)防護(hù)功能。
本系統(tǒng)主要是由發(fā)射和接收兩大模塊組成,系統(tǒng)基本構(gòu)成如圖1 所示。采用鋰離子電池供電,利用單片機(jī)來控制無線模塊之間的通信。系統(tǒng)啟動后,單片機(jī)向發(fā)射器里寫入地址和數(shù)據(jù),發(fā)射器開始工作并不斷發(fā)出無線信號;當(dāng)接收器接收到信號,LED 燈亮,同時通知單片機(jī)讀取數(shù)據(jù)。當(dāng)接收器和發(fā)射器間的距離大于設(shè)定值時,接收器無法收到信號,將會進(jìn)行聲光報警,提示客戶其被保護(hù)對象已離開設(shè)定的距離。
圖1 系統(tǒng)組成框圖
發(fā)射系統(tǒng)主要由處理器、nRF24L01無線通信模塊、人機(jī)接口等部分組成,如圖2所示。處理器采用國外某公司研發(fā)的14 腳的8 位CMOS 單片機(jī)PIC16F616,其中11 個I/O 引腳是多功能,使用時根據(jù)需要進(jìn)行配置,工作電壓范圍為2.0V~5.5V,功耗低,片內(nèi)含有2048個字的可反復(fù)擦寫的程序存儲器和128 字節(jié)的SRAM[1]。設(shè)計時采用4MHz 的石英晶體和2 個22PF 電容組成外部振蕩器;在電源和地附近也需連接不同的電容進(jìn)行去耦和濾波,使得系統(tǒng)具有更好的穩(wěn)定性和時序精度。
圖2 發(fā)射模塊原理圖
nRF24L01 是無線單片收發(fā)一體芯片,工作頻段為2.4GHz~2.5GHz,世界通用。內(nèi)部集成了頻率發(fā)生器、功率放大器、晶體振蕩器、增強(qiáng)型Shock?BurstTM模式控制器等,支持一對多通信,輸出功率、頻道、發(fā)送或接收模式可以通過程序進(jìn)行設(shè)置[2]。有多種低功率工作模式,能實現(xiàn)自動應(yīng)答、自動重發(fā)、地址碼檢測、循環(huán)冗余校驗碼檢測等功能。無線速率可達(dá)到2Mbps,SPI接口速率可達(dá)8Mbps,工作電壓1.9~3.6V,體積小、功耗低,而且所需外圍元件較少,應(yīng)用方便[3]。
人機(jī)接口包括按鍵和LED 燈。按鍵具有多功能,第一次按下,啟動發(fā)射模塊,第二次按下即為關(guān)閉發(fā)射,系統(tǒng)停止工作。LED 燈亮表示系統(tǒng)工作正常,工作過程中LED等滅表示接收端沒接收到數(shù)據(jù)。
圖3 接收模塊原理圖
接收模塊如圖3所示,主要包含處理器、聲光報警、nRF24L01 無線通信電路等。一旦系統(tǒng)開始工作,根據(jù)配置此模塊中nRF2401 就處于接收狀態(tài),接收發(fā)射端送過來的數(shù)據(jù),當(dāng)系統(tǒng)正常工作時LED燈亮;若系統(tǒng)工作不正?;蚪邮詹坏桨l(fā)送端發(fā)送的信號,則LED 燈滅;若被保護(hù)對象遠(yuǎn)離設(shè)定的距離,則LED燈滅同時蜂鳴器發(fā)出報警信號。
本設(shè)計采用單片機(jī)PIC16F616I/O 口模擬SPI的工作時序,與nRF24L01 進(jìn)行數(shù)據(jù)通信和通信控制[4-5]。系統(tǒng)總體工作流程如圖4 所示。系統(tǒng)運行之前在配置模式下對發(fā)送端和接收端的nRF24L01 進(jìn)行相互匹配的初始化配置,接著就可以進(jìn)行正常的數(shù)據(jù)通信。數(shù)據(jù)包為固定的格式:前綴、地址、有效數(shù)據(jù)和校驗位(CRC),發(fā)送時單片機(jī)只向nRF24L01 傳送地址和數(shù)據(jù), 前綴和CRC 會在nRF24L01 芯片內(nèi)部自動加進(jìn)去;接收時,接收端檢測到本機(jī)地址的數(shù)據(jù)包,檢驗正確后會自動移去前綴、地址和CRC,將有效數(shù)據(jù)傳送給單片機(jī)[6-7]。
圖4 系統(tǒng)工作流程圖
nRF24L01 收發(fā)模式分直接收發(fā)、ShockBurstTM收發(fā)和Enhanced ShockBurstTM收發(fā)三種模式。本設(shè)計采用最后一種收發(fā)模式,因為Enhanced Shock?BurstTM模式可以與低速MCU 配合工作[3],并要求接收方在收到數(shù)據(jù)后進(jìn)行應(yīng)答,數(shù)據(jù)丟失后會自動重發(fā),發(fā)送或接收完畢產(chǎn)生中斷信號通知MCU。此模式下發(fā)送時數(shù)據(jù)從微控制器送入到nRF24L01 片內(nèi)的堆棧區(qū),數(shù)據(jù)打包后即高速(1Mbit/s)發(fā)射,與射頻協(xié)議相關(guān)的所有高速信號處理都在nRF24L01 片內(nèi)進(jìn)行,這樣不僅節(jié)能、降低成本,而且數(shù)據(jù)在空中停留時間短、增強(qiáng)抗干擾性[6]。
nRF24L01 發(fā)射模塊開始工作時,先初始化,中斷復(fù)位,SPI時鐘禁止,讓CE=0,CSN=0(CSN是芯片使能端);再進(jìn)行芯片參數(shù)的配置:選擇發(fā)射頻道,發(fā)射功率,數(shù)據(jù)傳輸速率以及低噪聲放大器增益、接收端地址等,然后拉高CE 時間持續(xù)100μs,啟動發(fā)射模塊。MCU 將接收節(jié)點的地址和有效數(shù)據(jù)寫入nRF24L01 中的TX_FIFO。當(dāng)SCK 出現(xiàn)一個下降沿,nRF24L01 會 從MOSI 讀 入1 位 數(shù) 據(jù),同 時 從MISO 輸出1 位數(shù)據(jù)。數(shù)據(jù)發(fā)送結(jié)束,會自動進(jìn)入接收模式,可配置通道0 接收應(yīng)答信號。若在一定時間內(nèi)收到應(yīng)答,IRQ置低,產(chǎn)生中斷,同時TX_DS=0,通知MCU數(shù)據(jù)已發(fā)送完,此時清除TXFIFO中數(shù)據(jù),進(jìn)行下一個數(shù)據(jù)的發(fā)送。如果超過等待則會自動重發(fā)。直到收到應(yīng)答或者達(dá)到最大重發(fā)次數(shù)(由SETUP_RETP_ARC 寄存器設(shè)置)。如果重發(fā)次數(shù)超過了這個最大值,會出現(xiàn)MAX_RT 中斷,此時不會清除TXFIFO 中數(shù)據(jù)。MAX_RT 中斷被清除,才會重發(fā)數(shù)據(jù)包。如果達(dá)到自動重發(fā)的次數(shù),可以選擇重新發(fā)送這個數(shù)據(jù)或者發(fā)送下一個數(shù)據(jù)。無線發(fā)送流程如圖5所示。
圖5 無線發(fā)送流程圖
接收器配置的過程與發(fā)射類似,初始化,配置相關(guān)參數(shù)。為了與發(fā)射區(qū)別,CE 需置高。進(jìn)入接收模式后,若接收到有效的數(shù)據(jù)和地址,會產(chǎn)生中斷同時RX_DR=0,接收完畢后會進(jìn)入發(fā)送模式,向發(fā)送端發(fā)送應(yīng)答信號。本設(shè)計通過改變發(fā)射功率調(diào)節(jié)兩個模塊通信的距離,一般情況下,發(fā)射功率每減少6db,通信距離會縮短1 倍。當(dāng)接收器啟動后接收不到數(shù)據(jù),會進(jìn)入聲光報警,蜂鳴器發(fā)聲提示保護(hù)對象已離開設(shè)定的范圍。無線接收流程如圖6所示。
圖6 無線接收流程圖
本系統(tǒng)硬件結(jié)構(gòu)比較簡單、操作方便、體積小、功耗低、便于攜帶和使用。還可通過增加按鍵和相應(yīng)的軟件來調(diào)整安全距離,進(jìn)一步完善系統(tǒng)性能。NRF24L01 支持多點通信,所以本設(shè)計可也適用于外出時貴重物品防丟失、老人或小孩防丟失等。
廊坊師范學(xué)院學(xué)報(自然科學(xué)版)2020年1期