華南農業大學電子工程學院 王 建 吳觀法 曾銳文
在工業場景中串口傳輸依然是最主要的通信方式,當前在無線通信和物聯網發展的影響下,傳統串口數據采集方式迎來了創新的契機,即實現無線遠程串口數據傳輸與控制,其中點到點遠程通信具有重要意義。
LTE(Long Term Evolution,長期演進)為解決第三代通信技術暴露出的問題而提出的下一代移動通信統一標準,目前是第四代通信技術,以其高速、寬帶、低成本為現階段下眾多設備連接服務器、傳輸采集的數據提供可靠保證,得到廣泛應用[1-2]。
基于MT7628片上系統芯片下掛數據采集系統,通過串口獲取所需傳感數據;設立TCP服務器,通過該服務器中轉客戶端獲得的數據。采用LTE遠程控制器,使用LTE網絡介入Internet,登錄到TCP遠程服務器,向遠程TCP遠程服務器發送從串口收到的數據,并且接收來自手機/電腦客戶端端的控制數據。手機/電腦端的客戶端可以通過互聯網接入TCP遠程服務器,獲取TCP服務端轉發來的來自MT7628串口控制器的數據,并向TCP服務端發送控制命令,再由TCP服務器轉發到MT7628串口控制器,再由串口控制器發送到下掛設備,系統框圖如圖1所示。
主控芯片采用聯發科MTK公司生產的一款以MIPS 24K CPU為核心的SOC芯片MT7628,帶有多個外設,包括2.4GHz的Wi-Fi網卡,5個有線網卡,3個串口,多路GPIO,SD-XC接口,USB接口等[3]。更為關鍵的是MT7628芯片中帶有MMU內存管理模塊,可以運行Linux內核的系統,涉及到Linux引導移植、內核移植。
EC20 R2.0 Mini PCIE-C是移遠通信采用PCI Express Mini Card標準接口的LTE模塊。它采用了LTE第三代合作伙伴計劃(3rd Generation Partnership Project,3GPP)Rel.11技術,內置豐富的網絡協議,集成多個工業標準接口,需要進行LTE4G驅動及撥號移植。
圖1 系統框圖
包括Linux引導移植、內核移植,本文采用的是linux-3.18.29,解壓MediaTek_ApSoC_SDK_4320_20150414.tar.bz2可得到Uboot文件夾。
Linux系統中EC20模塊通過虛擬USB串口設備,經點對點協議隱形程式(Point to Point Protocol Daemon,PPPD)軟件撥號達到上網目的,所以移植EC20的驅動就是移植EC20的USB虛擬串口。這種USB虛擬串口的接口是通用的,在Linux-3.18.29的內核中已經含有USB的虛擬驅動代碼,只需添加EC2設備信息,即可被Linux系統識別。移植EC20 PPPD撥號軟件主要包括:解壓ppp-2.4.7.tar.gz后編譯ppp-2.4.7,將編譯后得到三個MIPS構架運行文件pppd、pppdump、pppstats文件分別上傳到目標板的/usr/sbin目錄中,然后在目標板上制作LTE撥號腳本wcdma、wcdma-chat-connect、wcdma-chat-disconnect。
本文中TCP服務端是在擁有公網IP地址的Ubuntu服務器中工作,采用C語言編程,主要函數包括:void init(const char * IP,const char *serverport)函數,用于初始化服務端端口并綁定服務端端口,建立監聽端口;void service(void)函數,用于啟動TCP服務端,啟動后會等待來自MT7628設備和遠程控制端的TCP連接;調用void *service_thread(void *p)函數會建立一個新的線程,該線程和連接的TCP客戶端保持通信。
在本設計中,MT7628以TCP客戶端的方式與遠程服務器建立連接,連接成功以后,讀取串口,串口開始讀取來自下掛設備的信息,同時把來自TCP服務端的消息發往串口。測試框圖如圖2所示。
圖2 測試流程圖
圖3 遠程客戶端間測試
測試一:將TCP服務端運行在遠程Ubuntu服務器中,采用的域名是廣州元電荷科技公司公網地址www.ivoten.cn,可以直接被互聯訪問。首先通過scp命令將tcpserver文件上傳至Ubuntu服務器,在遠程Ubuntu服務器上啟動tcpserver,在tcpserver啟動后,將TCP客戶端A、B的地址同樣設置為www.ivoten.cn,端口號為8080。依次啟動測試TCP客戶端A,TCP客戶端B。連接成功以后,進行兩個TCP客戶端的互發信息,檢測能否相互進行通信。測試情況如圖3所示。
測試二:打開擁有公網IP遠程的Ubuntu服務器,啟動tcpserver,端口號為8080,域名www.ivoten.cn,連接MT7628串口控制器,將MT7628的4G模式打開,設置MT7628串口控制器目標地址為www.ivoten.cn,端口號8080,打開電腦TCP客戶端,連接到www.ivoten.cn 8080端口。在電腦端打開串口助手,向MT7628串口控制器發送”from RS232 Uart”,電腦的TCP客戶端向TCP服務器發送”from TCP CLIENT”。在串口助手收到“”from TCP CLIENT”,TCP客戶端收到“from RS232 Uart”,測試如圖4所示。
圖4 公網MT7628遠程控制器接入TCP服務端測試
測試三:把STM 32通過RS232接入到MT7628串口控制器上,分別測試電腦的TCP客戶端向服務器發送AT命令,STM 32按照串口發來的AT指令采集溫濕度,并要求返回溫濕度,當串口向STM 32發送AT+TEMPERATURE=? 時,STM 32回采集DHT11的數據,得到溫度數據,返回溫度數據到串口,如圖5所示。
圖5 客戶端點到點測試結果
本文根據物聯網中節點間數據傳輸交換的需求,設計了一個點對點遠程數據傳輸,設置中轉TCP服務器,TCP服務器得到來自MT7628的TCP客戶端消息,把消息轉發到電腦的TCP客戶端;電腦中TCP客戶端的控制消息發到TCP服務端,TCP服務端把消息轉發到MT7628的TCP客戶端,完成點對點遠程數據傳輸控制。
[1]曹旭東,薛大歡,何得平.基于TD-LTE的智慧油田測控系統的研究與實現[J].計算機測量與控制,2016,24(5):117-119,123.
[2]賴華堯,黃鳳辰,花再軍,陳釗.基于3G的地鐵MVB數據傳輸的雙通道設計[J].工業控制計算機,2017,30(5):6-8.
[3]聯發科.發布芯片MT7628布局智能家庭[J].電視技術,2014,38(20):47.