胡古月
(南京農(nóng)業(yè)大學工學院,江蘇 南京 210031)
面對集約化、信息化、自動化程度都較低的現(xiàn)狀,中國動物養(yǎng)殖業(yè)正在向科技含量更高的動物福利養(yǎng)殖方向進行轉(zhuǎn)型。加之人們對食品安全問題的關(guān)注度日益上升,動物養(yǎng)殖信息的追溯和管理成為養(yǎng)殖過程中必須包含的內(nèi)容。對于養(yǎng)豬業(yè)而言,仔豬的體重監(jiān)測是飼養(yǎng)過程中的關(guān)鍵數(shù)據(jù)之一。通過這一數(shù)據(jù),養(yǎng)殖者可以準確了解到仔豬的健康和生長狀況,從而對應地進行增加或減少飼料等一系列的措施。同時,豬仔體重的數(shù)據(jù)變化能夠反映出該養(yǎng)殖廠的飼養(yǎng)水平。另外,對于大規(guī)模的飼養(yǎng)場來說,人工稱量費時費工。通過機器實時得到該數(shù)據(jù),養(yǎng)殖者可以得到第一手準確的體重數(shù)據(jù)。
本論文詳細敘述了豬仔體重監(jiān)測的原理、系統(tǒng)的結(jié)構(gòu)及部分功能的實現(xiàn)。系統(tǒng)基本完成測量和顯示數(shù)據(jù)的功能,但仍有可拓展和升級的地方。
圖1 系統(tǒng)結(jié)構(gòu)框圖
ARM從串口接收數(shù)據(jù),即豬仔的重力大小,把它放到數(shù)據(jù)庫。為了直觀顯示和便于研究,圖形界面上顯示最近五個數(shù)據(jù),并且可以查詢在一段時間內(nèi)某一范圍大小的豬仔重力。具體實現(xiàn)如下:
(1)ARM板選擇:采用三星具有工業(yè)級溫度的微處理器S3C2440A-40,主頻400MHZ;采用2片4Banks×4M ×16bits SDRAM,PC100/PC133 兼容,共 64MB,64M ×8bits Nandflash;采用高精度6層板工藝,其中3層電源層的設計,使其具有最佳的電氣性能和抗干擾性能,具有低功耗特性。
(2)QT庫移植:首先,安裝arm920t-eabi編譯器,將它解壓到指定目錄下,并設置編譯器路徑;然后利用此編譯器編譯QT。
(3)制作QT文件系統(tǒng):在此,我們利用現(xiàn)成的QT文件系統(tǒng),將它直接燒制到Arm板上。
(4)Sqlite數(shù)據(jù)庫移植:Sqlite簡介:Sqlite是嵌入式SQL數(shù)據(jù)庫引擎SQLite(SQLite Embeddable SQL Database Engine)的一個擴展。SQLite是一個實現(xiàn)嵌入式SQL數(shù)據(jù)庫引擎小型C語言庫(C library),實現(xiàn)了獨立的,可嵌入的,零配置的SQL數(shù)據(jù)庫引擎。特性包括:事務操作是原子,一致,孤立,并且持久的,即使在系統(tǒng)崩潰和電源故障之后。零配置——不需要安裝和管理。實現(xiàn)了絕大多數(shù)SQL92標準。整個數(shù)據(jù)庫存儲在一個單一的文件中。數(shù)據(jù)庫文件可以在不同字節(jié)序的機器之間自由地共享。支持最大可達2T的數(shù)據(jù)庫。字符串和BLOB類型的大小只受限于可用內(nèi)存。完整配置的少于250KB,忽略一些可選特性的少于150KB。在大多數(shù)常見操作上比流行的客戶/服務器數(shù)據(jù)庫引擎更快。用SQLite連接的程序可以使用SQL數(shù)據(jù)庫,但不需要運行一個單獨的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)進程(separate RDBMS process)。SQLite不是一個用于連接到大型數(shù)據(jù)庫服務器(big database server)的客戶端庫(client library),而是非常適合桌面程序和小型網(wǎng)站的數(shù)據(jù)庫服務器。這些特性使得Sqlite非常適合在ARM平臺上使用。
(5)Sqlite交叉編譯:利用Arm-linux-gcc編譯器編譯Sqlite源代碼,生成可在ARM上運行的可執(zhí)行文件以及鏈接庫。首先,修改configure文件#./configure—host=arm-linux—disable-tcl—prefix=/home/sqlite-3.6.18/sqlite-armlinux/;修改Makefile文件,BBC=gcc-g-O2;然后,編譯并安裝,#make&&make install;用strip處理,去掉其中的調(diào)試信息,#arm-linux-stripsqlite3;最后,進行移植,對庫的拷貝時要加上 -arf選項,因為 libsqlite3.so,libsqlite3.so.0是鏈接到libsqlite3.so.0.8.6的;在開發(fā)板終端中將三個庫文件拷貝到其庫中,而后即可使用sqlite了。
(6)QT界面設計:Qt開放源代碼,并且提供自由軟件的用戶協(xié)議。使得它可以被廣泛地應用在各平臺上的開放源代碼軟件開發(fā)中。經(jīng)過多年發(fā)展,Qt不但擁有了完善的C++圖形庫,還整合了數(shù)據(jù)庫,OpenGL庫,多媒體庫,網(wǎng)絡腳本庫,XML庫,WebKit庫等,其核心庫也加入了進程間通信,多線程等模塊極大的豐富了Qt開發(fā)大規(guī)模復雜跨平臺應用程序的能力。設計思路:在顯示屏的主窗口上有兩個頁面可自由切換,第一個頁面功能是接收串口數(shù)據(jù)并動態(tài)顯示最新五個紀錄,第二個頁面功能是查詢當前數(shù)據(jù)庫記錄,查詢的條件是時間與豬仔的體重。
圖2 QT圖形界面設計
多只仔豬共同被飼養(yǎng)在一個保育箱中(面積:1.0m*0.5m),利用安裝在保育箱底部的壓力傳感器可將仔豬的重力大小(測量行為發(fā)生在豬仔熟睡之時以減少豬仔活動帶來的壓力誤差)線性地轉(zhuǎn)換成信號輸出端的電壓變化。主控單片機C8051F020利用片內(nèi)12位AD轉(zhuǎn)換器將電壓數(shù)據(jù)得到,并進行一系列數(shù)據(jù)處理。根據(jù)返回電壓值與重力大小的線性關(guān)系,主控單片機將處理好的體重量通過串口傳送給基于ARM的QT編寫的軟件的數(shù)據(jù)庫中。QT程序調(diào)用數(shù)據(jù)進行數(shù)據(jù)的顯示,查詢,按時間軸等的排序。
圖3 壓力和輸出電壓曲線關(guān)系
C8051F020/1/2/3器件是完全集成的混合信號系統(tǒng)級MCU芯片,具有64個數(shù)字I/O引腳。
針對本項目,C8051F020的優(yōu)勢:(1)高速、流水線結(jié)構(gòu)的8051兼容的CIP-51內(nèi)核(可達25MIPS)。(2)真正12位、100 ksps的8通道ADC,帶PGA和模擬多路開關(guān)。(3)擁有4352(4096+256)字節(jié)的片內(nèi)RAM。(4)5個通用的16位定時器。(5)全速、非侵入式的在系統(tǒng)調(diào)試接口(片內(nèi))。(6)片內(nèi)看門狗定時器、VDD監(jiān)視器和溫度傳感器。
從上面列出的特性可以看出,選擇C8051F020最重要的因素在于其擁有片內(nèi)12位AD轉(zhuǎn)換器。項目的精度要求小于0.02KG。在已知滿量程重量為80KG時可推知,使用10位AD時的精度約為0.078KG,使用12位 AD時的精度約為0.019KG。使用12位AD時才能滿足項目要求,并且測量精度大大提高。這是選擇這款單片機的主要原因。
數(shù)據(jù)采集的時間是在夜間豬仔熟睡期間,這樣減少豬仔的活動對測量帶來的影響。采集數(shù)據(jù)時,當通過AD讀回30次傳感器輸出電壓值后,我們對30次電壓值進行排序,然后去掉其中最大及最小的5個電壓值。將剩余的20個電壓值進行取平均值,然后再將此電壓值轉(zhuǎn)換為對應的體重值,將此值作為這一小段時間內(nèi)測量值送至串口進行發(fā)送。這樣做的好處是降低了突發(fā)事件對數(shù)據(jù)的影響,降低了隨機誤差。
項目所針對的豬仔保育箱總重量約為60KG左右,精度要求0.02KG。對于傳感器的選擇,我們從下面幾個要求進行了考察:(1)量程是否能夠滿足要求。(2)精度是否能夠達到要求。(3)溫度漂移程度要盡量小。(4)非線性度要盡量小。(5)尺寸大小、安裝方法、材質(zhì)是否適合現(xiàn)場條件。(6)工作溫度范圍是否滿足條件。(7)信號輸出形式是否便于處理器處理。
根據(jù)上述考察條件,我們選擇了型號為YZC-18,量程為40KG的壓力傳感器。下面是該傳感器的參數(shù)特性和尺寸圖。
圖4 壓力傳感器參數(shù)特性圖
圖5 壓力傳感器尺寸圖
圖6 單片機軟件流程圖
圖7 ARM上位機軟件流程圖
本論文及系統(tǒng)設計基本完成豬仔體重監(jiān)測的相關(guān)功能,但仍有很多值得改進和增加的功能部分,并且只是停留在實驗室測試階段沒有經(jīng)過養(yǎng)殖現(xiàn)場的實際使用檢驗。但我相信,動物福利養(yǎng)殖一定是未來中國養(yǎng)殖業(yè)的重要發(fā)展方向,中國將在農(nóng)業(yè)信息化、智能化、自動化的道路上越走越遠。
[1]付為森,滕光輝,楊艷.種豬體重三維預估模型的研究.農(nóng)業(yè)工程學報,2006-12.
[2]楊艷,滕光輝,李保明.種豬體重測量新方法初探.畜禽業(yè),2005-10.
[3]覃樹華.育肥豬的體重估測式.廣西畜牧獸醫(yī),1988-2.
[4]李劍秋.應用逐步回歸法估測豬體重的研究.浙江畜牧獸醫(yī),2002(3).
[5]梁之軍,張志明,黃哲英,陳仁超.乳牛體重估測方法的驗證和探討.福建農(nóng)學院學報,1983,12(4).