lora模块往往会内置相关的传感器产品,比如rak7204是一个温湿度的lorawan传感器产品,他就内置了多种环境传感器,可以采集温度、湿度、气压及室内空气质量参数。
不同的用户、不同的应用场景,可能会导致用户对于该节点的收发数据的实际需求并不相同。
通常作为一个嵌入式工程师开始去开发一款物联网产品,对于物联网模块的选择,通常有几种方式,包括串口at命令,串口透传,如果希望获得更低的功耗和更优的成本,就可以选择使用模块内置的mcu做自己的应用程序。
但是,openmcu的方式需要模块供应商具备很强的sdk整合能力和良好的支持文档,比如瑞科慧联公司就具备多款lora模块允许用户进行二次开发,并且,还提供了多个经低功耗设计的二次开发应用实例,可以帮助用户实现更低的系统成本和更低的系统功耗。用户可以参考这些实例,并根据自己的实际需求来对这些实例略作修改,就可以实现自己的应用目的。
本文针对初次使用lorawan模块产品并希望用openmcu方式做二次开发的开发者们,介绍了lora模块模块二次开发的具体步骤。
在物联网模块内部做二次开发有两种方式,通常的做法是集成一个可以做开发的sdk,根据sdk的一些配置接口去实现自己的应用程序,但是这个做法需要用户对于物联网模块内部的mcu的开发环境有一定的熟悉才可以实现高效的开发。瑞科慧联(rak wireless)提供一个新的方式帮助开发者实现利用内部的mcu做二次开发。瑞科慧联针对lorawan的协议栈封装出来多种面向场景的api, 用户只需要了解api的用法,编写自己的应用程序,通过一个基于web的在线编译平台得到自己的开发,这个在线编译器,相当于就是,开发者只需要编写具体的应用部分,然后将主程序,传上去之后,编译好了,平台输出一个可执行文件,即完成全部开发过程。
图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的lora模块上进行二次开发,可以参考供应商提供的二次开发实例,这些二次开发实例往往是经过低功耗设计的,因此,用户不仅可以节约大量开发时间、无需另外购置部件,从而节约大量成本,还可以通过这些经过低功耗设计的二次开发应用实例,来实现更低的系统成本和更低的系统功耗。
开关电源中如何选择合适的电感?
华硕推出一款名为“无边框套装”的新产品,高端游戏玩家的福音!
华为已准备好面对任何额外的安全评估以继续参与中东欧的5G竞争
亚马逊日本分公司已恢复华为产品的正常销售
linux系统查看ip地址命令
LoRa模块二次开发入门篇
天津市发布机器人产业发展三年行动方案
iPhone5供应链成本曝光:富士康代工成本占41%
基于4.5G的蜂窝IoT引领物联网市场新繁荣
怎么解决网络打印机MAC冲突问题
“给每个梦想一个机会”源自于节目赞助方拉卡拉所创立的“公益梦想基金”诚意之作!——拉卡拉跨界手环
超级芯片GH200发布,AI算力是H100的两倍
专注4G手机/网络基础设施/物联网,Qorvo致力攻克射频复杂性问题
2018年中国低压电器行业竞争格局及发展趋势分析 国产品牌崛起势不可挡
jvm调优参数
与互联网行业比,为何运营商裁员总笼罩“阴霾”?
HAL库GPIO在cubemx中的配置及注意事项
人工智能技术的巨大潜力,需更多监督
国产首款数字信号处理器魂芯二号A正式发布
区块链商业应用平台公有链项目才链Talust介绍