1 前言
最近Semtech发布了一个新代码,LoRa Basics™ Modem-E,简称LBM-E。其实并不是首次发布,只是根据市场需求,改动部分功能,版本号为V2,上一版为V1。
那么什么是LBM-E?首先,LBM-E所使用的协议是LoRaWAN。其次,是与Semtech的另一套LoRaWAN代码(名为LBM)相对应的,LBM-E是将LoRaWAN协议封装成固件,flash到Semtech的LR1121芯片内,减少MCU资源占用,而LBM的整个LoRaWAN协议源码都是开放的,但需要占用MCU资源。
2 介绍
2.1 为什么开发LBM-E?
- 可降低开发者的难度。因为LoRaWAN是一套复杂的协议,可以参考Semtech出另一套代码“LBM”,优点是完全开放源码,缺点是使用者移植、开发、调试比较有难度,特别是调试,很容易陷到协议中。而LBM-E是将协议层封装放到了radio芯片中,对使用者只开放API,让使用者无需关心协议层,在移植、调试时只需要关注应用层API即可。
- 降低使用者价格成本。LoRaWAN协议栈本身需要占用比较多的flash和RAM,但如果使用LBM-E,协议栈使用radio的资源,减少了所用MCU的资源。这对有些做低功耗节点时,MCU资源较小的项目来讲是很有用的。
2.2 LBM-E V2的功能
- V2只支持LR1121,而V1只支持LR1110的。V2移除了关于定位的功能,也就是GPS和WIFI的定位,LR1121没有GPS和WIFI的定位,这也是LR1110与LR1121的区别之一。
- V2支持2.4G的LoRaWAN,因为LR1121支持sub-G和2.4G,而LR1110只支持sub-G,所以V1不支持2.4G。
- V2支持FUOTA和Relay功能。
- V2支持所有regions,像AS915、CN470_RP_1_0等。
- V2新开发了一个Modem-E Interpreter工具,运行在STM32L476,通过此工具可以发送一些指令来实现入网、修改参数等基本所有功能,方便测试。此工具是用MicroPython语言开发的,目前只提供了bin文件,如果想移植到其他MCU的话,就需要源码了,源码可以向Semtech申请试试看。
其他功能:
- LoRaWAN 1.0.4 specification。
- 所有LoRaWAN区域参数。
- LR-FHSS。
- Class A/B/C.
- Muti-cast class B/C.
- Relay。
- Carrier Sensing Multiple Access (CSMA)
- Pre-configured ADR profiles
2.3 资源链接
开发LBM-E V2所需要的资源链接都在Semtech的官方github上,如下:
- LBM-E主仓库:https://github.com/Lora-net/LoRa_Basics_ModemE 。
- LBM-E的firmware,需要flash到LR1121里:https://github.com/Lora-net/radio_firmware_images/tree/master/lr1121/modem。
- LR1121 Modem-E drivers,也就是对外API:https://github.com/Lora-net/lr1121_modemE_driver
。 - Modem-E example codes,提供的例子:https://github.com/Lora-net/ModemE_application_examples。
- Command Interpreter for PC,命令行的测试工具:https://github.com/Lora-net/ModemE_command_interpreter。
3 小结
LBM-E是基于LoRaWAN协议的固件,需要flash到LoRa芯片LR1121内部,可降低使用者开发难度,减少所用MCU资源。但相对于LBM代码,LoRaWAN协议部分的源码使用者不可见,无法更改协议。另外,LBM支持Semtech的全系列芯片,而LBM-E V2只支持LR1121。总而言之,两套代码各有优缺点,使用者可根据项目需求和条件自行选择,毕竟适合自己的才是最好的。