Lora 模块。

LoRa433_V1.1 Module 是 M5Stack 可堆叠模块系列的一部分。它是一款 LoRa 通信模块,工作频率为 433 MHz,并采用 Ra-02 模块(SX1278 芯片)方案。

支持以下产品:

LoraModule

MicroPython 应用示例:

import os, sys, io
import M5
from M5 import *
from module import LoraModule
lora = LoraModule(pin_irq=35, pin_rst=13) # basic
lora = LoraModule(pin_irq=35, pin_rst=25) # core2
lora = LoraModule(pin_irq=10, pin_rst=5) # cores3
lora.send("Hello, LoRa!")

print(lora.recv())

def callback(received_data):
    global lora
    print(received_data)
    lora.start_recv()
lora.set_irq_callback(callback)
lora.start_recv()

UiFlow2 应用示例:

example_tx.png

example_rx.png

cores3_lora433_rx_example.m5f2

cores3_lora433_tx_example.m5f2

cores3_lora868_rx_example.m5f2

cores3_lora868_tx_example.m5f2

class LoraModule

构造函数

class LoraModule(pin_cs, pin_irq, pin_rst, freq_band, sf, bw, coding_rate, preamble_len, output_power)

初始化 LoRa 模块。

参数:
  • pin_cs (int) – 片选引脚。

  • pin_irq (int) – 中断引脚。

  • pin_rst (int) – 复位引脚。

  • freq_band – LoRa RF 频率(单位:kHz)。

  • sf (int) – 扩频因子,较高的扩频因子可以接收更弱的信号,但数据速率更低。

  • bw (str) – 以 kHz 为单位的带宽值。必须严格为 BANDWIDTHS 中的一个值。

  • coding_rate (int) – 前向纠错(FEC)编码率以比率形式表示,为 `4/N`。

  • preamble_len (int) – 前导码序列的长度,以符号为单位。

  • output_power (int) – 输出功率,单位为 dBm。

UIFLOW2:

init.png

Methods

LoraModule.send(packet, tx_at_ms)

发送数据包。

Return (int):

返回值为传输完成时的时间戳,格式为 time.ticks_ms() 的结果。如果调制解调器初始化为使用中断,则该返回值会更准确。

参数:
  • packet – 要发送的数据包。

  • tx_at_ms – 以毫秒为单位的发送数据包时间。为了精确控制已发送数据包的时间,提供了一个可选的 tx_at_ms 参数,它是一个时间戳(time.ticks_ms() 的值)。如果设置了该参数,数据包将尽可能接近该时间戳发送,并且函数会阻塞直到到达该时间点。

UIFLOW2:

send.png

LoraModule.recv(timeout_ms, rx_length, rx_packet)

接收数据包。

Return (RxPacket):

超时则返回 None,成功则返回包含数据包的 RxPacket 实例。

参数:
  • timeout_ms – 可选,设置接收超时时间(单位:ms)。如果为 None(默认值),则函数将一直阻塞,直到接收到数据包。

  • rx_length (int) – 当 implicit_header 设置为 True 时必须设置(见上文)。该值表示要接收的数据包长度。在默认的 LoRa 显式头模式下会被忽略,因为接收到的无线电头中包含长度信息。

  • rx_packet (RxPacket) – 可选参数,可以是之前从 modem 接收的 RxPacket 对象。如果新接收的数据包长度相同,则复用该对象并返回,以减少一次内存分配。如果新接收的数据包长度不同,则会新分配一个 RxPacket 对象并返回。

UIFLOW2:

recv.png

LoraModule.start_recv()

开始接收数据一次,在接收到数据时触发中断。

UIFLOW2:

start_recv.png

LoraModule.set_irq_callback(callback)

设置 IRQ 回调函数。

参数:

callback – 回调函数。该函数应接受一个参数,即接收到的数据。

UIFLOW2:

set_irq_callback.png

LoraModule.standby()

将调制解调器设置为待机模式。

UIFLOW2:

standby.png

LoraModule.sleep()

将 modem 设置为睡眠模式。

UIFLOW2:

sleep.png

LoraModule.irq_triggered()

检查 IRQ 是否已触发。

UIFLOW2:

irq_triggered.png

Constants

LoraModule.LORA_433
LoraModule.LORA_868

选择 LoRa 频段。

LoraModule.BANDWIDTHS

有效带宽