Stamp LoRa-1262

Stamp LoRa-1262 是一款用于 Stamp 系列 FPC12 接口的 SX1262 LoRa 收发器。StampLoRa1262 会选择当前主机的 FPC12 GPIO 映射,启用射频开关,并提供同步发送、接收和无线电配置操作。

支持以下产品:

Stamp LoRa-1262

以下是 Stamp LoRa-1262 支持的主机:

Stamp LoRa-1262 主机支持

主机

状态

StampC5

StampC6

StampS3Mini

支持的射频范围为 868-923 MHz。发送前请连接合适的天线。模块的 SHUT_DOWN 信号不属于 Stamp 系列 FPC12 接口,驱动不会控制该信号。

引脚映射

Stamp LoRa-1262 FPC12 引脚映射

Position

Signal

StampC5

StampC6

StampS3Mini

1

3V3

3V3

3V3

3V3

2

3V3

3V3

3V3

3V3

3

SW

G23

G8

G38

4

IRQ

G0

G0

G21

5

BUSY

G24

G18

G39

6

RST

G25

G19

G40

7

GND

GND

GND

GND

8

MISO

G26

G20

G41

9

MOSI

G27

G21

G42

10

CS

G11

G22

G43

11

GND

GND

GND

GND

12

CLK

G12

G23

G44

UiFlow2 应用示例

Sender

在 UiFlow2 中打开 stamp_lora1262_sender_example.m5f2 项目。该项目每秒发送一条序列消息。

UiFlow2 代码块:

stamp_lora1262_sender_example.png

Receiver

在 UiFlow2 中打开 stamp_lora1262_receiver_example.m5f2 项目。该项目启动连续接收,并打印每个数据包的 RSSI 和 SNR。

UiFlow2 代码块:

stamp_lora1262_receiver_example.png

MicroPython 应用示例

Sender

 1# SPDX-FileCopyrightText: 2026 M5Stack Technology CO LTD
 2#
 3# SPDX-License-Identifier: MIT
 4
 5import time
 6
 7import M5
 8from stamp import StampLoRa1262
 9
10
11radio = None
12sequence = None
13
14
15def setup():
16    global radio, sequence
17
18    M5.begin()
19    radio = StampLoRa1262()
20    sequence = 0
21
22
23def loop():
24    global radio, sequence
25
26    M5.update()
27    message = "Stamp LoRa1262 %d" % sequence
28    radio.send(message)
29    print("sent:", message)
30    sequence = (sequence + 1) & 0xFF
31    time.sleep_ms(1000)
32
33
34if __name__ == "__main__":
35    try:
36        setup()
37        while True:
38            loop()
39    except (Exception, KeyboardInterrupt) as e:
40        try:
41            from utility import print_error_msg
42
43            print_error_msg(e)
44        except ImportError:
45            print("please update to latest firmware")

Receiver

 1# SPDX-FileCopyrightText: 2026 M5Stack Technology CO LTD
 2#
 3# SPDX-License-Identifier: MIT
 4
 5import M5
 6from stamp import StampLoRa1262
 7
 8
 9radio = None
10
11
12def receive_event(packet):
13    print("received:", packet.decode())
14    print("rssi:", packet.rssi, "snr:", packet.snr / 4)
15
16
17def setup():
18    global radio
19
20    M5.begin()
21    radio = StampLoRa1262()
22    radio.set_rx_callback(receive_event)
23    radio.start_recv()
24
25
26def loop():
27    M5.update()
28
29
30if __name__ == "__main__":
31    try:
32        setup()
33        while True:
34            loop()
35    except (Exception, KeyboardInterrupt) as e:
36        try:
37            from utility import print_error_msg
38
39            print_error_msg(e)
40        except ImportError:
41            print("please update to latest firmware")

API参考

class stamp.lora1262.StampLoRa1262(freq_khz=868000, bw='250', sf=8, coding_rate=8, preamble_len=12, syncword=18, output_power=10, sw=None, irq=None, busy=None, reset=None, miso=None, mosi=None, cs=None, clock=None, spi_id=1)

基类:object

通过 Stamp FPC12 接口连接的 SX1262 LoRa 收发器。

引脚传入 None 时使用当前 Stamp 主机的 FPC12 映射。默认支持 StampC5、StampC6 和 StampS3Mini。为其他主机明确提供所有信号引脚后也可以使用。

set_freq(freq_khz=868000)

设置 LoRa 载波频率。

参数:

freq_khz (int) – 载波频率,单位为 kHz,范围为 868000 至 923000。

抛出:

ValueError – 如果 freq_khz 超出支持范围。

UiFlow2 代码块:

set_freq.png

MicroPython 代码块:

radio.set_freq(868000)
set_sf(sf)

设置 LoRa 扩频因子。

参数:

sf (int) – 扩频因子,范围为 6 至 12。

抛出:

ValueError – 如果 sf 超出支持范围。

UiFlow2 代码块:

set_sf.png

MicroPython 代码块:

radio.set_sf(8)
set_bw(bw)

设置 LoRa 带宽。

参数:

bw (str) – 带宽,单位为 kHz。使用 BANDWIDTHS 中的值。

抛出:

ValueError – 如果 bw 不受支持。

UiFlow2 代码块:

set_bw.png

MicroPython 代码块:

radio.set_bw("250")
set_coding_rate(coding_rate)

设置 4/N 编码的编码率分母。

参数:

coding_rate (int) – 编码率分母,范围为 5 至 8。

抛出:

ValueError – 如果 coding_rate 超出支持范围。

UiFlow2 代码块:

set_coding_rate.png

MicroPython 代码块:

radio.set_coding_rate(8)
set_syncword(syncword)

设置 LoRa 同步字。

参数:

syncword (int) – 同步字值,范围为 1 至 255。

抛出:

ValueError – 如果 syncword 超出支持范围。

UiFlow2 代码块:

set_syncword.png

MicroPython 代码块:

radio.set_syncword(0x12)
set_preamble_len(preamble_len)

设置 LoRa 前导码长度。

参数:

preamble_len (int) – 前导码长度(符号数),范围为 5 至 255。

抛出:

ValueError – 如果 preamble_len 超出支持范围。

UiFlow2 代码块:

set_preamble_len.png

MicroPython 代码块:

radio.set_preamble_len(12)
set_output_power(output_power)

设置 LoRa 输出功率。

参数:

output_power (int) – 输出功率,单位为 dBm,范围为 -9 至 22。

抛出:

ValueError – 如果 output_power 超出支持范围。

UiFlow2 代码块:

set_output_power.png

MicroPython 代码块:

radio.set_output_power(10)
send(packet, tx_at_ms=None)

发送数据包并返回发送时间戳。

参数:
  • packet – 字符串会编码为 UTF-8,整数会作为单字节数据发送。

  • tx_at_ms (int) – 可选的计划发送时间戳。

返回:

发送时间戳,单位为毫秒。

返回类型:

int

UiFlow2 代码块:

send.png send_return.png send_with_time_return.png

MicroPython 代码块:

radio.send("hello")
recv(timeout_ms=None, rx_length=255, rx_packet=None)

接收一个数据包。

参数:
  • timeout_ms (int) – 可选的接收超时时间,单位为毫秒。

  • rx_length (int) – 最大接收长度,单位为字节。

  • rx_packet (RxPacket) – 可选的用于复用的数据包对象。

返回:

接收到的数据包;超时时返回 None

返回类型:

RxPacket or None

UiFlow2 代码块:

recv.png recv_data_param.png

MicroPython 代码块:

packet = radio.recv(timeout_ms=1000)
start_recv()

开始连续接收数据包。

UiFlow2 代码块:

start_recv.png

MicroPython 代码块:

radio.start_recv()
set_tx_callback(callback)

注册发送完成回调。

参数:

callback – 不带参数的可调用对象;传入 None 可清除回调。

UiFlow2 代码块:

send_event.png

MicroPython 代码块:

radio.set_tx_callback(on_transmit)
set_rx_callback(callback)

为连续接收的有效数据包注册回调。

参数:

callback – 接受一个 lora.RxPacket 参数的可调用对象;传入 None 可清除回调。调用 start_recv() 启用连续接收。

UiFlow2 代码块:

receive_event.png

MicroPython 代码块:

radio.set_rx_callback(on_receive)
standby()

将无线电置于待机模式并停止连续接收。

UiFlow2 代码块:

standby.png

MicroPython 代码块:

radio.standby()
sleep()

将无线电置于睡眠模式并停止连续接收。

UiFlow2 代码块:

sleep.png

MicroPython 代码块:

radio.sleep()
irq_triggered()

返回无线电 IRQ 是否已触发。

返回:

如果有待处理的 IRQ,则返回 True;否则返回 False

返回类型:

bool

UiFlow2 代码块:

irq_triggered.png

MicroPython 代码块:

radio.irq_triggered()
deinit()

停止接收并将无线电置于睡眠模式。

UiFlow2 代码块:

在 UiFlow2 中使用 deinit 功能块。

MicroPython 代码块:

radio.deinit()