劉忠超, 范偉強(qiáng), 董亞朋, 何東健
(1.南陽(yáng)理工學(xué)院電子與電氣工程學(xué)院,河南南陽(yáng) 473004; 2.西北農(nóng)林科技大學(xué)機(jī)械與電子工程學(xué)院,陜西楊凌 712100;3.中國(guó)礦業(yè)大學(xué)(北京)機(jī)電與信息工程學(xué)院,北京 100083)
奶牛作為人類食物供應(yīng)鏈的重要來(lái)源之一,養(yǎng)殖成本高,技術(shù)復(fù)雜。“十五”以來(lái),我國(guó)奶牛養(yǎng)殖業(yè)發(fā)展迅速,奶牛養(yǎng)殖規(guī)模化進(jìn)程日益加速,安全、高產(chǎn)、高效成為奶牛養(yǎng)殖的目標(biāo),這必然對(duì)牧場(chǎng)科學(xué)生產(chǎn)和高效管理等方面提出更高要求。在逐步向現(xiàn)代精準(zhǔn)養(yǎng)殖生產(chǎn)方式轉(zhuǎn)變過(guò)程中,奶牛的發(fā)情狀況倍受關(guān)注,發(fā)情監(jiān)測(cè)在牛群繁殖管理中具有重要地位,及時(shí)發(fā)現(xiàn)奶牛發(fā)情有利于奶牛的及時(shí)受孕、產(chǎn)犢并提高泌乳期[1]。
奶牛發(fā)情狀態(tài)通常會(huì)由各項(xiàng)生理參數(shù)反映,其中最具有代表性的生理體征參數(shù)是體溫和運(yùn)動(dòng)量。在我國(guó)大部分奶牛場(chǎng),奶牛發(fā)情是靠奶牛飼養(yǎng)管理員觀察發(fā)現(xiàn),再依靠經(jīng)驗(yàn)進(jìn)行判斷。單靠管理人員觀察及時(shí)發(fā)現(xiàn)奶牛發(fā)情非常困難,這種判斷方法僅適用于小規(guī)模的奶牛養(yǎng)殖,不適合較大規(guī)模、集約化的奶牛場(chǎng)[2]。因此把信息技術(shù)引入奶牛養(yǎng)殖,用電子傳感器監(jiān)測(cè)奶牛的發(fā)情體征,采集、記錄現(xiàn)場(chǎng)奶牛個(gè)體的發(fā)情體征(體溫、活動(dòng)量),準(zhǔn)確判斷奶牛發(fā)情時(shí)間,充分發(fā)揮良種奶牛的繁殖潛力,已經(jīng)成為提升我國(guó)奶業(yè)綜合生產(chǎn)能力、提高牛奶質(zhì)量安全水平的重要手段[3]。本研究基于ZigBee技術(shù)、無(wú)線傳感器網(wǎng)絡(luò)(WSN)和嵌入式技術(shù),構(gòu)建基于物聯(lián)網(wǎng)和云端的低成本奶牛發(fā)情體征監(jiān)測(cè)系統(tǒng),旨在為幫助養(yǎng)殖人員及時(shí)掌握奶牛的發(fā)情和健康狀況提供依據(jù)。
奶牛發(fā)情監(jiān)測(cè)系統(tǒng)結(jié)構(gòu)如圖1所示。該系統(tǒng)主要由發(fā)情體征采集部分、STM32主控中心、數(shù)據(jù)傳輸部分、上位機(jī)PC監(jiān)測(cè)系統(tǒng)和云服務(wù)器平臺(tái)構(gòu)成。發(fā)情體征采集部分主要由ZigBee無(wú)線傳感器網(wǎng)絡(luò)構(gòu)成,該無(wú)線傳感器網(wǎng)絡(luò)由帶ZigBee路由器的終端節(jié)點(diǎn)和協(xié)調(diào)器節(jié)點(diǎn)組成[4]。其中終端節(jié)點(diǎn)由非接觸式溫度傳感器、三軸加速度計(jì)和ZigBee無(wú)線模塊組成,主要實(shí)現(xiàn)奶牛發(fā)情體征數(shù)據(jù)的采集,采集好的數(shù)據(jù)通過(guò)無(wú)線網(wǎng)絡(luò)傳送給協(xié)調(diào)器節(jié)點(diǎn),協(xié)調(diào)器節(jié)點(diǎn)再將收到的多頭奶牛發(fā)送來(lái)的數(shù)據(jù)整理后傳送至STM32主控中心。主控中心主要實(shí)現(xiàn)對(duì)協(xié)調(diào)器傳送來(lái)的數(shù)據(jù)進(jìn)行初步處理封裝,最終通過(guò)RS-485總線傳輸?shù)缴衔粰C(jī)PC監(jiān)測(cè)系統(tǒng)。同時(shí)在上位機(jī)PC監(jiān)測(cè)系統(tǒng)將發(fā)情體征數(shù)據(jù)傳輸至云服務(wù)器平臺(tái),可以通過(guò)網(wǎng)絡(luò)隨時(shí)隨地實(shí)時(shí)監(jiān)測(cè)奶牛發(fā)情體征參數(shù)。
奶牛發(fā)情體征采集節(jié)點(diǎn)硬件主要由奶牛體溫采集、奶牛運(yùn)動(dòng)量采集、2.4 G無(wú)線發(fā)送和采集節(jié)點(diǎn)供電4個(gè)部分組成,其硬件結(jié)構(gòu)如圖2所示。
2.1.1 無(wú)線模塊 ZigBee是基于IEEE 802.15.4通信協(xié)議的局域無(wú)線網(wǎng)絡(luò)通信技術(shù),功耗和成本較低,數(shù)據(jù)傳輸速率為0~250 kB/s。CC2530F256芯片是TI公司基于2.4 G無(wú)線局域網(wǎng)絡(luò)收發(fā)的ZigBee產(chǎn)品。CC2530F256芯片完全兼容IEEE 802.15.4無(wú)線通信協(xié)議,內(nèi)置IR發(fā)生電路,有超低功耗的特點(diǎn),內(nèi)置增強(qiáng)型MCS-8051內(nèi)核[5]。選用CC2530F256作為ZigBee網(wǎng)絡(luò)節(jié)點(diǎn)的核心處理器,可以提高系統(tǒng)的可靠性并降低節(jié)點(diǎn)功耗。
2.1.2 體溫采集模塊 非接觸式測(cè)溫通過(guò)監(jiān)測(cè)物體表面發(fā)射的能量測(cè)定物體溫度。與奶牛傳統(tǒng)直腸測(cè)溫相比,紅外非接觸式測(cè)溫技術(shù)具有速度快、測(cè)溫范圍寬、不受時(shí)間限制等優(yōu)勢(shì)[6-7]。采用MLX90614ESF非接觸式溫度傳感器來(lái)采集奶牛體溫,不需要直接接觸奶牛,通過(guò)該溫度傳感器可以得到與奶牛體溫正相關(guān)的電壓信號(hào),經(jīng)過(guò)量程轉(zhuǎn)換,得到實(shí)際溫度值。對(duì)外兼容兩線制SMBus數(shù)字接口和客戶自行定制的10位PWM數(shù)據(jù)連續(xù)讀取接口。因?yàn)镃C2530不支持硬件SMBus總線,所以采用CC2530的P1_0和P1_2普通I/O口通過(guò)軟件模擬SMBus總線協(xié)議,實(shí)現(xiàn)ZigBee讀取溫度傳感器采集的溫度值。溫度傳感器與ZigBee接線如圖3所示。
2.1.3 運(yùn)動(dòng)量采集模塊 ADXL345三軸加速度計(jì)傳感器內(nèi)置測(cè)量范圍高達(dá)±16g的高精度運(yùn)動(dòng)傳感器、數(shù)字濾波器、分辨率高達(dá)13 bit的ADC模塊、32位FIFO等片上資源。ADXL345三軸加速度計(jì)采用SPI總線或者I2C總線接口與外界設(shè)備通信,以16位二進(jìn)制補(bǔ)碼的格式輸出數(shù)據(jù)[8]。在DATA_FORMAT寄存器(地址0x31)中配置選用I2C總線或SPI總線。ADXL345三軸加速度計(jì)采用I2C總線與CC2530芯片通信,ADXL345三軸加速度計(jì)的CS引腳拉高至供電電壓,ADXL345處于I2C通信模式,使用采集節(jié)點(diǎn)CC2530的 P0_0、P0_2模擬I2C總線讀取加速度數(shù)據(jù)。加速度計(jì)與ZigBee接線如圖4所示。
2.1.4 采集節(jié)點(diǎn)電源 采集節(jié)點(diǎn)模塊安裝在奶牛身上來(lái)獲取奶牛的體溫和運(yùn)動(dòng)量,選用容量大、體積小、安全性好、輸出電壓穩(wěn)定的3.7 V/300 mAh鋰電池對(duì)采集節(jié)點(diǎn)供電。同時(shí)因?yàn)閆igBee、MLX90614ESF紅外溫度傳感器和ADXL345三軸加速度計(jì)等高速數(shù)字器件,需要穩(wěn)定的3.3 V直流電源供電,所以采用壓差低、線性度好、輸出電流大的MIC5219-3.3線性穩(wěn)壓芯片。將電池輸出電壓穩(wěn)定到3.3 V為采集節(jié)點(diǎn)供電,如圖5所示。
奶牛發(fā)情體征數(shù)據(jù)的接收終端由協(xié)調(diào)器和STM32單片機(jī)組成,通過(guò)協(xié)調(diào)器控制每個(gè)采集節(jié)點(diǎn)啟動(dòng)和數(shù)據(jù)發(fā)送。協(xié)調(diào)器還作為數(shù)據(jù)的接收端,接收各節(jié)點(diǎn)的無(wú)線信號(hào),通過(guò)識(shí)別設(shè)備地址分辨每頭牛的信息。最后協(xié)調(diào)器通過(guò)串口把數(shù)據(jù)傳輸?shù)絊TM32單片機(jī)中,單片機(jī)接收到的數(shù)據(jù)分別是奶牛體溫、運(yùn)動(dòng)量,對(duì)數(shù)據(jù)進(jìn)行初步處理,并通過(guò)RS-485總線將奶牛發(fā)情體征參數(shù)上傳至上位機(jī)。接收終端主要由發(fā)情體征數(shù)據(jù)協(xié)調(diào)器無(wú)線接收、STM32數(shù)據(jù)處理、RS-485傳輸總線以及終端電源這4個(gè)部分組成。
2.2.1 STM32控制器 STM32是由ST公司研制的基于ARM的Contex-M3內(nèi)核的32 bit微控制器,采用主流的馮·諾依曼硬件結(jié)構(gòu),有豐富的片上資源[9]。采用STM32F1系列單片機(jī)中的STM32F103RCT6型號(hào)作為協(xié)調(diào)器接收數(shù)據(jù)的控制處理核心。
2.2.2 RS-485現(xiàn)場(chǎng)總線 奶牛養(yǎng)殖區(qū)距離監(jiān)測(cè)室較遠(yuǎn),采用TTL電平或RS-232通信,極易造成數(shù)據(jù)丟失、通信失敗、鏈接中斷等問(wèn)題,所以采用MAX3485芯片將STM32單片機(jī)UART1發(fā)送的TTL信號(hào)數(shù)據(jù)轉(zhuǎn)為負(fù)邏輯電平的485信號(hào)數(shù)據(jù),可以實(shí)現(xiàn)1 200 m的遠(yuǎn)距離數(shù)據(jù)傳送[10]。RS-485電平轉(zhuǎn)換電路如圖6所示。
2.2.3 數(shù)據(jù)接收終端電源 由于多個(gè)采集節(jié)點(diǎn)向協(xié)調(diào)器發(fā)送數(shù)據(jù)的時(shí)間是隨機(jī)的,使協(xié)調(diào)器需要時(shí)刻保持等待接收數(shù)據(jù)的狀態(tài)。另外,協(xié)調(diào)器是固定在奶牛養(yǎng)殖棚頂?shù)姆且苿?dòng)式設(shè)備,所以協(xié)調(diào)器可以選用市電供電。采用輸出DC5V/1 A的開(kāi)關(guān)電源作為主電源。同時(shí)因?yàn)镾TM32、ZigBee、MAX485芯片需要穩(wěn)定的3.3 V直流電源,所以采用MIC5219-3.3低壓差線性穩(wěn)壓芯片將開(kāi)關(guān)電源輸出的帶有開(kāi)關(guān)頻率的5 V不穩(wěn)定電壓,轉(zhuǎn)換為3.3 V穩(wěn)定線性電壓為協(xié)調(diào)器供電。
下位機(jī)采集系統(tǒng)軟件主要由發(fā)情體征采集節(jié)點(diǎn)程序和協(xié)調(diào)器程序組成。采集節(jié)點(diǎn)用CC2530控制MLX9014ESF非接觸式紅外溫度傳感器和ADXL345三軸加速度計(jì)。通過(guò)初始化傳感器配置傳感器的基本模式,進(jìn)行操作系統(tǒng)初始化和任務(wù)登記,測(cè)量溫度為任務(wù)1,測(cè)量運(yùn)動(dòng)量為任務(wù)2,無(wú)線發(fā)送溫度值、計(jì)步數(shù)據(jù)和奶牛編號(hào)為任務(wù)3,然后進(jìn)行任務(wù)輪詢,當(dāng)有任務(wù)觸發(fā)任務(wù)中斷時(shí),處理任務(wù),同時(shí)無(wú)線發(fā)送任務(wù)為最優(yōu)先級(jí)任務(wù),計(jì)步任務(wù)優(yōu)先級(jí)次之,溫度采集任務(wù)優(yōu)先級(jí)最低[11-12]。體征采集節(jié)點(diǎn)程序流程如圖7所示。
協(xié)調(diào)器模塊采用CC2530接收奶牛體溫和運(yùn)動(dòng)量數(shù)據(jù),通過(guò)CC2530初始化任務(wù)并做任務(wù)登記,然后輪詢?nèi)蝿?wù),有任務(wù)觸發(fā)中斷時(shí),判斷發(fā)送方式為點(diǎn)播、組播或廣播方式發(fā)送,接收數(shù)據(jù)。通過(guò)串口發(fā)送給STM32單片機(jī)初步濾波處理,STM32單片機(jī)初始化串口UART0、UART1,等待UART0接收中斷,當(dāng)有中斷觸發(fā)時(shí),接收并進(jìn)行校驗(yàn)數(shù)據(jù),校驗(yàn)通過(guò)保存數(shù)據(jù),再通過(guò)五點(diǎn)滑動(dòng)濾波算法對(duì)數(shù)據(jù)初步濾波,通過(guò)UART1和外接的RS-485現(xiàn)場(chǎng)總線發(fā)送給上位PC機(jī)。
上位機(jī)采用的方案是用C#語(yǔ)言在Visual Studio 2013軟件的編程環(huán)境中開(kāi)發(fā)奶牛發(fā)情監(jiān)測(cè)系統(tǒng)。上位機(jī)通過(guò)RS-485 轉(zhuǎn)USB接口與采集終端的STM32F103單片機(jī)連接并進(jìn)行通信。把奶牛體溫和運(yùn)動(dòng)量數(shù)據(jù)顯示到實(shí)時(shí)曲線上的同時(shí),還要把采集到的數(shù)據(jù)保存到文本文檔,以便查看數(shù)據(jù)的歷史記錄。系統(tǒng)不僅可以在上位機(jī)上監(jiān)測(cè)發(fā)情體征數(shù)據(jù),還可以通過(guò)HTTP協(xié)議中的POST方法把數(shù)據(jù)上傳到Y(jié)eelink云服務(wù)器平臺(tái),并可在手機(jī)客戶端和網(wǎng)頁(yè)上進(jìn)行實(shí)時(shí)監(jiān)測(cè)[13]。上位機(jī)程序流程如圖8所示。
為了測(cè)試奶牛發(fā)情體征監(jiān)測(cè)系統(tǒng),2017年5月在河南省南陽(yáng)市某奶牛場(chǎng)進(jìn)行了設(shè)備采集試驗(yàn)。選擇編號(hào)為1的奶牛進(jìn)行測(cè)試,其體溫和步數(shù)的監(jiān)測(cè)歷史曲線如圖9所示。
PC端監(jiān)測(cè)平臺(tái)還可以通過(guò)HTTP協(xié)議把奶牛發(fā)情體征數(shù)據(jù)上傳到Y(jié)eelink云端,PC客戶端會(huì)給出回應(yīng),識(shí)別客戶端狀態(tài)碼,判斷是否上傳成功,若文本框狀態(tài)如圖10所示,則上傳數(shù)據(jù)成功。
通過(guò)移動(dòng)平臺(tái)和PC機(jī)接入Yeelink云端監(jiān)測(cè)的奶牛體征步數(shù)曲線如圖11所示。
本研究提出并設(shè)計(jì)了基于物聯(lián)網(wǎng)和云端的奶牛發(fā)情體征監(jiān)測(cè)系統(tǒng),該監(jiān)測(cè)系統(tǒng)支持無(wú)線網(wǎng)絡(luò)傳輸和云端平臺(tái)遠(yuǎn)程實(shí)時(shí)監(jiān)測(cè),簡(jiǎn)單實(shí)用,是奶牛養(yǎng)殖戶監(jiān)測(cè)奶牛發(fā)情狀態(tài)快捷有效的方法;設(shè)計(jì)了非接觸式、低功耗的奶牛發(fā)情體征監(jiān)測(cè)模塊,實(shí)現(xiàn)了奶牛體溫和步數(shù)的無(wú)線傳輸;開(kāi)發(fā)了奶牛發(fā)情體征監(jiān)測(cè)系統(tǒng),實(shí)現(xiàn)了發(fā)情體征移動(dòng)平臺(tái)實(shí)時(shí)遠(yuǎn)程監(jiān)測(cè)、查詢以及云端數(shù)據(jù)上傳。在本研究基礎(chǔ)上,后續(xù)可以在發(fā)情體征數(shù)據(jù)獲取之后加入決策系統(tǒng),以便奶牛飼養(yǎng)人員全面掌控奶牛的發(fā)情狀況,實(shí)現(xiàn)智能化的奶牛發(fā)情監(jiān)控。