novag / SlimLoRa

WIP, does NOT work yet. See https://github.com/novag/LoRa-ATtiny-Node for a working version made for the ATtiny85.
GNU Lesser General Public License v3.0
12 stars 1 forks source link

SlimLoRa Arduino library (WIP, does not work yet)


Note: This library evolved from a fun project LoRa-ATtiny-Node. It was never meant to run on more powerful UCs than an ATtiny85. This fork of the original library tries to support the Arduino ecosystem.

It is currently still being adapted to the Arduino ecosystem and is not ready for use!

If you are looking for a stable and proven LoRaWAN library, SlimLoRa is most likely not for you! Go for alternatives like the popular LMIC.

SlimLoRa originated from a code base by Ideentron B.V.. Therefore its structure is similar to the TinyLoRa library. SlimLoRa is very different from LMIC. This does not mean it's better, it's different. E.g. SlimLoRa has no eventing system.

Since it was a library optmized for the ATtiny85 many things have to be adjusted to work with the Arduino standard libraries. I do not have a lot of experience with Arduinos, so hints about best practices and contributions in general are appreciated.


This repository contains the SlimLoRa LoRaWAN library. It uses AES encryption routines originally written by Ideentron B.V.. SlimLoRa is compatible with all radio chips based on the Semtech SX1276 (e.g. HopeRF RFM95).

SlimLoRa implements the ABP and OTAA activation schemes. It has support for downlink messages and the Adaptive Data Rate (ADR) mechanism.

Although the basic things of the LoRaWAN 1.0.3 Class A specification are implemented, this library does not cover the entire specification and thus is not fully LoRaWAN 1.0 compliant. Please verify its behavior before using it on public networks.
It also does not enforce a duty cycle. This must be ensured by the user.

Contents:

Features

This library provides a LoRaWAN 1.0 Class A implementation for the EU-868 band.

The library has some support for LoRaWAN 1.1 which is not usable yet.

Requirements and Limitations

No event handling

This library does not implement any kind of event handling. A call to the Join and SendData methods will block for several seconds until the end of the second receive window.

Be sure to put connected sensors into sleep mode before sending data to save energy!

Timer0

SlimLoRa uses the Timer0 on every call of the Join or SendData methods. Between these calls Timer0 can be used by the user for other purposes. See also timing.h and timing.c.

Configuration

LoRaWAN settings and attached sensors can be configured in the config.h header file.

Supported hardware

Radios based on the SX1276 are supported (e.g. HopeRF RFM95).

Release History

Contributions

This library started from parts written by Ideetron B.V.. Thanks to Ideetron B.V.!

Trademark Acknowledgements

LoRa is a registered trademark of Semtech Corporation. LoRaWAN is a registered trademark of the LoRa Alliance.

All other trademarks are the properties of their respective owners.

License

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.