#lora #module #driver #input-pin #serial-port #ebyte #e32

ebyte-e32

适用于 Ebyte E32 LoRa 模块的跨平台驱动程序

8 个版本 (破坏性更新)

0.9.0 2022年11月18日
0.7.0 2022年10月31日
0.5.0 2022年5月1日
0.3.0 2022年3月19日

硬件支持 中排名第 669


用于 ebyte-e32-ui

自定义许可证

65KB
1.5K SLoC

ebyte-e32-rs

适用于 Ebyte E32 LoRa 模块的跨平台驱动程序。

使用 embedded-hal 通过串行端口、输入引脚(AUX)和两个输出引脚(M0、M1)进行接口。

驱动程序的 CLI 和 GUI 前端(Linux)

演示项目(STM32F411)

示例

use ebyte_e32::{
    mode::Normal,
    parameters::{AirBaudRate, Persistence},
    Ebyte,
};
use embedded_hal::{
    blocking::delay,
    digital::v2::{InputPin, OutputPin},
    serial,
};
use embedded_hal::digital::v2::ToggleableOutputPin;
use std::fmt::Debug;

pub fn simple_test_ebyte<S, AUX, M0, M1, D, LED>(
    mut ebyte: Ebyte<S, AUX, M0, M1, D, Normal>,
    mut led: LED,
    mut delay: impl delay::DelayMs<u32>,
) where
    S: serial::Read<u8> + serial::Write<u8>,
    <S as serial::Read<u8>>::Error: Debug,
    <S as serial::Write<u8>>::Error: Debug,
    AUX: InputPin,
    M0: OutputPin,
    M1: OutputPin,
    D: delay::DelayMs<u32>,
    LED: ToggleableOutputPin,
    LED::Error: Debug,
{
    let model_data = ebyte.model_data().unwrap();
    let mut params = ebyte.parameters().unwrap();

    println!("{model_data:#?}");
    println!("{params:#?}");

    params.air_rate = AirBaudRate::Bps300;
    params.channel = 23;

    ebyte
        .set_parameters(&params, Persistence::Temporary)
        .unwrap();

    let params = ebyte.parameters().unwrap();
    println!("{:#?}", params);

    loop {
        delay.delay_ms(5000u32);
        println!("Sending it!");
        ebyte.write_buffer(b"it").unwrap();
        led.toggle().unwrap();
    }
}

支持的 E32 LoRa 模块

我目前已经测试了 E32-433T30DE32-868T20D。根据数据手册,模块之间的差异很小,但请务必检查:第 11 章“E32 系列”列出了一些差异。例如,E32-170T30D 仅支持高达 9.6k 的波特率。如果发现有问题,请报告或提交 PR。

Crates 功能

  • value_enum:为 ebyte_e32::parameters::Parameters 内的枚举启用 clap::ValueEnum。这将禁用 no_std,但可以使用此功能创建漂亮的 CLIs 和 GUIs:ebyte-e32-ui

已知限制

  • 驱动程序完全阻塞,并依赖于阻塞延迟,有时会阻塞 40ms。
  • 在写入串行数据时不会监控 AUX。当填充有 512 字节空间的模块缓冲区时,这将是重要的。
  • 传输功率、频率、波特率以及可能的一些其他定义通常不适用于每个 E32 模型。请参阅数据手册中的模块特性表。例如,有些模块不支持所有空中波特率。

模块图

modules

依赖关系图

(注意,此内容不包括可选功能 value_enum)

dependencies

依赖关系

~1.5–2MB
~43K SLoC