構(gòu)建基礎(chǔ)板:具有橋接Modbus傳感器連接到Lorawan無(wú)線連接的能力
掃描二維碼
隨時(shí)隨地手機(jī)看文章
我從硬件庫(kù)存的墓地中復(fù)活了舊主板。這個(gè)板曾經(jīng)是創(chuàng)業(yè)公司的MVP產(chǎn)品。兩年前,當(dāng)初創(chuàng)公司還處于炒作階段,有很多投資者想要慷慨地為初創(chuàng)公司提供資金時(shí),我們看到了工業(yè)物聯(lián)網(wǎng)領(lǐng)域的巨大機(jī)遇。我和其他創(chuàng)始人正在邁出第一步,以實(shí)現(xiàn)建立這家主要專注于工業(yè)物聯(lián)網(wǎng)應(yīng)用的創(chuàng)業(yè)公司的想法。
我從這些制造業(yè)中注意到的一件事是他們使用標(biāo)準(zhǔn)的工業(yè)測(cè)量工具,這導(dǎo)致了一個(gè)相似之處,這些工具使用標(biāo)準(zhǔn)接口稱為MODBUS。從這個(gè)機(jī)會(huì),這個(gè)硬件誕生了橋接MODBUS到Lorawan/無(wú)線數(shù)據(jù)。
在本項(xiàng)目中,主要目標(biāo)是恢復(fù)硬件,使其能夠從Modbus傳感器采集數(shù)據(jù),將數(shù)據(jù)保存到SDCard或內(nèi)部數(shù)據(jù)緩沖區(qū),進(jìn)行數(shù)據(jù)轉(zhuǎn)換,并將數(shù)據(jù)發(fā)送到云端。
具有MODBUS協(xié)議能力的土壤傳感器正在這個(gè)項(xiàng)目中用于PoC(概念驗(yàn)證),因?yàn)檫@是我的垃圾抽屜中唯一支持MODBUS的傳感器。
主圖
從下面的圖表中,它大致解釋了將在這個(gè)項(xiàng)目中實(shí)現(xiàn)的想法。從下到上有帶modbus RTU - RS485接口的土壤傳感器,可采集土壤質(zhì)量信息。為了獲取傳感器內(nèi)部的數(shù)據(jù),主板需要借助UART到RS485板轉(zhuǎn)換器進(jìn)行modbus RTU數(shù)據(jù)查詢。通過(guò)這樣的查詢命令,我們將能夠收集土壤的溫度、體積含水量(VWC)和電導(dǎo)率(EC)。
一旦板獲得土壤數(shù)據(jù),主板將對(duì)實(shí)際值進(jìn)行轉(zhuǎn)換,并將轉(zhuǎn)換發(fā)送到lorawan網(wǎng)關(guān)。為了能夠發(fā)送lorawan協(xié)議和lorawan無(wú)線電,ESP32S3將需要RFM95支持來(lái)完成這些事情。RFM95和ESP32S3之間通過(guò)SPI接口通信,在主板內(nèi)部進(jìn)行物理連接。
Lorawan網(wǎng)關(guān)將接收來(lái)自主板的數(shù)據(jù),并將數(shù)據(jù)存儲(chǔ)在Lorawan本地服務(wù)器內(nèi)部。在此lorawan網(wǎng)關(guān)中,采用RAK網(wǎng)關(guān)模塊作為集中器,Balena鰭板作為網(wǎng)關(guān)基板?;灞旧砟軌蜻\(yùn)行RPi OS和Chirpstack作為lorawan服務(wù)器。從這個(gè)階段開(kāi)始,我們可以查看主板/節(jié)點(diǎn)發(fā)送的數(shù)據(jù)。
Thingsboard需要作為儀表板,以提供傳感器數(shù)據(jù)的交互式視圖。Lorawan網(wǎng)關(guān)可能需要一個(gè)橋接器來(lái)執(zhí)行數(shù)據(jù)傳輸?shù)絋hingsboard。在Thingsboard免費(fèi)版中,不支持Chirpstack - Thingsboard集成,因此可能需要在Chirpstack - Thingsboard之間創(chuàng)建手動(dòng)橋接。
硬件列表
要建立這個(gè)項(xiàng)目,需要幾個(gè)硬件:
?自定義Modbus到Lorawan板
?Lorawan網(wǎng)關(guān)
?UART/TTL轉(zhuǎn)RS485
?支持Modbus-RTU的土壤測(cè)量傳感器
?云服務(wù)器/ Thingsboard服務(wù)器
明確地,建立自定義Modbus - Lorawan板:
?ESP32S3
?RFM95W
?MPPT太陽(yáng)能充電器
?SD卡數(shù)據(jù)接口和插槽。
硬件圖
從主板到傳感器的連接圖解釋如下。主板通過(guò)USB接口供電,為主板上的各個(gè)模塊和部件供電。電壓轉(zhuǎn)換3.3V也分配到外板提供板支撐,本項(xiàng)目為RS485板轉(zhuǎn)換器。
通過(guò)跳線進(jìn)行Uart連接,將Uart - rs485的TTL端口連接到主板。在轉(zhuǎn)換板的另一側(cè),引腳A和B連接到傳感器引腳。為了使傳感器正常工作,本項(xiàng)目采用外接12V適配器,12V輸出連接到土壤傳感器的輸入電源引腳。
為了更好地了解主板,此圖對(duì)每個(gè)模塊的連接進(jìn)行了高級(jí)概述。該板的主控板是ESP32S3,能夠提供WIFI、BLE等無(wú)線連接性能,并帶有一些外圍設(shè)備作為通信接口。
如圖所示,ESP32S3通過(guò)SPI連接,將命令/數(shù)據(jù)發(fā)送到支持模塊(RFM95),并通過(guò)SPI接口將數(shù)據(jù)文件讀/寫到SDcard。ESP32S3還保留了其他GPIO,可作其他用途。
電源控制器為單板上的所有模塊供電。有三種電源可以切換,它們是USB,太陽(yáng)能電池板和電池。
主板概述
硬件測(cè)試
由于該板長(zhǎng)期處于休眠狀態(tài),因此可能需要進(jìn)行功能檢查以確保該板正常運(yùn)行。一些功能性檢查包括:
?Lorawan連接測(cè)試
?SD卡數(shù)據(jù)Wr/R測(cè)試
?Modbus查詢測(cè)試
有關(guān)此檢查的更多細(xì)節(jié)請(qǐng)參見(jiàn)視頻/錄音。
固件圖與實(shí)現(xiàn)
下面的圖表描述了正確完成這項(xiàng)工作的主要流程圖。經(jīng)過(guò)幾次試驗(yàn),由于庫(kù)問(wèn)題,需要通過(guò)排除SD卡的寫入和讀取命令來(lái)更新此圖,其中expressif - Arduino VSPI沒(méi)有按預(yù)期工作,導(dǎo)致錯(cuò)誤行為。
首先初始化外設(shè),然后啟動(dòng)lorawan例程/事件。這個(gè)lorawan調(diào)度時(shí)間是每60秒一次,所以lorawan網(wǎng)關(guān)每分鐘都會(huì)收到最新的數(shù)據(jù)。一旦啟動(dòng),lorawan固件將自動(dòng)處理每個(gè)事件和調(diào)度。
lorawan初始化后開(kāi)始Modbus數(shù)據(jù)查詢。單板以Modbus數(shù)據(jù)格式發(fā)送Modbus RTU命令。有關(guān)modbus RTU的更多細(xì)節(jié),我們可以遵循此信息。
來(lái)自modbus的RTU代碼,基于modbus的數(shù)據(jù)協(xié)議
Modbus地址:0x01
功能碼:0x03
起始地址:0x0000
請(qǐng)求的數(shù)據(jù)長(zhǎng)度:0x000A
CDC: 0xC5CD
一旦modbus從/目標(biāo)發(fā)送反饋,固件將modbus值轉(zhuǎn)換為實(shí)際值,并將其復(fù)制到lorawan數(shù)據(jù)負(fù)載中。
由于需要執(zhí)行多個(gè)測(cè)試,因此在此項(xiàng)目上開(kāi)發(fā)了多個(gè)固件。主要實(shí)現(xiàn)是ESP32S3_RFM_Firmware,涵蓋了從獲取土壤傳感器數(shù)據(jù)到將數(shù)據(jù)發(fā)送到云的所有過(guò)程。
下面的代碼是程序運(yùn)行的主要流程,這個(gè)代碼是基于上面的固件圖編寫的。從外設(shè)初始化開(kāi)始,讀取數(shù)據(jù)總線,發(fā)送測(cè)量數(shù)據(jù)。我們可能注意到modbus數(shù)據(jù)查詢和lorawan事件是如何共存的。lorawan棧/事件需要與其他棧中的modbus數(shù)據(jù)查詢分離,這種方法可以防止由于lorawan事件和優(yōu)先級(jí)導(dǎo)致主棧溢出。
從代碼中還執(zhí)行了數(shù)據(jù)modbus轉(zhuǎn)換到其實(shí)際值,并將其存儲(chǔ)在lorawan有效負(fù)載中。modbus查詢每20秒觸發(fā)一次,但數(shù)據(jù)每1分鐘傳輸一次,這意味著平臺(tái)和lorawan服務(wù)器將接收到最新/最大的數(shù)據(jù)。
Lorawan到Thingsboard橋
Lorawan - Thingsboard橋是為了克服Thingsboard免費(fèi)版本的限制而制作的。集成Thingsboard的chirpstack lorawan服務(wù)器只提供高級(jí)版本,這意味著我們需要節(jié)省一些預(yù)算來(lái)購(gòu)買許可證。
在這個(gè)項(xiàng)目中,通過(guò)利用MQTT協(xié)議的優(yōu)勢(shì),我們可以輕松地交換數(shù)據(jù),從而手動(dòng)處理簡(jiǎn)單的橋接。由于該橋只覆蓋了少量節(jié)點(diǎn),大量節(jié)點(diǎn)的約束條件仍然未知。
橋牌的代碼實(shí)現(xiàn)如下面的代碼所示,它是按照上面的圖表創(chuàng)建的。此代碼在網(wǎng)關(guān)內(nèi)注冊(cè)為服務(wù),因此每次網(wǎng)關(guān)上電時(shí),網(wǎng)橋?qū)⒆詣?dòng)運(yùn)行。
網(wǎng)橋?qū)崿F(xiàn)的結(jié)果如下圖所示,網(wǎng)橋能夠?qū)?shù)據(jù)從Chirpstack網(wǎng)關(guān)網(wǎng)橋傳輸?shù)絋hingsboard
結(jié)果
硬件組裝
給電路板一個(gè)合適的外殼,設(shè)備就可以測(cè)試了。
Chirpstack Lorawan服務(wù)器
Thingsboard儀表板
本文編譯自hackster.io





