RP2040-LoRa 教程

资料

文档

程序

资料手册

开发软件

Pico快速上手

固件下载

折叠MicroPython固件下载
Pico MicroPython.gif
折叠C_Blink固件下载
Pico Blink.gif

文字教程

基础介绍

MicroPython系列

C/C++系列

Arduino IDE 系列

安装Arduino IDE

  1. 首先到Arduino官网下载Arduino IDE的安装包。
    Arduino下载2.0版本.jpg
  2. 这里选择仅下载就可以了。
    仅下载不捐赠.png
  3. 下载完成后,点击安装。
    IDE安装水印-1.gif
    注意:安装过程中会提示你安装驱动,我们点击安装即可
    Arduino驱动安装水印.jpg

Arduino IDE中文界面

  1. 第一次安装完成后,打开Arduino IDE全是英文界面,我们可以在File>Preferences切换成简体中文。
    首选项-简体中文.jpg
  2. 在Language里面选择简体中文,点击OK。
    首选项-简体中文ok.jpg

在Arduino IDE中安装Arduino-Pico Core

  1. 打开Arduino IDE,点击左上角的文件,选择首选项
    首选项水印-1.png
  2. 在附加开发板管理器网址中添加如下链接,然后点击OK
    https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json

    Pico首选项.png
    注意:如果您已经有ESP32板URL,您可以使用逗号分隔 URL,如下所示:

    https://dl.espressif.com/dl/package_esp32_index.json,https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
  3. 点击工具>开发板>开发板管理器>搜索pico,由于我的电脑已经安装过了,所以显示已安装
    开发板管理器.png
    开发板管理器-1.png

国内用户

  • 因为网络原因,国内用户连接github并不稳定,我们另外提供了一份安装包,可以跳过在线的过程
  • 若已经成功配置了pico环境,可以直接跳过本章
  1. 下载rp2040压缩包,将解压的rp2040文件夹复制到如下路径下
    C:\Users\[username]\AppData\Local\Arduino15\packages

    Rp2040包.png
    注意:将里面用户名:[username]替换成自己的用户名

第一次上传程序

  1. 按住Pico板上的BOOTSET按键,将pico通过Micro USB线接到电脑的USB接口,待电脑识别出一个可移动硬盘(RPI-RP2)后,松开按键。
    Pico连接数据线.gif


  1. 下载程序,打开arduino\PWM\D1-LED路径下的D1-LED.ino
  2. 点击工具>端口,记住已有的COM,不需要点击这个COM(不同电脑显示的COM不一样,记住自己电脑上已有的COM)
    Pico连接前端口.png
  3. 用USB线将驱动板和计算机连接起来,再点击工具>端口,第一次连接选择uf2 Board,上传完成后,再次连接就会多出一个COM口
    Pico连接后uf2.png
  4. 点击工具>开发板>Raspberry Pi Pico/RP2040>Raspberry Pi Pico
    工具pico开发板.png
    Arduono-Raspberrypi pico.png
  5. 设置完成后,点击向右箭头上传将程序
    Pico上传程序.png
  • 如果期间遇到了问题,需要重新安装或者更换Arduino IDE版本时,卸载Arduino IDE需要卸载干净,卸载软件后需要手动删除C:\Users\[name]\AppData\Local\Arduino15这个文件夹内的所有内容(需要显示隐藏文件才能看到) 再重新安装

开源例程



说明

产品简介

RP2040-LoRa 是使用新一代 SX1262 射频芯片的 LoRa 开发板,在功耗传输距离电源效率等性能上比 SX127X 系列表现更好,LoRa 调制技术解决了传统设计方案无法同时兼顾距离、抗干扰和功耗的问题。此外,结合 LoRa 网关,可接入 TTN,ChirpStack 等服务器,方便快捷验证 LoRa 网络云服务。主板提供 LF 和 HF 两种频段版本可选择。

产品特性

  • 采用 Raspberry Pi 设计的 RP2040 微控制器芯片
  • 搭载双核 ARM Cortex M0 + 处理器,运行频率高达 133MHz 灵活时钟
  • 内置 264KB 的 SRAM 和 2MB 的片上 Flash
  • 板载 FPC 8PIN 接口,可通过转接板引出 USB Type-C 接口
  • 邮票孔设计,可直接焊接集成到用户自主设计的底板上
  • USB1.1 主机和设备支持
  • 支持低功耗睡眠和休眠模式
  • 可通过 USB 识别为大容量存储器进行拖放式下载程序,多达 20 个多功能的 GPIO 引脚
  • 支持 FSK、GFSK、LoRa 调制方式,更好的抗阻塞和超长距离通信特性
  • 低至 -148dBm 的高接收灵敏度和可编程调节至 22dBm 的发射功率
  • 支持前导码检测,带有 CRC、高达 256 字节的数据包引擎
  • 提供完善的配套资料手册 (C 示例程序和使用手册等)

产品参数

版本型号RP2040-LoRa-LFRP2040-LoRa-HF
射频芯片SX1262
工作频段LF:410 ~ 450MHzHF:850 ~ 930MHz
发射功率MAX@22dBm(可调)
发射电流107mA@22dBm118mA@22dBm
发射电流5.3mA@125KHz
信号调制LoRa/(G)FSK
工作温度0 ~ 60℃
尺寸21.00 × 41.00mm

硬件说明

硬件连接

  • RP2040-LoRa x 1 (本产品配置)
  • Type-C USB线 x 1 (须自备)

Rp2040-lora-002.JPG

RP2040和LoRa连接引脚对应关系
SX1262Pico功能
SX1262_DIO1GP16SX1262中断输出引脚或者特殊功能引脚
SX1262_RSTGP23复位引脚(低电平有效)
SX1262_MISOGP24SPI通信MISO引脚,从设备数据输出
SX1262_MOSIGP15SPI通信MOSI引脚,从设备数据输入
SX1262_CLKGP14SPI通信SCK引脚,从设备时钟输入
SX1262_CSGP13SPI片选引脚(低电平有效)
SX1262_BUSYGP18SX1262 的 BUSY 引脚
SX1262_ANT_SWGP17SX1262 收发切换引脚, 低电平打开发射开关

引脚说明

Rp2040-lora-003.jpg

  • 树莓派 RP2040 使用SPI总线读写SX1262的36个寄存器完成LoRa无线数据传输,SPI总线频率应小于18MHz,具体SPI Timing Requires查看datasheet的第8章Digital Interface and Control

Pico-LoRa-SX1262-868M 014.jpg

  • SPI总线写命令到LoRa芯片会触发内部状态机模式的切换,应注意BUSY引脚低电平表示内部空闲允许接收命令,拉高表示内部已占用不能接受SPI命令,SPI总线需等带BUSY引脚重新拉低才可继续读写操作,TswMode最长是3.5ms

Pico-LoRa-SX1262-868M 013.jpg

  • SX1262 为半双工 LoRa 射频芯片, SX1262_ANT_SW 作为收发切换引脚, 连接到 RP2040 的 GPIO17 引脚, 当 SX1262 处于发射状态时, GPIO17 引脚应保持低电平, 其它状态保持高电平状态

产品尺寸

Rp2040-lora-004.jpg

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等表明不同国家使用频段参数不同,地区参数请点击参考链接

SX1262-LoRa-HAT-021.png

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

SX1268-LoRa-HAT-021.png

  • 树莓派 Pico 和 Pico-LoRa-SX1262 通过 LoRaWAN 接入互联网有两种方式,一是 OTAA(Over-The-Air-Activation),二是 ABP(Activation By Personalization) , 本文通过方式一 OTAA 入网, 入网过程参照下图所示 , 详细文档参考链接1 链接2 和源码
    • 步骤1.终端设备将Join-Request消息发送到将要加入的网络,注意加入过程始终由终端设备发起,Join-Request消息可以使用任何数据速率并使用特定于区域的加入通道之一来传输.例如,在欧洲,终端设备可以通过在 868.10 MHz、868.30 MHz 或 868.50 MHz 中随机选择来发送Join-Request消息.Join-Request消息通过一个或多个网关到达网络服务器.另外注意按照当地无线电管理规定选择适用频段,频段分布具体表格点击链接查看或访问LoRa Alliance搜索, Join-Request消息由以下字段组成,而AppEUI,DevEUI由服务器端注册生成,请参考下面说明.
      • AppEUI: IEEE EUI64 地址空间中的 64 位全局唯一应用标识符,唯一标识能够处理 Join-Request 帧的实体。
      • DevEUI: IEEE EUI64 地址空间中唯一标识终端设备的 64 位全局唯一设备标识符。
      • DevNonce: 由终端设备生成的唯一的随机的 2 字节值.网络服务器使用每个终端设备的 DevNonce 来跟踪它们的加入请求.如果终端设备使用先前使用的 DevNonce 发送加入请求(这种情况称为replay attack),网络服务器会拒绝加入请求并且不允许该终端设备向网络注册.
    • 步骤2.网络服务器处理Join-Request-Message.如果允许终端设备加入网络,网络服务器将生成两个会话密钥(NwkSKey 和 AppSKey)和 Join-accept 消息.然后使用 AppKey 对加入接受消息本身进行加密.网络服务器使用 ECB 模式下的 AES 解密操作来加密 Join-accept 消息.
    • 步骤3.网络服务器将加密的加入接受消息作为正常下行链路发送回终端设备.
    • 步骤4.终端设备使用AES解密Join-Accept.并使用 AppKey 和 AppNonce 生成两个会话密钥 NwkSKey 和 AppSKey用于后续和 Networking 服务器通信. Network Server 同样保存了 kSKey ,Join服务器分发 AppSKey 给 Application Server.

Pico-LoRa-SX1262-868M 016.png

  • 作为终端设备接入互联网络的DevEUI,AppEUI参数, 需要由服务器端注册生成,其具体过程如下
    • 注册并登录TTS后创建应用(Applications)

Pico-LoRa-SX1262-868M 006.jpg

    • 在当前应用中创建节点设备,点击如下图红框位置

Pico-LoRa-SX1262-868M 007.jpg

    • 创建节点设备的各项参数如下图红框中的5个步骤所示,需要保存Step2的DevEUI,Step3的AppKey值以备后用

Pico-LoRa-SX1262-868M 008.jpg

应用

LoRa 器件和网络(如 LoRaWAN)使得智能物联网应用能够帮助解决地球面临的能源管理、自然资源减少、污染控制、基础设施效率、防灾等艰巨挑战。Semtech 的 LoRa 器件已在智慧城市、家居和建筑、社区、计量、供应链和物流、农业等领域实现了数百个成功应用案例。LoRa 网络已覆盖 100 多个国家/地区的数亿台器件,致力于打造一个更智慧的地球。


环境搭建

  • 本教程在Windows 10编译环境使用VScode(Cmake)进行开发,点击下载相关IDE并安装后并打开
  • VScode(Cmake)编译环境请点击The C/C++ SDKget-start文档的Chapter 7. Using Visual Studio Code进行安装, 国内用户请点击查阅链接1

Pico-ResTouch-LCD-2.8 006.jpg

程序下载

1. 直接点击链接下载并解压
2. github下载

例程使用

  • 解压程序或使用git下载程序到与pico-sdk同一级目录下,编译环境安装参考Pico环境设置章节

Pico-LoRa-SX1262-868M 009.jpg

  • 打开VScode,在VScode选择打开pico-lorawan文件夹,在example\otaa_temperature_led\config.h文档中填写刚刚保存的DevEUI和AppKey两个值

Pico-LoRa-SX1262-868M 010.jpg

  • 若环境设置正确,点击VScode的Build按钮等待编译结束,将编译好文件下载到进入Boot模式的RaspberryPi Pico,打开串口查看日志信息

Pico-LoRa-SX1262-868M 011.jpg
Pico-LoRa-SX1262-868M 012.jpg

代码简析

1. 此例程在pico-lorawan基础上增加了基于Semtech SX1262的Pico-LoRa-SX1262-868M模块的适配
2. LoRaWAN协议国内用户请点击链接1链接2参考文档,国外用户请点击链接3参考相关文档
3. 若用户自行建立云服务器,请点击参考lorawan-stack,chrpstack