Issues with RYLR998 LoRa Modules: Corrupted Data/Inconsistent Messages

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:

  1. How can I resolve the corrupted/inconsistent messages?
  2. Are there specific configurations or optimizations for the RYLR998 modules that improve data reliability?
  3. 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);
}

How much current does the transmitter need when transmitting?
What does the powersupply offer?

SoftwareSerial does not work reliably on UNO etc above 38400baud hence the corrupt characters
reduce the baud rate or use hardware serial interfaces on the Mega

looking at the rylr998 specification the device appears to use 3.3V logic - the UNO/Mega use 5V logic and may damage the RYLR998 if connected directly - use level converters

2 Likes

SoftwareSerial at 115200 baud ????

Just not going to work.

Logic level converters are required when connecting I/O pins on 3.3V modules to 5V Arduinos.

I fixed it by changing the baud rate. Thanks everyone

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.