LoRa模块二次开发入门篇

今日头条

1142人已加入

描述

LoRa模块往往会内置相关的传感器产品,比如RAK7204是一个温湿度的LoRaWAN传感器产品,他就内置了多种环境传感器,可以采集温度、湿度、气压及室内空气质量参数。

不同的用户、不同的应用场景,可能会导致用户对于该节点的收发数据的实际需求并不相同。

通常作为一个嵌入式工程师开始去开发一款物联网产品,对于物联网模块的选择,通常有几种方式,包括串口AT命令,串口透传,如果希望获得更低的功耗和更优的成本,就可以选择使用模块内置的MCU做自己的应用程序。

但是,OpenMCU的方式需要模块供应商具备很强的SDK整合能力和良好的支持文档,比如瑞科慧联公司就具备多款LoRa模块允许用户进行二次开发,并且,还提供了多个经低功耗设计的二次开发应用实例,可以帮助用户实现更低的系统成本和更低的系统功耗。用户可以参考这些实例,并根据自己的实际需求来对这些实例略作修改,就可以实现自己的应用目的。

本文针对初次使用LoRaWAN模块产品并希望用OpenMCU方式做二次开发的开发者们,介绍了LoRa模块模块二次开发的具体步骤。

在物联网模块内部做二次开发有两种方式,通常的做法是集成一个可以做开发的SDK,根据SDK的一些配置接口去实现自己的应用程序,但是这个做法需要用户对于物联网模块内部的MCU的开发环境有一定的熟悉才可以实现高效的开发。瑞科慧联(RAK Wireless)提供一个新的方式帮助开发者实现利用内部的MCU做二次开发。瑞科慧联针对LoRaWAN的协议栈封装出来多种面向场景的API, 用户只需要了解API的用法,编写自己的应用程序,通过一个基于Web的在线编译平台得到自己的开发,这个在线编译器,相当于就是,开发者只需要编写具体的应用部分,然后将主程序,传上去之后,编译好了,平台输出一个可执行文件,即完成全部开发过程。

LoRa

图1   以RUI方式进行OpenMCU二次开发的流程图

1、了解RUI的构成和RUI API的用途。

基于RUI开发的固件,由两部分组成:RUI SDK,以及Application,如本文图1所示。

其中,RUI SDK部分为RUI的内核,已经适配了RAK的LoRaWAN模块产品,同时向上提供一组统一的RUI API,供Application部分调用。

RUI API的用途和用法介绍,请参考RUI API手册(可以在瑞科慧联的官网上,公司官网->资源->文档中心,这样的方式可以获取到所有产品的手册)。

注:1) Application是开放源码的,用户可以对其进行二次开发,按照自己的应用逻辑进行修改,需要的底层功能支撑都有相应的RUI API可以调用。

2)RUI SDK部分是非开放源码的,它被放置于RUI在线编译器中,当用户完成Application部分的二次开发并使用RUI在线编译器进行编译时,RUI SDK会被自动加载到定制化固件中。

2、 对照RAK瑞科慧联在Github上的RUI产品开发实践代码,了解RUI API的用法。

RAK的LoRaWAN模块及衍生产品,其官方发布的固件所对应的Application代码,均可以在RAK的Github中找到。

图2是Github上的文件的示例:

LoRa

图2   瑞科慧联发布在Github上的固件所对应的Application代码文件存放示例图

可以看到,这个代码仓是按照核心模块的型号来分目录的。我们只需要找到对应的核心模块目录,就可以看到基于该模块的一些产品实践代码了。

以LoRaWAN模块RAK811为例,如图3所示,当我们进入到“based on RAK811”目录后,可以看到一些基于RAK811模块的产品实践示例,这些代码展示了如何基于RAK811模块增加一些外设和传感器,通过这些示例代码可以让开发者更快了解如何通过RUI加载传感器:

LoRa

图3  瑞科慧联在Github上的LoRaWAN模块RAK811的产品实践示例目录图

其中,

1) “app_5205”是LoRaWAN追踪器模块RAK5205的官方固件所对应的Application源码,文件夹目录示例如图4所示。

LoRa

图4  瑞科慧联在Github上的LoRaWAN追踪器模块RAK5205的产品实践示例目录图

LoRaWAN追踪器模块RAK5205是基于RAK811模块,增加了环境监测传感器(BME680)、三轴加速度传感器(LIS3DH)、以及GPS模块(Ublox MAX 7Q)。该目录中的代码示例展示了如何基于RAK811模块,通过I2C挂接其它sensor以及通过UART挂接GPS模块,并通过RUI API调用的方式完成定制化固件的开发。

2) “app_7204”是RAK7204的官方固件所对应的Application源码,包括RAK7204的传感器驱动、AT命令实现、应用逻辑处理等,都在这里(如图5所示),这里面使用了很多RUI API,用于实现相关功能。

LoRa

图5  瑞科慧联在Github上的LoRa模块RAK7204的产品实践示例目录图

LoRa模块RAK7204是基于RAK811模块,增加了环境监测传感器(BME680)。因此,可以通过该产品实践代码了解到如何基于RAK811模块增加一款I2C的传感器,并通过RUI API的调用,快速完成定制化固件的开发。例如,图5中红色长方形圈出来的文件“app_7204.c”是应用逻辑处理的实现,如果要做应用逻辑的定制开发,可以重点对照这里面的代码来理解RUI API的实际用法。 

3)  “app_PT100_Digital_Pressure_Sensor”是基于RAK811模块,增加一款液压传感器PT100.

4) “app_RAK811”是RAK811模块的官方固件所对应的application代码,如果想要修改RAK811模块的工作逻辑和流程,可以基于该实例代码进行修改。

3、 从RAK Github上的RUI产品开发实践代码中挑选一个合适的实例代码,并在它的基础上进行修改,按照实际应用需求进行二次开发。

RAK Github上的这些产品开发实践代码已经实现了Application的主体部分,基于它进行代码修改和二次开发将事半功倍。

例如,图5所示的RAK7204示例代码对于节点收到的LoRa下行数据,只是将其通过串口打印出来,并未做处理,这一点可以从图6所示的”app_7204.c”文件中的代码看出:

LoRa

图6  瑞科慧联在Github上的LoRa模块RAK7204的app_7204.c代码示例

如果你希望自己的定制化固件中对LoRa的下行数据进行处理,可以通过修改该函数的代码实现来达成目标。

4、 完成二次开发后,使用RUI的在线编译器进行编译,得到最终的定制化固件。

RUI是瑞科慧联深度优化的IoT端侧软件工具。完成Application部分的定制化开发后,就可以使用RUI的在线编译器进行编译了,编译的界面如图7以及图8所示。

LoRa

图7  瑞科慧联RUI的使用界面之登录界面

图8  瑞科慧联RUI的使用界面之选择产品型号

如前所述,编译时,编译器会自动将Application和RUI SDK进行加载并编译都一起,输出最终的定制化固件。

RUI在线编译器的网址可以参见产品使用文档的说明。可以用邮箱自行注册并使用,详细的使用方法请参见RUI在线编译器的使用说明文档。

5、 将编译出的定制化固件烧写到RAK物联网终端产品中并使用

OK,经过前面的步骤,你已经编译得到了最终的定制化固件二进制文件了,现在可以将它烧写到产品中进行使用了。烧写固件的方法,在对应的产品使用文档中都有详述,此处不再复述,可到瑞科慧联的官网中文档中心(官网->资源->文档中心),查找对应的产品使用文档,按照产品使用文档中的操作步骤执行即可完成固件烧写。

三、总结

直接在内置OpenMCU的LoRa模块上进行二次开发,可以参考供应商提供的二次开发实例,这些二次开发实例往往是经过低功耗设计的,因此,用户不仅可以节约大量开发时间、无需另外购置部件,从而节约大量成本,还可以通过这些经过低功耗设计的二次开发应用实例,来实现更低的系统成本和更低的系统功耗。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分