From 53e7a309a0b48c998ec43052e34339e405e0341c Mon Sep 17 00:00:00 2001 From: jgromes Date: Fri, 22 Nov 2024 17:14:59 +0100 Subject: [PATCH] [LLCC68] Added LLCC68 examples --- .../LLCC68_Receive_Blocking.ino | 105 +++++++++++++++++ .../LLCC68_Transmit_Blocking.ino | 106 ++++++++++++++++++ 2 files changed, 211 insertions(+) create mode 100644 examples/LLCC68/LLCC68_Receive_Blocking/LLCC68_Receive_Blocking.ino create mode 100644 examples/LLCC68/LLCC68_Transmit_Blocking/LLCC68_Transmit_Blocking.ino diff --git a/examples/LLCC68/LLCC68_Receive_Blocking/LLCC68_Receive_Blocking.ino b/examples/LLCC68/LLCC68_Receive_Blocking/LLCC68_Receive_Blocking.ino new file mode 100644 index 00000000..98e7b95e --- /dev/null +++ b/examples/LLCC68/LLCC68_Receive_Blocking/LLCC68_Receive_Blocking.ino @@ -0,0 +1,105 @@ +/* + RadioLib LLCC68 Blocking Receive Example + + This example listens for LoRa transmissions using LLCC68 LoRa modules. + + NOTE: LLCC68 modules offer the same features as SX1261 and has the same + interface. Please see SX126x examples for full reference. + + WARNING: Often, LLCC68 modules are mislabeled. If you are seeing error -2 + (RADIOLIB_ERR_CHIP_NOT_FOUND) and debug mode shows "SX1261" as + the version string, use the SX1261 class! + + For default module settings, see the wiki page + https://github.com/jgromes/RadioLib/wiki/Default-configuration#sx126x---lora-modem + + For full API reference, see the GitHub Pages + https://jgromes.github.io/RadioLib/ +*/ + +// include the library +#include + +// LLCC68 has the following connections: +// NSS pin: 10 +// DIO1 pin: 2 +// NRST pin: 3 +// BUSY pin: 9 +LLCC68 radio = new Module(10, 2, 3, 9); + +// or detect the pinout automatically using RadioBoards +// https://github.com/radiolib-org/RadioBoards +/* +#define RADIO_BOARD_AUTO +#include +Radio radio = new RadioModule(); +*/ + +void setup() { + Serial.begin(9600); + + // initialize LLCC68 with default settings + Serial.print(F("[LLCC68] Initializing ... ")); + int state = radio.begin(); + if (state == RADIOLIB_ERR_NONE) { + Serial.println(F("success!")); + } else { + Serial.print(F("failed, code ")); + Serial.println(state); + while (true) { delay(10); } + } +} + +void loop() { + Serial.print(F("[LLCC68] Waiting for incoming transmission ... ")); + + // you can receive data as an Arduino String + String str; + int state = radio.receive(str); + + // you can also receive data as byte array + /* + byte byteArr[8]; + int state = radio.receive(byteArr, 8); + */ + + if (state == RADIOLIB_ERR_NONE) { + // packet was successfully received + Serial.println(F("success!")); + + // print the data of the packet + Serial.print(F("[LLCC68] Data:\t\t")); + Serial.println(str); + + // print the RSSI (Received Signal Strength Indicator) + // of the last received packet + Serial.print(F("[LLCC68] RSSI:\t\t")); + Serial.print(radio.getRSSI()); + Serial.println(F(" dBm")); + + // print the SNR (Signal-to-Noise Ratio) + // of the last received packet + Serial.print(F("[LLCC68] SNR:\t\t")); + Serial.print(radio.getSNR()); + Serial.println(F(" dB")); + + // print frequency error + Serial.print(F("[LLCC68] Frequency error:\t")); + Serial.print(radio.getFrequencyError()); + Serial.println(F(" Hz")); + + } else if (state == RADIOLIB_ERR_RX_TIMEOUT) { + // timeout occurred while waiting for a packet + Serial.println(F("timeout!")); + + } else if (state == RADIOLIB_ERR_CRC_MISMATCH) { + // packet was received, but is malformed + Serial.println(F("CRC error!")); + + } else { + // some other error occurred + Serial.print(F("failed, code ")); + Serial.println(state); + + } +} diff --git a/examples/LLCC68/LLCC68_Transmit_Blocking/LLCC68_Transmit_Blocking.ino b/examples/LLCC68/LLCC68_Transmit_Blocking/LLCC68_Transmit_Blocking.ino new file mode 100644 index 00000000..349c3f2c --- /dev/null +++ b/examples/LLCC68/LLCC68_Transmit_Blocking/LLCC68_Transmit_Blocking.ino @@ -0,0 +1,106 @@ +/* + RadioLib SX126x Blocking Transmit Example + + This example transmits packets using LLCC68 LoRa radio module. + + NOTE: LLCC68 modules offer the same features as SX1261 and has the same + interface. Please see SX126x examples for full reference. + + WARNING: Often, LLCC68 modules are mislabeled. If you are seeing error -2 + (RADIOLIB_ERR_CHIP_NOT_FOUND) and debug mode shows "SX1261" as + the version string, use the SX1261 class! + + For default module settings, see the wiki page + https://github.com/jgromes/RadioLib/wiki/Default-configuration#sx126x---lora-modem + + For full API reference, see the GitHub Pages + https://jgromes.github.io/RadioLib/ +*/ + +// include the library +#include + +// LLCC68 has the following connections: +// NSS pin: 10 +// DIO1 pin: 2 +// NRST pin: 3 +// BUSY pin: 9 +LLCC68 radio = new Module(10, 2, 3, 9); + +// or detect the pinout automatically using RadioBoards +// https://github.com/radiolib-org/RadioBoards +/* +#define RADIO_BOARD_AUTO +#include +Radio radio = new RadioModule(); +*/ + +void setup() { + Serial.begin(9600); + + // initialize LLCC68 with default settings + Serial.print(F("[LLCC68] Initializing ... ")); + int state = radio.begin(); + if (state == RADIOLIB_ERR_NONE) { + Serial.println(F("success!")); + } else { + Serial.print(F("failed, code ")); + Serial.println(state); + while (true) { delay(10); } + } + + // some modules have an external RF switch + // controlled via two pins (RX enable, TX enable) + // to enable automatic control of the switch, + // call the following method + // RX enable: 4 + // TX enable: 5 + /* + radio.setRfSwitchPins(4, 5); + */ +} + +// counter to keep track of transmitted packets +int count = 0; + +void loop() { + Serial.print(F("[LLCC68] Transmitting packet ... ")); + + // you can transmit C-string or Arduino string up to + // 256 characters long + String str = "Hello World! #" + String(count++); + int state = radio.transmit(str); + + // you can also transmit byte array up to 256 bytes long + /* + byte byteArr[] = {0x01, 0x23, 0x45, 0x56, 0x78, 0xAB, 0xCD, 0xEF}; + int state = radio.transmit(byteArr, 8); + */ + + if (state == RADIOLIB_ERR_NONE) { + // the packet was successfully transmitted + Serial.println(F("success!")); + + // print measured data rate + Serial.print(F("[LLCC68] Datarate:\t")); + Serial.print(radio.getDataRate()); + Serial.println(F(" bps")); + + } else if (state == RADIOLIB_ERR_PACKET_TOO_LONG) { + // the supplied packet was longer than 256 bytes + Serial.println(F("too long!")); + + } else if (state == RADIOLIB_ERR_TX_TIMEOUT) { + // timeout occured while transmitting packet + Serial.println(F("timeout!")); + + } else { + // some other error occurred + Serial.print(F("failed, code ")); + Serial.println(state); + + } + + // wait for a second before transmitting again + delay(1000); +}