在无人机与地面站的数据链路中,传统的数传链路往往距离较近,4G是进行无人机远程控制非常好的连接方式。
AT指令是4G/wifi等通信模组中使用非常广泛的通信协议。AT指令虽然很简单,不过MCU与4G模块的通信还是蛮头疼的,AT指令很多,交互繁杂,导致代码可读性很差,经常写了一段时间后再看就忘记时序了。最后代码成为祖传代码,基本不能做修改,可能稍微的修改都会导致很多时序逻辑出现问题,需要重新测试调整。
最近稍微花了一点时间重新梳理了一下,重构了AT设备框架,提高了代码的可读性可维护性。
这里分享一下软件框架,希望对大家有所帮助。
AT Server 向 AT Client 发送的数据分成两种:应答指令数据和 URC 数据。
- 应答指令数据: AT Client 发送命令之后收到的 AT Server 响应状态和信息。
- URC 数据: AT Server 主动发送给 AT Client 的数据,比如UDP/TCP接收数据,需要用户做出相应操作。
应答指令数据往往非常多,用于设置和获取模组的各种参数状态和执行功能操作,这里将at指令的封装和解析功能,封装为库,提供统一的操作接口。
在软件层的封装上,将接口封装为四层:
-
APP层:用户业务层
- socket层:标准的socket接口,实现connect\send\recv等接口
- at_device:at设备驱动,提供针对4G模组的接口封装
- at_lib:at指令库,提供at指令的封装、解析支持
接口的调用时许如图所示:
完成4G模块的软件开发后,我们还不能与远程PC互联。因为4G和PC的ip是动态变化的,每次重启都会发生变化,连接的端口也可能由于路由的原因,每次连接都发生改变。
因此要实现PC与无人机的4G互联需要经过拥有公网ip和端口的云服务器互联。简单的连接关系如图所示:
这样我们就实现了PC与无人机的4G互联,AcmeGCS可以配置UDP/TCP的连接方式进行无人机连接,使用AcmeGCS即可远程控制无人机飞行,作业距离不再受到距离的限制!
–
我的微信公众号,文章同步更新,欢迎关注。