王 龍,張思豪
豬體溫是豬的一個重要生理健康指標,生物學研究表明,豬的體溫在38 ℃~39.5 ℃之間為正常,豬仔正常體溫為38 ℃,如果豬生理機能發生擾亂時一般會伴有豬體溫反常的癥狀[1].因此,對養殖場所有生豬體溫進行實時動態的監控,能夠實現對生豬疫情的預警.而傳統人工豬體溫采集存在耗時長、耗費人力資源多等問題.
基于此,本文采用NRF24LE1芯片和DS18B20測溫模塊,設計出一款無線溫度采集系統.該系統可以分為兩個部分:第一部分是發送端,由無線模塊與溫度傳感器組成;第二部分是接收端,接收端與PC 機通信,將檢測到的溫度值上傳并顯示出來.
整個系統以無線收發模塊NRF24LE1 為核心,實現多點溫度測量和多點發送,解決了傳統人工采集耗時長、耗費人力資源多等問題.系統的設計突破了傳統的傳輸方式,通過遠程檢測就可得到相應溫度數據.具有通用性強、封裝小、便于安裝、耗能低等特點,市場推廣價值較高.
本系統以NRF24LE1 為核心,外接溫度檢測模塊,通過串口模塊與PC 機連接,實現溫度值的顯示.系統的總體框圖如圖1 所示.

圖1 系統總體框圖
系統采用模塊化的設計方法,主要由兩大部分構成:一部分是由溫度傳感器和NRF24LE1模塊組成的溫度采集端,完成溫度的采集;另一部分是由NRF24LE1 芯片組成的接收端,使用串行口與PC 端進行互通,完成數值的上傳與顯示.
(1)NRF24LE1 芯片.NRF24LE1 是一款成本低廉、內部集成了高性能微處理器的芯片,工作頻段在2.4 Ghz~2.4853 Ghz 標準ISM 頻段內[2].該芯片內部還集合了Flash 暫存器、低功耗振蕩器、AES 硬件加密器等多個元件,內部融合了增強型ShockBurst 技術,并且提供了理想的無線協議,保證數據傳輸的安全性.NRF24LE1 芯片在0 dB 的功率狀態下發射數據時,僅需要電流大小為11.1 mA 即可,接收狀態下所需的電流大小只需13.3 mA.這種低功耗的工作方式,對供電方式的設計要求簡單,可延長系統的待機時間.
NRF24LE1 的基本特性:
①內置有高性能的微控制器并且還兼容8051 芯片的指令;
②16 KB 的片內Flash 存儲代碼空間;
③AES 硬件加密解密加速器;
④I/O 口使用方便:提供多個I/O 口;
⑤多種低功耗電源模式設計;
⑥NRF24LE1 有多種不同的封裝形式;
⑦支持硬件調試器.
(2)NRF24LE1 芯片引腳功能.NRF24LE1的引腳封裝圖如圖2 所示.

圖2 NRF24LE1 引腳封裝圖
引腳功能:
①VSS:芯片接地端;
②VDD:芯片電源正極接口;
③P0.0~P1.6:外設連接端口;
④PROG:程序下載使能端口;
⑤RESET:低電平實現復位;
⑥VDD_PA:RF 功放電源供電,輸出電壓為+1.8 V;
⑦ANT1、ANT2:發射、接收天線的引腳接口;
⑧XC1、XC2:連接一個晶體振蕩器;
⑨IREF:參考電流輸出.
(3)工作模式.NRF24LE1 的工作方式有很多,可以通過設置CONFIG 寄存器在多種模式間進行轉變,能夠有效地降低功耗[3].NEF24LE1芯片能夠在四種不同的工作狀態下運行,四種工作狀態分別為:掉電狀態、待機狀態、接收狀態和發射狀態,其中待機狀態又包括待機狀態1、待機狀態2 兩種狀態.其工作狀態由相關寄存器進行設置,狀態設置如表1 所示.
掉電模式.在該模式中,NRF24LE1 芯片的收/發功能被禁止使用,目的是降低自身的功耗,減少對電源的使用.該模式下PRIM_RX、rfce、FIFO的狀態不需要設置,只需要將PWR_UP置為低電平即可.
待機模式.使芯片在功耗比較低的狀態下有短暫的響應時間.
接收模式.是接收數據時的工作模式.作用是將從信道里接收到的數據包送入微處理器中進行對比處理,如果地址與循環校驗碼符合,則將接收到的數據保留.
發射模式.將采集到的數值與發送機地址和循環校驗碼打包傳送給另一方.
(4)配置寄存器.芯片的運行狀態及工作模式的選擇都需要進行相關參數的配置,這些參數需要在配置寄存器中進行設置,這些配置寄存器的設置是芯片工作關鍵所在.表2列出了NRF24LE1 基本的配置寄存器.
(5)NRF24LE1 原理圖.圖3 為NRF24LE1模塊電路原理圖.
(1)DS18B20 傳感器特性.DS18B20 測溫模塊能夠支持使用“一線總線”端口的數字測溫傳感器,是DALLAS 公司生產的單線傳感器[4].
DS18B20 管腳定義:
①DQ:控制DS18B20 的信號是輸入還是輸出;
②GND:接地;

表1 射頻收發工作模式

表2 常用配置寄存器

圖3 NRF24LE1 原理圖
③VDD:電源正極;
④NC:懸空.
(2)DS18B20 的硬件連接.DS18B20 的硬件連接較為簡單,但是程序相對比較難寫.首先需要讀懂DS18B20 的讀寫時序圖,才能更好地書寫程序. 在本設計中DS18B20 的DQ 與NRF24LE1 芯片的P13 口連接,如圖4 所示.

圖4 DS18B20連接圖
發射端程序設計.發射端需要采集數據,所以先將DS18B20 初始化,從中提取出數值,數值分為高八位和低八位,然后把數值和地址、ID 號和循環校驗碼一起打包,發射出去.整個發射端的工作步驟如圖5 所示.

圖5 發射端發射總體步驟
首先應對接收端進行初始化,將其設置為接收模式,然后判斷狀態寄存器是否有中斷標志.如果有接收中斷標志,表示已經接收到數據,從暫存器中讀出數據并對數據進行校驗.數據正確則將其中的溫度值提取出來,轉化成十進制,在PC 機上打印.整個運行流程如圖6 所示.

圖6 接收端接收總體步驟
接收端工作時,需要把NRF24LE1 芯片初始化,然后設置無線參數.首先設置CE 和RFCKEN 時鐘使能端,關閉芯片中所有的數據通道,再開啟接收數據通道0,只在通道0 中實現接收,之后還需要設置通道0 的自動應答.在CONFIG 寄 存 器 中,PRIM_RX 是RX/TX 模 式選擇位,PRIM_RX 設置為高電平,芯片就為RX 模式[5].再在RF_CH 中設置射頻頻道,只有接收端和發射端的射頻頻道處于同一信道內才能互相通信.之后設置無線傳輸的空中傳輸速率和工作時的輸出功率,這兩個參數的設置都在同一寄存器RF_SETUP 中設置,RF_DR_HIGH 掌管著空中無線速率的選擇,有1 Mbps、2 Mbps 和250 kbps 三種選擇,本設計選用的是250 kbps.RF_PWR 掌管著輸出功率的選擇,有0 dBm、-6 dBm、-12 dBm、-18 dBm四種選擇,本設計選用0 dBm 的輸出功率.然后在CONFIG 寄存器中設置CRC 校驗,設置接受的數據長度,這兩個都是用來判斷接收到的數據格式是否正確.最后PWR_UP 設置為高電平,芯片才能正式作為接收端使用.接收端接收到數據后,檢測數據包中的第一個數據、有效地址和循環校驗碼,當條件判斷成立,才會把收到的數值保存.接收完成后接收端會自動生成一個應答信號,這個信號的作用是用來答復發射端,表示數據已經接收到位.接收端的工作運行步驟如圖7 所示.

圖7 無線接收流程圖
發射端首先要配置初始化寄存器.配置方法與接收端的無線配置流程一樣,其中的數據通道、RF 信道、發射機地址、傳輸功率、空中無線速率,以及CRC 校驗都需要設置為同樣的參數,只需要將CONFIN 寄存器中的PRIM_RX 設置為低電平,讓其在TX 狀態下工作. 需要注意的是這些指令數據都需要在CSN 為低電平時才能夠連續寫入,否則無法寫入指令和數據,在執行完后將CSN 的電平設置為高.發射完數據后,發射端會等待一個信號的傳回,這個信號是由接收端發出的,只有接收到這個信號,發射端才會確保數據沒有丟失,不會進行重發操作,否則會自動進行數據重發.最后整個發射完成后,就會進入寄存器低功耗狀態,等待下一個發射命令的出現.以上發射端的工作步驟如圖8 所示.

圖8 無線發射流程圖
使用本系統與標準溫度計同時測量豬的溫度,對比兩個溫度值,觀察誤差.溫度測量值對比如表3 所示.

表3 溫度測量對比
通過表3 可以看出,溫度計讀出來的溫度值與系統讀取出來的溫度值基本相近,誤差非常小,達到了設計的要求.另外對收發距離進行測試,在30 m 以外進行數據傳輸、發射和接收的情況都非常好,能夠正常地在電腦上顯示數據.圖9 為接收端將接收到的溫度值在PC 機上打印出來的多點溫度測量結果圖.

圖9 PC機顯示
本設計利用無線采集收發技術,對養殖場所有生豬的體溫進行實時動態監控,相比于人工檢測,該系統測量體溫準確度高、省時、省力、方便、科學.系統可以實時采集溫度數據,降低了生產成本和勞動強度,提高了養殖效率,有助于養殖技術自動化的實現.