华南农业大学电子工程学院 王 建 吴观法 曾锐文
在工业场景中串口传输依然是最主要的通信方式,当前在无线通信和物联网发展的影响下,传统串口数据采集方式迎来了创新的契机,即实现无线远程串口数据传输与控制,其中点到点远程通信具有重要意义。
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.