Arduino 开发
本章节包含以下部分,请按需阅读:
Arduino 入门教程
初次接触 Arduino ESP32 开发,想要快速上手?我们为您准备了一套通用的 入门教程。
- 第0节 认识 ESP32
- 第1节 安装和配置 Arduino IDE
- 第2节 Arduino 基础知识
- 第3节 数字输出/输入
- 第4节 模拟输入
- 第5节 脉冲宽度调制 (PWM)
- 第6节 串行通信 (UART)
- 第7节 I2C 通信
- 第8节 SPI 通信
- 第9节 Wi-Fi 基础用法
- 第10节 网页服务器
- 第11节 蓝牙 (Bluetooth)
- 第12节 LVGL 图形界面开发
- 第13节 综合项目
请注意:该教程使用 ESP32-S3-Zero 作为教学示例,所有硬件代码均基于其引脚布局。在动手实践前,建议您对照手中的开发板引脚图,确认引脚配置无误。
配置开发环境
1. 安装和配置 Arduino IDE
请参考 安装和配置 Arduino IDE 教程 下载安装 Arduino IDE 并添加 ESP32 支持。
2. 示例程序使用说明
下载示例,进入到 ESP32-S3-LR1121-XF/esp32s3/Arduino 中,将 waveshare_lora_1121 复制到项目文件夹的 libraries 文件夹下,项目文件夹路径在 文件 -> 首选项 -> 项目文件夹地址 下查看

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

3. Arduino 参数设置

注意:请务必按照以下参数进行配置,否则程序可能无法正常运行:
示例程序
示例程序位于示例包的 Arduino 目录: ESP32-S3-LR1121-XF-Demo.zip 以下示例名称与说明对齐 ESP32-S3-LR1121-XF 示例包的目录结构,可用于快速定位对应功能点:
| 示例程序 | 基础例程说明 |
|---|---|
| lr1121_cad | 执行通道活动检测(CAD)- 仅限 LoRa |
| lr1121_firmware_update | LR1121 更新固件工具 |
| 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_cw | Tx 连续波模式 |
| lr1121_tx_infinite_preamble | 传输无限前导码 |
| lr1121_write | 周期性发送数据 |
| lr1121_LoRaWAN | 简单的 LoRaWAN A 类应用程序 |
lr1121_cad
- 该应用程序将执行通道活动检测(CAD)- 仅限 LoRa。
- 一台设备刷入CAD_EXIT_MODE为TX,一台CAD_EXIT_MODE为RX,就可开始测试
- 效果如下:

lr1121_firmware_update
- 该应用程序将更新 LR1121 上的固件。
- 默认烧录 收发器 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
- 该应用程序将配置设备持续发射一个无线前导信号(Preamble)。
- 效果如下:

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-stack,chirpstack

应用
- 本应用基于 LoRaWAN 官方示例ModemE_application_examples,仅演示了基础的 LoRaWAN Class A 应用。其他高级示例可参考官方仓库自行移植,包括:认证申请、LoRaWAN B 类应用、LoRaWAN 多播 B/C 类示例和FUOTA 示例。
器件准备
-
树莓派4B(含配套电源)
-
SD卡(建议使用容量大于 8GB 的 SD 卡)
-
读卡器
-
网关设备
-
节点设备
-
开发板(可选型号):ESP32、树莓派、STM32 和 Raspberry Pi Pico
服务器搭建
-
本示例使用ChirpStack作为 LoRaWAN 网络服务器,请按照官方提供的 Raspberry Pi 安装步骤进行配置。
-
先下载ChirpStack Gateway OS 镜像,将其解压后,使用Win32DiskImager将镜像写入 SD 卡。
下载镜像

写入镜像
-
写入完成后,请参考官方文档进行详细配置。本文仅提供简要安装流程,详细信息请参见:ChirpStack Gateway OS 入门指南
-
将 SD 卡插入树莓派并通电启动。启动后,电脑 Wi-Fi 将扫描到名为 ChirpStackAP-XXXXXX 的无线热点,密码为 ChirpStackAP。连接成功后,在浏览器中访问:192.168.0.1,即可打开 ChirpStack 管理界面,首次登录无需密码。
连接 Wi-Fi
访问 Web 界面
-
启动后可通过以太网或 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,填写相关信息并保存:

设置 EUI
设置密钥
-
注意:ESP32-S3-LR1121 模块默认工作在收发器(Transceiver)模式。若要运行 LoRaWAN 协议,需先通过开发板烧录对应的固件。 示例可参考Demo中的 lr1121_firmware_update 示例,并运行 lr1121_firmware_update + lr1121_modem_05020001。
ESP-IDF 示例
Arduino ESP32 示例
-
烧录成功效果如下图所示

-
如果后续需要恢复收发器模式(非 LoRaWAN),请重新烧录 lr1121_transceiver_0101 固件。
-
固件烧录完成后,下载 LoRaWAN 示例程序,打开后进入目录:
ESP32-S3-LR1121\esp32s3\ESP-IDF\main\examples\lr1121_LoRaWAN中,编辑其中的lorawan_commissioning.h文件,将前面生成的 EUI 和 密钥 等信息填入对应位置。完成后编译并烧录。
填入 EUI
填入密钥
-
烧录完成后,节点将自动请求加入 LoRaWAN 网络。加入成功后,节点将定时发送上行数据。可通过 Web 界面查看设备事件与通信状态:
①、点击 Events,查看节点运行状态
②、观察是否加入失败
③、若加入成功,可看到入网事件
④、查看节点上报的数据
⑤、通过串口查看调试信息

-
服务器也支持向节点下发数据:
①、点击 Queue
②、输入需要下发的十六进制数据
③、点击发送
④、节点接收数据并在串口打印
