Hi everyone,
I’m facing an issue with my RYLR998 LoRa modules where the messages received by the receiver Arduino are often corrupted or inconsistent. The transmission itself works, but the data arriving at the receiver is unreliable.
Project Setup:
- Modules: Two RYLR998 LoRa modules
- Boards: Two Arduinos (tested with both Uno and Mega)
- Transmitter: Powered by an external power supply (7–12V), sends messages wirelessly to the receiver
- Receiver: Connected to my computer via USB, displays received messages in the Arduino Serial Monitor
- Communication: Configured using AT commands sent from the Arduino to the RYLR998 modules
The Problem: Corrupted/Inconsistent Messages: The receiver often displays garbled or incomplete data. Examples of received messages:
+RCV=1,23,H�llo f�om Transmitter!,-14,11
+RCV=1,23,Hello from@TransmitterA,-14,11
Steps I’ve Taken:
- Measured voltage at the module’s VDD and RXD pins (3.3V)
- Brought the transmitter and receiver closer to minimize interference
- Adjusted parameters like spreading factor and bandwidth using AT+PARAMETER
- Tested multiple baud rates (115200 and 57600)
What I Need Help With:
- How can I resolve the corrupted/inconsistent messages?
- Are there specific configurations or optimizations for the RYLR998 modules that improve data reliability?
- Could power or voltage mismatches still be causing issues, and how can I rule this out?
Thanks in advance for your help! Let me know if you need more details about my setup or the issue I’m facing. Looking forward to your suggestions!
Code for receiver
#include <SoftwareSerial.h>
#define RYLR_RX 10
#define RYLR_TX 11
SoftwareSerial lora(RYLR_RX, RYLR_TX);
void setup() {
Serial.begin(115200);
lora.begin(115200);
delay(500);
Serial.println("Receiver ready for debugging.");
Serial.println("Type AT commands to communicate with the RYLR998.");
}
void loop() {
if (Serial.available()) {
char c = Serial.read();
lora.write(c);
}
if (lora.available()) {
char c = lora.read();
Serial.write(c);
}
}
Code for transmitter
#include <SoftwareSerial.h>
#define RYLR_RX 10
#define RYLR_TX 11
SoftwareSerial lora(RYLR_RX, RYLR_TX);
void setup() {
lora.begin(115200);
delay(500);
lora.println("AT+ADDRESS=1");
delay(100);
lora.println("AT+NETWORKID=3");
delay(100);
}
void loop() {
String message = "Hello from Transmitter 1A2007";
lora.print("AT+SEND=2,");
lora.print(message.length());
lora.print(",");
lora.println(message);
delay(2000);
}