打印

LoRaWAN节点OpenMCU二次开发攻略

[复制链接]
915|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 RAK瑞科慧联 于 2020-5-29 11:17 编辑

LoRaWAN节点往往会内置相关的传感器产品,比如RAK7204就内置了多种环境传感器,可以采集温度、湿度、气压及室内空气质量参数。
不同的用户、不同的应用场景,可能会导致用户对于该节点的收发数据的实际需求并不相同。
然而,LoRaWAN节点的供应商往往无法预测所有用户对节点的具体的收发数据的需求,因此,有的供应商就会采取OpenMCU的方式,允许用户对已有的LoRaWAN节点模块进行二次开发来实现目的。
比如瑞科慧联公司就具备多款LoRaWAN节点允许用户进行二次开发,并且,还提供了多个经低功耗设计的二次开发应用实例,可以帮助用户实现更低的系统成本和更低的系统功耗。用户可以参考这些实例,并根据自己的实际需求来对这些实例略作修改,就可以
实现自己的应用目的。

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


一、确认该模块是否支持LoRaWAN
需要做的第一件事情,就是确认该模块是否支持LoRaWAN。这个可以参见各个产品的使用手册。

二、LoRaWAN节点模块OpenMCU二次开发主要流程
我们以RAK的LoRaWAN节点模块为例,来说明LoRaWAN节点模块OpenMCU二次开发的主要流程。该主要流程如下图(其中,RUI是RAK瑞科慧联公司提供的深度优化的IoT端侧软件工具,适用于RAK的LoRaWAN节点模块的二次开发):
主要流程如图1所示:
图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上的文件的示例:
图2   瑞科慧联发布在Github上的固件所对应的Application代码文件存放示例图


可以看到,这个代码仓是按照核心模块的型号来分目录的。我们只需要找到对应的核心模块目录,就可以看到基于该模块的一些产品实践代码了。
以LoRaWAN模块RAK811为例,如图3所示,当我们进入到“based on RAK811”目录后,可以看到一些基于RAK811模块的产品实践示例,这些代码展示了如何基于RAK811模块增加一些外设和传感器,通过这些示例代码可以让开发者更快了解如何通过RUI加载传感器:
图3  瑞科慧联在Github上的LoRaWAN模块RAK811的产品实践示例目录图

其中,
1) “app_5205”是LoRaWAN追踪器模块RAK5205的官方固件所对应的Application源码,文件夹目录示例如图4所示。
图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,用于实现相关功能。
图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”文件中的代码看出:
图6  瑞科慧联在Github上的LoRa模块RAK7204的app_7204.c代码示例

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

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

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

如前所述,编译时,编译器会自动将Application和RUI SDK进行加载并编译都一起,输出最终的定制化固件。
RUI在线编译器的网址可以参见产品使用文档的说明。可以用邮箱自行注册并使用,详细的使用方法请参见RUI在线编译器的使用说明文档。

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

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


使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

66

主题

68

帖子

0

粉丝