楊家桂,聶德品,陳勁松,武 岳
(1.安徽財經大學,安徽 蚌埠 233030;2.中鹽昆山有限公司,江蘇 昆山 215321)
如果物品與其主人或無自理能力的老人、小孩與看護人的距離超過一定值時,能及時提醒物品主人或看護人,會減少很多麻煩。本設計應用PIC16F616 單片機控制無線數字傳輸芯片nRF24L01,以無線方式在客戶和被保護對象之間進行數據雙向傳輸,保證被保護對象在控制范圍內,實現防護功能。
本系統主要是由發射和接收兩大模塊組成,系統基本構成如圖1 所示。采用鋰離子電池供電,利用單片機來控制無線模塊之間的通信。系統啟動后,單片機向發射器里寫入地址和數據,發射器開始工作并不斷發出無線信號;當接收器接收到信號,LED 燈亮,同時通知單片機讀取數據。當接收器和發射器間的距離大于設定值時,接收器無法收到信號,將會進行聲光報警,提示客戶其被保護對象已離開設定的距離。

圖1 系統組成框圖
發射系統主要由處理器、nRF24L01無線通信模塊、人機接口等部分組成,如圖2所示。處理器采用國外某公司研發的14 腳的8 位CMOS 單片機PIC16F616,其中11 個I/O 引腳是多功能,使用時根據需要進行配置,工作電壓范圍為2.0V~5.5V,功耗低,片內含有2048個字的可反復擦寫的程序存儲器和128 字節的SRAM[1]。設計時采用4MHz 的石英晶體和2 個22PF 電容組成外部振蕩器;在電源和地附近也需連接不同的電容進行去耦和濾波,使得系統具有更好的穩定性和時序精度。

圖2 發射模塊原理圖
nRF24L01 是無線單片收發一體芯片,工作頻段為2.4GHz~2.5GHz,世界通用。內部集成了頻率發生器、功率放大器、晶體振蕩器、增強型Shock?BurstTM模式控制器等,支持一對多通信,輸出功率、頻道、發送或接收模式可以通過程序進行設置[2]。有多種低功率工作模式,能實現自動應答、自動重發、地址碼檢測、循環冗余校驗碼檢測等功能。無線速率可達到2Mbps,SPI接口速率可達8Mbps,工作電壓1.9~3.6V,體積小、功耗低,而且所需外圍元件較少,應用方便[3]。
人機接口包括按鍵和LED 燈。按鍵具有多功能,第一次按下,啟動發射模塊,第二次按下即為關閉發射,系統停止工作。LED 燈亮表示系統工作正常,工作過程中LED等滅表示接收端沒接收到數據。

圖3 接收模塊原理圖
接收模塊如圖3所示,主要包含處理器、聲光報警、nRF24L01 無線通信電路等。一旦系統開始工作,根據配置此模塊中nRF2401 就處于接收狀態,接收發射端送過來的數據,當系統正常工作時LED燈亮;若系統工作不正常或接收不到發送端發送的信號,則LED 燈滅;若被保護對象遠離設定的距離,則LED燈滅同時蜂鳴器發出報警信號。
本設計采用單片機PIC16F616I/O 口模擬SPI的工作時序,與nRF24L01 進行數據通信和通信控制[4-5]。系統總體工作流程如圖4 所示。系統運行之前在配置模式下對發送端和接收端的nRF24L01 進行相互匹配的初始化配置,接著就可以進行正常的數據通信。數據包為固定的格式:前綴、地址、有效數據和校驗位(CRC),發送時單片機只向nRF24L01 傳送地址和數據, 前綴和CRC 會在nRF24L01 芯片內部自動加進去;接收時,接收端檢測到本機地址的數據包,檢驗正確后會自動移去前綴、地址和CRC,將有效數據傳送給單片機[6-7]。

圖4 系統工作流程圖
nRF24L01 收發模式分直接收發、ShockBurstTM收發和Enhanced ShockBurstTM收發三種模式。本設計采用最后一種收發模式,因為Enhanced Shock?BurstTM模式可以與低速MCU 配合工作[3],并要求接收方在收到數據后進行應答,數據丟失后會自動重發,發送或接收完畢產生中斷信號通知MCU。此模式下發送時數據從微控制器送入到nRF24L01 片內的堆棧區,數據打包后即高速(1Mbit/s)發射,與射頻協議相關的所有高速信號處理都在nRF24L01 片內進行,這樣不僅節能、降低成本,而且數據在空中停留時間短、增強抗干擾性[6]。
nRF24L01 發射模塊開始工作時,先初始化,中斷復位,SPI時鐘禁止,讓CE=0,CSN=0(CSN是芯片使能端);再進行芯片參數的配置:選擇發射頻道,發射功率,數據傳輸速率以及低噪聲放大器增益、接收端地址等,然后拉高CE 時間持續100μs,啟動發射模塊。MCU 將接收節點的地址和有效數據寫入nRF24L01 中的TX_FIFO。當SCK 出現一個下降沿,nRF24L01 會 從MOSI 讀 入1 位 數 據,同 時 從MISO 輸出1 位數據。數據發送結束,會自動進入接收模式,可配置通道0 接收應答信號。若在一定時間內收到應答,IRQ置低,產生中斷,同時TX_DS=0,通知MCU數據已發送完,此時清除TXFIFO中數據,進行下一個數據的發送。如果超過等待則會自動重發。直到收到應答或者達到最大重發次數(由SETUP_RETP_ARC 寄存器設置)。如果重發次數超過了這個最大值,會出現MAX_RT 中斷,此時不會清除TXFIFO 中數據。MAX_RT 中斷被清除,才會重發數據包。如果達到自動重發的次數,可以選擇重新發送這個數據或者發送下一個數據。無線發送流程如圖5所示。

圖5 無線發送流程圖
接收器配置的過程與發射類似,初始化,配置相關參數。為了與發射區別,CE 需置高。進入接收模式后,若接收到有效的數據和地址,會產生中斷同時RX_DR=0,接收完畢后會進入發送模式,向發送端發送應答信號。本設計通過改變發射功率調節兩個模塊通信的距離,一般情況下,發射功率每減少6db,通信距離會縮短1 倍。當接收器啟動后接收不到數據,會進入聲光報警,蜂鳴器發聲提示保護對象已離開設定的范圍。無線接收流程如圖6所示。

圖6 無線接收流程圖
本系統硬件結構比較簡單、操作方便、體積小、功耗低、便于攜帶和使用。還可通過增加按鍵和相應的軟件來調整安全距離,進一步完善系統性能。NRF24L01 支持多點通信,所以本設計可也適用于外出時貴重物品防丟失、老人或小孩防丟失等。