跳转至

4G 模组应该怎么用?

一、为什么会有4G模组这么个产品?

1, 4G 网络覆盖最完整

因为4G网络是当今社会覆盖最完善的网络,

无论是中国,还是全球,4G网络都是在未来10年覆盖最完善的网络。

全球很多国家和地区,还在努力发展4G网络的覆盖。

中国的4G网络, 当前覆盖非常完善,全国各地几乎没有4G网络的盲区。

在未来的10年, 4G网络都是最适合物联网通信的最佳技术。


2,解决通信方案复杂性太高

4G通信涉及到射频系统的设计,涉及到协议栈的技术,涉及到应用层和通信底层的适配和交互,

这些技术,对于用户来说, 完全没必要去研究和掌握。

用户只需要关注自己的业务, 把4G通信用好,完成通信功能就可以了。

而 4G 模组,就是做这个事情的。

4G 模组集成了射频元器件, 完成了固件的易用性的开发,

4G 模组集成了远程升级服务,集成了位置服务,集成了故障诊断的工具,

4G 模组提供了完善的开发工具链,还有非常非常详细的开发文档。

4G 模组让用户能够无需了解 4G 通信的详细技术,就可以无痛享受到 4G 模组的便利。

使用了 4G 模组之后,用户只需要关心赚钱就可以了,不用再过度的关心繁琐的4G通信技术细节。

更进一步,如果你连使用 4G 模组都嫌麻烦, 模组厂家甚至还给你提供通信透传的整体方案,

让你把通信单元做成即插即用的配件, 这就更进一步的节省你的时间,让你聚焦赚钱了。

所以, 4G 模组,就是让你尽量少研究通信技术的细节,让你把更多时间用来做业务,帮你赚钱的工具。


二、4G 有哪几种使用的界面

从技术架构上来分类, 4G 模组提供了至少三种使用界面:

AT 命令的使用界面, 二次开发的使用界面, 网卡上网的使用界面。

这几种使用界面, 有不同的适用范围,也有不同的优点。

下面,我就详细的分别做解释。


三、AT命令的使用界面

AT 命令是一种古老的使用方式,从有线通信就开始使用了。

距离到2024年的今天, 已经有超过40年的使用历史。

AT 命令的使用场景是,把4G模组当做一个黑盒配件,设备必须有一个主控CPU。

设备的主控CPU, 通过串口,(也可以是SPI或者USB,但是99%的场景都是通过串口),发送一个 "AT"字符串开头的指令, 向4G模组请求各种服务。

4G模组完成服务后, 回复一个字符串,向主控CPU做应答。

通过这样一系列的发送请求,应答的交互方式, 使设备具备了通信能力。

AT 命令发展到今天, 功能日趋完善。

厂家的 4G 模组的 AT 指令至少具备如下完善的功能:

  • 1, 基本的网络查询指令 信号强度查询,运营商查询,SIM卡状态查询,IMEI 查询,注册网络状态查询,等等;

  • 2, 各种通信协议的支持 TCP/UDP协议, HTTP协议,SSL协议,FTP协议,MQTT协议,等等;

  • 3, 模组内部资源的使用 电话本,文件系统的存入,删除,查询,等等。

尽管 AT 使用起来很便利,但是 AT 指令方式依然有几个明显的缺点:

  • 1, 运行效率低 只能是两个物理CPU通过串口这样的介质做异步通信, 沟通效率很低,如果要做高效的业务和通信的整合动作的话, 代价更大。

  • 2, 需要一个额外的主控CPU

    对于复杂度不高的物联网设备,虽然4G模组本身的运算资源和存储资源已经过剩, 但是为了使用 AT 指令,依然需要一个额外的主控CPU。

    为了节约成本,主控CPU往往会选择一个资源不太大的型号,通常无法运行高级语言, 所以往往要用C语言开发业务逻辑。

    这需要研发团队熟悉主控CPU 的开发架构,仍然是一个不小的学习成本。

    而 4G 模组因为资源足够大, 大多数 4G 模组已经支持脚本开发应用了,

    所以省掉设备主控 CPU,直接用 4G 模组开发应用, 研发成本更低。

尽管 AT 指令有这些缺点, 但是由于 AT 指令有庞大的用户群, 基于使用的惯性, AT 指令在今天仍然有非常大的使用比例。


四、二次开发的使用界面

由于 4G 的通信系统比较复杂,所以在 4G 模组内部, 一定会选择一款能力足够强的CPU,

用来应对各种复杂的4G 场景。

这样,仅仅是 CPU 设计的冗余度导致剩下的运算资源和存储资源, 就足够开发绝大多数的物联网应用了。

所以, 4G 模组的二次开发方式, 更适合用户在研发物联网设备的时候,

把 4G 模组作为主控,直接在 4G 模组内部开发应用。

4G 模组的二次开发方式, 有基于 C语言的开发方式和基本脚本语言的开发方式两种。

下面分别给大家做介绍。


(一)基于 C语言的二次开发界面

4G 模组内部的软件架构, 无一例外全都是用 C语言开发的, 只是在底层用了少量的汇编语言。

所以,很自然的, 让用户使用 C 语言开发应用,是比较顺理成章的。

但是, C语言虽然功能极其强大, 运行的效率极高,但是 C语言却有更加致命的缺陷,

导致C语言无法在物联网行业普遍采用:


1, 需要用户自己做内存管理

 做内存管理,需要用户了解堆和栈的运行原理,需要用户自己申请内存,释放内存,

 在使用过程中保证内存不能越界。

 这些技术细节, 非常牵扯研发者的精力,稍不注意,就会造成内存越界, 设备死机。

 而这些死机的 bug, 由于调试手段都比较难, 所以很难纠错。

2, 用户需要自己搭建编译环境

C语言是编译语言, 用户必须自己搭建编译环境。

尽管这个动作并不是太难, 但是每次修改代码都需要编译,烧录,调试,

还是会非常浪费研发者的时间。

3, 调试代价高

C语言的调试手段, 一般是有两种, 第一个是查看打印的log, 第二个是查看堆栈的dump信息。

而 C语言软件的大多数错误,都是由于内存使用不当引起的。

无论是打印log, 还是查看堆栈的信息, 对于查出来内存使用不当的错误,

都需要比较高的调试水平,这就是一个非常高的门槛。


4, 模组厂家的技术支持代价大

由于以上的3点, 你已经能感受到,模组厂家要让客户能够很方便的用 C语言开发的话,

要提供完善的编译工具链,调试工具链,内存dump工具链。

这还不够, 模组厂家还需要有一批熟悉这些工具链的工程师,具备高深的C语言调试的经验,

才能够对用户进行技术支持。

而模组厂家要面对几千几万的企业客户, 每个客户都提供这样的技术支持力度,几乎是不可能的。


5, 开发文档撰写难度大

要避免上面第4点提到的高昂代价的技术支持,就需要模组厂家给出非常强大的调试工具链,

还需要有非常非常详细的开发文档和调试指南的文档,

这些对于模组厂家来说,都是非常难做到的。

6,总结

基于以上的几点, 基于 C 语言的二次开发界面,现在都不是每个模组厂家的主流的二次开发界面,

只能是个别客户的二次开发界面。


(二)基于脚本语言的二次开发界面

  在 4G模组里面,内嵌脚本语言的虚拟机, 对4G 模组提供的各种服务进行封装, 
  通过脚本调用库的形式提供给用户。

  这样就有如下几个优点:

1, 用户无需关心内存分配

  脚本语言自带了内存管理和垃圾回收机制,在运行过程中自动进行内存管理和内存垃圾回收,
  用户再也不用关心内存是否越界,无需关心内存怎么分配怎么释放了,工作量大大减轻。

2, 多线程的编程更加简单

  脚本语言提供了非常简单的多线程的机制,用户不用关心多线程的细节,直接创建多线程任务,
  直接运行业务逻辑,非常适合 4G 通信设备这类实时多任务的应用场景。

3, 调试代价小

  因为不用编译, 通过解释语言运行应用,所以运行和调试是并行的, 调试起来非常方便。

4,工具链简单

  因为不需要编译,也不需要过多考虑内存管理,工具链只需要关注脚本的烧录,log 的输出,
  研发工作量大大减轻。

5, 产品文档工作量降低

  4G 模组通过脚本方式提供业务逻辑的开发, 产品文档也只需要关注怎么开发业务逻辑,
  不用关心内存管理。所以文档的复杂度也大大降低。

6,技术支持的难度降低

  脚本开发的门槛比 C 语言低很多,所以模组厂家的技术支持难度降低很多。
  通过完善的文档, 再加上门槛不那么高的技术支持,所以模组厂家就有可能服务几万家企业客户。


  上海合宙在成立之初,就开发了基于 Lua 脚本的开发界面。

  在 2016年,在合宙内部使用2年多之后,正式对外发布了LuatoS,

  这是一款基于 Lua 脚本语言的 LuatOS 开发界面。

  同时,上海合宙逐步完善了以 Luatools 为核心的工具链,同时完善了远程固件升级, 
  位置服务,TCPUDP 测试服务器,远程诊断工具,等等一系列的工具链。

  同时,合宙不断完善开发文档, 积累了10万的开发者,超过1万家的企业用户。

  合宙 10年的实践经验表明, 基于脚本语言的二次开发界面, 更适合 4G 模组的业务逻辑开发。

  而基于 C 语言的二次开发界面, 可以作为另一种二次开发界面的重要补充。

  未来 10年,上海合宙会两种开发界面并行,进一步为客户提供开发的便利。

五、基于网卡上网的使用界面

有些设备,主控运行的是linux 或者安卓系统,这些系统, 有非常完善的网络适配层,

可以直接插入一个网卡, 主控不需要做额外的开发,也非常便利。

这时候, 4G 模组把自己模拟为一个标准网卡, 通过 RNDIS 方式,或者是通过 ECM 方式,

或者是通过 PPP方式, 跟主控实现即插即用的无缝配合。

上海合宙的 Air780ER 模组, 就是提供这样的功能。

这种使用界面, 是以主控为主,4G模组做配合的方式,对于仅仅上网的场景,非常便利。


六、总结

4G模组作为一个方便物联网设备的生态产品, 提供的通信能力和控制能力不仅要稳定,

还要用户友好。

无论是 AT开发界面,二次开发的界面,还是网卡界面,都是要根据你自己的需要,

做最合适的选择。