鄭 煒,蔡小偉,薛榮烽,黃桂萍,張榕洲
(龍巖學院 物理與機電工程學院,福建 龍巖 364012)
遠距離無線電(Long Range Radio,LoRa)技術作為近年來的新興無線通信技術,具有成本低、低功耗以及長距離傳輸等特點,適用于無線網絡數據傳輸[1-3]。謝暉等人提出基于LoRa技術的通用型環境監測節點低功耗設計,使得LoRa節點設備在惡劣環境下的抗干擾問題有了更加具體可行的解決方案[4]。秦嘉駿設計了一種基于LoRa的低功耗智能無線感知節點,降低了感知節點的功耗,同時提升了無線通信質量[5]。董文斌提出基于LoRa的線性拓撲結構無線傳感器網絡(Wireless Sensor Network,WSN)監測系統,主要由多個采集節點和1個網關組成[6]。高魏軒提出基于ModBus協議的工業控制系統信息安全主動防御系統,加強ModBus在工業中遇到問題的解決能力[7]。卿建華提出基于消息隊列遙測傳輸(Message Queuing Telemetry Transport,MQTT)協議的生產數據采集系統,提供了以MQTT協議傳輸工業生產數據的參考方案[8]。本文提出一種基于LoRa的自定義通信協議采集節點,采集節點的結構如圖1所示。利用軟件協議完成網絡節點之間的信息通信,實現采集節點之間的控制請求、控制應答、上報請求以及上報應答[9,10]。

圖1 采集節點結構
LoRa采集節點使用的通信協議有2種,第1種是ModBus-RTU協議,用來讀取工業現場中的各種Modbus傳感器;第2種是LoRa自定義通信協議,自定義編寫軟件協議來構建節點之間的通信規則,實現節點之間的數據交互與信息安全檢測。
LoRa自定義通信協議中每條消息由引導符、地址、長度、命令、數據體以及校驗碼組成,消息組成如表1所示。

表1 消息組成
引導符由4個字節組成,并分為請求引導符與應答引導符。其中,請求引導符為0x5A、0xA5、0x7E、0xE7,應答引導符為0x5A、0xA5、0x3C、0xC3。消息的長度字段由引導符后的所有數據字節之和組成,如0x05表示有5個字節。命令字段由控制輸出(字符“C”)或上報數據(字符“R”)組成。數據體字段為傳感器數據值,可以由1個字節或多個字節組成。校驗碼字段占用2個字節,采用循環冗余校驗(Cyclic Redundancy Check,CRC),低位在前,高位在后。
以上報數據指令為例,采集節點定時向接收節點上報數據,上報消息體格式如表2所示。

表2 上報消息體格式
長度字段0x14代表除去引導符字段外,還有14 Byte的數據。命令字段為字符“R”(0x52),其后填充數據信息,如空氣溫度、空氣濕度等。無論是否搭載傳感器,其對應數據都將上報。如果未搭載傳感器,則相應字段的數據填充為0。接收節點接收到信息后返回應答信息。
根據采集節點結構,所設計的采集節點主要包括電源、模擬量輸入、繼電器輸出、ModBus-RTU通信以及LoRa模組。采用STM32G030F6P6作為主控芯片,由SSP485芯片來實現RS485通信接口,由億佰特的E220-900T22S模塊實現LoRa的無線數據傳輸,并通過自定義通信協議來完成采集節點之間的通信。
設計電源輸入為直流24 V,該輸入電源經過壓敏電阻的防雷保護與共模電感濾除共模信號后通過MP9942降壓芯片降至5 V,持續為LoRa模塊、繼電器輸出模塊供電。此設計具有全方位保護功能,包括過流保護和過溫關斷保護。輸入電源原理如圖2所示。在芯片EN引腳處設有1個100 kΩ的分流電阻,防止EN引腳電流太大燒毀芯片。

圖2 輸入電源原理
工業上用的模擬量輸入為4~20 mA電流輸入,由于單片機無法檢測電流,因此需要設計硬件電路將電流轉化為電壓后再進行測量。轉換電路如圖3所示。

圖3 轉換電路
采用SSP485芯片設計RS485通信接口電路,可實現500 kb/s的無差錯數據傳輸,同時具有+15 kV的靜電放電防護功能。此外,其接收器自帶負載輸入阻抗匹配功能,總線上最多可以掛載256個收發器。該設計在SSP485芯片的信號輸出部分加入共模電感,進一步濾除了共模噪聲,使得通信能良好運行。加入雙向瞬態抑制二級管(Transient Voltage Suppressor,TVS)接地,可以在特殊情況下泄放掉大電壓,防止浪涌,保護單片機與SSP485芯片。RS485接口電路原理如圖4所示。

圖4 RS485接口電路原理
該設計無線傳輸部分硬件上采用E220-900T22S LoRa模塊,可以實現較長距離的傳輸,具有較好的抗干擾性。該模塊支持自動中繼組網與內置LoRa協議,模塊與單片機之間的通信采用串口通信,用2個IO腳連接M1、M0來控制模塊的發送和接收。通過IO腳讀取AUX的高低電平,檢測消息的接收和發送是否結束。根據上述各電路制作的采集節點實物如圖5所示。

圖5 無線傳輸采集節點實物
LoRa采集節點軟件基本工作流程如圖6所示。

圖6 采集節點軟件工作流程
系統上電時最先進行時鐘的初始化配置串口,完成后進行串口、繼電器、模擬量模數轉換器(Analog to Digital Converter,ADC)的初始化?;A硬件初始化完成后,配置ModBus協議棧,初始化主站讀取傳感器從機設備、LoRa,配置LoRa速率和地址、ModBus地址等。等待初始化完成后,主控器對節點上的傳感器數據進行讀取,讀取完成后便將數據上報至接收節點,隨后判斷上報的定時時間是否達到。若達到定時時間則重新采集上報,否則進入待機狀態。
利用STM32G030F6P6單片機作為控制器設計無線傳輸采集節點,硬件上設計了電源電路、電壓電流轉換電路、RS485接口電路及LoRa模塊接口,軟件上提出了一種自定義通信協議來完成網絡節點之間的信息通信,實現采集節點之間的控制請求、控制應答、上報請求以及上報應答等功能。基于各部分的設計制作采集節點樣機,經測試其基本達到了預期需求,可以搭載接收節點實現一對多無線數據采集功能,能夠在一些農業大棚、工業現場等場景采集數據并上報。