Core1121-HF 使用教程

说明

产品简介

本产品是一款远距离、超低功耗的收发器,支持 ISM 子 GHz(150–960MHz)、全球 2.4GHz 频段以及 1.9–2.1GHz 卫星频段,适用于地面和卫星通信应用。其支持 LoRa®、(G)FSK 以及 LR-FHSS 调制方式,可用于 LoRaWAN® 标准网络或私有协议,满足 LPWAN 应用需求。LR1121 集成了一个低功耗多频段射频前端,具备极高的频段配置灵活性。

产品特性

  • 采用 Semtech LR11xx 系列中的第三代超低功耗 LoRa® 收发器 LR1121
  • 支持 Sub-GHz(150–960 MHz)、S 频段(1.9–2.1 GHz)和 2.4GHz ISM 频段
  • 通过 LoRa 或 LoRaWAN 协议结合网关接入云端,构建低功耗广域网络
  • 支持 LoRa、(G)FSK、LR-FHSS 调制方式,与 SX126x/SX127x 频段兼容,便于产品升级
  • SPI 接口通信,支持主流 MCU 平台,便于集成和移植
  • 集成 AES-128 加密引擎,提升数据安全性
  • 支持 TCXO 晶振,确保在高低温工况下频率稳定
  • 适用于工业遥测、智能家居、环境监测、远程数据采集等 IoT 应用场景
  • 提供完善的配套资料手册 (ESP32、树莓派、STM32、Raspberry Pi Pico 等示例程序和使用手册等)

产品参数

版本型号Core1121-HFCore1121-LF
射频特性
射频芯片LR1121
工作频段850 ~ 930MHz410 ~ 510MHz
1900~2100 MHz、2400~2500MHz
信号调制LoRa、(G)FSK、LR-FHSS
通信速率LoRa:0.091 ~ 62.5Kbps
(G)FSK:0.6 ~ 300Kbps
发射功率-9~22dBm@Sub-GHz 频段,-18~13dBm@ISM 频段
接收灵敏度-127dBm@Sub-GHz 频段,SF=7,CR4_5,BWL=125KHz
-111dBm@ISM 频段,SF=7,CR4_5,BWL=800KHz
参考通信距离Sub-GHz 频段,5km
ISM 频段,2km
扩频因子SF5 ~ SF12
电气特性
工作电压3.3V(最高3.8V)
逻辑电压3.3V(其他逻辑电平需要搭配电平转换器)
模组耗流发射电流:115mA@22dBm Sub-GHz 、25mA@13dBm ISM
接收电流:9.2mA@125KHz Sub-GHz 、8.1mA@125KHz ISM
硬件特性
通信接口SPI
晶振TCXO 32MHz
天线接口IPEX-4或者邮票孔(邮票孔需要额外操作,具体查看wiki资料)
天线保护TVS保护
工作温度-40 ~ 85℃
接口类型邮票孔/排座,间距 2.54mm
尺寸19.00 × 22.00mm

  • 模组的逻辑电平为3.3V,如果使用5V的IO电平,需要经过电平转换,否则模组会损坏
  • 模组的通信速率受频偏、前导码等参数影响
  • 通信距离在开阔环境中可实现更远的通信距离。

硬件选型


引脚说明


  • *_ANT 引脚为天线引脚, 如果需要使用,需要拆下IPEX-4的连接器,焊接上0Ω 0201电阻,才可以使用,否则将悬空,如下图:


通信介绍

LR1121 提供了一套 API,允许主控控制器通过一系列 SPI 命令/响应与 LR1121 通信。BUSY 信号 用作握手机制,用于指示 LR1121 是否准备好接收命令。因此,在发送命令之前,必须先检查 BUSY 的状态。

  • 写命令
    • 在写命令过程中,LR1121 会通过 MOSI 引脚将状态寄存器和中断寄存器返回给主控,这取决于命令操作码和参数的长度。
    • 主控会先发送一个 16 位的操作码(opcode),然后再发送所需的参数。
    • 当 NSS 引脚出现下降沿时,LR1121 会自动拉高 BUSY 信号,表示正在处理命令。
    • 一旦 LR1121 完成命令处理,BUSY 信号会被释放(拉低),表示设备已准备好接收下一条命令。


  • 读命令
    • 特定的读取命令用于从 LR1121 获取数据,例如内部状态结果等。
    • 主控先发送一个 16 位的操作码(opcode),如有需要,再附加参数。
    • 在 NSS 引脚出现下降沿时,BUSY 信号会自动拉高,表示 LR1121 正在准备数据。
    • 一旦数据准备完成,BUSY 信号会被释放(拉低),表示可以读取数据。
    • 此时,主控通过连续发送 NOP(0x00 字节)来从 SPI 中移出(读取)返回的数据。


产品尺寸


示例介绍

  • 本实例除 lr1121_firmware_update 、lr1121_read 与 lr1121_write,均是移植Semtech官网的lr11xx示例
  • Core1121-XF 示例程序
示例程序基础例程说明
lr1121_cad执行通道活动检测(CAD)- 仅限 LoRa
lr1121_firmware_updateLR1121 更新固件工具
lr1121_lr_fhss传输 LR-FHSS 格式数据包
lr1121_per执行数据包错误率 (PER) 测试 — Tx 和 Rx 角色
lr1121_ping_pong在两台设备之间启动数据交换
lr1121_read进入接收模式
lr1121_sigfox发送符合 Sigfox 标准的上行链路
lr1121_spectral_scan获取 RX 模式下的 inst-RSSI 值以形成热图
lr1121_spetrum_display获取 RX 模式下的 inst-RSSI 值,形成动态频谱曲线
lr1121_tx_cwTx 连续波模式
lr1121_tx_infinite_preamble传输无限前导码
lr1121_write周期性发送数据
lr1121_LoRaWAN简单的 LoRaWAN A 类应用程序

示例详细说明

  • 每个示例都有自己的一组参数,请参阅文件夹中的 .h 文件
  • lr1121_config 为配置文件 ,可以在其中设置参数,其中包括:
    • 数据包类型(PACKET_TYPE)
    • 射频频率(RF_FREQ_IN_HZ)
    • 输出功率(TX_OUTPUT_POWER_DBM)
    • 不同调制的数据包和调制参数

lr1121_cad

  • 该芯片在 LoRa 中执行 CAD 操作。将宏 PACKET_TYPE 定义为 LR11XX_RADIO_PKT_TYPE_LORA (在文件 ../../examples/lr1121_cad/lr1121_config.h 中)以使用此示例代码。
  • 在 CAD 测试中,有三种退出模式可供定义,以适应不同的用例。对于 LR11XX_RADIO_CAD_EXIT_MODE_STANDBYRC 模式,一旦完成,无论信道上是否存在活动,芯片都会返回到 STBY_RC 模式。对于 LR11XX_RADIO_CAD_EXIT_MODE_RX 模式,如果检测到活动,芯片将保持 RX 状态,直到检测到数据包或计时器达到 CAD_TIMEOUT_MS 定义的超时时间。对于 LR11XX_RADIO_CAD_EXIT_MODE_TX 模式,如果未检测到任何活动,芯片将转至 tx 模式。此模式实际上是 tx 模式的替代模式,因此在将芯片设置为 LR11XX_RADIO_CAD_EXIT_MODE_TX 模式之前,应预加载用于传输的有效载荷数据。
  • 可以在 lr1121_cad.h 头文件中更新几个参数:
    • CAD_SYMBOL_NUM:定义用于 CAD 检测的符号数量
    • CAD_DETECT_PEAK:定义 LoRa 调制解调器在尝试关联符号时的灵敏度
    • CAD_DETECT_MIN:最小峰值,用于滤除几乎没有信号或噪声的情况。
    • CAD_EXIT_MODE:定义 CAD 操作后要执行的操作
    • CAD_TIMEOUT_MS:仅当 CAD 使用 CAD_EXIT_MODE = LR11XX_RADIO_CAD_EXIT_MODE_RX 或 LR11XX_RADIO_CAD_EXIT_MODE_TX 执行时使用
    • USER_PROVIDED_CAD_PARAMETERS:设置为 true,将使用用户提供的 CAD 参数
    • DELAY_MS_BEFORE_CAD:CAD 检测之间的延迟

lr1121_firmware_update

  • 此示例用于更新LR1121的固件,升级成最新版,或者刷入LoRaWan固件,使其兼容LoRaWan的使用
  • 可以在 lr1121_firmware_update.h 头文件中解除注释相应的固件头文件,编译烧录后,主控将对LR1121进行固件更新,每次只能选择一个固件。
  • 不同开发平台使用的注释方式不同,以下面的例程使用说明为准

lr1121_lr_fhss

  • 应用程序将自动配置设备以在 LR-FHSS 中传输数据包。
  • 频率可以在 ../../examples/lr1121_lr_fhss/lr1121_config.h 头文件中更新
  • 可以在 lr1121_lr_fhss.h 头文件中更新几个参数:
    • TX_TO_TX_DELAY_IN_MS:两个传输数据包之间的时间延迟
    • LR_FHSS_BANDWIDTH:带宽
    • LR_FHSS_CODING_RATE:编码率
    • LR_FHSS_ENABLE_HOPPING:启用或禁用频率跳跃
    • LR_FHSS_GRID:跳频网格
    • LR_FHSS_HEADER_COUNT:头块数量
    • LR_FHSS_MODULATION_TYPE:调制类型

lr1121_per

  • 将用于执行 LoRa 和 FSK 调制解调器的 PER 测试。将宏 PACKET_TYPE 定义为 LR11XX_RADIO_PKT_TYPE_LORA 或 LR11XX_RADIO_PKT_TYPE_GFSK (在文件 ../../examples/lr1121_per/lr1121_config.h 中),以启用测试中的每个调制解调器。
  • 在 PER 测试中,设备可以设置为 TX 设备或 RX 设备。此外,还有宏用于控制编译。要将设备设置为 RX 设备,宏 ( RECEIVER ) 必须设置为 1;要将设备设置为 TX 设备,则将其设置为 0。如果设置为 RX 设备模式,此应用程序将自动启动 PER 测试接收,以接收 NB_FRAME 倍数的数据包。如果设置为 TX 设备,启动后它将无限发送数据包。
  • 有效载荷的第一个字节保留用于滚动计数器,该计数器将用于在 PER 统计中检测完全丢失的数据包。将计数器保留在第一个字节中可以实现最小有效载荷大小。接收方将检查有效载荷的其余部分,以确保接收到的数据包不是不需要的。per_msg 是一个用于保存此部分有效载荷内容的 per_msg 。如果 PAYLOAD_LENGTH (在 ../../examples/lr1121_per/lr1121_config.h 中定义)小于 1,则不会进行有效载荷检查,因为有效载荷中只有计数器。
  • 可以在 lr1121_per.h 头文件中更新几个参数:
    • RECEIVER:设置成 RX 或 TX 设备
    • RX_TIMEOUT_VALUE:接收超时值
    • TX_TO_TX_DELAY_IN_MS:两个传输数据包之间的时间延迟
    • NB_FRAME:将对数据包的数量进行每秒错误率(PER)测试

lr1121_ping_pong

  • 将设备设置为乒乓模式。
  • 示例代码将用于执行 LoRa 和 FSK 调制解调器测试。将宏 PACKET_TYPE 定义为 LR11XX_RADIO_PKT_TYPE_LORA 或 LR11XX_RADIO_PKT_TYPE_GFSK (在文件 ../../examples/lr1121_ping_pong/lr1121_config.h 中),以启用测试中的每个调制解调器。
  • 该应用程序可让设备在乒乓测试中工作在主设备或从设备模式。设备启动时会假设自己是主设备,并交替发送“PING”数据包和接收“PONG”数据包。当收到“PING”数据包时,设备会切换到从设备模式,然后发送“PONG”数据包并等待接收“PING”数据包。在从设备模式下,如果设备收到“非 PING”数据包,则会重置为主设备模式并重新开始之前的流程。
  • 可以在 lr1121_ping_pong.h 头文件中更新几个参数:
    • RX_TIMEOUT_VALUE:接收超时值

lr1121_read

  • 将设备设置成接收模式。
  • 示例代码将用于执行 LoRa 和 FSK 调制解调器测试。将宏 PACKET_TYPE 定义为 LR11XX_RADIO_PKT_TYPE_LORA 或 LR11XX_RADIO_PKT_TYPE_GFSK (在文件 ../../examples/lr1121_read/lr1121_config.h 中),以启用测试中的每个调制解调器。
  • 一直读取信息,可与另一台设备搭配 lr1121_write 进行测试

lr1121_sigfox

  • 此示例代码说明了符合 Sigfox 标准的上行链路的发送。
  • 当前有一个预定义的物理有效载荷(对应于“0x01”应用程序有效载荷)。
  • 要发送另一个有效载荷,可以更新 lr1121_sigfox.* 中的 sample0 数组和 SIGFOX_PAYLOAD_LENGTH 宏。
  • 可以在 lr1121_sigfox.h 头文件中更新几个参数:
    • TX_TO_TX_DELAY_IN_MS:两个传输数据包之间的时间延迟

lr1121_spectral_scan

  • 该应用程序通过将设备设置为 Rx continuous 模式并定期逐个频率通道读取瞬时 RSSI 来实现频谱扫描操作。对于每个通道,使用 GetRssiInst 函数对 RSSI 值进行 NB_SCAN 次采样。然后,芯片切换到下一个通道以重复相同过程。每个频率通道都有一个统计数据,以直方图的形式显示。在终端屏幕上,直方图显示为跟随相应频率值的数字数组。所有这些统计数据构成了电磁环境热图。在每个直方图统计数据中,每个数字代表直方图列的高度,数组的顺序表示 RSSI 值的范围从 0dBm 到 -128dBm。数组的长度取决于 RSSI 级别的比例 RSSI_SCALE 。X 轴表示背景电磁噪声级别,而 Y 轴表示结果位于级别槽中的可能性。
  • 举个例子。假设我们在终端中看到一行“INFO: 2400.000 MHz: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 76 8 0 0 0 0 0”。我们可以算出这个数组的长度是 33,所以是 RSSI_SCALE = (RSSI_TOP_LEVEL-RSSI_BOTTOM_LEVEL)/(33-1) = (0-(-128))/32 = 4dBm 。这相当于下面的直方图。
   0   0   0   0 ... 0   16  76  8   0   0   0   0   0
 ^
 |                            _
 |                           | |
 |                           | |
 |                           | |
 |                           | |
 |                        _  | |
 |                       | | | |  _
 | _____________._._.____| |_| |_| |__________________
 +-------------- ... -------------------------------------->
  /0dBm   /-8dBm ... /-96dBm /-104dBm/-112dBm/-120dBm/-128dBm
  • 示例代码将用于在 LoRa 和 FSK 调制解调器测试下进行测试,但如果带宽相同,则应该没有区别。将宏 PACKET_TYPE 定义为 LR11XX_RADIO_PKT_TYPE_LORA 或 LR11XX_RADIO_PKT_TYPE_GFSK (在文件 ../../examples/lr1121_spectral_scan/lr1121_config.h 中),以启用测试中的每个调制解调器。
  • 可以在 ../../examples/lr1121_spectral_scan/lr1121_config.h 头文件中更新几个参数:
    • PACKET_TYPE:设置将使用的调制解调器
    • LORA_BANDWIDTH:LoRa 数据包的带宽
    • FSK_BANDWIDTH:GFSK 数据包的带宽
  • 可以在 lr1121_spectral_scan.h 头文件中更新几个参数:
    • FREQ_START_HZ:进行扫描的第一个信道频率
    • NB_CHAN:需要扫描的通道数
    • NB_SCAN:每次频率扫描的扫描点数
    • PACE_S:线程中两次扫描之间的间隔秒数
    • WIDTH_CHAN_HZ:每个通道之间的宽度
    • RSSI_TOP_LEVEL_DBM:最高 RSSI 值,默认:0dBm
    • RSSI_BOTTOM_LEVEL_DBM:最低 RSSI 值,默认值:-128dBm
    • RSSI_SCALE:频谱扫描显示的 RSSI 标度

lr1121_spetrum_display

  • 该应用程序通过将设备设置为 Rx continuous 模式并定期逐个读取各个频道的瞬时 RSSI 来实现频谱显示操作。覆盖所有正在扫描频道的频谱将绘制在终端屏幕上。从 FREQ_START_HZ 定义的起始频道频率开始,将使用 GetRssiInst 函数为每个频道获取 1 个 RSSI 级别的采样点。收集所有频道 RSSI 值后,将在终端屏幕上绘制一条频谱曲线。该曲线将每 PACE_S 秒刷新一次,重复之前的步骤。
  • 以下是终端屏幕上显示的曲线示例。曲线底部表示扫描频段内天线周围的本底噪声。峰值表示哪些频道有射频活动。X 轴下方显示的频率框表示正在扫描的频段。Y 轴表示 RSSI 级别。
   ^
   0|
  -4|
  -8|
 -12|
 -16|
    .
    .
    .
 -76|
 -80|                          _
 -84|                    _    | |
 -88|                  _| |   | |
 -92|_                |   |   | |              _
 -96| |               |   |   | |             | |              _
-100| |               |   |   | |             | |             |
-104| |            _  |   |_._| |_     _     _| |             |
-108| |_._._._._._| |_|           |_._| |_._|   |_._._._._._._|
-112|
-116|
-120|
-124|
-128|
/dBmx------------------------------------------------------------>
    2400 --> 2406 MHz
  • 绘图功能需要 VT100 控制代码的支持。因此,为了正常运行此演示,需要一个支持 VT100 控制代码的终端(例如:MobaXterm)
  • 示例代码将用于在 LoRa 和 FSK 调制解调器测试下进行测试,但如果带宽相同,则应该没有区别。将宏 PACKET_TYPE 定义为 LR11XX_RADIO_PKT_TYPE_LORA 或 LR11XX_RADIO_PKT_TYPE_GFSK (在文件 ../../examples/lr1121_spetrum_display/lr1121_config.h 中),以启用测试中的每个调制解调器。
  • 可以在 ../../examples/lr1121_spetrum_display/lr1121_config.h 头文件中更新几个参数:
    • PACKET_TYPE:设置将使用的调制解调器
    • LORA_BANDWIDTH:LoRa 数据包的带宽
    • FSK_BANDWIDTH:GFSK 数据包的带宽
  • 可以在 lr1121_spectral_scan.h 头文件中更新几个参数:
    • FREQ_START_HZ:进行扫描的第一个信道频率
    • NB_CHAN:需要扫描的通道数
    • PACE_S:线程中两次扫描之间的间隔秒数
    • WIDTH_CHAN_HZ:每个通道之间的宽度
    • RSSI_TOP_LEVEL_DBM:最高 RSSI 值,默认:0dBm
    • RSSI_BOTTOM_LEVEL_DBM:最低 RSSI 值,默认值:-128dBm
    • RSSI_SCALE:频谱显示的 RSSI 尺度

lr1121_tx_cw

  • 将设备设置为 Tx 连续波模式。
  • 通用参数可以在 ../../examples/lr1121_tx_cw/lr1121_config.h 头文件中更新

lr1121_tx_infinite_preamble ===

  • 将设备设置成传输无限前导码。
  • 通用参数可以在 ../../examples/lr1121_tx_infinite_preamble/lr1121_config.h 头文件中更新

lr1121_write

  • 将设备设置成发送模式。
  • 示例代码将用于执行 LoRa 和 FSK 调制解调器测试。将宏 PACKET_TYPE 定义为 LR11XX_RADIO_PKT_TYPE_LORA 或 LR11XX_RADIO_PKT_TYPE_GFSK (在文件 ../../examples/lr1121_write/lr1121_config.h 中),以启用测试中的每个调制解调器。
  • 周期性发送信息,可与另一台设备搭配 lr1121_read 进行测试

lr1121_LoRaWAN

  • 此示例演示了如何在 LoRaWAN Class A 应用程序中定期发送上行链路,并通过按下按钮手动触发上行链路。
  • 该应用程序自动向 LoRa 网络服务器提交加入请求。
  • 一旦收到加入接受消息,就会定期发送上行链路。
  • 按下 按钮 或者 将指定引脚接GND 会立即在端口 102 上发送上行链路。
  • lr1121_LoRaWAN.h 中设置了一些常量,可以设置它们的值来定义应用程序的 LoRaWAN 配置。
    • PERIODICAL_UPLINK_DELAY_S:定期上行链路警报延迟(秒)
    • EXTI_BUTTON:按钮的引脚号
    • LORAWAN_APP_DATA_MAX_SIZE:用户应用程序数据缓冲区大小。
    • LORAWAN_REGION_USED:LoRaWAN 监管区域。
  • LR1121 预配置了 ChipEUI/DevEUI 和 JoinEUI。如果 lorawan_comissioning.h 文件中的 USE_LR11XX_CREDENTIALS 设置为 true,应用程序将使用这些标识符。
  • 或者,您可以在 Inc/apps/lorawan_commissioning/lorawan_commissioning.h 中提供自己的 EUI,方法是将 USE_LR11XX_CREDENTIALS 设置为 false,并更改 LORAWAN_DEVICE_EUI 、 LORAWAN_JOIN_EUI 、 LORAWAN_NWK_KEY 和 LORAWAN_APP_KEY 的值。
  • 用户按键设定
    • ESP32:GPIO0
    • Pico:GP0
    • 树莓派:BCM26
    • STM32:PC13

通用参数介绍

  • 通用参数存放在每个示例的lr1121_config.h,下面开始介绍每个参数的作用
  • lr1121_config 参数说明
常量说明
PACKET_TYPE数据包类型,将是 LoRa 或 GFSK
RF_FREQ_IN_HZ发送或接收数据包的频率
TX_OUTPUT_POWER_DBM发送数据包的功率级别
FALLBACK_MODE备用模式设置
ENABLE_RX_BOOST_MODERX 增强模式设置
PAYLOAD_LENGTHLoRa 和 GFSK 调制解调器的数据包有效载荷长度
LORA_BANDWIDTH发送符合 Sigfox 标准的上行链路
LORA_SPREADING_FACTORLoRa 数据包的扩频因子
LORA_CODING_RATELoRa 数据包的码率
LORA_PREAMBLE_LENGTHLoRa 数据包中的前导码长度
LORA_PKT_LEN_MODE标头类型,显式(默认)或隐式标头
LORA_IQI 和 Q 是否反转
LORA_CRCCRC 开启或关闭
LORA_SYNCWORDLoRa 数据包使用的同步字
FSK_FDEVGFSK 调制的频率偏差
FSK_BITRATEGFSK 数据包的比特率
FSK_BANDWIDTHGFSK 数据包的带宽
FSK_PULSE_SHAPE定义应用于 GFSK 数据包的过滤
FSK_PREAMBLE_LENGTHGFSK 数据包中的前导码长度
FSK_PREAMBLE_DETECTORGFSK 数据包前导码检测器的长度
FSK_SYNCWORD_LENGTHGFSK 数据包的同步字长度
FSK_ADDRESS_FILTERING地址过滤选项
FSK_HEADER_TYPEGFSK 数据包类型,固定有效载荷长度或可变
FSK_CRC_TYPEGFSK 数据包 CRC 选项
FSK_DC_FREE启用 GFSK 数据包白化的选项
gfsk_sync_wordGFSK 数据包的同步字
FSK_WHITENING_SEEDGFSK 数据包的白化种子,需要启用 FSK_DC_FREE 才能有效
FSK_CRC_SEEDGFSK 数据包的 CRC 种子,需要设置 FSK_CRC_TYPE 才能有效
FSK_CRC_POLYNOMIALGFSK 数据包的 CRC 多项式,需要将 FSK_CRC_TYPE 设置为相应的模式
FSK_NODE_ADDRESSGFSK 数据包过滤的节点地址,需要 FSK_ADDRESS_FILTERING 设置为对应模式
FSK_BROADCAST_ADDRESSGFSK 数据包过滤的广播地址,需要 FSK_ADDRESS_FILTERING 设置为相应的模式
SIGFOX_RCSigfox RC 模式 - 可以是 1 或 2

示例使用

  • 以下示例需要准备两台Core1121-XF模块才能进行通信测试

ESP32

  • 开发环境安装不做过多介绍,如果有不清楚的,可以找我们相关开发板资料,进行安装。比如:ESP32-S3-Touch-LCD-7B

硬件连接

ESP32-S3-DEV-KIT-N16R8-MCore1121-XF
3V33.3V
GNDGND
GPIO5MISO
GPIO6MOSI
GPIO7CLK
GPIO15CS
GPIO16RESET
GPIO39BUSY
GPIO40DIO9

Arduino

  • 下载示例,进入到 ../Core1121_XF_Demo/esp32s3/Arduino 中,将waveshare_lroa_1121复制到项目文件夹的 libraries 文件夹下,项目文件夹路径在File->preferences->Sketchbook location下查看


  • 复制完之后,打开Arduino IDE,就可以在File->Examples->waveshare lora spi下看到所有示例,打开后即可烧录测试
  • 环境搭建好后,选好开发板端口,不知道如何烧录的,参考下图:

①:编译程序

②:编译并上传


ESP-IDF

  • 下载示例,进入到 ../Core1121_XF_Demo/esp32s3/ESP-IDF 中,使用 vs code 打开示例
  • ESP-IDF 的示例使用需要配置../Core1121_XF_Demo/esp32s3/ESP-IDF/main/CMakeLists.txt的脚本文件,默认为 lr1121_ping_pong 示例,如果需要其他示例,像下图去解除注释即可:


  • 环境搭建好后,选好开发板端口,不知道如何烧录的,参考下图:

①:选择UART
②:选择端口
③:选择芯片
④:编译烧录


PlatformIO

  • 下载示例,进入到 ../Core1121_XF_Demo/esp32s3/PlatformIO 中,使用 vs code 打开示例
  • PlatformIO 的示例使用需要配置../Core1121_XF_Demo/esp32s3/PlatformIO/src的 main.h 文件,默认为 lr1121_ping_pong 示例,如果需要其他示例,像下图去解除注释即可:


  • 环境搭建好后,选好开发板端口,不知道如何烧录的,参考下图:

①:选择端口
②:编译烧录

Pico

  • 开发环境安装不做过多介绍,如果有不清楚的,可以找我们相关开发板资料,进行安装。比如:Raspberry Pi Pico

硬件连接

Raspberry Pi PicoCore1121-XF
3V33.3V
GNDGND
GP12MISO
GP11MOSI
GP10CLK
GP13CS
GP5RESET
GP14BUSY
GP15DIO9

C

  • 下载示例,进入到 ../Core1121_XF_Demo/pico 中,使用 vs code 打开示例
  • 示例使用需要配置../Core1121_XF_Demo/pico/CMakeLists.txt的脚本文件,默认为 lr1121_ping_pong 示例,如果需要其他示例,像下图去解除注释即可:


  • 环境搭建好后,打开示例会自动加载工具,不知道如何烧录的,参考下图:

①:编译
②:烧录:需要将Pico进入boot模式才能烧录,如果进入boot也无法烧录,可以去build文件夹中手动推拽UF2文件,进行烧录。

  • 如果使用的是Pico w、Pico2和Pico2 w,可以通过下图的步骤进行切换:

①:修改开发板
②:选择需要的开发板

RPI

  • 开发环境安装不做过多介绍,如果有不清楚的,可以找我们相关开发板资料,进行安装。比如:

Raspberry Pi

  • 本示例已在PI4跟PI5上进行了验证

硬件连接

Raspberry Pi (BCM)Core1121-XF
3V33.3V
GNDGND
9MISO
10MOSI
11CLK
8CS
22RESET
23BUSY
24DIO9

WiringPi

  • 使用下面的命令打开SPI:
sudo raspi-config nonint do_spi 0
  • 下载 WiringPi 库:
sudo git clone https://github.com/WiringPi/WiringPi
cd WiringPi
sudo ./build
gpio -v
# 运行gpio -v会出现2.70版本或更高,如果没有出现说明安装出错
  • 下载示例程序:
sudo apt-get install unzip -y
sudo wget https://www.waveshare.net/w/upload/7/76/Core1121_XF_Demo.zip
sudo unzip ./Core1121_XF_Demo.zip
cd Core1121_XF_Demo/raspberrypi/
  • 示例使用需要配置../Core1121_XF_Demo/raspberrypi/Makefile的脚本文件,默认为 lr1121_ping_pong 示例,如果需要其他示例,像下图去解除注释即可:


  • 进入到工程路径后,可以编译运行程序,步骤如下:
make -B -j
./main

出现下图内容,表示编译完成,然后执行./main就可以运行示例 


STM32

  • 使用的开发板是NUCLEO-F446RE
  • 开发环境安装不做过多介绍,如果有不清楚的,可以找相关开发环境资料,进行安装。比如:STM32CubeIDE

硬件连接

NUCLEO-F446RECore1121-XF
3V33.3V
GNDGND
PA6MISO
PA7MOSI
PA5CLK
PA8CS
PA0RESET
PB3BUSY
PB4DIO9

STM32CubeIDE

  • 下载示例,进入到 ../Core1121_XF_Demo/stm32中,点击.project文件打开示例。
  • 示例使用需要配置 ../Core1121_XF_Demo/stm32/Core/inc/main.h 文件,默认为 lr1121_ping_pong 示例,如果需要其他示例,像下图去解除注释即可:


  • 打开工程后,连接上开发板,不知道如何烧录的,参考下图:

①:编译烧录

示例效果展示

lr1121_cad

  • CAD测试,一台设备刷入CAD_EXIT_MODE为TX,一台CAD_EXIT_MODE为RX,就可开始测试
  • 效果如下:


lr1121_firmware_update

  • 默认烧录 收发器 0101版本的固件,如果需要测试其他固件版本,需要注释掉 lr1121_firmware_update.h 中的#include "lr1121_transceiver_0101.h",解除注释其他头文件即可编译烧录,每次只能选择一个固件进行烧录。
  • 效果如下:


lr1121_lr_fhss

  • 应用程序将配置设备以在 LR-FHSS 中传输数据包。
  • 效果如下:


lr1121_per

  • PER(包错误率)测试,在 lr1121_per.h 中将一个设备设置成发送即 #define RECEIVER 1 ,另一台设备设置成接收即#define RECEIVER 0
  • 效果如下:

lr1121_ping_pong

  • 应用程序将设备设置为乒乓模式(点对点双向通信测试)。
  • 效果如下:


lr1121_read

  • 应用程序将设备设置为读模式,自动识别字符串跟十六进制数,搭配 lr1121_write 可以实现点对点通信。
  • 效果如下:


lr1121_write

  • 应用程序将设备设置为写模式,自动发送数据,搭配 lr1121_read 可以实现点对点通信。
  • 效果如下:


lr1121_sigfox

  • 此示例代码说明了符合 Sigfox 标准的上行链路的发送。
  • 效果如下:


lr1121_spectral_scan

  • 该应用程序通过将设备设置为 Rx continuous 模式并定期逐个频率通道读取瞬时 RSSI 来实现频谱扫描操作。
  • 可以搭配 lr1121_tx_cw 来进行测试。
  • 使用 lr1121_tx_cw 发出一个频率 868MHz,功率22dBm的信息进行测试,效果如下:



lr1121_spetrum_display

  • 该应用程序通过将设备设置为 Rx continuous 模式并定期逐个读取各个频道的瞬时 RSSI 来实现频谱显示操作。
  • 可以搭配 lr1121_tx_cw 来进行测试。
  • 绘图功能需要 VT100 控制代码的支持,例如:MobaXterm
  • 使用 lr1121_tx_cw 发出一个频率 868MHz,功率22dBm的信息进行测试,效果如下:


lr1121_tx_cw

  • 该示例将自动将设备设置为 Tx 连续波模式。
  • 会一直发射一个波形,这个波形属于未调制的正弦波(纯载波),主要测试功率、频率精度、EMC
  • 无通信能力(不发数据)、非 LoRa 协议格式
  • 波形功率已衰减10dBm


lr1121_tx_infinite_preamble

  • 该示例将配置设备持续发射一个无线前导信号(Preamble)。
  • 会一直发射一个波形,这个波形属于有调制(LoRa 格式),主要测试 LoRa 发射性能、频谱、认证(LoRa 模式)
  • 不发完整包,但是合法 LoRa 前导码调制

LoRa和LoRaWAN

什么是LoRa?

Semtech 的 LoRa 是一种长距离、低功耗的物联网 (IoT) 无线平台,一般情况下泛指使用LoRa技术的射频芯片.主要特点如下

  • LoRa(long range 的缩写)采用的扩频调制技术源于啁啾扩频 (CSS) 技术,是远距离无线传输技术和LPWAN通信技术中的一种.扩频技术用带宽换取灵敏度的技术,Wi-Fi,ZigBee等都使用了扩频技术,但LoRa调制的特点是接近香农定理的极限,最大效率地提高灵敏度.相比于传统FSK技术,在相同的通信速率下,LoRa比FSK灵敏度好8~12dBm.目前,LoRa 主要在Sub-GHz的ISM频段运行,
  • LoRa技术融合了数字扩频、数字信号处理和前向纠错编码等技术使得在长距离通信性能层面大幅度提高,LoRa的链路预算优于其他任何标准化的通信技术,链路预算是指给定的环境中决定距离的主要因素.
  • LoRa射频芯片主要有 SX127X系列,SX126X系列,SX130X系列,其中SX127X,SX126X系列用于LoRa节点,SX130X用于LoRa网关,详情可参考Semtech的产品列表

什么是LoRaWAN?

  • LoRaWAN 是一种建立在 LoRa 无线电调制技术之上的低功耗广域网开放协议。旨在将电池供电的“事物”无线连接到区域、国家或全球网络中的互联网,并针对关键的物联网 (IoT) 要求,例如双向定向通信、端到端安全、移动性和本地化服务。其中节点无线连接到互联网有入网认证,相当于建立节点和服务器间的加密通信信道,LoRaWAN协议层次下图所示。
    • MAC层中的Class A/B/C 三类节点设备基本覆盖了物联网所有的应用场景,三者之间不同点在于节点收发的时隙不同
    • Modulation层中EU868,AS430等表明不同国家使用频段参数不同,地区参数请点击参考链接


  • 实现LoRaWAN网络覆盖城市或其它区域需要由节点(LoRa节点射频芯片)、网关(或称基站,LoRa网关射频芯片)、Server和云四部分组成,如下图所示
    • DEVICE(节点设备)需先发起入网请求数据包到GATEWAY(网关)再到服务器,认证通过后才可以正常和服务器收发应用数据
    • GATEWAY(网关)可通过有线网络,3/4/5G无线网络与服务器进行通信
    • 服务器端主要运营商有TTN等,自行搭建云端服务请参考lorawan-stackchirpstack


应用

器件准备

  • 树莓派4B(含配套电源)
  • SD卡(建议使用容量大于 8GB 的 SD 卡)
  • 读卡器
  • 网关设备
  • 节点设备
  • 开发板(可选型号)ESP32树莓派STM32 和 Raspberry Pi Pico

服务器搭建

  • 本示例使用ChirpStack作为 LoRaWAN 网络服务器,请按照官方提供的 Raspberry Pi 安装步骤进行配置。
  • 将 SD 卡插入树莓派并通电启动。启动后,电脑 Wi-Fi 将扫描到名为 ChirpStackAP-XXXXXX 的无线热点,密码为 ChirpStackAP。连接成功后,在浏览器中访问:192.168.0.1,即可打开 ChirpStack 管理界面,首次登录无需密码。


  • 启动后可通过以太网或 Wi-Fi 接入外部网络。此处以连接以太网为例,若需配置 Wi-Fi,请参考:Wi-Fi 配置,联网后可在 Web 管理界面查看当前 IP 地址。


添加网关

  • 服务器配置完成并获取 IP 地址后,关闭树莓派并断电,将 SX1303-868M-LoRaWAN-Gateway-HAT(网关设备)连接至树莓派,并接上天线。启动树莓派后,使用前面获取的 IP 地址通过 SSH 工具(如 MobaXterm)远程访问设备。默认用户名为 root,连接成功后,在终端中输入以下命令获取网关 ID:gateway-id,系统将输出当前设备的网关 ID,请记下该 ID,稍后添加网关时将用到。


  • 在浏览器中访问前面获取的 IP 地址,进入 ChirpStack 管理界面,依次点击ChirpStack -> Concentratord,启用网关功能。以 SX1303(868 MHz)为例,配置如下,配置完成后点击“保存并应用”:
  • 进入应用程序:Applications -> ChirpStack,首次进入时需要登录,默认账号和密码均为 admin。登录后,点击 Gateways -> Add gateway,在添加页面中填写前面获取的 gateway-id,并保存。返回 Gateways 页面,即可看到网关是否已经成功上线。

添加节点

  • 首先,在 Web 界面中添加一个设备配置文件:Device Profiles -> Add device profile,配置如下图所示:


  • 然后添加一个应用程序:Applications -> Add application,填写相关信息并保存:


  • 接着添加一个终端设备,点击 Add device,相关信息(如 DevEUI、AppKey)可通过点击“随机”按钮自动生成,稍后将在示例中使用这些信息
  • 注意:Core1121-HF 模块默认工作在收发器(Transceiver)模式。若要运行 LoRaWAN 协议,需先通过开发板烧录对应的固件。

示例可参考Demo中的 lr1121_firmware_update 示例,并运行 lr1121_firmware_update + lr1121_modem_05020001。

  • 烧录成功效果如下图所示


如果后续需要恢复收发器模式(非 LoRaWAN),请重新烧录 lr1121_transceiver_0101 固件。
  • 固件烧录完成后,下载 LoRaWAN 示例程序,打开后进入目录:../Core1121-XF-Demo\...\lr1121_LoRaWAN中,编辑其中的 lorawan_commissioning.h 文件,将前面生成的 EUI 和 密钥 等信息填入对应位置。完成后编译并烧录。
  • 烧录完成后,节点将自动请求加入 LoRaWAN 网络。加入成功后,节点将定时发送上行数据。可通过 Web 界面查看设备事件与通信状态:

①、点击 Events,查看节点运行状态
②、观察是否加入失败
③、若加入成功,可看到入网事件
④、查看节点上报的数据
⑤、通过串口查看调试信息

  • 服务器也支持向节点下发数据:

①、点击 Queue
②、输入需要下发的十六进制数据
③、点击发送
④、节点接收数据并在串口打印

资料

文档

示例程序

Core1121-XF 示例程序

数据手册

FAQ

售后

周一-周五(9:30-6:30)周六(9:30-5:30)

手机:13434470212

邮箱:services04@spotpear.cn

QQ:202004841