0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

LoRa1120模块与ESP32点对点LoRa通信实现实践指南

思为无线 ? 2025-08-28 17:21 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

LoRa1120多模收发器技术导论

LoRa1120模块的核心是Semtech的LR1120芯片组,这是一款专为远距离、低功耗无线通信和地理定位应用而设计的集成电路 1。在进行实际应用开发之前,对该模块的核心技术能力进行深入分析,是确保项目成功的关键。这不仅是一个单纯的LoRa收发器,更是一个集成了多种通信模式和定位功能的综合平台。

多频段操作能力

该模块具备在多个不同频段下工作的能力,为不同应用场景和地区法规要求提供了高度的灵活性 。

Sub-GHz ISM频段:支持433/470/868/915 MHz等免许可频段,并可根据需求在150-960 MHz范围内定制。这是传统LoRa应用的主要工作频段,其物理特性决定了它具有最远的传输距离和最佳的穿透能力,适用于广域物联网(LPWAN)部署。

2.4 GHz ISM频段:工作范围为2400-2500 MHz。该频段在全球范围内通用,相比Sub-GHz频段,它可以提供更高的数据传输速率。然而,其传输距离和穿透性相对较弱,更适用于对带宽有一定要求且通信距离较短的场景,如工业自动化智能家居

S波段卫星通信:工作范围为1900-2200 MHz。此功能使得模块能够直接与卫星进行通信,为地面网络无法覆盖的偏远地区(如海洋、沙漠、山区)提供连接解决方案,是资产跟踪和远程监控等应用的理想选择。

地理定位子系统

除了通信功能,LoRa1120还集成了两种独立的低功耗扫描引擎,用于地理位置确定 。

GNSS扫描器:支持多星座全球导航卫星系统(如GPS/北斗),采用云原生辅助定位模式。模块本身只负责扫描卫星信号并捕获原始数据,然后将这些轻量级数据通过LoRa网络传输到云端进行解析。这种架构极大地降低了终端设备的功耗和计算负担,使其适用于对电池寿命有严苛要求的定位应用。

Wi-Fi被动扫描器:通过扫描周围的802.11b/g/n Wi-Fi接入点(AP)的MAC地址来进行定位。在城市或室内等GNSS信号较弱的环境中,Wi-Fi定位可以作为一种有效的补充或替代方案。同样,它只捕获MAC地址列表,交由云端服务解析具体位置。

协议与安全支持

模块在物理层上符合LoRa联盟发布的LoRaWAN标准规范,确保了与标准LoRaWAN网络的互操作性。同时,它也支持Sigfox协议,并内置了AES-128硬件加密和解密引擎,为数据传输提供了硬件级别的安全保障 。这种多功能集成设计表明,工程师使用单一硬件平台,仅通过固件配置,即可满足截然不同的应用需求:例如在欧洲部署标准的LoRaWAN传感器(使用Sub-GHz),在工厂环境中实现高吞吐量数据采集(使用2.4 GHz),或是在无蜂窝网络覆盖的地区进行资产跟踪(使用GNSS + S波段)。这种设计策略有效减少了硬件物料清单(SKU)的数量和开发成本。因此,接下来将要介绍的基础点对点通信测试,应被视为掌握该模块全部潜能的第一步。

下图展示了LR1120芯片的内部功能框图,直观地呈现了其多频段射频通路和与外部组件的连接关系。

wKgZO2iwGTqAOwWDAAGfCBf8tIA142.png

硬件准备与系统互联

搭建一个可靠的测试平台是验证无线通信链路性能的基础。本节将详细说明如何将LoRa1120模块与ESP32微控制器进行物理连接。

所需硬件清单,为构建一个基本的点对点通信系统,需要准备两套相同的硬件设备 :

  • ESP32开发板(例如ESP32-PICO):2块
  • LoRa1120模块:2个
  • 杜邦线:若干
  • USB数据线:2条

引脚连接映射

将LoRa1120模块与ESP32开发板通过SPI接口进行连接。下表详细定义了推荐的引脚对应关系。务必确保两套设备的连接方式完全一致 。

wKgZPGiwHPOAT2szAAEw7xTqZKs599.png

此连接方案采用了标准的4线SPI接口(SCK, MISO, MOSI, NSS)用于数据传输。除此之外,还有三条至关重要的控制线(IRQ, RST, BUSY)。对这些控制线功能的理解,对于编写健壮的嵌入式固件至关重要。

RST (Reset): 用于通过软件控制对LoRa1120模块进行硬件复位,使其恢复到初始状态。

BUSY (Busy): 这是一个硬件流控制信号。当模块内部正在处理命令或处于活动状态时,BUSY引脚会置为高电平,此时主控(ESP32)不应发送新的SPI命令。这可以有效避免命令冲突和数据丢失,确保通信的可靠性。

IRQ (Interrupt Request): 该引脚用于向主控发送中断信号,以通知特定事件的发生,例如数据包接收完成或发送完成。采用中断驱动的方式比轮询方式效率更高,可以让主控在等待事件时进入低功耗模式,从而显著降低系统整体功耗。

注意:虽然上述引脚分配是推荐配置,但工程师可以根据自己的PCB布局或开发板资源进行调整。然而,任何硬件上的改动都必须在后续的软件代码中进行同步修改,否则将导致通信失败 1。

配置Arduino开发环境

正确的软件环境配置是程序开发的前提。本节将引导您完成Arduino IDE的安装与配置,以支持ESP32和LoRa1120模块的开发。

  1. 安装Arduino IDE

从Arduino官方网站下载并安装最新版本的Arduino IDE 。

  1. 添加ESP32开发板支持

为了让Arduino IDE能够识别并编译ESP32的代码,需要添加ESP32的开发板管理器URL。打开Arduino IDE,点击 File -> Preferences (参考下图)。

wKgZO2iwGViAKPFZAAGueRQ_ELU667.png

在 "Additional Board Manager URLs" 字段中 (参考 下图),输入以下URL

wKgZPGiwHXCATSVsAAJAUVAq8Bk857.png

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

这个URL指向一个索引文件,它告诉IDE在哪里可以找到适用于ESP32系列微控制器的工具链、库和定义。

  1. 安装ESP32包

打开左侧边栏的 "Boards Manager"(开发板管理器)。

在搜索框中输入 "esp32"。

找到由 "Espressif Systems" 提供的包,并点击 "Install" (参考 下图) 。

wKgZO2iwHZeAW8OaAAP37MC0x1w421.png

  1. 安装RadioLib库

RadioLib是一个功能强大的通用无线通信库,它为包括LR1120在内的多种射频芯片提供了统一的、高级的API接口。使用该库可以极大地简化开发流程。

打开左侧边栏的 "Library Manager"(库管理器)。

在搜索框中输入 "RadioLib"。

找到由 "Jan Gromes" 开发的RadioLib库,并点击 "Install" (参考 下图) 。

wKgZO2iwHa-AUhzIAAJjjPVTVCw043.png

选择RadioLib库是一个重要的工程决策。它作为一个硬件抽象层(HAL),将底层复杂的寄存器读写操作封装成易于理解和使用的函数。这意味着开发者无需深入研究LR1120芯片的数据手册即可快速实现通信功能。此外,由于RadioLib支持多种射频模块(如SX127x, SX126x, CC1101等),为本项目编写的代码可以很方便地移植到其他硬件平台,从而提高了代码的可重用性和项目的灵活性 。

实现并分析“乒乓”通信测试

完成环境配置后,接下来通过一个“乒乓”通信示例来验证硬件连接和软件设置的正确性。该示例中,一个节点(发起节点)发送一个数据包,另一个节点(响应节点)接收到后会回复一个数据包,如此循环往复。

1 加载示例程序

在Arduino IDE中,通过菜单栏导航至 File > Examples > RadioLib > PhysicalLayer > LR11x0_PingPong 来打开示例代码 (参考 下图) 。

wKgZPGiwHcyAMsS1AAZXdOx-1lQ114.png

2 代码走读与分析

以下是对LR11x0_PingPong.ino 关键部分的分析。

节点角色定义:

C++

// uncomment the following only on one
// of the nodes to initiate the pings
#defineINITIATING_NODE

此处的 #define INITIATING_NODE 宏定义是区分两个节点角色的关键。同一份代码需要被上传到两个ESP32设备上。在一个设备上,需要取消这一行的注释,使其成为“发起节点”。在另一个设备上,保持这一行被注释,它将自动成为“响应节点”。这是一种在嵌入式开发中非常常见且高效的技术,可以用单一代码库实现两种不同的设备行为。

硬件引脚定义与SPI总线配置

C++

#definecs 10
#defineirq 2
#definerst 4
#definebusy 9

SPIClass spi(HSPI);
SPISettings spiSettings(2000000, MSBFIRST, SPI_MODE0);

引脚定义: #define 语句块定义了ESP32与LoRa1120模块连接的GPIO引脚。这里定义的数值(10, 2, 4, 9)必须与第二节中实际的硬件接线完全一致 。

SPI总线选择: SPIClass spi(HSPI); 这行代码指定了使用ESP32的哪个SPI外设。ESP32通常拥有多个SPI接口(如VSPI和HSPI)。此处明确选择了HSPI。对于使用不同型号ESP32开发板的工程师来说,这是一个关键细节,因为不同开发板的SPI引脚分配可能不同。

SPI参数设置: SPISettings spiSettings(...) 用于配置SPI通信的参数。

2000000: 设置SPI时钟速度为2 MHz。

MSBFIRST: 设置数据传输为最高有效位(Most Significant Bit)优先。

SPI_MODE0: 定义SPI的时钟极性(CPOL=0)和时钟相位(CPHA=0)。这些参数必须符合LR1120芯片的技术要求。

RadioLib对象实例化

C++

LR1120 radio = newModule(cs, irq, rst, busy, spi, spiSettings);

这是整个程序的核心部分。该行代码创建了一个LR1120驱动的对象实例,名为 radio。在创建对象时,将前面定义的所有硬件引脚编号(cs, irq, rst, busy)和SPI配置对象(spi, spiSettings)作为参数传入。这一步完成了软件配置与物理硬件的最终链接。这种面向对象的设计体现了良好的软件架构,将硬件相关的配置集中管理,使得代码更易于维护和移植。

模块初始化

C++

voidsetup(){
Serial.begin(115200);

// initialize LR1110 with default settings
Serial.print(" Initializing... ");
spi.begin();
intstate = radio.begin();
if(state == RADIOLIB_ERR_NONE) {
Serial.println("success!");
} else{
Serial.print("failed, code ");
Serial.println(state);
while(true);
}
}

在 setup() 函数中,radio.begin() 函数负责执行与LoRa1120模块的初始通信。它会通过SPI接口对模块进行一系列初始化配置,包括设置默认的LoRa参数(如频率、带宽、扩频因子等),并检查模块是否正常响应。如果初始化成功,程序将继续执行;否则,将打印错误代码并进入死循环,方便开发者进行调试 。

3 固件编译与上传

在Arduino IDE的 Tools 菜单中,选择正确的开发板(例如 "ESP32 PICO-D4")和对应的COM端口

点击IDE工具栏上的 "Upload"(上传)按钮。IDE将自动编译代码并将其烧录到ESP32中 (参考 下图)。

wKgZO2iwHeOAcXriAAcPkjam1xw408.png

对两个设备重复此操作(注意其中一个要取消 #define INITIATING_NODE 的注释)。

验证操作与解读通信指标

固件上传完成后,需要通过串口监视器来验证通信是否成功,并理解输出的关键性能指标。

访问串口监视器

在Arduino IDE中,点击右上角的放大镜图标或通过 Tools > Serial Monitor 打开串口监视器。

确保右下角的波特率设置为 115200,这必须与代码中 Serial.begin(115200); 的设置相匹配。

分析输出日志

上电后,您应该能在两个节点的串口监视器中看到类似以下的交替输出 :

发起节点 (Initiating Node) (参考 下图):

wKgZPGiwHf2AbSnMAAEg8yEFQK0945.png

响应节点 (Responding Node) (参考 下图):

wKgZPGiwHgqAaKkyAAD5B4qgABE674.png

技术指标解读

输出日志中的RSSI和SNR是衡量无线通信链路质量最重要的两个指标。它们不仅仅是数字,更是诊断和优化无线系统的关键工具。

RSSI (Received Signal Strength Indicator, 接收信号强度指示):

定义: RSSI是接收端测量到的信号功率,单位为dBm。它是一个对数单位,值越接近0表示信号越强。例如,-66 dBm是一个非常强的信号,通常表示收发设备距离很近且无障碍物。

应用: RSSI直接反映了链路预算和通信距离。在实际部署中,通过监测RSSI的变化,可以判断信号是否被遮挡、天线连接是否松动或设备是否超出了有效通信范围。

SNR (Signal-to-Noise Ratio, 信噪比):

定义: SNR衡量的是目标信号强度与背景噪声强度的比值,单位为dB。正值表示信号强度高于噪声,值越大表示信号越清晰,抗干扰能力越强。例如,12.50 dB的SNR表示信号质量非常高。

LoRa的特点: LoRa调制技术的一个核心优势是它能够在负信噪比(即信号强度低于噪声)的情况下成功解调数据。这是LoRa能够实现远距离通信的关键原因之一。示例中出现的高SNR值表明测试环境的电磁干扰非常小。

应用: 在实际环境中,如果RSSI值正常但SNR值很低或波动很大,通常意味着存在来自其他无线设备(如Wi-Fi路由器、蓝牙设备等)的射频干扰。通过分析SNR,可以帮助工程师选择更干净的信道或采取屏蔽措施。

通过教会工程师如何从诊断的角度思考这些指标,本指南旨在帮助他们解决实际部署中可能遇到的问题。例如,可以进行一个后续实验:将两个设备逐渐拉开距离,观察RSSI的衰减;或将设备放置在Wi-Fi路由器旁边,观察SNR是否下降。这将一个简单的验证步骤转变为一次关于射频链路分析的实践课程。

自定义硬件集成注意事项

当项目从原型验证阶段进入定制化产品设计阶段时,工程师需要将LoRa1120模块集成到自定义的PCB上。本节提供了进行硬件设计所需的关键数据和参考。

模块引脚定义

下图 为LoRa1120模块的引脚布局图,可与下表对照参考:

wKgZPGiwHhyAUBwKAAQEcxUjb_I207.pngwKgZO2iwHieAAcHiAAEwNqMG3UY861.png

机械尺寸与PCB布局

为了在EDA软件(如Altium Designer, KiCad)中创建精确的PCB封装(footprint),必须参考模块的机械尺寸图 。这确保了模块能够正确地焊接到PCB上 。

wKgZPGiwHmaAO6Y9AAWGenHvdV8195.png

参考电路与功耗分析

在设计原理图时,可以参考官方提供的典型应用电路 。应特别注意电源引脚旁的去耦电容配置和天线端口的匹配网络设计,这对于实现最佳射频性能和通过法规认证至关重要。

wKgZPGiwHqWASu2mAAHlvrzgje0606.png

进行电源预算分析时,以下电气特性是关键参考数据 :

参数测试条件典型值单位
工作电压范围-1.8 - 3.6V
发射电流@Sub-GHz, 21dBm<110mA
接收电流@Sub-GHz<6mA
睡眠电流@3.3V<1?A

其中,小于1 ?A的睡眠电流是LoRa技术的核心优势之一。这一极低的功耗特性使得基于LoRa1120的物联网设备能够依靠电池供电工作数年之久。在进行固件设计时,电源管理策略应围绕这一点展开,即尽可能让设备在完成数据收发任务后迅速进入深度睡眠模式,以最大限度地延长电池寿命。本节提供的数据,正是连接实验原型与最终产品的桥梁。

焊接参考

对于表面贴装(SMT)工艺,建议遵循以下无铅回流焊温度曲线。

wKgZPGiwHtOAMdvGAAFnbvmj4NY171.png

下表 详细列出了符合IPC/JEDEC J-STD-020B标准的推荐参数。

wKgZO2iwHt6AYVq6AAOCpe9LXmE876.png

结论

本报告系统地阐述了使用LoRa1120模块和ESP32微控制器实现基础点对点LoRa通信的全过程。内容涵盖了从模块技术特性分析、硬件系统连接、开发环境配置,到固件实现、通信验证和关键性能指标解读。

通过实践证明,将LoRa1120模块、功能强大的ESP32微控制器以及成熟的RadioLib软件库相结合,为开发远距离、低功耗无线应用提供了一个坚实且高效的平台。成功实现点对点通信链路,不仅验证了硬件和软件配置的正确性,也为开发者提供了一个经过验证的基线。基于此基线,开发者可以进一步探索该模块更高级的功能,例如构建LoRaWAN网络应用、利用长距离跳频扩频(LR-FHSS)技术,以及开发其集成的GNSS和Wi-Fi地理定位功能。

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

    关注

    0

    文章

    8

    浏览量

    7547
  • LoRa
    +关注

    关注

    352

    文章

    1798

    浏览量

    235493
  • ESP32
    +关注

    关注

    21

    文章

    1033

    浏览量

    19640
  • LR1120
    +关注

    关注

    0

    文章

    5

    浏览量

    477
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    esp32物联网的应用实例 LoRa网关制作、触屏DIY电视、Sygic导航HUD

    ? 在很多物联网系统解决方案中,ESP32作为一种低成本、易开发的制造模块,特别适合对短期项目开发的爱好者、嵌入式开发工程师。不仅价格便宜,还支持蓝牙Wi-Fi组合模块,具有广泛的生态系统支持环境
    发表于 09-16 11:58 ?7182次阅读

    CC2530点对点通信实现跑马灯的方法

    CC2530点对点通信实现跑马灯的方法
    发表于 01-25 07:49

    怎样通过LoRa模块实现SX1268点对点通信

    怎样通过LoRa模块实现SX1268点对点通信呢?如何通过串口发送和接收数据并上传到阿里云物联网平台?
    发表于 02-21 07:43

    基于STM32+LoRa点对点通信源代码

    基于STM32+LoRa点对点通信源代码
    发表于 09-09 10:56 ?60次下载

    LoRa ESP32 TKoala开发板

    电子发烧友网站提供《LoRa ESP32 TKoala开发板.zip》资料免费下载
    发表于 07-21 10:10 ?2次下载
    <b class='flag-5'>LoRa</b> <b class='flag-5'>ESP32</b> TKoala开发板

    ESP32 Heltec lora pinout传感器开源

    电子发烧友网站提供《ESP32 Heltec lora pinout传感器开源.zip》资料免费下载
    发表于 08-02 14:56 ?0次下载
    <b class='flag-5'>ESP32</b> Heltec <b class='flag-5'>lora</b> pinout传感器开源

    LoRa模块SX1278与ESP32结合使用的方法-上

    在本篇文章中,我们将学习如何将LoRa模块SX1278与ESP32结合使用。在这里,我们将使用两个LoRa模块-一个连接到
    的头像 发表于 01-21 11:30 ?4758次阅读
    <b class='flag-5'>LoRa</b><b class='flag-5'>模块</b>SX1278与<b class='flag-5'>ESP32</b>结合使用的方法-上

    LoRa模块SX1278与ESP32结合使用的方法-下

    在这里,我们主要解释一些重要的代码片段。 首先,包括所有必需的库。SPI.h用于ESP32LoRa之间的SPI通信,Wire.h库用于I2C设备之间的通信。您可以从此处下载
    的头像 发表于 01-21 11:31 ?3240次阅读
    <b class='flag-5'>LoRa</b><b class='flag-5'>模块</b>SX1278与<b class='flag-5'>ESP32</b>结合使用的方法-下

    两个lora模块如何配对 LoRa的组网架构是怎样的?

    两个Lora模块可以直接通信Lora技术采用的是点对点通信,可以
    发表于 06-12 17:27 ?4316次阅读

    lora模块是什么 lora模块怎么组网

    Lora模块是一种能够进行长距离低功耗通信的射频模块,采用Lora技术实现无线
    发表于 06-12 17:30 ?7176次阅读

    lora模块的收发流程 lora模块怎么组网

    Lora模块是一种能够进行长距离低功耗通信的射频模块,采用Lora技术实现无线
    发表于 06-13 17:47 ?2748次阅读

    LoRa ESP32无线电-轻松入门教程

    电子发烧友网站提供《LoRa ESP32无线电-轻松入门教程.zip》资料免费下载
    发表于 07-11 10:14 ?1次下载
    <b class='flag-5'>LoRa</b> <b class='flag-5'>ESP32</b>无线电-轻松入门教程

    什么是Lora模块Lora模块的作用是什么?

    什么是Lora模块Lora Module Lora模块是一种能够进行长距离低功耗通信的射频
    的头像 发表于 09-10 09:42 ?1w次阅读

    LORA模块的安装与配置指南

    。 驱动安装 (如适用): 如果LoRa模块需要特定的驱动程序才能与主机通信,请按照模块附带的说明或制造商的指南安装相应的驱动程序。 软件准
    的头像 发表于 10-31 17:37 ?5024次阅读

    LoRa1120 全频段Lora无线通讯模块规格书

    LoRa1120 全频段Lora无线通讯模块规格书
    发表于 04-02 10:39 ?1次下载