Molink即ModuleLinkKit (模组连接套件)。MoLink是一整套针对嵌入式模组开发套件。MoLink提供了模组多实例管理、模组功能适配并向开发者提供统一易用的API(应用程序接口)。
同时,OneOS OpenCPU模组方案完全兼容Molink API接口,通过统一的API接口实现MCU+模组和模组OpenCPU方案间应用代码的无缝迁移。
1.2 传统嵌入式模组适配开发难点及不便1)需要关注到具体的指令收发和解析并参与管理:
· 模组适配工作量大
· 调试复杂维护不便
2)不同厂商、型号间AT指令集存在差异:
· 切换不同模组周期长,工作量大
· 优化升级十分困难
1.3 MoLink对嵌入式模组适配开发的帮助管理方便:提供统一的模组管理,支持多模组多线程。
开发简单:接口简明易用,专注业务功能开发。
上手即用:适配主流模组,免除繁杂适配工作。
功能丰富:适配云平台连接等复杂功能。
快速切换:统一应用程序接口,模组一键切换。
提供套接字编程接口(部分)。
MoLink框架从上至下分为4层,分别为:
1)抽象接口层:提供通用控制、网络服务、网络连接、套接字、Wi-Fi管理等多种接口的定义及高层实现
2)核心层:提供Molink模组对象定义、模组实例的管理及其他关键部分实现
3)模组适配层:提供各种型号通信模组的抽象接口层各种接口的适配函数实
4)AT 解析器:可选模块,MCU架构下的模组适配通过AT解析器接管串口等设备并与与通信模组进行AT指令通信
2.1 MoLink能力介绍
MoLink代码结构目录如下:
MoLink拥有以下能力:
1)实例的管理功能,包括创建、获取、删除等功能;
2)通用控制功能,包括获取IMEI号码,获取ICCID号码等功能;
3)网络服务功能,包括附着、注网、获取信号质量等功能;
4)TCP/IP,包括基础的TCP/UDP连接的创建、连接、发送、接受、断开连接等功能;
5)Soker套接字功能,基于TCP/IP相关接口的基础,封装套接字接口,向上可由net/socket组件开启并支持标准BSD socker接口;
6)调试功能,包括ifconfig、ping等操作。
硬件支持
本次开发使用的是正点原子潘多拉开发板,采用超低功耗高性能的主控制器 STM32L475,板载1.3寸 TFT显示屏,集成STLink,多样化的扩展接口使其可连接多种模块如蓝牙、Lora、GPS等,硬件资源丰富。
模组选择的是ML302,ML302 是中国移动最新推出的 LTE Cat.1 模块。ML302 支持 TD- LTE/FDD- LTE 通信制式,具有丰富的 Internet 协议、行业标准接口和功能,支持 Windows、Linux 和 Android 驱动。
本实验中,潘多拉开发板的UART2和ML302的AT串口通过杜邦线相连(选杜邦线的原因真的是因为方便哈,并不是因为穷,虽然小编确实很穷≥﹏≤)。
软件获取
OneOS是中国移动针对物联网领域推出的轻量级操作系统,具有可裁剪、跨平台、低功耗、高安全等特点,支持ARM Cortex-M/R/A、MIPS、RISC-V等主流CPU架构,兼容POSIX、CMSIS等标准接口,支持Micropython语言开发,提供图形化开发工具,能够有效提高开发效率并降低开发成本,帮助客户开发稳定可靠、安全易用的物联网应用。小伙伴们可以通过码云下载代码体验。链接如下:
CMCC-OneOS
OneOS-Cube
3.2 配置与编译OneOS-Cube配置
MoLink组件相对独立,在使用时,只需要在menuconfig中开启Molink组件即可。在Components → Network → Molink→ Modules中,选择4G CAT1 Modules 中的ML302模组。
我们看到,进入ML302 Module选项后,第一个就是自动创建模组选项;在一般情况下,选择自动创建模组,配置好串口号,波特率,最大AT命令接收长度选项;
可是,也晓得有的小伙伴就是不想自动创建模组,要自己动手,丰衣足食,那么直接撸代码,创建一个模组对象。
首先,我们要调用os_device_find()函数,找到对应的串口,然后再配置波特率、最大AT命令接收长度选项等选项,最后调用mo_create()来创建模组。
同时,打开Molink 目录下的Tools,里面有我们调试的小工具,有ifconfig 、ping、socket stat等功能,后面有用到哦。
编译与下载
进入projects\stm32l475-atk-pandora目录,打开OneOS-Cube命令行,执行命令scons --ide=mdk5生成并更新keil项目工程文件,双击project.uvprojx,打开MDK工程,点击左上角的Build按钮,等待编译完成。当看到0 Error(s), 0 Warning(s)的输出时说明编译完成。
确保潘多拉开发板已和电脑相连接。此时点击左上角的Download按钮,将程序下载到开发板中。但看到Programming Done. Flash Load finished则表明程序已经烧写成功。
这时,小伙伴们就可以使用Molink组件的功能啦。我们可以直接在自己的应用程序中调用接口,也可以使用我们提供的shell命令。
3.3 MoLink快速联网入网检测
当程序下载成功后,把程序跑起来;通过串口助手连接潘多拉的调试串口,可以发现了Molink的第一个特点:屏蔽底层模组,在创建模组对象后自动驻网。
所以,不管你是自动创建模组对象,还是手动创建,都是创建时自动驻网,就不需要你对着模组AT手册一步一步的发送AT指令去驻网了,是不是很棒呢?
当然,我们要确定模组是不是真的驻网成功,还可以通过小工具校验,这就是我们上面选择tools的小工具哦。可以通过ifconfig,查看模组是否获取到本地IP,还可以查看信号强度,模组IMEI等信息。
ping的功能也很好用哦,是查看网络畅通与否的最佳小助手。
快速连网
入网成功后,要开始连网。这里也有两种选择,调用Molink的原生接口,或者走socket接口。如果要走socket接口,注意在Module选项里勾选BSD socket相关选项哦。
如果调用Molink的原生接口,首先调用mo_netconn_create()创建连接对象,接着调用mo_netconn_connecte()与对应的IP和端口建立连接,此时连网完成。验证一下发送和接受功能,调用mo_netconn_send()发送数据,再调用mo_netconn_recv()接受数据,两相比较,发送数据和接受数据一致,通过验证,该网络链路可以正常使用,快速连网完成。
(PS:为了方便验证,此次我们测试的IP端口是接收什么消息就回复相同消息,小伙伴们可以作参考哦)
如果使用socket接口,首先调用mo_socket()创建socket,接着调用mo_connecte()与对应的IP和端口建立连接,并且调用mo_setsockopt()接口设置接收超时时间,此时连网完成。
测试代码与上面代码相同,只是发送和接受函数略有变化,小伙伴可以自行研究其中的奥秘哦。
常见问题Q): 如果模组创建后驻网失败怎么办?
A): 模组创建时候会主动驻网,但如果因为网络环境较差,或者其他原因没有驻网成功,可以使用以下步骤进行重新驻网哦。其中test_module是创建的模组对象,cid是你打算激活的第几路id,一般默认为1。
Q): Molink传输速率如何?
A): Molink的传输速率主要和两个因素有关。第一个是串口波特率,一般串口波特率默认为9600,或者115200,所以导致在高速4G网络传输情况下,因为串口速率满足不了而导致丢失数据;第二就是模组本身特性,如NB模组本身就是应对低速率的环境,高速速率传输问题较大。
Q): 是否适配或者计划适配5G模组?
A): 5G模组适配已经纳入规划。因为目前Molink走的都是串口通信,5G网络的高速率无法通过串口实现;目前正在计划使用USB做AT通信,小伙伴们请拭目以待哦。
Q):Molink 默认配置下存在数据丢失情况?
A): 在OneOS操作系统中串口缓存区的大小默认为64bytes,如果使用Molink组件则建议将串口缓冲区调大(建议调为2048)。
更多关于MoLink的介绍,可以去OneOS学院查看哦!
作者: OneOS, 来源:面包板社区
链接: https://mbb.eet-china.com/blog/uid-me-3976404.html
版权声明:本文为博主原创,未经本人允许,禁止转载!
文章评论(0条评论)
登录后参与讨论