Created
August 14, 2018 20:05
-
-
Save Bambofy/4fc36d56b553cd62683a863243025b30 to your computer and use it in GitHub Desktop.
example of switching between FSK and LoRa modem mode.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
LoRaLib Transmit Example | |
This example transmits LoRa packets with one second delays | |
between them. Each packet contains up to 256 bytes | |
of data, in the form of: | |
- Arduino String | |
- null-terminated char array (C-string) | |
- arbitrary binary data (byte array) | |
For more detailed information, see the LoRaLib Wiki | |
https://github.com/jgromes/LoRaLib/wiki | |
-- 14/07/2018 | |
-- Richard Bamford - Added switching to FSK modem mode to transmit the same data. | |
*/ | |
// include the library | |
#include <LoRaLib.h> | |
// create instance of LoRa class using SX1278 module | |
// this pinout corresponds to LoRenz shield: | |
// https://github.com/jgromes/LoRenz | |
// NSS pin: 7 | |
// DIO0 pin: 2 | |
// DIO1 pin: 3 | |
SX1278 lora = new LoRa; | |
void setup() { | |
Serial.begin(9600); | |
// initialize SX1278 with default settings | |
Serial.print(F("Initializing ... ")); | |
// carrier frequency: 434.0 MHz | |
// 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) { | |
Serial.println(F("success!")); | |
} else { | |
Serial.print(F("failed, code ")); | |
Serial.println(state); | |
while (true); | |
} | |
} | |
void sendPacket() | |
{ | |
Serial.print("Sending packet ... "); | |
// you can transmit C-string or Arduino string up to | |
// 256 characters long | |
int state = lora.transmit("Hello World!"); | |
// you can also transmit byte array up to 256 bytes long | |
/* | |
byte byteArr[] = {0x01, 0x23, 0x45, 0x56, | |
0x78, 0xAB, 0xCD, 0xEF}; | |
int state = lora.transmit(byteArr, 8); | |
*/ | |
if (state == ERR_NONE) { | |
// the packet was successfully transmitted | |
Serial.println(" success!"); | |
// print measured data rate | |
Serial.print("Datarate:\t"); | |
Serial.print(lora.dataRate); | |
Serial.println(" bps"); | |
} else if (state == ERR_PACKET_TOO_LONG) { | |
// the supplied packet was longer than 256 bytes | |
Serial.println(" too long!"); | |
} else if (state == ERR_TX_TIMEOUT) { | |
// timeout occurred while transmitting packet | |
Serial.println(" timeout!"); | |
} | |
} | |
void loop() { | |
// switch modem to LoRa modulation/package. | |
lora.begin(); | |
sendPacket(); | |
// wait a second before transmitting again | |
delay(1000); | |
// switch modem to FSK. | |
lora.beginFSK(); | |
// send the same packet. | |
sendPacket(); | |
delay(1000); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment