[SX127x] Added links to default config wiki page

This commit is contained in:
jgromes 2020-07-04 11:38:02 +02:00
parent 4a53a58258
commit 256da12c66
7 changed files with 105 additions and 147 deletions

View file

@ -9,6 +9,9 @@
Other modules from SX127x/RFM9x family can also be used. Other modules from SX127x/RFM9x family can also be used.
For default module settings, see the wiki page
https://github.com/jgromes/RadioLib/wiki/Default-configuration#sx127xrfm9x---lora-modem
For full API reference, see the GitHub Pages For full API reference, see the GitHub Pages
https://jgromes.github.io/RadioLib/ https://jgromes.github.io/RadioLib/
*/ */
@ -21,27 +24,18 @@
// DIO0 pin: 2 // DIO0 pin: 2
// RESET pin: 9 // RESET pin: 9
// DIO1 pin: 3 // DIO1 pin: 3
SX1278 lora = new Module(10, 2, 9, 3); SX1278 radio = new Module(10, 2, 9, 3);
// or using RadioShield // or using RadioShield
// https://github.com/jgromes/RadioShield // https://github.com/jgromes/RadioShield
//SX1278 lora = RadioShield.ModuleA; //SX1278 radio = RadioShield.ModuleA;
void setup() { void setup() {
Serial.begin(9600); Serial.begin(9600);
// initialize SX1278 with default settings // initialize SX1278 with default settings
Serial.print(F("[SX1278] Initializing ... ")); Serial.print(F("[SX1278] Initializing ... "));
// carrier frequency: 434.0 MHz int state = radio.begin();
// bandwidth: 125.0 kHz
// spreading factor: 9
// coding rate: 7
// sync word: 0x12
// output power: 17 dBm
// current limit: 100 mA
// preamble length: 8 symbols
// amplifier gain: 0 (automatic gain control)
int state = lora.begin();
if (state == ERR_NONE) { if (state == ERR_NONE) {
Serial.println(F("success!")); Serial.println(F("success!"));
} else { } else {
@ -55,7 +49,7 @@ void loop() {
Serial.print(F("[SX1278] Scanning channel for LoRa preamble ... ")); Serial.print(F("[SX1278] Scanning channel for LoRa preamble ... "));
// start scanning current channel // start scanning current channel
int state = lora.scanChannel(); int state = radio.scanChannel();
if (state == PREAMBLE_DETECTED) { if (state == PREAMBLE_DETECTED) {
// LoRa preamble was detected // LoRa preamble was detected

View file

@ -9,6 +9,9 @@
modem and use the appropriate configuration modem and use the appropriate configuration
methods. methods.
For default module settings, see the wiki page
https://github.com/jgromes/RadioLib/wiki/Default-configuration#sx127xrfm9x---fsk-modem
For full API reference, see the GitHub Pages For full API reference, see the GitHub Pages
https://jgromes.github.io/RadioLib/ https://jgromes.github.io/RadioLib/
*/ */
@ -21,7 +24,7 @@
// DIO0 pin: 2 // DIO0 pin: 2
// RESET pin: 9 // RESET pin: 9
// DIO1 pin: 3 // DIO1 pin: 3
SX1278 fsk = new Module(10, 2, 9, 3); SX1278 radio = new Module(10, 2, 9, 3);
// or using RadioShield // or using RadioShield
// https://github.com/jgromes/RadioShield // https://github.com/jgromes/RadioShield
@ -32,16 +35,7 @@ void setup() {
// initialize SX1278 FSK modem with default settings // initialize SX1278 FSK modem with default settings
Serial.print(F("[SX1278] Initializing ... ")); Serial.print(F("[SX1278] Initializing ... "));
// carrier frequency: 434.0 MHz int state = radio.beginFSK();
// bit rate: 48.0 kbps
// frequency deviation: 50.0 kHz
// Rx bandwidth: 125.0 kHz
// output power: 13 dBm
// current limit: 100 mA
// data shaping: Gaussian, BT = 0.5
// sync word: 0x2D 0x01
// OOK modulation: disabled
int state = fsk.beginFSK();
if (state == ERR_NONE) { if (state == ERR_NONE) {
Serial.println(F("success!")); Serial.println(F("success!"));
} else { } else {
@ -52,21 +46,21 @@ void setup() {
// if needed, you can switch between LoRa and FSK modes // if needed, you can switch between LoRa and FSK modes
// //
// lora.begin() start LoRa mode (and disable FSK) // radio.begin() start LoRa mode (and disable FSK)
// lora.beginFSK() start FSK mode (and disable LoRa) // radio.beginFSK() start FSK mode (and disable LoRa)
// the following settings can also // the following settings can also
// be modified at run-time // be modified at run-time
state = fsk.setFrequency(433.5); state = radio.setFrequency(433.5);
state = fsk.setBitRate(100.0); state = radio.setBitRate(100.0);
state = fsk.setFrequencyDeviation(10.0); state = radio.setFrequencyDeviation(10.0);
state = fsk.setRxBandwidth(250.0); state = radio.setRxBandwidth(250.0);
state = fsk.setOutputPower(10.0); state = radio.setOutputPower(10.0);
state = fsk.setCurrentLimit(100); state = radio.setCurrentLimit(100);
state = fsk.setDataShaping(0.5); state = radio.setDataShaping(0.5);
uint8_t syncWord[] = {0x01, 0x23, 0x45, 0x67, uint8_t syncWord[] = {0x01, 0x23, 0x45, 0x67,
0x89, 0xAB, 0xCD, 0xEF}; 0x89, 0xAB, 0xCD, 0xEF};
state = fsk.setSyncWord(syncWord, 8); state = radio.setSyncWord(syncWord, 8);
if (state != ERR_NONE) { if (state != ERR_NONE) {
Serial.print(F("Unable to set configuration, code ")); Serial.print(F("Unable to set configuration, code "));
Serial.println(state); Serial.println(state);
@ -78,8 +72,8 @@ void setup() {
// Also, data shaping changes from Gaussian filter to // Also, data shaping changes from Gaussian filter to
// simple filter with cutoff frequency. Make sure to call // simple filter with cutoff frequency. Make sure to call
// setDataShapingOOK() to set the correct shaping! // setDataShapingOOK() to set the correct shaping!
state = fsk.setOOK(true); state = radio.setOOK(true);
state = fsk.setDataShapingOOK(1); state = radio.setDataShapingOOK(1);
if (state != ERR_NONE) { if (state != ERR_NONE) {
Serial.print(F("Unable to change modulation, code ")); Serial.print(F("Unable to change modulation, code "));
Serial.println(state); Serial.println(state);
@ -95,11 +89,11 @@ void loop() {
// NOTE: FSK modem maximum packet length is 63 bytes! // NOTE: FSK modem maximum packet length is 63 bytes!
// transmit FSK packet // transmit FSK packet
int state = fsk.transmit("Hello World!"); int state = radio.transmit("Hello World!");
/* /*
byte byteArr[] = {0x01, 0x23, 0x45, 0x67, byte byteArr[] = {0x01, 0x23, 0x45, 0x67,
0x89, 0xAB, 0xCD, 0xEF}; 0x89, 0xAB, 0xCD, 0xEF};
int state = lora.transmit(byteArr, 8); int state = radio.transmit(byteArr, 8);
*/ */
if (state == ERR_NONE) { if (state == ERR_NONE) {
Serial.println(F("[SX1278] Packet transmitted successfully!")); Serial.println(F("[SX1278] Packet transmitted successfully!"));
@ -114,10 +108,10 @@ void loop() {
// receive FSK packet // receive FSK packet
String str; String str;
state = fsk.receive(str); state = radio.receive(str);
/* /*
byte byteArr[8]; byte byteArr[8];
int state = lora.receive(byteArr, 8); int state = radio.receive(byteArr, 8);
*/ */
if (state == ERR_NONE) { if (state == ERR_NONE) {
Serial.println(F("[SX1278] Received packet!")); Serial.println(F("[SX1278] Received packet!"));
@ -137,13 +131,13 @@ void loop() {
// to transmit packet to a particular address, // to transmit packet to a particular address,
// use the following methods: // use the following methods:
// //
// fsk.transmit("Hello World!", address); // radio.transmit("Hello World!", address);
// fsk.startTransmit("Hello World!", address); // radio.startTransmit("Hello World!", address);
// set node address to 0x02 // set node address to 0x02
state = fsk.setNodeAddress(0x02); state = radio.setNodeAddress(0x02);
// set broadcast address to 0xFF // set broadcast address to 0xFF
state = fsk.setBroadcastAddress(0xFF); state = radio.setBroadcastAddress(0xFF);
if (state != ERR_NONE) { if (state != ERR_NONE) {
Serial.println(F("[SX1278] Unable to set address filter, code ")); Serial.println(F("[SX1278] Unable to set address filter, code "));
Serial.println(state); Serial.println(state);
@ -153,7 +147,7 @@ void loop() {
// NOTE: calling this method will also erase previously set // NOTE: calling this method will also erase previously set
// node and broadcast address // node and broadcast address
/* /*
state = fsk.disableAddressFiltering(); state = radio.disableAddressFiltering();
if (state != ERR_NONE) { if (state != ERR_NONE) {
Serial.println(F("Unable to remove address filter, code ")); Serial.println(F("Unable to remove address filter, code "));
} }
@ -164,7 +158,7 @@ void loop() {
// sent to DIO1 (data) and DIO2 (clock) // sent to DIO1 (data) and DIO2 (clock)
// activate direct mode transmitter // activate direct mode transmitter
state = fsk.transmitDirect(); state = radio.transmitDirect();
if (state != ERR_NONE) { if (state != ERR_NONE) {
Serial.println(F("[SX1278] Unable to start direct transmission mode, code ")); Serial.println(F("[SX1278] Unable to start direct transmission mode, code "));
Serial.println(state); Serial.println(state);
@ -175,7 +169,7 @@ void loop() {
// it is recommended to set data shaping to 0 // it is recommended to set data shaping to 0
// (no shaping) when transmitting audio // (no shaping) when transmitting audio
state = fsk.setDataShaping(0.0); state = radio.setDataShaping(0.0);
if (state != ERR_NONE) { if (state != ERR_NONE) {
Serial.println(F("[SX1278] Unable to set data shaping, code ")); Serial.println(F("[SX1278] Unable to set data shaping, code "));
Serial.println(state); Serial.println(state);
@ -199,7 +193,7 @@ void loop() {
// direct mode transmissions can also be received // direct mode transmissions can also be received
// as bit stream on DIO1 (data) and DIO2 (clock) // as bit stream on DIO1 (data) and DIO2 (clock)
state = fsk.receiveDirect(); state = radio.receiveDirect();
if (state != ERR_NONE) { if (state != ERR_NONE) {
Serial.println(F("[SX1278] Unable to start direct reception mode, code ")); Serial.println(F("[SX1278] Unable to start direct reception mode, code "));
Serial.println(state); Serial.println(state);
@ -207,5 +201,5 @@ void loop() {
// NOTE: you will not be able to send or receive packets // NOTE: you will not be able to send or receive packets
// while direct mode is active! to deactivate it, call method // while direct mode is active! to deactivate it, call method
// fsk.packetMode() // radio.packetMode()
} }

View file

@ -13,6 +13,9 @@
Other modules from SX127x/RFM9x family can also be used. Other modules from SX127x/RFM9x family can also be used.
For default module settings, see the wiki page
https://github.com/jgromes/RadioLib/wiki/Default-configuration#sx127xrfm9x---lora-modem
For full API reference, see the GitHub Pages For full API reference, see the GitHub Pages
https://jgromes.github.io/RadioLib/ https://jgromes.github.io/RadioLib/
*/ */
@ -25,27 +28,18 @@
// DIO0 pin: 2 // DIO0 pin: 2
// RESET pin: 9 // RESET pin: 9
// DIO1 pin: 3 // DIO1 pin: 3
SX1278 lora = new Module(10, 2, 9, 3); SX1278 radio = new Module(10, 2, 9, 3);
// or using RadioShield // or using RadioShield
// https://github.com/jgromes/RadioShield // https://github.com/jgromes/RadioShield
//SX1278 lora = RadioShield.ModuleA; //SX1278 radio = RadioShield.ModuleA;
void setup() { void setup() {
Serial.begin(9600); Serial.begin(9600);
// initialize SX1278 with default settings // initialize SX1278 with default settings
Serial.print(F("[SX1278] Initializing ... ")); Serial.print(F("[SX1278] Initializing ... "));
// carrier frequency: 434.0 MHz int state = radio.begin();
// bandwidth: 125.0 kHz
// spreading factor: 9
// coding rate: 7
// sync word: 0x12
// output power: 17 dBm
// current limit: 100 mA
// preamble length: 8 symbols
// amplifier gain: 0 (automatic gain control)
int state = lora.begin();
if (state == ERR_NONE) { if (state == ERR_NONE) {
Serial.println(F("success!")); Serial.println(F("success!"));
} else { } else {
@ -63,12 +57,12 @@ void loop() {
// See example ReceiveInterrupt for details // See example ReceiveInterrupt for details
// on non-blocking reception method. // on non-blocking reception method.
String str; String str;
int state = lora.receive(str); int state = radio.receive(str);
// you can also receive data as byte array // you can also receive data as byte array
/* /*
byte byteArr[8]; byte byteArr[8];
int state = lora.receive(byteArr, 8); int state = radio.receive(byteArr, 8);
*/ */
if (state == ERR_NONE) { if (state == ERR_NONE) {
@ -82,19 +76,19 @@ void loop() {
// print the RSSI (Received Signal Strength Indicator) // print the RSSI (Received Signal Strength Indicator)
// of the last received packet // of the last received packet
Serial.print(F("[SX1278] RSSI:\t\t\t")); Serial.print(F("[SX1278] RSSI:\t\t\t"));
Serial.print(lora.getRSSI()); Serial.print(radio.getRSSI());
Serial.println(F(" dBm")); Serial.println(F(" dBm"));
// print the SNR (Signal-to-Noise Ratio) // print the SNR (Signal-to-Noise Ratio)
// of the last received packet // of the last received packet
Serial.print(F("[SX1278] SNR:\t\t\t")); Serial.print(F("[SX1278] SNR:\t\t\t"));
Serial.print(lora.getSNR()); Serial.print(radio.getSNR());
Serial.println(F(" dB")); Serial.println(F(" dB"));
// print frequency error // print frequency error
// of the last received packet // of the last received packet
Serial.print(F("[SX1278] Frequency error:\t")); Serial.print(F("[SX1278] Frequency error:\t"));
Serial.print(lora.getFrequencyError()); Serial.print(radio.getFrequencyError());
Serial.println(F(" Hz")); Serial.println(F(" Hz"));
} else if (state == ERR_RX_TIMEOUT) { } else if (state == ERR_RX_TIMEOUT) {

View file

@ -14,6 +14,9 @@
Other modules from SX127x/RFM9x family can also be used. Other modules from SX127x/RFM9x family can also be used.
For default module settings, see the wiki page
https://github.com/jgromes/RadioLib/wiki/Default-configuration#sx127xrfm9x---lora-modem
For full API reference, see the GitHub Pages For full API reference, see the GitHub Pages
https://jgromes.github.io/RadioLib/ https://jgromes.github.io/RadioLib/
*/ */
@ -26,27 +29,18 @@
// DIO0 pin: 2 // DIO0 pin: 2
// RESET pin: 9 // RESET pin: 9
// DIO1 pin: 3 // DIO1 pin: 3
SX1278 lora = new Module(10, 2, 9, 3); SX1278 radio = new Module(10, 2, 9, 3);
// or using RadioShield // or using RadioShield
// https://github.com/jgromes/RadioShield // https://github.com/jgromes/RadioShield
//SX1278 lora = RadioShield.ModuleA; //SX1278 radio = RadioShield.ModuleA;
void setup() { void setup() {
Serial.begin(9600); Serial.begin(9600);
// initialize SX1278 with default settings // initialize SX1278 with default settings
Serial.print(F("[SX1278] Initializing ... ")); Serial.print(F("[SX1278] Initializing ... "));
// carrier frequency: 434.0 MHz int state = radio.begin();
// bandwidth: 125.0 kHz
// spreading factor: 9
// coding rate: 7
// sync word: 0x12
// output power: 17 dBm
// current limit: 100 mA
// preamble length: 8 symbols
// amplifier gain: 0 (automatic gain control)
int state = lora.begin();
if (state == ERR_NONE) { if (state == ERR_NONE) {
Serial.println(F("success!")); Serial.println(F("success!"));
} else { } else {
@ -57,11 +51,11 @@ void setup() {
// set the function that will be called // set the function that will be called
// when new packet is received // when new packet is received
lora.setDio0Action(setFlag); radio.setDio0Action(setFlag);
// start listening for LoRa packets // start listening for LoRa packets
Serial.print(F("[SX1278] Starting to listen ... ")); Serial.print(F("[SX1278] Starting to listen ... "));
state = lora.startReceive(); state = radio.startReceive();
if (state == ERR_NONE) { if (state == ERR_NONE) {
Serial.println(F("success!")); Serial.println(F("success!"));
} else { } else {
@ -73,12 +67,12 @@ void setup() {
// if needed, 'listen' mode can be disabled by calling // if needed, 'listen' mode can be disabled by calling
// any of the following methods: // any of the following methods:
// //
// lora.standby() // radio.standby()
// lora.sleep() // radio.sleep()
// lora.transmit(); // radio.transmit();
// lora.receive(); // radio.receive();
// lora.readData(); // radio.readData();
// lora.scanChannel(); // radio.scanChannel();
} }
// flag to indicate that a packet was received // flag to indicate that a packet was received
@ -113,12 +107,12 @@ void loop() {
// you can read received data as an Arduino String // you can read received data as an Arduino String
String str; String str;
int state = lora.readData(str); int state = radio.readData(str);
// you can also read received data as byte array // you can also read received data as byte array
/* /*
byte byteArr[8]; byte byteArr[8];
int state = lora.readData(byteArr, 8); int state = radio.readData(byteArr, 8);
*/ */
if (state == ERR_NONE) { if (state == ERR_NONE) {
@ -131,17 +125,17 @@ void loop() {
// print RSSI (Received Signal Strength Indicator) // print RSSI (Received Signal Strength Indicator)
Serial.print(F("[SX1278] RSSI:\t\t")); Serial.print(F("[SX1278] RSSI:\t\t"));
Serial.print(lora.getRSSI()); Serial.print(radio.getRSSI());
Serial.println(F(" dBm")); Serial.println(F(" dBm"));
// print SNR (Signal-to-Noise Ratio) // print SNR (Signal-to-Noise Ratio)
Serial.print(F("[SX1278] SNR:\t\t")); Serial.print(F("[SX1278] SNR:\t\t"));
Serial.print(lora.getSNR()); Serial.print(radio.getSNR());
Serial.println(F(" dB")); Serial.println(F(" dB"));
// print frequency error // print frequency error
Serial.print(F("[SX1278] Frequency error:\t")); Serial.print(F("[SX1278] Frequency error:\t"));
Serial.print(lora.getFrequencyError()); Serial.print(radio.getFrequencyError());
Serial.println(F(" Hz")); Serial.println(F(" Hz"));
} else if (state == ERR_CRC_MISMATCH) { } else if (state == ERR_CRC_MISMATCH) {
@ -156,7 +150,7 @@ void loop() {
} }
// put module back to listen mode // put module back to listen mode
lora.startReceive(); radio.startReceive();
// we're ready to receive more packets, // we're ready to receive more packets,
// enable interrupt service routine // enable interrupt service routine

View file

@ -13,6 +13,9 @@
Other modules from SX127x/RFM9x family can also be used. Other modules from SX127x/RFM9x family can also be used.
For default module settings, see the wiki page
https://github.com/jgromes/RadioLib/wiki/Default-configuration#sx127xrfm9x---lora-modem
For full API reference, see the GitHub Pages For full API reference, see the GitHub Pages
https://jgromes.github.io/RadioLib/ https://jgromes.github.io/RadioLib/
*/ */
@ -25,14 +28,14 @@
// DIO0 pin: 2 // DIO0 pin: 2
// RESET pin: 9 // RESET pin: 9
// DIO1 pin: 3 // DIO1 pin: 3
SX1278 loraSX1278 = new Module(10, 2, 9, 3); SX1278 radio1 = new Module(10, 2, 9, 3);
// SX1272 has different connections: // SX1272 has different connections:
// NSS pin: 9 // NSS pin: 9
// DIO0 pin: 4 // DIO0 pin: 4
// RESET pin: 5 // RESET pin: 5
// DIO1 pin: 6 // DIO1 pin: 6
SX1272 loraSX1272 = new Module(9, 4, 5, 6); SX1272 radio2 = new Module(9, 4, 5, 6);
// or using RadioShield // or using RadioShield
// https://github.com/jgromes/RadioShield // https://github.com/jgromes/RadioShield
@ -43,16 +46,7 @@ void setup() {
// initialize SX1278 with default settings // initialize SX1278 with default settings
Serial.print(F("[SX1278] Initializing ... ")); Serial.print(F("[SX1278] Initializing ... "));
// carrier frequency: 434.0 MHz int state = radio1.begin();
// bandwidth: 125.0 kHz
// spreading factor: 9
// coding rate: 7
// sync word: 0x12
// output power: 17 dBm
// current limit: 100 mA
// preamble length: 8 symbols
// amplifier gain: 0 (automatic gain control)
int state = loraSX1278.begin();
if (state == ERR_NONE) { if (state == ERR_NONE) {
Serial.println(F("success!")); Serial.println(F("success!"));
} else { } else {
@ -79,7 +73,7 @@ void setup() {
// current limit: 50 mA // current limit: 50 mA
// preamble length: 20 symbols // preamble length: 20 symbols
// amplifier gain: 1 (maximum gain) // amplifier gain: 1 (maximum gain)
state = loraSX1272.begin(915.0, 500.0, 6, 5, 0x14, 2); state = radio2.begin(915.0, 500.0, 6, 5, 0x14, 2);
if (state == ERR_NONE) { if (state == ERR_NONE) {
Serial.println(F("success!")); Serial.println(F("success!"));
} else { } else {
@ -92,32 +86,32 @@ void setup() {
// and check if the configuration was changed successfully // and check if the configuration was changed successfully
// set carrier frequency to 433.5 MHz // set carrier frequency to 433.5 MHz
if (loraSX1278.setFrequency(433.5) == ERR_INVALID_FREQUENCY) { if (radio1.setFrequency(433.5) == ERR_INVALID_FREQUENCY) {
Serial.println(F("Selected frequency is invalid for this module!")); Serial.println(F("Selected frequency is invalid for this module!"));
while (true); while (true);
} }
// set bandwidth to 250 kHz // set bandwidth to 250 kHz
if (loraSX1278.setBandwidth(250.0) == ERR_INVALID_BANDWIDTH) { if (radio1.setBandwidth(250.0) == ERR_INVALID_BANDWIDTH) {
Serial.println(F("Selected bandwidth is invalid for this module!")); Serial.println(F("Selected bandwidth is invalid for this module!"));
while (true); while (true);
} }
// set spreading factor to 10 // set spreading factor to 10
if (loraSX1278.setSpreadingFactor(10) == ERR_INVALID_SPREADING_FACTOR) { if (radio1.setSpreadingFactor(10) == ERR_INVALID_SPREADING_FACTOR) {
Serial.println(F("Selected spreading factor is invalid for this module!")); Serial.println(F("Selected spreading factor is invalid for this module!"));
while (true); while (true);
} }
// set coding rate to 6 // set coding rate to 6
if (loraSX1278.setCodingRate(6) == ERR_INVALID_CODING_RATE) { if (radio1.setCodingRate(6) == ERR_INVALID_CODING_RATE) {
Serial.println(F("Selected coding rate is invalid for this module!")); Serial.println(F("Selected coding rate is invalid for this module!"));
while (true); while (true);
} }
// set LoRa sync word to 0x14 // set LoRa sync word to 0x14
// NOTE: value 0x34 is reserved for LoRaWAN networks and should not be used // NOTE: value 0x34 is reserved for LoRaWAN networks and should not be used
if (loraSX1278.setSyncWord(0x14) != ERR_NONE) { if (radio1.setSyncWord(0x14) != ERR_NONE) {
Serial.println(F("Unable to set sync word!")); Serial.println(F("Unable to set sync word!"));
while (true); while (true);
} }
@ -125,20 +119,20 @@ void setup() {
// set output power to 10 dBm (accepted range is -3 - 17 dBm) // set output power to 10 dBm (accepted range is -3 - 17 dBm)
// NOTE: 20 dBm value allows high power operation, but transmission // NOTE: 20 dBm value allows high power operation, but transmission
// duty cycle MUST NOT exceed 1% // duty cycle MUST NOT exceed 1%
if (loraSX1278.setOutputPower(10) == ERR_INVALID_OUTPUT_POWER) { if (radio1.setOutputPower(10) == ERR_INVALID_OUTPUT_POWER) {
Serial.println(F("Selected output power is invalid for this module!")); Serial.println(F("Selected output power is invalid for this module!"));
while (true); while (true);
} }
// set over current protection limit to 80 mA (accepted range is 45 - 240 mA) // set over current protection limit to 80 mA (accepted range is 45 - 240 mA)
// NOTE: set value to 0 to disable overcurrent protection // NOTE: set value to 0 to disable overcurrent protection
if (loraSX1278.setCurrentLimit(80) == ERR_INVALID_CURRENT_LIMIT) { if (radio1.setCurrentLimit(80) == ERR_INVALID_CURRENT_LIMIT) {
Serial.println(F("Selected current limit is invalid for this module!")); Serial.println(F("Selected current limit is invalid for this module!"));
while (true); while (true);
} }
// set LoRa preamble length to 15 symbols (accepted range is 6 - 65535) // set LoRa preamble length to 15 symbols (accepted range is 6 - 65535)
if (loraSX1278.setPreambleLength(15) == ERR_INVALID_PREAMBLE_LENGTH) { if (radio1.setPreambleLength(15) == ERR_INVALID_PREAMBLE_LENGTH) {
Serial.println(F("Selected preamble length is invalid for this module!")); Serial.println(F("Selected preamble length is invalid for this module!"));
while (true); while (true);
} }
@ -146,7 +140,7 @@ void setup() {
// set amplifier gain to 1 (accepted range is 1 - 6, where 1 is maximum gain) // set amplifier gain to 1 (accepted range is 1 - 6, where 1 is maximum gain)
// NOTE: set value to 0 to enable automatic gain control // NOTE: set value to 0 to enable automatic gain control
// leave at 0 unless you know what you're doing // leave at 0 unless you know what you're doing
if (loraSX1278.setGain(1) == ERR_INVALID_GAIN) { if (radio1.setGain(1) == ERR_INVALID_GAIN) {
Serial.println(F("Selected gain is invalid for this module!")); Serial.println(F("Selected gain is invalid for this module!"));
while (true); while (true);
} }

View file

@ -9,6 +9,9 @@
Other modules from SX127x/RFM9x family can also be used. Other modules from SX127x/RFM9x family can also be used.
For default module settings, see the wiki page
https://github.com/jgromes/RadioLib/wiki/Default-configuration#sx127xrfm9x---lora-modem
For full API reference, see the GitHub Pages For full API reference, see the GitHub Pages
https://jgromes.github.io/RadioLib/ https://jgromes.github.io/RadioLib/
*/ */
@ -21,27 +24,18 @@
// DIO0 pin: 2 // DIO0 pin: 2
// RESET pin: 9 // RESET pin: 9
// DIO1 pin: 3 // DIO1 pin: 3
SX1278 lora = new Module(10, 2, 9, 3); SX1278 radio = new Module(10, 2, 9, 3);
// or using RadioShield // or using RadioShield
// https://github.com/jgromes/RadioShield // https://github.com/jgromes/RadioShield
//SX1278 lora = RadioShield.ModuleA; //SX1278 radio = RadioShield.ModuleA;
void setup() { void setup() {
Serial.begin(9600); Serial.begin(9600);
// initialize SX1278 with default settings // initialize SX1278 with default settings
Serial.print(F("[SX1278] Initializing ... ")); Serial.print(F("[SX1278] Initializing ... "));
// carrier frequency: 434.0 MHz int state = radio.begin();
// bandwidth: 125.0 kHz
// spreading factor: 9
// coding rate: 7
// sync word: 0x12
// output power: 17 dBm
// current limit: 100 mA
// preamble length: 8 symbols
// amplifier gain: 0 (automatic gain control)
int state = lora.begin();
if (state == ERR_NONE) { if (state == ERR_NONE) {
Serial.println(F("success!")); Serial.println(F("success!"));
} else { } else {
@ -57,7 +51,7 @@ void setup() {
// RX enable: 4 // RX enable: 4
// TX enable: 5 // TX enable: 5
/* /*
lora.setRfSwitchPins(4, 5); radio.setRfSwitchPins(4, 5);
*/ */
} }
@ -69,12 +63,12 @@ void loop() {
// NOTE: transmit() is a blocking method! // NOTE: transmit() is a blocking method!
// See example SX127x_Transmit_Interrupt for details // See example SX127x_Transmit_Interrupt for details
// on non-blocking transmission method. // on non-blocking transmission method.
int state = lora.transmit("Hello World!"); int state = radio.transmit("Hello World!");
// you can also transmit byte array up to 256 bytes long // you can also transmit byte array up to 256 bytes long
/* /*
byte byteArr[] = {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF}; byte byteArr[] = {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF};
int state = lora.transmit(byteArr, 8); int state = radio.transmit(byteArr, 8);
*/ */
if (state == ERR_NONE) { if (state == ERR_NONE) {
@ -83,7 +77,7 @@ void loop() {
// print measured data rate // print measured data rate
Serial.print(F("[SX1278] Datarate:\t")); Serial.print(F("[SX1278] Datarate:\t"));
Serial.print(lora.getDataRate()); Serial.print(radio.getDataRate());
Serial.println(F(" bps")); Serial.println(F(" bps"));
} else if (state == ERR_PACKET_TOO_LONG) { } else if (state == ERR_PACKET_TOO_LONG) {

View file

@ -10,6 +10,9 @@
Other modules from SX127x/RFM9x family can also be used. Other modules from SX127x/RFM9x family can also be used.
For default module settings, see the wiki page
https://github.com/jgromes/RadioLib/wiki/Default-configuration#sx127xrfm9x---lora-modem
For full API reference, see the GitHub Pages For full API reference, see the GitHub Pages
https://jgromes.github.io/RadioLib/ https://jgromes.github.io/RadioLib/
*/ */
@ -22,11 +25,11 @@
// DIO0 pin: 2 // DIO0 pin: 2
// RESET pin: 9 // RESET pin: 9
// DIO1 pin: 3 // DIO1 pin: 3
SX1278 lora = new Module(10, 2, 9, 3); SX1278 radio = new Module(10, 2, 9, 3);
// or using RadioShield // or using RadioShield
// https://github.com/jgromes/RadioShield // https://github.com/jgromes/RadioShield
//SX1278 lora = RadioShield.ModuleA; //SX1278 radio = RadioShield.ModuleA;
// save transmission state between loops // save transmission state between loops
int transmissionState = ERR_NONE; int transmissionState = ERR_NONE;
@ -36,16 +39,7 @@ void setup() {
// initialize SX1278 with default settings // initialize SX1278 with default settings
Serial.print(F("[SX1278] Initializing ... ")); Serial.print(F("[SX1278] Initializing ... "));
// carrier frequency: 434.0 MHz int state = radio.begin();
// bandwidth: 125.0 kHz
// spreading factor: 9
// coding rate: 7
// sync word: 0x12
// output power: 17 dBm
// current limit: 100 mA
// preamble length: 8 symbols
// amplifier gain: 0 (automatic gain control)
int state = lora.begin();
if (state == ERR_NONE) { if (state == ERR_NONE) {
Serial.println(F("success!")); Serial.println(F("success!"));
} else { } else {
@ -56,20 +50,20 @@ void setup() {
// set the function that will be called // set the function that will be called
// when packet transmission is finished // when packet transmission is finished
lora.setDio0Action(setFlag); radio.setDio0Action(setFlag);
// start transmitting the first packet // start transmitting the first packet
Serial.print(F("[SX1278] Sending first packet ... ")); Serial.print(F("[SX1278] Sending first packet ... "));
// you can transmit C-string or Arduino string up to // you can transmit C-string or Arduino string up to
// 256 characters long // 256 characters long
transmissionState = lora.startTransmit("Hello World!"); transmissionState = radio.startTransmit("Hello World!");
// you can also transmit byte array up to 256 bytes long // you can also transmit byte array up to 256 bytes long
/* /*
byte byteArr[] = {0x01, 0x23, 0x45, 0x67, byte byteArr[] = {0x01, 0x23, 0x45, 0x67,
0x89, 0xAB, 0xCD, 0xEF}; 0x89, 0xAB, 0xCD, 0xEF};
state = lora.startTransmit(byteArr, 8); state = radio.startTransmit(byteArr, 8);
*/ */
} }
@ -125,13 +119,13 @@ void loop() {
// you can transmit C-string or Arduino string up to // you can transmit C-string or Arduino string up to
// 256 characters long // 256 characters long
transmissionState = lora.startTransmit("Hello World!"); transmissionState = radio.startTransmit("Hello World!");
// you can also transmit byte array up to 256 bytes long // you can also transmit byte array up to 256 bytes long
/* /*
byte byteArr[] = {0x01, 0x23, 0x45, 0x67, byte byteArr[] = {0x01, 0x23, 0x45, 0x67,
0x89, 0xAB, 0xCD, 0xEF}; 0x89, 0xAB, 0xCD, 0xEF};
int state = lora.startTransmit(byteArr, 8); int state = radio.startTransmit(byteArr, 8);
*/ */
// we're ready to send more packets, // we're ready to send more packets,