Intermittent Reporting Issue with multiple Heltec LoRa V3

Hello everyone.

I need your help to guide me through a communication problem between Heltec LoRa V3 devices. I am using 8 devices that send packets every 30 minutes to a receiver, also a Heltec LoRa V3. Most of the devices send the data without any issue, but 1 or 2 occasionally fail to report, or sometimes do not report for a long time.

I am receiving the data directly on my MQTT broker, which is connected to my Home Assistant where I analyze the data. The only thing I have done is to check in the field whether the device was powered by the battery and if it had a charge, and everything was fine. If I reboot the board at that moment, the packet is sent.

I am not sure if I need to be careful with the LoRa frequency configuration on each device because I left everything the same on all devices, only the packet sends a different value to define which device the packet belongs to. I don’t know if the overlap of signal transmission from two or more devices simultaneously is causing this problem.

CODE OF MASTER

// ----------------------------------------------------------------------------
// LoRa Configs ---------------------------------------------------------------
// ----------------------------------------------------------------------------
#define RF_FREQUENCY                433000000  // Hz
#define TX_OUTPUT_POWER             10         // dBm
#define LORA_BANDWIDTH              0          // [0: 125 kHz, 1: 250 kHz, 2: 500 kHz, 3: Reserved]
#define LORA_SPREADING_FACTOR       12         // [SF7..SF12]
#define LORA_CODINGRATE             4          // [1: 4/5, 2: 4/6, 3: 4/7, 4: 4/8]
#define LORA_PREAMBLE_LENGTH        8          // Same for Tx and Rx
#define LORA_SYMBOL_TIMEOUT         0          // Symbols
#define LORA_FIX_LENGTH_PAYLOAD_ON  false
#define LORA_IQ_INVERSION_ON        false
#define RX_TIMEOUT_VALUE            1000
#define BUFFER_SIZE                 30         // Define the payload size here

char txpacket[BUFFER_SIZE];
char rxpacket[BUFFER_SIZE];

static RadioEvents_t RadioEvents;

int16_t rssi,rxSize;

bool lora_idle = true;

// ----------------------------------------------------------------------------

CODE OF SLAVES

// ----------------------------------------------------------------------------
// LoRa configs ---------------------------------------------------------------
// ----------------------------------------------------------------------------
#define RF_FREQUENCY                433000000  // Hz
#define TX_OUTPUT_POWER             -2         // dBm
#define LORA_BANDWIDTH              0          // [0: 125 kHz, 1: 250 kHz, 2: 500 kHz, 3: Reserved]
#define LORA_SPREADING_FACTOR       12         // [SF7..SF12]
#define LORA_CODINGRATE             4          // [1: 4/5, 2: 4/6, 3: 4/7, 4: 4/8]
#define LORA_PREAMBLE_LENGTH        8          // Same for Tx and Rx
#define LORA_SYMBOL_TIMEOUT         0          // Symbols
#define LORA_FIX_LENGTH_PAYLOAD_ON  false
#define LORA_IQ_INVERSION_ON        false
#define RX_TIMEOUT_VALUE            1000
#define BUFFER_SIZE                 30         // Define the payload size here

char txpacket[BUFFER_SIZE];
char rxpacket[BUFFER_SIZE];

static RadioEvents_t RadioEvents;

bool lora_idle=true;

void OnTxDone( void );
void OnTxTimeout( void );

int batteryValue = 0;

// ----------------------------------------------------------------------------