遠俊紅,楊 旭
(云南林業職業技術學院 云南 昆明 650001)
智慧農業集現代信息技術于一體,實現對農業生產的全方位管理與控制,對建設高水平現代農業有著重大意義。農業數據采集是實現智慧農業的基礎,主要涉及農業環境中的溫度、濕度、光照強度、二氧化碳濃度、風速、風向、降雨量等數據的持續收集。傳統的人工數據采集已不能適應現代農業的需要,基于物聯網的自動化數據采集系統才能為智慧農業提供持續的數據資源。在農業數據采集系統方面的研究有很多,尤其是基于片上系統的Python 語言嵌入式開發成為研究熱點,其中陳光輝[1]基于TPYBoard使用MicroPython 開發了一種簡易的溫濕度采集系統;王立華等[2]基于RT-Thread 嵌入式操作系統和MicroPython編程語言設計了一種溫室環境檢測系統;鄧健等[3]基于CC3200 和MicroPython 設計了一種智能家居數據采集與控制系統;王韋剛等[4]使用MicroPython 在TPYBoard V202開發板設計了一種智能家居系統。
現有的研究均從物聯網技術中選取了適當的子集構建了自動化數據采集系統,但專門針對小規模農業數據采集的研究并不多,小規模農業環境數據采集具有成本敏感、需求多變等特點,這就要求相應的數據采集系統對硬件和通信協議進行科學選型,并設計更加靈活的嵌入式軟件系統。
當前,農戶家庭經營仍然是我國農業生產經營的主要組織形式,本文針對小規模農業環境數據采集的特點,基于PL3S(即:Python 語言、LoRa 通信協議、單板電腦、單片機和傳感器)設計和實現了一種農業物聯網數據采集系統(下文中簡稱為:采集系統),該系統具有結構靈活、部署簡單、數據傳輸穩定、成本低、易升級等特點,希望能夠為智慧農業應用提供穩定高效的數據源,進一步提高農業生產力,助力我國鄉村振興戰略的實施。
系統技術棧的選擇直接影響著系統的結構、性能、成本、靈活性和開發難度。當前,C/C++語言是嵌入式系統的主流開發語言,盡管目標代碼執行效率較高,但其技術門檻高,編譯鏈接過程使得系統開發效率降低,不適合需求多變的系統迭代升級,軟件結構靈活性較差,不利于系統二次開發。隨著嵌入式硬件性價比不斷提高,Python語言在微控制器環境下的衍生版本MicroPython 越來越多的應用于開發嵌入式系統,其具有先天的跨平臺移植能力和兼容性,眾多開箱即用的開發庫,使得系統開發不必關注底層硬件細節,直接對硬件進行高效控制,本系統使用MicroPython語言開發控制軟件,在提高開發效率的同時,也降低了開發難度,其動態語言的特性有利于快速開發、系統部署和迭代升級。
LoRa 是使用免費頻段的物聯網通信技術,其在同樣的功耗條件下比其他無線通信方式傳播距離更遠,實現了低功耗和遠距離的統一,LoRa 無線通信模塊使用成本低、穿透力強、抗干擾性好,采集系統使用LoRa 通信協議進行數據傳輸,可以大大減少網關數量和施工成本,特別適合農業物聯網環境。
單板電腦是把微型計算機的整個功能體系電路(CPU、ROM、RAM、輸入/輸出接口電路以及其他輔助電路)全部組裝在一塊印制電路板上,再用印制電路將各個功能芯片連接起來形成的嵌入式計算機,單板電腦具有尺寸緊湊、I/O 豐富、功耗極低、開發環境友好等特點,采集系統使用單板電腦作為物聯網終端的網關和控制器。
單片機是一種集成式電路芯片,沒有I/O設備,體積小、質量輕、價格便宜,適合多樣化數據采集與控制運算,采集系統使用單片機控制傳感器和LoRa 模塊實現數據感知和傳輸。
農業傳感器是本系統的神經末梢,農業環境數據采集對精度的要求不高,但傳感器需要低功耗、低成本,有利于廣泛部署。
PL3S 技術棧的選擇較好地契合了農業環境中物聯網數據采集的應用需求和系統開發特點,為采集系統的成功打下了良好的基礎。
1.2.1 單片機的選擇
目前MicroPython 支持部分32 位ARM 處理器,如STM32F4 系列、TI CC3200、esp8266 等,采集系統使用支持MicroPython 的單片機TPYBoard V102,主控芯片為STM32F405RGT6、最大主頻168 MHz、192 KB RAM、1M Flash、3.5 ~10 V 電壓Micro USB 電源,支持GPIO、SPI、IIC、ADC、One-wire、USART 數據接口,支持最大8G TF 卡,可通過代碼控制單片機各種外設實現主流傳感器的數據讀取,同時支持MicroPython 程序直接運行。
1.2.2 傳感器的選擇
(1)空氣溫濕度傳感器。采集系統使用包含已校準數字信號輸出的DHT11 溫濕度復合型傳感器,具有抗干擾能力強、體積小巧、功耗低、可靠性高、響應速度快等優點。DHT11 傳感器具有單總線和標準I2C 兩種,采集系統使用單總線通信方式,數據交換、控制都有單總線通信完成,在開發板和DHT11 之間形成“呼叫-應答”式的主從關系。
(2)土壤濕度傳感器。采集系統使用YL69 土壤濕度傳感器,由傳感器探頭和濕度檢測模塊組成,感應面積寬,電壓范圍3.3 ~5 V,檢測模塊具有雙輸出模式,數字量輸出簡單,模擬量輸出精確,靈敏度可調,其比較器采用LM393 芯片,工作穩定,信號干凈。
(3)光照傳感器。對于光照強度數據,采集系統使用基于I2C 通信的16 位數字型傳感器GY-30,其內部使用BH1750FV1 芯片,光照度范圍在0 ~65535Lx,內部集成光電轉換、ADC 轉換、I2C 信號轉換功能,可以直接數字輸出,占用空間小、穩定性好。GY-30 傳感器可直接與TPYBoard V102 單片機IO 相連,部署方便、兼容性強。
(4)雨滴傳感器。降雨量是重要的農業環境數據,采集系統使用FC-37 雨滴傳感器作為雨量檢測終端。FC-37 采用雙面FR-04 材料,表面鍍鎳處理,抗氧化能力強,其數字信號輸出反映降雨狀態,模擬信號輸出反映雨量大小。
1.2.3 單板電腦選擇
樹莓派具有硬件運行穩定、軟件生態良好、開發資源豐富的優勢[5],采集系統選擇樹莓派(Raspberry Pi 4 Model B)作為網關,進行系統控制、數據接收、解析并存入數據庫,其采用CortexA72 架構,核心處理器為4 核1.5 GHz,支持雙頻Wi-Fi、千兆網口以及40 針擴展接口,操作系統支持Linux 和Python 語言開發。
1.2.4 通信模塊選擇
LoRa 無線通信技術具有成本低、功耗小、部署簡單、通信范圍廣的特點[6],采集系統選擇億佰特LoRa 無線模塊E22-400T22DC,該模塊基于SEMTECH SX1262 射頻芯片的UART,傳輸距離遠、速度快、功耗低、體積小,可根據引腳設置為傳輸、WOR、配置、深度休眠4 種工作模式,方便靈活。
1.2.5 顯示屏
LCD12864 顯示屏自帶中文字庫的點陣圖形顯示模塊,顯示分辨率128*64,支持多種接口,操作指令簡單,低電壓低功耗,采集系統將TPYBoard V102 讀取到的數據通過LCD12864 顯示屏輸出,構成全中文人機交互圖形界面。
為降低系統的復雜性、提高靈活性,采集系統的邏輯結構使用分層模塊化設計,自上而下依次為應用層、網絡傳輸層和數據感知層,各層模塊的組成及使用的開發語言見圖1。
數據感知層負責從傳感器采集原始數據,TPYBoard 單片機作為終端控制器與各傳感器相連,運行MicroPython編寫的數據采集程序,驅動各傳感器根據配置參數完成對溫濕度、光照、雨滴等環境數據的感知。
在網絡傳輸層,一方面,TPYBoard 利用串口Uart 與LoRa 模塊發送端連接,使用MicroPython 編寫的發送程序調用LoRa 模塊功能通過無線信道將數據感知層采集到的數據實時傳送到系統網關;另一方面,樹莓派與LoRa模塊接收端連接作為系統網關,使用Python 語言編寫的守護程序監控和解析串口數據,并根據標志位進行設備登記。
應用層功能依托于安裝在樹莓派中的Ubuntu Linux操作系統。通過Python 程序將網絡傳輸層接收到的數據進行清理和轉換后存入MySQL 數據庫,作為進一步的數據分析、可視化展現和決策支持的數據源。
采集系統的軟件部分主要分為數據采集模塊和網關模塊,數據格式采用JSON 格式。數據采集模塊的軟件設計主要實現TPYBoard 單片機調用傳感器驅動程序讀取數據的功能、基于LoRa 通信協議發送數據到系統網關的功能以及相關的反饋控制邏輯。數據采集模塊的軟件設計流程圖見圖2。數據采集模塊在TPYBoard 單片機上運行MicroPython 程序完成對傳感器數據的讀取,并通過LoRa發送端傳輸數據給網關,由于沒有必要保持較高的數據讀取頻率,因此在一次數據讀取并傳輸成功后,LoRa 發送端停止發送數據,以降低系統功耗,同時等待網關的喚醒指令,當收到下個周期的喚醒指令時繼續向網關發送數據。實時讀取的數據同步在顯示屏輸出。
網關模塊的軟件設計使用多線程串口數據監聽機制,實現對LoRa 發送終端的遠程喚醒、數據接收、數據解析和數據保存功能,網關模塊的軟件設計流程圖見圖3。網關模塊的程序要監控串口數據并解析,同時負責喚醒單片機進行的數據發送,采取多線程(Threading 庫)與消息隊列(queue 庫)來處理串口數據,防止串口數據亂序、擁堵造成阻塞等問題。在接收與發送端為一對多的模式下,采取列表存放單片機設備號,充分利用列表特性完成各個單片機數據的發送。
采集系統的總體架構由各種傳感器、TPYBoard 單片機、LoRa 收發模塊、樹莓派網關組成,見圖4,其中單片機和傳感器構成數據采集模塊,數據采集模塊使用LoRa 收發模塊與樹莓派網關進行通信。數據采集模塊包含多個采集點,每個采集點的結構如圖4 中虛線框所標示。
按照上述系統的架構將相關硬件進行組裝,將軟件系統拷貝至單片機和樹莓派,即完成系統部署,見圖5。采集系統加電后,各模塊即可正常運行,軟件根據配置參數驅動硬件模塊持續采集數據。
通過運行測試可以發現,單片機TPYBoard V102 上的主程序可以很好地完成傳感器數據的讀取,并通過LoRa局域網實現一對多LoRa 通信和雙向數據傳輸,數據采集過程持續、穩定,實現了預期的設計目標。
將系統在1 h 內采集數據的均值與人工多次測量數據的均值進行比對,見表1,通過計算偏差比(即二者差值與人工均值的比率)發現,在現有系統軟硬件配置條件,偏差比的絕對值在農業生產可接受范圍內,對于小規模農業環境監測和決策制定有積極的意義。

表1 測試數據分析
本文使用PL3S 物聯網技術設計和開發了一種農業物聯網數據采集系統,較好地實現了性能、成本、可靠性和靈活性等方面的均衡,對于小規模農業環境數據采集應用開發有一定的參考價值,也是農業物聯網數據采集領域一次有益的探索。如何在現有硬件架構不變的前提下進一步提高采集數據的精度將是下一步研究的內容。