Stamp LoRa-1262
Stamp LoRa-1262 是一款用于 Stamp 系列 FPC12 接口的 SX1262 LoRa 收发器。StampLoRa1262 会选择当前主机的 FPC12 GPIO 映射,启用射频开关,并提供同步发送、接收和无线电配置操作。
支持以下产品:
以下是 Stamp LoRa-1262 支持的主机:
主机 |
状态 |
|---|---|
StampC5 |
✔ |
StampC6 |
✔ |
StampS3Mini |
✔ |
支持的射频范围为 868-923 MHz。发送前请连接合适的天线。模块的 SHUT_DOWN 信号不属于 Stamp 系列 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 代码块:
Receiver
在 UiFlow2 中打开 stamp_lora1262_receiver_example.m5f2 项目。该项目启动连续接收,并打印每个数据包的 RSSI 和 SNR。
UiFlow2 代码块:
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 代码块:

MicroPython 代码块:
radio.set_freq(868000)
- set_sf(sf)
设置 LoRa 扩频因子。
- 参数:
sf (int) – 扩频因子,范围为 6 至 12。
- 抛出:
ValueError – 如果
sf超出支持范围。
UiFlow2 代码块:

MicroPython 代码块:
radio.set_sf(8)
- set_bw(bw)
设置 LoRa 带宽。
- 参数:
bw (str) – 带宽,单位为 kHz。使用
BANDWIDTHS中的值。- 抛出:
ValueError – 如果
bw不受支持。
UiFlow2 代码块:

MicroPython 代码块:
radio.set_bw("250")
- set_coding_rate(coding_rate)
设置 4/N 编码的编码率分母。
- 参数:
coding_rate (int) – 编码率分母,范围为 5 至 8。
- 抛出:
ValueError – 如果
coding_rate超出支持范围。
UiFlow2 代码块:

MicroPython 代码块:
radio.set_coding_rate(8)
- set_syncword(syncword)
设置 LoRa 同步字。
- 参数:
syncword (int) – 同步字值,范围为 1 至 255。
- 抛出:
ValueError – 如果
syncword超出支持范围。
UiFlow2 代码块:

MicroPython 代码块:
radio.set_syncword(0x12)
- set_preamble_len(preamble_len)
设置 LoRa 前导码长度。
- 参数:
preamble_len (int) – 前导码长度(符号数),范围为 5 至 255。
- 抛出:
ValueError – 如果
preamble_len超出支持范围。
UiFlow2 代码块:

MicroPython 代码块:
radio.set_preamble_len(12)
- set_output_power(output_power)
设置 LoRa 输出功率。
- 参数:
output_power (int) – 输出功率,单位为 dBm,范围为 -9 至 22。
- 抛出:
ValueError – 如果
output_power超出支持范围。
UiFlow2 代码块:

MicroPython 代码块:
radio.set_output_power(10)
- send(packet, tx_at_ms=None)
发送数据包并返回发送时间戳。
UiFlow2 代码块:

MicroPython 代码块:
radio.send("hello")
- recv(timeout_ms=None, rx_length=255, rx_packet=None)
接收一个数据包。
- 参数:
- 返回:
接收到的数据包;超时时返回
None。- 返回类型:
RxPacket or None
UiFlow2 代码块:

MicroPython 代码块:
packet = radio.recv(timeout_ms=1000)
- start_recv()
开始连续接收数据包。
UiFlow2 代码块:

MicroPython 代码块:
radio.start_recv()
- set_tx_callback(callback)
注册发送完成回调。
- 参数:
callback – 不带参数的可调用对象;传入
None可清除回调。
UiFlow2 代码块:

MicroPython 代码块:
radio.set_tx_callback(on_transmit)
- set_rx_callback(callback)
为连续接收的有效数据包注册回调。
- 参数:
callback – 接受一个
lora.RxPacket参数的可调用对象;传入None可清除回调。调用start_recv()启用连续接收。
UiFlow2 代码块:

MicroPython 代码块:
radio.set_rx_callback(on_receive)
- standby()
将无线电置于待机模式并停止连续接收。
UiFlow2 代码块:

MicroPython 代码块:
radio.standby()
- sleep()
将无线电置于睡眠模式并停止连续接收。
UiFlow2 代码块:

MicroPython 代码块:
radio.sleep()
- irq_triggered()
返回无线电 IRQ 是否已触发。
- 返回:
如果有待处理的 IRQ,则返回
True;否则返回False。- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
radio.irq_triggered()
- deinit()
停止接收并将无线电置于睡眠模式。
UiFlow2 代码块:
在 UiFlow2 中使用 deinit 功能块。
MicroPython 代码块:
radio.deinit()


