關(guān)注+星標公眾號,不錯過精彩內(nèi)容
作者 | XLUR_8603
來源 | RT-Thread論壇
基于睿擎派和RT-Thread操作系統(tǒng),我們開發(fā)了一款高性能工業(yè)物聯(lián)網(wǎng)數(shù)據(jù)網(wǎng)關(guān),實現(xiàn)了設(shè)備信息的實時采集、可視化監(jiān)控和遠程管理。該方案為傳統(tǒng)工業(yè)設(shè)備的智能化升級提供了可靠且經(jīng)濟的技術(shù)路徑。
1. 實時數(shù)據(jù)采集與可視化
a. 通過Modbus RTU協(xié)議采集從設(shè)備數(shù)據(jù)
b. 基于WebNet實現(xiàn)數(shù)據(jù)的網(wǎng)頁可視化展示
c. 支持溫濕度、光照、距離等多種傳感器數(shù)據(jù)監(jiān)控
2. 遠程設(shè)備管理
a. 通過Web界面實現(xiàn)設(shè)備參數(shù)配置
b. 支持在線OTA固件升級
c. 實現(xiàn)數(shù)據(jù)導出功能,方便數(shù)據(jù)分析
3. 穩(wěn)定可靠的通信
a. 采用RS485總線連接,通信穩(wěn)定可靠
b. 基于RT-Thread實時操作系統(tǒng),確保系統(tǒng)響應及時
c. 使用互斥量保護數(shù)據(jù),避免并發(fā)訪問沖突
本方案采用主從架構(gòu)設(shè)計,實現(xiàn)了分布式數(shù)據(jù)采集與集中管理:

主機:睿擎派作為主站,負責數(shù)據(jù)匯總、處理和可視化
從機:星火一號作為從站,負責前端傳感器數(shù)據(jù)采集
通信鏈路:通過RS485總線實現(xiàn)主從機之間的Modbus RTU通信
本項目采用分層模塊化設(shè)計,確保代碼的可維護性和功能分離,核心模塊包括:
主入口模塊:程序執(zhí)行入口,負責系統(tǒng)初始化流程
應用管理模塊:集中管理應用任務,初始化全局資源
Modbus通信模塊:實現(xiàn)Modbus RTU協(xié)議功能,負責數(shù)據(jù)讀寫操作
Web服務模塊:基于WebNet實現(xiàn)HTTP服務,提供網(wǎng)頁界面
傳感器采集模塊:負責各種傳感器數(shù)據(jù)采集和處理

代碼說明:此模塊負責初始化Modbus RTU通信環(huán)境,配置串口參數(shù)、從機地址、超時設(shè)置和RS485模式,為后續(xù)的數(shù)據(jù)采集建立通信基礎(chǔ)。
/* Modbus初始化 - 根據(jù)硬件配置 */staticrt_bool_tmodbus_init(void){/* 創(chuàng)建Modbus RTU上下文 - 使用串口配置 */modbus_ctx =modbus_new_rtu("/dev/uart5",115200,'N',8,1);if(modbus_ctx ==NULL){LOG_E("Unable to create Modbus context");return-1;}/* 設(shè)置從機地址 */modbus_set_slave(modbus_ctx, MODBUS_SLAVE_ADDR);/* 設(shè)置響應超時 */modbus_set_response_timeout(modbus_ctx,1,0);/* 設(shè)置為 RS485 模式 */modbus_rtu_set_serial_mode(modbus_ctx, MODBUS_RTU_RS485);/* 設(shè)置 RTS 控制 */modbus_rtu_set_rts(modbus_ctx, RS485_RTS_PIN, MODBUS_RTU_RTS_UP);/* 連接Modbus設(shè)備 */if(modbus_connect(modbus_ctx)==-1){LOG_E("Modbus connection failed: %s",modbus_strerror(errno));modbus_free(modbus_ctx);modbus_ctx = RT_NULL;return RT_FALSE;}LOG_I("Modbus initialized successfully with UART5, 115200, RS485 mode");return RT_TRUE;}
代碼說明:此模塊實現(xiàn)從Modbus從設(shè)備讀取傳感器數(shù)據(jù)的功能,包括溫濕度、光照和距離等參數(shù),并進行數(shù)據(jù)處理和驗證。
staticrt_bool_tread_sensor_data(structsensor_data*data){uint16_t tab_reg[MODBUS_REG_COUNT];int rc;int i;if(modbus_ctx ==NULL){LOG_E("Modbus context is null");return RT_FALSE;}rc =modbus_read_registers(modbus_ctx, MODBUS_REG_START, MODBUS_REG_COUNT, tab_reg);if(rc ==-1){LOG_E("Modbus read failed: %s",modbus_strerror(errno));return RT_FALSE;}/* 讀取溫度值(假設(shè)為有符號16位整數(shù),單位0.1℃) */data->temperature =(int16_t)tab_reg[TEMPERATURE_REG - MODBUS_REG_START]/1.0f;data->humidity = tab_reg[HUMIDITY_REG - MODBUS_REG_START]/1.0f;data->ps_data = tab_reg[PS_REG_ADDR - MODBUS_REG_START];data->brightness = tab_reg[BR_REG_ADDR - MODBUS_REG_START]/1.0f;data->valid = RT_TRUE;LOG_D("Modbus read: temp=%.1f℃, humidity=%.1f%%",data->temperature, data->humidity);return RT_TRUE;}
代碼說明:此模塊實現(xiàn)Web服務的CGI處理函數(shù),用于響應前端的光照數(shù)據(jù)請求,通過互斥量保護共享數(shù)據(jù),確保數(shù)據(jù)訪問的安全性。
staticvoidcgi_get_light_handler(structwebnet_session*session){constchar*mimetype;float light_value =0.0f;mimetype =mime_get_type(RT_NULL);webnet_session_set_header(session, mimetype,200,"Ok",-1);char*trans_buf ="{\"light\": %.2f}";if(temperature_mutex != RT_NULL){rt_mutex_take(temperature_mutex,100);light_value = g_light_value;rt_mutex_release(temperature_mutex);}webnet_session_printf(session, trans_buf, light_value);}
代碼說明:此模塊定義了Web界面的頁面路由配置,根據(jù)用戶選擇加載不同的功能頁面,包括設(shè)備信息、從機設(shè)備信息、視頻流、數(shù)據(jù)導出、OTA更新和參數(shù)設(shè)置等。
// 根據(jù)選擇加載不同內(nèi)容頁const pages ={device_info:"device_info.shtml",slave_device_info:"slave_device_info.shtml",video_stream:"video_stream.shtml",data_export:"data_export.shtml",ota_update:"ota_update.shtml",parameter_settings:"parameter_settings.shtml",};
1. 高實時性
a. 基于RT-Thread實時操作系統(tǒng),任務響應及時
b. 采用消息隊列和互斥量等IPC機制,確保數(shù)據(jù)處理的實時性
2. 易于擴展
a. 模塊化設(shè)計,功能分離清晰
b. 基于RT-Thread軟件包生態(tài),可快速集成各種傳感器
3. 穩(wěn)定可靠
a. Modbus RTU協(xié)議,通信穩(wěn)定可靠
b. RS485總線,抗干擾能力強
c. 完善的錯誤處理機制
4. 用戶友好
a. 直觀的Web界面,操作簡單
b. 支持在線OTA升級,維護便捷
c. 數(shù)據(jù)可視化展示,一目了然
工業(yè)設(shè)備監(jiān)控:實時監(jiān)控工業(yè)設(shè)備的運行狀態(tài)和環(huán)境參數(shù)
智能樓宇:監(jiān)控樓宇內(nèi)的溫濕度、光照等環(huán)境參數(shù)
農(nóng)業(yè)大棚:監(jiān)測大棚內(nèi)的環(huán)境參數(shù),實現(xiàn)智能調(diào)控
倉儲物流:監(jiān)控倉庫內(nèi)的溫濕度、煙霧等參數(shù),確保存儲安全
主機:睿擎派開發(fā)板
從機:星火一號開發(fā)板
通信:RS485總線連接
傳感器:溫濕度傳感器、光照傳感器、距離傳感器
操作系統(tǒng):RT-Thread 4.0+
協(xié)議:Modbus RTU
網(wǎng)絡:WebNet HTTP服務
串口配置:UART5,波特率115200,無校驗位,8位數(shù)據(jù),1位停止位
基于Modbus的在線監(jiān)控網(wǎng)關(guān)系統(tǒng)方案,充分利用了RT-Thread操作系統(tǒng)的優(yōu)勢,實現(xiàn)了設(shè)備信息的實時采集、可視化監(jiān)控和遠程管理。該方案具有高實時性、易于擴展、穩(wěn)定可靠和用戶友好等特點,可廣泛應用于工業(yè)、樓宇、農(nóng)業(yè)等領(lǐng)域的設(shè)備監(jiān)控場景。
通過本方案的實施,傳統(tǒng)工業(yè)設(shè)備可以快速接入物聯(lián)網(wǎng),實現(xiàn)智能化升級,提高生產(chǎn)效率和管理水平。RT-Thread軟件包生態(tài)的豐富資源,也為系統(tǒng)的快速開發(fā)和功能擴展提供了有力支持。
項目代碼地址:
https://gitee.com/lv-yuhaogree/rui-ching_demo
相關(guān)文檔:
https://www.rt-thread.com/ruiching/document/site/

“卷王”駕到:4核Cortex-A7搭配RISC-V MCU的全志T153開發(fā)板78元殺瘋了

Hook 機制在嵌入式中的應用解析!

瑞薩RA8 MCU硬核巡演,亮點來了!