/CircuitPython-Ebyte-E32

CircuitPython driver for Ebyte's E32 UART LoRa modules that use the SX1278/SX1276 chipsets.

Primary LanguagePythonMIT LicenseMIT

CircuitPython Ebyte E32 Library

CircuitPython driver for Ebyte's E32 UART LoRa modules that use the SX1278/SX1276 chipsets.

Features

  • Supports all standard E32 UART modules.
  • Extra support on a per-frequency and per-power basis:
    • More descriptive constants for TX power.
    • Maximum packet size calculators. (TODO)
    • Entirely optional via separate modules.
  • Minified versions for devices with tiny storage space:
    • ~75% smaller for .py files
    • ~5% smaller for .mpy files (Due to shortened local variables, mostly)

Limitations

  • No built-in packet size limit:
    • Wildly different between frequencies & operating parameters.
    • Not documented clearly enough in LoRA and LoRaWAN documentation.
  • No built-in protocol:
    • All LoRa packets are glued back-to-back when received.
    • No LoraWAN support
  • Missing support for some modules:
    • Modules with 170, 400 and 900 prefix. (Will improve overtime)

Dependencies

This driver depends on:

Installing

Go to the Releases page and download one of the packages.

Here is a short description of the available packages:

Package suffix Description
py Python files from ebyte_e32/
py-min Minified version of this repository's code.
mpy-8 Python files compiled using mpy-cross v8
mpy-8-min Minified python files compiled using mpy-cross v8

Usage

Usage examples can be found in the examples folder, or in the Examples section of the documentation.

Wiring

E32 Module MCU
M0 Any digital output pin
M1 Any digital output pin
RXD Any UART TX capable pin*
TXD Any UART RX capable pin*
AUX Any digital input pin**
VCC Power supply 2.3V to 5.2V DC, or 4.5V to 15V for E32-443T37S***

*: Some devices like the STM32 Black Pill may require you to use very specific pins for the UART bus.
**: Analogue input pins might work, but this type of setup isn't supported !
***: Higher voltages can cause damage, make sure to double-check the datasheet !

"Making sure it works"

The E32Device class will raise a ebyte_e32.exceptions.E32GenericError exception during instantiation if it can't communicate to your module.

The same error may be raised when you change any operating setting.

Links

Resources

Datasheets

All datasheets can be found in the documentation.

Legal Disclaimer

Proper usage of E32 modules and adherence to your local laws and other RF-related laws all fall under your responsibility.
Improper use can result in physical damage to your module, and may also break some of your local laws, especially those regarding RF transmissions.

An example of these law-related issues would be the usage of E32-443T30D / TTL-1W modules in most of europe.
Unless you have the proper authorizations, you most likely can't legally own or use them, and you would typically be limited to modules with a maximum of 20dBm / 100mW TX power on the EU443 band.

I cannot be held responsible for what you do with your own devices in your free time.

License

This project is licensed under the MIT license.