Skip to content

Lightweight Interrupt-driven Semtech SX127x Library for Arduino (and Adafruit Feathers)

License

Notifications You must be signed in to change notification settings

MZachmann/LightLora_Arduino

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

An Arduino Library for Controlling a Semtech SX127x LoRa Chip

This is yet another library for controlling an SX127x Semtech chip. This is entirely interrupt driven (transmit and receive) with callbacks.

For power usage, you can sleep the CPU while waiting for an interrupt during transmit and receive cycles.

There is a nearly exact copy of this library in MicroPython here https://github.com/MZachmann/LightLora_MicroPython

Installation

This can be used like a standard Arduino Library and installed into SketchFolder/Libraries as LoraUtil. You can also just embed it in a project. Don't forget Utility.cpp,h

Usage

During setup call

StringPair parameters[] = {{"enable_CRC", 1}, { StringPair::LastSP, 0}}; // example
LoraUtil* lru = new LoraUtil(pinSS, pinRST, pinINT, parameters);

Where parameters may be NULL for defaults or an array of StringPairs terminated by StringPair::LastSP. Any parameters not set in the passed-in group will be set to default (see DEFAULT_PARAMETERS).

During the loop you can

if(lru->isPacketAvailable())
{
	LoraPacket* pkt = lru->readPacket();
	Serial.println(pkt->msgTxt);
}
...
lru->sendString("Hello World");

Customization

The ports for the LoRa device are set in the ino file and are arguments for the LoraUtil construction.

There is a BlinkLed routine in the ino that needs a pin value for the on-board led.

The SPI device is run with no choices for pin assignment, as seems to be typical.

The LoraUtil object is a LoraReceiver; it has callbacks for transmit and receive that can be easily changed.

Cautions

Interrupt routines in Arduino are finicky and only support some functions. Set flags and strings and do very little else in the transmit and receive handlers.

About

Lightweight Interrupt-driven Semtech SX127x Library for Arduino (and Adafruit Feathers)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published