Sandeep Mistry Arduino LoRa Aplication Programming Interface
Silahkan baca di sini
https://github.com/sandeepmistry/arduino-LoRa/blob/master/API.md
Selamat beraktifitas, Tim Instruktur DTS FGA Kominfo
Note: Other Arduino
Note: Other Arduino
Most modules have the PA output pin connected to PA BOOST,
https://github.com/sandeepmistry/arduino-LoRa/blob/master/API.md
Selamat beraktifitas, Tim Instruktur DTS FGA Kominfo
LoRa API
Include Library
#include <LoRa.h>
Setup
Begin
Initialize the library with the specified frequency.LoRa.begin(frequency);
frequency
- frequency in Hz (433E6
,866E6
,915E6
)
1
on success, 0
on failure.Set pins
Override the defaultNSS
, NRESET
, and DIO0
pins used by the library. Must be called before LoRa.begin()
.LoRa.setPins(ss, reset, dio0);
ss
- new slave select pin to use, defaults to10
reset
- new reset pin to use, defaults to9
dio0
- new DIO0 pin to use, defaults to2
. Must be interrupt capable via attachInterrupt(...).
No MCU controlled reset pin
To save further pins one could connect the reset pin of the MCU with reset pin of the radio thus resetting only during startup.reset
- set to-1
to omit this pin
Set SPI interface
Override the default SPI interface used by the library. Must be called beforeLoRa.begin()
.LoRa.setSPI(spi);
spi
- new SPI interface to use, defaults toSPI
Set SPI Frequency
Override the default SPI frequency of 10 MHz used by the library. Must be called beforeLoRa.begin()
.LoRa.setSPIFrequency(frequency);
frequency
- new SPI frequency to use, defaults to8E6
LoRa.setSPIFrequency(frequency)
.End
Stop the libraryLoRa.end()
Sending data
Begin packet
Start the sequence of sending a packet.LoRa.beginPacket();
LoRa.beginPacket(implicitHeader);
implicitHeader
- (optional)true
enables implicit header mode,false
enables explicit header mode (default)
1
if radio is ready to transmit, 0
if busy or on failure.Writing
Write data to the packet. Each packet can contain up to 255 bytes.LoRa.write(byte);
LoRa.write(buffer, length);
byte
- single byte to write to packet
buffer
- data to write to packetlength
- size of data to write
Note: Other Arduino
Print
API's can also be used to write data into the packetEnd packet
End the sequence of sending a packet.LoRa.endPacket();
LoRa.endPacket(async);
async
- (optional)true
enables non-blocking mode,false
waits for transmission to be completed (default)
1
on success, 0
on failure.Receiving data
Parsing packet
Check if a packet has been received.int packetSize = LoRa.parsePacket();
int packetSize = LoRa.parsePacket(size);
size
- (optional) if> 0
implicit header mode is enabled with the expected a packet ofsize
bytes, default mode is explicit header mode
0
if no packet was received.Continuous receive mode
WARNING: Not supported on the Arduino MKR WAN 1300 board!Register callback
Register a callback function for when a packet is received.LoRa.onReceive(onReceive);
void onReceive(int packetSize) {
// ...
}
onReceive
- function to call when a packet is received.
Receive mode
Puts the radio in continuous receive mode.LoRa.receive();
LoRa.receive(int size);
size
- (optional) if> 0
implicit header mode is enabled with the expected a packet ofsize
bytes, default mode is explicit header mode
onReceive
callback will be called when a packet is received.Packet RSSI
int rssi = LoRa.packetRssi();
Returns the RSSI of the received packet.Packet SNR
float snr = LoRa.packetSnr();
Returns the estimated SNR of the received packet in dB.Packet Frequency Error
long freqErr = LoRa.packetFrequencyError();
Returns the frequency error of the received packet in Hz. The
frequency error is the frequency offset between the receiver centre
frequency and that of an incoming LoRa signal.Available
int availableBytes = LoRa.available()
Returns number of bytes available for reading.Peeking
Peek at the next byte in the packet.byte b = LoRa.peek();
Returns the next byte in the packet or -1
if no bytes are available.Reading
Read the next byte from the packet.byte b = LoRa.read();
Returns the next byte in the packet or -1
if no bytes are available.Note: Other Arduino
Stream
API's can also be used to read data from the packetOther radio modes
Idle mode
Put the radio in idle (standby) mode.LoRa.idle();
Sleep mode
Put the radio in sleep mode.LoRa.sleep();
Radio parameters
TX Power
Change the TX power of the radio.LoRa.setTxPower(txPower);
LoRa.setTxPower(txPower, outputPin);
txPower
- TX power in dB, defaults to17
outputPin
- (optional) PA output pin, supported values arePA_OUTPUT_RFO_PIN
andPA_OUTPUT_PA_BOOST_PIN
, defaults toPA_OUTPUT_PA_BOOST_PIN
.
2
to 20
for PA_OUTPUT_PA_BOOST_PIN
, and 0
to 14
for PA_OUTPUT_RFO_PIN
.Most modules have the PA output pin connected to PA BOOST,
Frequency
Change the frequency of the radio.LoRa.setFrequency(frequency);
frequency
- frequency in Hz (433E6
,866E6
,915E6
)
Spreading Factor
Change the spreading factor of the radio.LoRa.setSpreadingFactor(spreadingFactor);
spreadingFactor
- spreading factor, defaults to7
6
and 12
. If a spreading factor of 6
is set, implicit header mode must be used to transmit and receive packets.Signal Bandwidth
Change the signal bandwidth of the radio.LoRa.setSignalBandwidth(signalBandwidth);
signalBandwidth
- signal bandwidth in Hz, defaults to125E3
.
7.8E3
, 10.4E3
, 15.6E3
, 20.8E3
, 31.25E3
, 41.7E3
, 62.5E3
, 125E3
, and 250E3
.Coding Rate
Change the coding rate of the radio.LoRa.setCodingRate4(codingRateDenominator);
codingRateDenominator
- denominator of the coding rate, defaults to5
5
and 8
, these correspond to coding rates of 4/5
and 4/8
. The coding rate numerator is fixed at 4
.Preamble Length
Change the preamble length of the radio.LoRa.setPreambleLength(preambleLength);
preambleLength
- preamble length in symbols, defaults to8
6
and 65535
.Sync Word
Change the sync word of the radio.LoRa.setSyncWord(syncWord);
syncWord
- byte value to use as the sync word, defaults to0x12
CRC
Enable or disable CRC usage, by default a CRC is not used.LoRa.enableCrc();
LoRa.disableCrc();
Invert IQ Signals
Enable or disable Invert the LoRa I and Q signals, by default a invertIQ is not used.LoRa.enableInvertIQ();
LoRa.disableInvertIQ();
Other functions
Random
Generate a random byte, based on the Wideband RSSI measurement.byte b = LoRa.random();
Returns random byte.
Komentar
Posting Komentar