Missing LoRa Packages

Hello,
we want to built a messaging system. It already works perfectly with Ra-01 and Arduino Nano boards. For a larger number of “users” and distributed sensors, we want to use a larger number of LoRa32 V2 boards. However, we loose packets on the LoRa32s which we receive on the Ra-01s. This is very strange, because we use almost the same code.

Details:

The local LoRa sending node (Ra-01) on 433.000.000 MHz is driven by an Arduino Nano with the following Code. It “Pings” the distributed nodes with a message:

#include <Wire.h>
#include <SPI.h>
#include <LoRa.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels

// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

long frequency = 433000000;
int counter = 0;

void setup() {

if (!LoRa.begin(frequency)) {
Serial.println(“Starting LoRa failed!”);
while (1);
}
LoRa.setTxPower(15);
LoRa.setFrequency(frequency);
LoRa.setSpreadingFactor(7);
LoRa.setSignalBandwidth(125E3);
LoRa.setCodingRate4(5);
LoRa.setPreambleLength(8);

if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3C for 128x64
Serial.println(F(“SSD1306 allocation failed”));
for(;;); }

display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println(“LoRa”);
display.println(“Sender”);
display.print("f: ");
display.println(frequency);
display.display();

Serial.begin(9600);
while (!Serial);
Serial.println(“LoRa Sender”);
}
void loop() {
Serial.print("Sending packet: ");
Serial.println(counter);
// send packet
LoRa.beginPacket();
LoRa.print("DL2MEE ");
LoRa.print(counter);
LoRa.endPacket();
if (counter < 999) {
counter++;}
else {
counter = 0;}
delay(1000);
}

The sender outputs a package about every second and it can be received with another Ra-01 receiver up to 1km away from the sender with no problem at all. For the messaging system we want to built, we have chosen the LoRa32 V2. However, the problem is that we loose packages (see the end of this contribution).

Currently, the sending and receiving boards are sitting next to each other on a table. So field strength is not a problem. Both modules are 433 MHz.

The code on the LoRa32 V2 module is:

#include <heltec.h>
// Version 1.0.9

long frequency = 433000000;

void setup(){

// Initialize the Heltec ESP32 object
Heltec.begin(true /DisplayEnable Enable/, true /LoRa Disable/, true /Serial Enable/, true /PABOOST Enable/, frequency /**/);
//LoRa.setFrequency(frequency); // when this is in the code nothing changes
LoRa.setSpreadingFactor(7);
LoRa.setSignalBandwidth(125E3);
LoRa.setCodingRate4(5);
LoRa.setPreambleLength(8);
LoRa.disableCrc();
}

// the loop routine runs over and over again forever
void loop() {
// try to parse packet
int packetSize = LoRa.parsePacket();
char Lorachar;
String message = " “;
if (packetSize) {
// received a packet
Serial.print(“Received packet '”);
// read packet
while (LoRa.available()) {
Lorachar = (char)LoRa.read();
message = message + Lorachar;
}
Serial.print(message);
Serial.print(”’ with RSSI ");
Serial.println(LoRa.packetRssi());
}}

On the Arduino Nanos with Ra-01 we get a package every second, solid!
On the LoRa32 we get:

14:32:03.685 -> Serial initial done
14:32:03.753 -> you can see OLED printed OLED initial done!
14:32:03.823 -> LoRa Initial success!
14:32:10.234 -> Received packet ’ DL2MEE 191’ with RSSI -82
14:32:54.859 -> Received packet ’ DL2MEE 234’ with RSSI -78
14:34:30.326 -> Received packet ’ DL2MEE 317’ with RSSI -78
14:35:35.038 -> Received packet ’ DL2MEE 385’ with RSSI -78
14:36:40.708 -> Received packet ’ DL2MEE 451’ with RSSI -78
14:36:56.610 -> Received packet ’ DL2MEE 467’ with RSSI -78
14:37:50.581 -> Received packet ’ DL2MEE 519’ with RSSI -78
14:40:08.869 -> Received packet ’ DL2MEE 644’ with RSSI -78
14:40:37.636 -> Received packet ’ DL2MEE 680’ with RSSI -79
14:42:36.476 -> Received packet ’ DL2MEE 791’ with RSSI -80
14:43:31.955 -> Received packet ’ DL2MEE 848’ with RSSI -79
14:44:05.153 -> Received packet ’ DL2MEE 880’ with RSSI -78

The packetcounter after the Callsign “DL2MEE” should increment from line to line.

Now my question, what am I doing wrong?

Thank you for your help and advice.

–Klaus