王 龍,張思豪
豬體溫是豬的一個(gè)重要生理健康指標(biāo),生物學(xué)研究表明,豬的體溫在38 ℃~39.5 ℃之間為正常,豬仔正常體溫為38 ℃,如果豬生理機(jī)能發(fā)生擾亂時(shí)一般會(huì)伴有豬體溫反常的癥狀[1].因此,對(duì)養(yǎng)殖場(chǎng)所有生豬體溫進(jìn)行實(shí)時(shí)動(dòng)態(tài)的監(jiān)控,能夠?qū)崿F(xiàn)對(duì)生豬疫情的預(yù)警.而傳統(tǒng)人工豬體溫采集存在耗時(shí)長(zhǎng)、耗費(fèi)人力資源多等問(wèn)題.
基于此,本文采用NRF24LE1芯片和DS18B20測(cè)溫模塊,設(shè)計(jì)出一款無(wú)線溫度采集系統(tǒng).該系統(tǒng)可以分為兩個(gè)部分:第一部分是發(fā)送端,由無(wú)線模塊與溫度傳感器組成;第二部分是接收端,接收端與PC 機(jī)通信,將檢測(cè)到的溫度值上傳并顯示出來(lái).
整個(gè)系統(tǒng)以無(wú)線收發(fā)模塊NRF24LE1 為核心,實(shí)現(xiàn)多點(diǎn)溫度測(cè)量和多點(diǎn)發(fā)送,解決了傳統(tǒng)人工采集耗時(shí)長(zhǎng)、耗費(fèi)人力資源多等問(wèn)題.系統(tǒng)的設(shè)計(jì)突破了傳統(tǒng)的傳輸方式,通過(guò)遠(yuǎn)程檢測(cè)就可得到相應(yīng)溫度數(shù)據(jù).具有通用性強(qiáng)、封裝小、便于安裝、耗能低等特點(diǎn),市場(chǎng)推廣價(jià)值較高.
本系統(tǒng)以NRF24LE1 為核心,外接溫度檢測(cè)模塊,通過(guò)串口模塊與PC 機(jī)連接,實(shí)現(xiàn)溫度值的顯示.系統(tǒng)的總體框圖如圖1 所示.
圖1 系統(tǒng)總體框圖
系統(tǒng)采用模塊化的設(shè)計(jì)方法,主要由兩大部分構(gòu)成:一部分是由溫度傳感器和NRF24LE1模塊組成的溫度采集端,完成溫度的采集;另一部分是由NRF24LE1 芯片組成的接收端,使用串行口與PC 端進(jìn)行互通,完成數(shù)值的上傳與顯示.
(1)NRF24LE1 芯片.NRF24LE1 是一款成本低廉、內(nèi)部集成了高性能微處理器的芯片,工作頻段在2.4 Ghz~2.4853 Ghz 標(biāo)準(zhǔn)ISM 頻段內(nèi)[2].該芯片內(nèi)部還集合了Flash 暫存器、低功耗振蕩器、AES 硬件加密器等多個(gè)元件,內(nèi)部融合了增強(qiáng)型ShockBurst 技術(shù),并且提供了理想的無(wú)線協(xié)議,保證數(shù)據(jù)傳輸?shù)陌踩?NRF24LE1 芯片在0 dB 的功率狀態(tài)下發(fā)射數(shù)據(jù)時(shí),僅需要電流大小為11.1 mA 即可,接收狀態(tài)下所需的電流大小只需13.3 mA.這種低功耗的工作方式,對(duì)供電方式的設(shè)計(jì)要求簡(jiǎn)單,可延長(zhǎng)系統(tǒng)的待機(jī)時(shí)間.
NRF24LE1 的基本特性:
①內(nèi)置有高性能的微控制器并且還兼容8051 芯片的指令;
②16 KB 的片內(nèi)Flash 存儲(chǔ)代碼空間;
③AES 硬件加密解密加速器;
④I/O 口使用方便:提供多個(gè)I/O 口;
⑤多種低功耗電源模式設(shè)計(jì);
⑥NRF24LE1 有多種不同的封裝形式;
⑦支持硬件調(diào)試器.
(2)NRF24LE1 芯片引腳功能.NRF24LE1的引腳封裝圖如圖2 所示.
圖2 NRF24LE1 引腳封裝圖
引腳功能:
①VSS:芯片接地端;
②VDD:芯片電源正極接口;
③P0.0~P1.6:外設(shè)連接端口;
④PROG:程序下載使能端口;
⑤RESET:低電平實(shí)現(xiàn)復(fù)位;
⑥VDD_PA:RF 功放電源供電,輸出電壓為+1.8 V;
⑦ANT1、ANT2:發(fā)射、接收天線的引腳接口;
⑧XC1、XC2:連接一個(gè)晶體振蕩器;
⑨IREF:參考電流輸出.
(3)工作模式.NRF24LE1 的工作方式有很多,可以通過(guò)設(shè)置CONFIG 寄存器在多種模式間進(jìn)行轉(zhuǎn)變,能夠有效地降低功耗[3].NEF24LE1芯片能夠在四種不同的工作狀態(tài)下運(yùn)行,四種工作狀態(tài)分別為:掉電狀態(tài)、待機(jī)狀態(tài)、接收狀態(tài)和發(fā)射狀態(tài),其中待機(jī)狀態(tài)又包括待機(jī)狀態(tài)1、待機(jī)狀態(tài)2 兩種狀態(tài).其工作狀態(tài)由相關(guān)寄存器進(jìn)行設(shè)置,狀態(tài)設(shè)置如表1 所示.
掉電模式.在該模式中,NRF24LE1 芯片的收/發(fā)功能被禁止使用,目的是降低自身的功耗,減少對(duì)電源的使用.該模式下PRIM_RX、rfce、FIFO的狀態(tài)不需要設(shè)置,只需要將PWR_UP置為低電平即可.
待機(jī)模式.使芯片在功耗比較低的狀態(tài)下有短暫的響應(yīng)時(shí)間.
接收模式.是接收數(shù)據(jù)時(shí)的工作模式.作用是將從信道里接收到的數(shù)據(jù)包送入微處理器中進(jìn)行對(duì)比處理,如果地址與循環(huán)校驗(yàn)碼符合,則將接收到的數(shù)據(jù)保留.
發(fā)射模式.將采集到的數(shù)值與發(fā)送機(jī)地址和循環(huán)校驗(yàn)碼打包傳送給另一方.
(4)配置寄存器.芯片的運(yùn)行狀態(tài)及工作模式的選擇都需要進(jìn)行相關(guān)參數(shù)的配置,這些參數(shù)需要在配置寄存器中進(jìn)行設(shè)置,這些配置寄存器的設(shè)置是芯片工作關(guān)鍵所在.表2列出了NRF24LE1 基本的配置寄存器.
(5)NRF24LE1 原理圖.圖3 為NRF24LE1模塊電路原理圖.
(1)DS18B20 傳感器特性.DS18B20 測(cè)溫模塊能夠支持使用“一線總線”端口的數(shù)字測(cè)溫傳感器,是DALLAS 公司生產(chǎn)的單線傳感器[4].
DS18B20 管腳定義:
①DQ:控制DS18B20 的信號(hào)是輸入還是輸出;
②GND:接地;
表1 射頻收發(fā)工作模式
表2 常用配置寄存器
圖3 NRF24LE1 原理圖
③VDD:電源正極;
④NC:懸空.
(2)DS18B20 的硬件連接.DS18B20 的硬件連接較為簡(jiǎn)單,但是程序相對(duì)比較難寫(xiě).首先需要讀懂DS18B20 的讀寫(xiě)時(shí)序圖,才能更好地書(shū)寫(xiě)程序. 在本設(shè)計(jì)中DS18B20 的DQ 與NRF24LE1 芯片的P13 口連接,如圖4 所示.
圖4 DS18B20連接圖
發(fā)射端程序設(shè)計(jì).發(fā)射端需要采集數(shù)據(jù),所以先將DS18B20 初始化,從中提取出數(shù)值,數(shù)值分為高八位和低八位,然后把數(shù)值和地址、ID 號(hào)和循環(huán)校驗(yàn)碼一起打包,發(fā)射出去.整個(gè)發(fā)射端的工作步驟如圖5 所示.
圖5 發(fā)射端發(fā)射總體步驟
首先應(yīng)對(duì)接收端進(jìn)行初始化,將其設(shè)置為接收模式,然后判斷狀態(tài)寄存器是否有中斷標(biāo)志.如果有接收中斷標(biāo)志,表示已經(jīng)接收到數(shù)據(jù),從暫存器中讀出數(shù)據(jù)并對(duì)數(shù)據(jù)進(jìn)行校驗(yàn).數(shù)據(jù)正確則將其中的溫度值提取出來(lái),轉(zhuǎn)化成十進(jìn)制,在PC 機(jī)上打印.整個(gè)運(yùn)行流程如圖6 所示.
圖6 接收端接收總體步驟
接收端工作時(shí),需要把NRF24LE1 芯片初始化,然后設(shè)置無(wú)線參數(shù).首先設(shè)置CE 和RFCKEN 時(shí)鐘使能端,關(guān)閉芯片中所有的數(shù)據(jù)通道,再開(kāi)啟接收數(shù)據(jù)通道0,只在通道0 中實(shí)現(xiàn)接收,之后還需要設(shè)置通道0 的自動(dòng)應(yīng)答.在CONFIG 寄 存 器 中,PRIM_RX 是RX/TX 模 式選擇位,PRIM_RX 設(shè)置為高電平,芯片就為RX 模式[5].再在RF_CH 中設(shè)置射頻頻道,只有接收端和發(fā)射端的射頻頻道處于同一信道內(nèi)才能互相通信.之后設(shè)置無(wú)線傳輸?shù)目罩袀鬏斔俾屎凸ぷ鲿r(shí)的輸出功率,這兩個(gè)參數(shù)的設(shè)置都在同一寄存器RF_SETUP 中設(shè)置,RF_DR_HIGH 掌管著空中無(wú)線速率的選擇,有1 Mbps、2 Mbps 和250 kbps 三種選擇,本設(shè)計(jì)選用的是250 kbps.RF_PWR 掌管著輸出功率的選擇,有0 dBm、-6 dBm、-12 dBm、-18 dBm四種選擇,本設(shè)計(jì)選用0 dBm 的輸出功率.然后在CONFIG 寄存器中設(shè)置CRC 校驗(yàn),設(shè)置接受的數(shù)據(jù)長(zhǎng)度,這兩個(gè)都是用來(lái)判斷接收到的數(shù)據(jù)格式是否正確.最后PWR_UP 設(shè)置為高電平,芯片才能正式作為接收端使用.接收端接收到數(shù)據(jù)后,檢測(cè)數(shù)據(jù)包中的第一個(gè)數(shù)據(jù)、有效地址和循環(huán)校驗(yàn)碼,當(dāng)條件判斷成立,才會(huì)把收到的數(shù)值保存.接收完成后接收端會(huì)自動(dòng)生成一個(gè)應(yīng)答信號(hào),這個(gè)信號(hào)的作用是用來(lái)答復(fù)發(fā)射端,表示數(shù)據(jù)已經(jīng)接收到位.接收端的工作運(yùn)行步驟如圖7 所示.
圖7 無(wú)線接收流程圖
發(fā)射端首先要配置初始化寄存器.配置方法與接收端的無(wú)線配置流程一樣,其中的數(shù)據(jù)通道、RF 信道、發(fā)射機(jī)地址、傳輸功率、空中無(wú)線速率,以及CRC 校驗(yàn)都需要設(shè)置為同樣的參數(shù),只需要將CONFIN 寄存器中的PRIM_RX 設(shè)置為低電平,讓其在TX 狀態(tài)下工作. 需要注意的是這些指令數(shù)據(jù)都需要在CSN 為低電平時(shí)才能夠連續(xù)寫(xiě)入,否則無(wú)法寫(xiě)入指令和數(shù)據(jù),在執(zhí)行完后將CSN 的電平設(shè)置為高.發(fā)射完數(shù)據(jù)后,發(fā)射端會(huì)等待一個(gè)信號(hào)的傳回,這個(gè)信號(hào)是由接收端發(fā)出的,只有接收到這個(gè)信號(hào),發(fā)射端才會(huì)確保數(shù)據(jù)沒(méi)有丟失,不會(huì)進(jìn)行重發(fā)操作,否則會(huì)自動(dòng)進(jìn)行數(shù)據(jù)重發(fā).最后整個(gè)發(fā)射完成后,就會(huì)進(jìn)入寄存器低功耗狀態(tài),等待下一個(gè)發(fā)射命令的出現(xiàn).以上發(fā)射端的工作步驟如圖8 所示.
圖8 無(wú)線發(fā)射流程圖
使用本系統(tǒng)與標(biāo)準(zhǔn)溫度計(jì)同時(shí)測(cè)量豬的溫度,對(duì)比兩個(gè)溫度值,觀察誤差.溫度測(cè)量值對(duì)比如表3 所示.
表3 溫度測(cè)量對(duì)比
通過(guò)表3 可以看出,溫度計(jì)讀出來(lái)的溫度值與系統(tǒng)讀取出來(lái)的溫度值基本相近,誤差非常小,達(dá)到了設(shè)計(jì)的要求.另外對(duì)收發(fā)距離進(jìn)行測(cè)試,在30 m 以外進(jìn)行數(shù)據(jù)傳輸、發(fā)射和接收的情況都非常好,能夠正常地在電腦上顯示數(shù)據(jù).圖9 為接收端將接收到的溫度值在PC 機(jī)上打印出來(lái)的多點(diǎn)溫度測(cè)量結(jié)果圖.
圖9 PC機(jī)顯示
本設(shè)計(jì)利用無(wú)線采集收發(fā)技術(shù),對(duì)養(yǎng)殖場(chǎng)所有生豬的體溫進(jìn)行實(shí)時(shí)動(dòng)態(tài)監(jiān)控,相比于人工檢測(cè),該系統(tǒng)測(cè)量體溫準(zhǔn)確度高、省時(shí)、省力、方便、科學(xué).系統(tǒng)可以實(shí)時(shí)采集溫度數(shù)據(jù),降低了生產(chǎn)成本和勞動(dòng)強(qiáng)度,提高了養(yǎng)殖效率,有助于養(yǎng)殖技術(shù)自動(dòng)化的實(shí)現(xiàn).
通化師范學(xué)院學(xué)報(bào)2020年12期