Heltec Wireless Tracker to ESP32C3 Mini via LORA

I used the SX12XX Library (as recommended by @srnet in post 11) to connect a ESP32_C3 with a RFM95W Lora module to a Heltec ESP32S3 LoRa (V3) SX1262 receiver

Heltec ESP32S3 LoRa (V3) SX1262 receiver code

// Heltec ESP32S3 LoRa (V3) SX1262 receiver text communication

/*******************************************************************************************************
  Programs for Arduino - Copyright of the author Stuart Robinson - 20/01/20
     from https://github.com/StuartsProjects/SX12XX-LoRa
 *******************************************************************************************************/

#include <SPI.h>              //the lora device is SPI based so load the SPI library
#include <SX126XLT.h>         //include the appropriate library
#include "SX1262_Settings.h"  //include the setiings file, frequencies, LoRa settings etc

SX126XLT LT;  //create a library class instance called LT

uint32_t RXpacketCount;
uint32_t errors;

uint8_t RXBUFFER[RXBUFFER_SIZE];  //create the buffer that received packets are copied into

uint8_t RXPacketL;  //stores length of packet received
int8_t PacketRSSI;  //stores RSSI of received packet
int8_t PacketSNR;   //stores signal to noise ratio (SNR) of received packet


void loop() {
  // receive data
  RXPacketL = LT.receive(RXBUFFER, RXBUFFER_SIZE, 60000, WAIT_RX);  //wait for a packet to arrive with 60seconds (60000mS) timeout
  PacketRSSI = LT.readPacketRSSI();                                 //read the recived RSSI value
  PacketSNR = LT.readPacketSNR();                                   //read the received SNR value
  Serial.print("Received ");
  if (RXPacketL == 0)  //if the LT.receive() function detects an error, RXpacketL is 0
    receive_packet_is_Error();
  else
    receive_packet_is_OK();  //LED off
  Serial.println();
}


void receive_packet_is_OK() {
  uint16_t IRQStatus, localCRC;
  IRQStatus = LT.readIrqStatus();  //read the LoRa device IRQ status register
  RXpacketCount++;
  printElapsedTime();  //print elapsed time to Serial Monitor
  Serial.print(F("  "));
  LT.printASCIIPacket(RXBUFFER, RXPacketL);             //print the packet as ASCII characters
  localCRC = LT.CRCCCITT(RXBUFFER, RXPacketL, 0xFFFF);  //calculate the CRC, this is the external CRC calculation of the RXBUFFER
  Serial.print(F(",CRC,"));                             //contents, not the LoRa device internal CRC
  Serial.print(localCRC, HEX);
  Serial.print(F(",RSSI,"));
  Serial.print(PacketRSSI);
  Serial.print(F("dBm,SNR,"));
  Serial.print(PacketSNR);
  Serial.print(F("dB,Length,"));
  Serial.print(RXPacketL);
  Serial.print(F(",Packets,"));
  Serial.print(RXpacketCount);
  Serial.print(F(",Errors,"));
  Serial.print(errors);
  Serial.print(F(",IRQreg,"));
  Serial.print(IRQStatus, HEX);
  transmitReply();
}


void receive_packet_is_Error() {
  uint16_t IRQStatus;
  IRQStatus = LT.readIrqStatus();  //read the LoRa device IRQ status register
  printElapsedTime();              //print elapsed time to Serial Monitor
  if (IRQStatus & IRQ_RX_TIMEOUT)  //check for an RX timeout
  {
    Serial.print(F(" RXTimeout"));
  } else {
    errors++;
    Serial.print(F(" PacketError"));
    Serial.print(F(",RSSI,"));
    Serial.print(PacketRSSI);
    Serial.print(F("dBm,SNR,"));
    Serial.print(PacketSNR);
    Serial.print(F("dB,Length,"));
    Serial.print(LT.readRXPacketL());  //get the device packet length
    Serial.print(F(",Packets,"));
    Serial.print(RXpacketCount);
    Serial.print(F(",Errors,"));
    Serial.print(errors);
    Serial.print(F(",IRQreg,"));
    Serial.print(IRQStatus, HEX);
    LT.printIrqStatus();  //print the names of the IRQ registers set
  }
  delay(250);  //gives a longer buzzer and LED flash for error
}


void printElapsedTime() {
  float seconds;
  seconds = millis() / 1000;
  Serial.print(seconds, 0);
  Serial.print(F("s"));
}

void setup() {
  Serial.begin(115200);
  delay(3000);
  Serial.println();
  Serial.println(F("104_LoRa_Receiver_Detailed_Setup_ESP32 Starting"));
  Serial.println();
  SPI.begin();
  //SPI.begin(SCK, MISO, MOSI);                  //this will work too, allows you to move SPI pins
  //SPI beginTranscation is normally part of library routines, but if it is disabled in the library
  //a single instance is needed here, so uncomment the program line below
  //SPI.beginTransaction(SPISettings(8000000, MSBFIRST, SPI_MODE0));
  //setup hardware pins used by device, then check if device is found
  if (LT.begin(NSS, NRESET, RFBUSY, DIO1, LORA_DEVICE)) {
    Serial.println(F("LoRa Device found"));
  } else {
    Serial.println(F("No device responding"));
    while (1) delay(100);
  }

  //The function call list below shows the complete setup for the LoRa device using the information defined in the
  //Settings.h file.
  //The 'Setup LoRa device' list below can be replaced with a single function call;
  //LT.setupLoRa(Frequency, Offset, SpreadingFactor, Bandwidth, CodeRate, Optimisation);

  //***************************************************************************************************
  //Setup LoRa device
  //***************************************************************************************************
  LT.setMode(MODE_STDBY_RC);
  LT.setRegulatorMode(USE_DCDC);
  LT.setPaConfig(0x04, PAAUTO, LORA_DEVICE);
  LT.setDIO3AsTCXOCtrl(TCXO_CTRL_3_3V);
  LT.calibrateDevice(ALLDevices);  //is required after setting TCXO
  LT.calibrateImage(Frequency);
  LT.setDIO2AsRfSwitchCtrl();
  LT.setPacketType(PACKET_TYPE_LORA);
  LT.setRfFrequency(Frequency, Offset);
  LT.setModulationParams(SpreadingFactor, Bandwidth, CodeRate, Optimisation);
  LT.setBufferBaseAddress(0, 0);
  LT.setPacketParams(8, LORA_PACKET_VARIABLE_LENGTH, 255, LORA_CRC_ON, LORA_IQ_NORMAL);
  LT.setDioIrqParams(IRQ_RADIO_ALL, (IRQ_RX_DONE + IRQ_RX_TX_TIMEOUT), 0, 0);  //set for IRQ on TX done and timeout on DIO1
  LT.setHighSensitivity();                                                     //set for maximum gain
  LT.setSyncWord(LORA_MAC_PRIVATE_SYNCWORD);
  //***************************************************************************************************


  Serial.println();
  LT.printModemSettings();  //reads and prints the configured LoRa settings, useful check
  Serial.println();
  LT.printOperatingSettings();  //reads and prints the configured operting settings, useful check
  Serial.println();
  Serial.println();
  LT.printRegisters(0x900, 0x9FF);  //print contents of device registers, normally 0x00 to 0x4F
  Serial.println();
  Serial.println();

  Serial.print(F("Receiver ready - RXBUFFER_SIZE "));
  Serial.println(RXBUFFER_SIZE);
  Serial.println();
}

char buff[50];
uint8_t TXPacketL;
uint32_t TXPacketCount, startmS, endmS;
void transmitReply(void) {
  static int count = 0;
  snprintf(buff, 50, "receive OK %d", count++);
  Serial.print(F("\nTransmit Packet> "));
  Serial.flush();
  TXPacketL = strlen(buff);  //set TXPacketL to length of array
  //buff[TXPacketL] = '*';                                   //replace null character at buffer end so its visible on reciver
  LT.printASCIIPacket((uint8_t *)buff, TXPacketL);                      //print the buffer (the sent packet) as ASCI
  startmS = millis();                                                   //start transmit timer
  if (LT.transmit((uint8_t *)buff, TXPacketL, 5000, TXpower, WAIT_TX))  //will return packet length sent if OK, otherwise 0 if transmit error
  {
    endmS = millis();  //packet sent, note end time
    TXPacketCount++;
    transmit_packet_is_OK();
  } else {
    transmit_packet_is_Error();  //transmit packet returned 0, there was an error
  }
  Serial.println();
  delay(packet_delay);  //have a delay between packets
}


void transmit_packet_is_OK() {
  //if here packet has been sent OK
  uint16_t localCRC;

  Serial.print(F("  BytesSent,"));
  Serial.print(TXPacketL);  //print transmitted packet length
  localCRC = LT.CRCCCITT((uint8_t *)buff, TXPacketL, 0xFFFF);
  Serial.print(F("  CRC,"));
  Serial.print(localCRC, HEX);  //print CRC of sent packet
  Serial.print(F("  TransmitTime,"));
  Serial.print(endmS - startmS);  //print transmit time of packet
  Serial.print(F("mS"));
  Serial.print(F("  PacketsSent,"));
  Serial.print(TXPacketCount);  //print total of packets sent OK
}


void transmit_packet_is_Error() {
  //if here there was an error transmitting packet
  uint16_t IRQStatus;
  IRQStatus = LT.readIrqStatus();  //read the the interrupt register
  Serial.print(F(" SendError,"));
  Serial.print(F("Length,"));
  Serial.print(TXPacketL);  //print transmitted packet length
  Serial.print(F(",IRQreg,"));
  Serial.print(IRQStatus, HEX);  //print IRQ status
  LT.printIrqStatus();           //prints the text of which IRQs set
}

SX1262_Settings.h file (must be in same directory as above)

// Heltec ESP32S3 LoRa (V3) SX1262 receiver 

/*******************************************************************************************************
  Programs for Arduino - Copyright of the author Stuart Robinson - 04/04/20

  This program is supplied as is, it is up to the user of the program to decide if the program is
  suitable for the intended purpose and free from errors.
*******************************************************************************************************/

//*******  Setup hardware pin definitions here ! ***************

//These are the pin definitions for one of my own boards, a ESP32 shield base with my BBF board shield on
//top. Be sure to change the definitions to match your own setup. Some pins such as DIO2, DIO3, BUZZER
//may not be in used by this sketch so they do not need to be connected and should be included and be 
//set to -1.

#define SCK 9                                  //SCK on SPI3
#define MISO 11                                 //MISO on SPI3 
#define MOSI 10                                 //MOSI on SPI3 

#define NSS 8                                   //select pin on LoRa device
#define NRESET 12                               //reset pin on LoRa device
#define RFBUSY 13                               //busy line

#define LED1 2                                  //on board LED, high for on
#define DIO1 14                                 //DIO1 pin on LoRa device, used for RX and TX done 

#define LORA_DEVICE DEVICE_SX1262               //we need to define the device we are using


//*******  Setup LoRa Parameters Here ! ***************

//LoRa Modem Parameters
const uint32_t Frequency = 866000000;           //frequency of transmissions in hertz
const uint32_t Offset = 0;                      //offset frequency for calibration purposes

const uint8_t Bandwidth = LORA_BW_125;          //LoRa bandwidth
const uint8_t SpreadingFactor = LORA_SF7;       //LoRa spreading factor
const uint8_t CodeRate = LORA_CR_4_5;           //LoRa coding rate
const uint8_t Optimisation = LDRO_AUTO;         //low data rate optimisation setting, normally set to auto

const int8_t TXpower = 10;                      //LoRa transmit power in dBm


const uint16_t packet_delay = 1000;             //mS delay between packets

#define RXBUFFER_SIZE 32                        //RX buffer size  

ESP32_C3 LoRa SX1278 (RFM95W) transmitter code

// ESP32_C3 LoRa  SX1278 (RFM95W) transmitter text communication

/*******************************************************************************************************
  Programs for Arduino - Copyright of the author Stuart Robinson - 20/01/20
     from https://github.com/StuartsProjects/SX12XX-LoRa
 *******************************************************************************************************/

#include <SPI.h>              //the SX127X device is SPI based so load the SPI library
#include <SX127XLT.h>         //include the appropriate library
#include "SX1278_Settings.h"  //include the setiings file, frequencies, LoRa settings etc

SX127XLT LT;  //create a library class instance called LT

uint8_t TXPacketL;
uint32_t TXPacketCount, startmS, endmS;

char buff[50] = "Hello World 0";
int count = 0;

void loop() {
  snprintf(buff, 50, "Hello World %d", count++);
  Serial.print(F("Transmit Packet> "));
  Serial.flush();
  TXPacketL = strlen(buff);  //set TXPacketL to length of array
  //buff[TXPacketL] = '*';                                   //replace null character at buffer end so its visible on reciver
  LT.printASCIIPacket((uint8_t *)buff, TXPacketL);                      //print the buffer (the sent packet) as ASCII
  startmS = millis();                                                   //start transmit timer
  if (LT.transmit((uint8_t *)buff, TXPacketL, 5000, TXpower, WAIT_TX))  //will return packet length sent if OK, otherwise 0 if transmit error
  {
    endmS = millis();  //packet sent, note end time
    TXPacketCount++;
    transmit_packet_is_OK();
  } else {
    transmit_packet_is_Error();  //transmit packet returned 0, there was an error
  }
  Serial.println();
  delay(packet_delay);  //have a delay between packets
}


void transmit_packet_is_OK() {
  //if here packet has been sent OK
  uint16_t localCRC;

  Serial.print(F("  BytesSent,"));
  Serial.print(TXPacketL);  //print transmitted packet length
  localCRC = LT.CRCCCITT((uint8_t *)buff, TXPacketL, 0xFFFF);
  Serial.print(F("  CRC,"));
  Serial.print(localCRC, HEX);  //print CRC of sent packet
  Serial.print(F("  TransmitTime,"));
  Serial.print(endmS - startmS);  //print transmit time of packet
  Serial.print(F("mS"));
  Serial.print(F("  PacketsSent,"));
  Serial.print(TXPacketCount);  //print total of packets sent OK
  receive_packet();
}


void transmit_packet_is_Error() {
  //if here there was an error transmitting packet
  uint16_t IRQStatus;
  IRQStatus = LT.readIrqStatus();  //read the the interrupt register
  Serial.print(F(" SendError,"));
  Serial.print(F("Length,"));
  Serial.print(TXPacketL);  //print transmitted packet length
  Serial.print(F(",IRQreg,"));
  Serial.print(IRQStatus, HEX);  //print IRQ status
  LT.printIrqStatus();           //prints the text of which IRQs set
}

void setup() {
  if (VCCPOWER >= 0) {
    pinMode(VCCPOWER, OUTPUT);    //For controlling power to external devices
    digitalWrite(VCCPOWER, LOW);  //VCCOUT on. lora device on
  }
  Serial.begin(115200);
  delay(3000);
  Serial.println();
  Serial.println(F("3_LoRa_Transmitter_ESP32 Starting"));

  //SPI.begin();                                //default setup can be used be used
  SPI.begin(SCK, MISO, MOSI);  //alternative format for SPI3, VSPI; SPI.begin(SCK,MISO,MOSI,SS)

  //SPI beginTranscation is normally part of library routines, but if it is disabled in library
  //a single instance is needed here, so uncomment the program line below
  //SPI.beginTransaction(SPISettings(8000000, MSBFIRST, SPI_MODE0));

  //setup hardware pins used by device, then check if device is found
  if (LT.begin(NSS, NRESET, DIO0, LORA_DEVICE)) {
    Serial.println(F("LoRa Device found"));
    delay(1000);
  } else {
    Serial.println(F("No device responding"));
    while (1)
      ;
  }

  //The function call list below shows the complete setup for the LoRa device using the information defined in the
  //Settings.h file.
  //The 'Setup LoRa device' list below can be replaced with a single function call;
  //LT.setupLoRa(Frequency, Offset, SpreadingFactor, Bandwidth, CodeRate, Optimisation);

  //***************************************************************************************************
  //Setup LoRa device
  //***************************************************************************************************
  LT.setMode(MODE_STDBY_RC);                                                             //got to standby mode to configure device
  LT.setPacketType(PACKET_TYPE_LORA);                                                    //set for LoRa transmissions
  LT.setRfFrequency(Frequency, Offset);                                                  //set the operating frequency
  LT.calibrateImage(0);                                                                  //run calibration after setting frequency
  LT.setModulationParams(SpreadingFactor, Bandwidth, CodeRate, LDRO_AUTO);               //set LoRa modem parameters
  LT.setBufferBaseAddress(0x00, 0x00);                                                   //where in the SX buffer packets start, TX and RX
  LT.setPacketParams(8, LORA_PACKET_VARIABLE_LENGTH, 255, LORA_CRC_ON, LORA_IQ_NORMAL);  //set packet parameters
  LT.setSyncWord(LORA_MAC_PRIVATE_SYNCWORD);                                             //syncword, LORA_MAC_PRIVATE_SYNCWORD = 0x12, or LORA_MAC_PUBLIC_SYNCWORD = 0x34
  LT.setHighSensitivity();                                                               //set for highest sensitivity at expense of slightly higher LNA current
  LT.setDioIrqParams(IRQ_RADIO_ALL, IRQ_TX_DONE, 0, 0);                                  //set for IRQ on RX done
  //***************************************************************************************************

  Serial.println();
  LT.printModemSettings();  //reads and prints the configured LoRa settings, useful check
  Serial.println();
  LT.printOperatingSettings();  //reads and prints the configured operating settings, useful check
  Serial.println();
  Serial.println();
  LT.printRegisters(0x00, 0x4F);  //print contents of device registers, normally 0x00 to 0x4F
  Serial.println();
  Serial.println();

  Serial.print(F("Transmitter ready"));
  Serial.println();
}

uint32_t RXpacketCount;
uint32_t errors;

uint8_t RXBUFFER[RXBUFFER_SIZE];  //create the buffer that received packets are copied into

uint8_t RXPacketL;  //stores length of packet received
int8_t PacketRSSI;  //stores RSSI of received packet
int8_t PacketSNR;   //stores signal to noise ratio (SNR) of received packet

void receive_packet(void) {
  // receive data
  RXPacketL = LT.receive(RXBUFFER, RXBUFFER_SIZE, 60000, WAIT_RX);  //wait for a packet to arrive with 60seconds (60000mS) timeout
  PacketRSSI = LT.readPacketRSSI();                                 //read the recived RSSI value
  PacketSNR = LT.readPacketSNR();                                   //read the received SNR value
  Serial.print("\nreceived ");
  if (RXPacketL == 0)  //if the LT.receive() function detects an error, RXpacketL is 0
    receive_packet_is_Error();
  else
    receive_packet_is_OK();  //LED off
  Serial.println();
}


void receive_packet_is_OK() {
  uint16_t IRQStatus, localCRC;
  IRQStatus = LT.readIrqStatus();  //read the LoRa device IRQ status register
  RXpacketCount++;
  printElapsedTime();  //print elapsed time to Serial Monitor
  Serial.print(F("  "));
  LT.printASCIIPacket(RXBUFFER, RXPacketL);             //print the packet as ASCII characters
  localCRC = LT.CRCCCITT(RXBUFFER, RXPacketL, 0xFFFF);  //calculate the CRC, this is the external CRC calculation of the RXBUFFER
  Serial.print(F(",CRC,"));                             //contents, not the LoRa device internal CRC
  Serial.print(localCRC, HEX);
  Serial.print(F(",RSSI,"));
  Serial.print(PacketRSSI);
  Serial.print(F("dBm,SNR,"));
  Serial.print(PacketSNR);
  Serial.print(F("dB,Length,"));
  Serial.print(RXPacketL);
  Serial.print(F(",Packets,"));
  Serial.print(RXpacketCount);
  Serial.print(F(",Errors,"));
  Serial.print(errors);
  Serial.print(F(",IRQreg,"));
  Serial.print(IRQStatus, HEX);
}


void receive_packet_is_Error() {
  uint16_t IRQStatus;
  IRQStatus = LT.readIrqStatus();  //read the LoRa device IRQ status register
  printElapsedTime();              //print elapsed time to Serial Monitor
  if (IRQStatus & IRQ_RX_TIMEOUT)  //check for an RX timeout
  {
    Serial.print(F(" RXTimeout"));
  } else {
    errors++;
    Serial.print(F(" PacketError"));
    Serial.print(F(",RSSI,"));
    Serial.print(PacketRSSI);
    Serial.print(F("dBm,SNR,"));
    Serial.print(PacketSNR);
    Serial.print(F("dB,Length,"));
    Serial.print(LT.readRXPacketL());  //get the device packet length
    Serial.print(F(",Packets,"));
    Serial.print(RXpacketCount);
    Serial.print(F(",Errors,"));
    Serial.print(errors);
    Serial.print(F(",IRQreg,"));
    Serial.print(IRQStatus, HEX);
    LT.printIrqStatus();  //print the names of the IRQ registers set
  }
  delay(250);  //gives a longer buzzer and LED flash for error
}


void printElapsedTime() {
  float seconds;
  seconds = millis() / 1000;
  Serial.print(seconds, 0);
  Serial.print(F("s"));
}

SX1278_Settings.h (must be in same directory as above)

// ESP32_C3 LoRa  SX1278  (RFM95W) transmitter text communication

/*******************************************************************************************************
  Programs for Arduino - Copyright of the author Stuart Robinson - 20/01/20

  This program is supplied as is, it is up to the user of the program to decide if the program is
  suitable for the intended purpose and free from errors.
*******************************************************************************************************/

//*******  Setup hardware pin definitions here ! ***************

//These are the pin definitions for one of the Tracker boards, the ESP32_Micro_Node, be sure to change
//them to match your own setup. You will also need to connect up the pins for the SPI bus, which on the
//ESP32_Micro_Node are SCK on pin 18, MISO on pin 19 and MOSI on pin 23.

// ESP32_C3 supermini
#define NSS 7                                   //select pin on LoRa device
#define SCK 4                                  //SCK on SPI3
#define MISO 5                                //MISO on SPI3 
#define MOSI 6                                 //MOSI on SPI3 

#define NRESET 0                               //reset pin on LoRa device
#define LED1 2                                  //on board LED, high for on
#define DIO0 1                                 //DIO0 pin on LoRa device, used for RX and TX done 
#define VCCPOWER 3                             //pin controls power to external devices

#define LORA_DEVICE DEVICE_SX1278               //we need to define the device we are using


//*******  Setup LoRa Parameters Here ! ***************

//LoRa Modem Parameters
const uint32_t Frequency = 866000000;           //frequency of transmissions in hertz
const uint32_t Offset = 0;                      //offset frequency for calibration purposes

const uint8_t Bandwidth = LORA_BW_125;          //LoRa bandwidth
const uint8_t SpreadingFactor = LORA_SF7;       //LoRa spreading factor
const uint8_t CodeRate = LORA_CR_4_5;           //LoRa coding rate
const uint8_t Optimisation = LDRO_AUTO;         //low data rate optimisation setting, normally set to auto

const int8_t TXpower = 10;                      //LoRa transmit power in dBm

const uint16_t packet_delay = 1000;             //mS delay between packets

#define RXBUFFER_SIZE 32                        //RX buffer size  

ESP32_C3 LoRa SX1278 (RFM95W) transmitter Serial monitor output

3_LoRa_Transmitter_ESP32 Starting
LoRa Device found

SX1278_PABOOST,866000000hz,SF7,BW125000,CR4:5,LDRO_Off,SyncWord_0x12,IQNormal,Preamble_8
SX1278_PABOOST,SLEEP,Version_12,PacketMode_LoRa,Explicit,CRC_On,AGCauto_On,LNAgain_1

Reg    0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
0x00  F2 81 1A 0B 00 52 D8 80 00 4F 09 2B 23 01 00 00 
0x10  00 00 00 00 00 00 00 00 10 00 00 00 00 72 74 64 
0x20  00 08 FF FF 00 00 04 00 00 00 00 00 00 50 14 45 
0x30  55 C3 05 27 1C 0A 03 0A 42 12 49 1D 00 AF 00 00 
0x40  70 00 12 24 2D 00 03 00 04 23 00 09 05 84 32 2B 


Transmitter ready
Transmit Packet> Hello World 0  BytesSent,13  CRC,3FE2  TransmitTime,46mS  PacketsSent,1
received 4s  receive OK 0,CRC,96F0,RSSI,-49dBm,SNR,9dB,Length,12,Packets,1,Errors,0,IRQreg,50

Transmit Packet> Hello World 1  BytesSent,13  CRC,2FC3  TransmitTime,46mS  PacketsSent,2
received 5s  receive OK 1,CRC,86D1,RSSI,-49dBm,SNR,9dB,Length,12,Packets,2,Errors,0,IRQreg,50

Transmit Packet> Hello World 2  BytesSent,13  CRC,1FA0  TransmitTime,47mS  PacketsSent,3
received 6s  receive OK 2,CRC,B6B2,RSSI,-48dBm,SNR,10dB,Length,12,Packets,3,Errors,0,IRQreg,50

Transmit Packet> Hello World 3  BytesSent,13  CRC,F81  TransmitTime,47mS  PacketsSent,4
received 7s  receive OK 3,CRC,A693,RSSI,-50dBm,SNR,9dB,Length,12,Packets,4,Errors,0,IRQreg,50

Transmit Packet> Hello World 4  BytesSent,13  CRC,7F66  TransmitTime,46mS  PacketsSent,5
received 8s  receive OK 4,CRC,D674,RSSI,-49dBm,SNR,9dB,Length,12,Packets,5,Errors,0,IRQreg,50

Transmit Packet> Hello World 5  BytesSent,13  CRC,6F47  TransmitTime,47mS  PacketsSent,6
received 9s  receive OK 5,CRC,C655,RSSI,-48dBm,SNR,9dB,Length,12,Packets,6,Errors,0,IRQreg,50

Transmit Packet> Hello World 6  BytesSent,13  CRC,5F24  TransmitTime,46mS  PacketsSent,7
received 10s  receive OK 6,CRC,F636,RSSI,-47dBm,SNR,9dB,Length,12,Packets,7,Errors,0,IRQreg,50

Transmit Packet> Hello World 7  BytesSent,13  CRC,4F05  TransmitTime,47mS  PacketsSent,8
received 11s  receive OK 7,CRC,E617,RSSI,-47dBm,SNR,9dB,Length,12,Packets,8,Errors,0,IRQreg,50

Transmit Packet> Hello World 8  BytesSent,13  CRC,BEEA  TransmitTime,47mS  PacketsSent,9
received 13s  receive OK 8,CRC,17F8,RSSI,-47dBm,SNR,9dB,Length,12,Packets,9,Errors,0,IRQreg,50

Transmit Packet> Hello World 9  BytesSent,13  CRC,AECB  TransmitTime,46mS  PacketsSent,10
received 14s  receive OK 9,CRC,7D9,RSSI,-47dBm,SNR,9dB,Length,12,Packets,10,Errors,0,IRQreg,50

Transmit Packet> Hello World 10  BytesSent,14  CRC,20DE  TransmitTime,46mS  PacketsSent,11
received 15s  receive OK 10,CRC,161D,RSSI,-45dBm,SNR,9dB,Length,13,Packets,11,Errors,0,IRQreg,50

Heltec ESP32S3 LoRa (V3) SX1262 receiver Serial monitor output

104_LoRa_Receiver_Detailed_Setup_ESP32 Starting

LoRa Device found

SX1262,866000000hz,SF7,BW125000,CR4:5,LDRO_Off,SyncWord_0x1424,IQNormal,Preamble_8
SX1262,PacketMode_LoRa,Explicit,LNAgain_Boosted

Reg    0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
0x900  30 00 00 00 00 64 00 00 00 00 00 00 24 04 47 04 
0x910  00 2F 00 00 00 03 0A 00 15 35 09 00 02 2B 6F 08 
0x920  07 04 05 00 00 00 00 00 00 00 00 00 00 00 00 00 
0x930  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
0x940  00 07 00 03 02 00 10 00 0A 00 03 04 00 14 0C 00 
0x950  00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 00 
0x960  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
0x970  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
0x980  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
0x990  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
0x9A0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
0x9B0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
0x9C0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
0x9D0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
0x9E0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
0x9F0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 


Receiver ready - RXBUFFER_SIZE 32

Received 63s RXTimeout
Received 123s RXTimeout
Received 183s RXTimeout

Received 1688s  Hello World 0,CRC,3FE2,RSSI,-31dBm,SNR,12dB,Length,13,Packets,1,Errors,0,IRQreg,16
Transmit Packet> receive OK 0  BytesSent,12  CRC,96F0  TransmitTime,48mS  PacketsSent,1

Received 1690s  Hello World 1,CRC,2FC3,RSSI,-31dBm,SNR,11dB,Length,13,Packets,2,Errors,0,IRQreg,16
Transmit Packet> receive OK 1  BytesSent,12  CRC,86D1  TransmitTime,48mS  PacketsSent,2

Received 1691s  Hello World 2,CRC,1FA0,RSSI,-31dBm,SNR,12dB,Length,13,Packets,3,Errors,0,IRQreg,16
Transmit Packet> receive OK 2  BytesSent,12  CRC,B6B2  TransmitTime,48mS  PacketsSent,3

Received 1692s  Hello World 3,CRC,F81,RSSI,-32dBm,SNR,11dB,Length,13,Packets,4,Errors,0,IRQreg,16
Transmit Packet> receive OK 3  BytesSent,12  CRC,A693  TransmitTime,48mS  PacketsSent,4

Received 1693s  Hello World 4,CRC,7F66,RSSI,-32dBm,SNR,12dB,Length,13,Packets,5,Errors,0,IRQreg,16
Transmit Packet> receive OK 4  BytesSent,12  CRC,D674  TransmitTime,48mS  PacketsSent,5

Received 1694s  Hello World 5,CRC,6F47,RSSI,-30dBm,SNR,11dB,Length,13,Packets,6,Errors,0,IRQreg,16
Transmit Packet> receive OK 5  BytesSent,12  CRC,C655  TransmitTime,48mS  PacketsSent,6

Received 1695s  Hello World 6,CRC,5F24,RSSI,-30dBm,SNR,12dB,Length,13,Packets,7,Errors,0,IRQreg,16
Transmit Packet> receive OK 6  BytesSent,12  CRC,F636  TransmitTime,48mS  PacketsSent,7

Received 1696s  Hello World 7,CRC,4F05,RSSI,-30dBm,SNR,11dB,Length,13,Packets,8,Errors,0,IRQreg,16
Transmit Packet> receive OK 7  BytesSent,12  CRC,E617  TransmitTime,48mS  PacketsSent,8

Received 1697s  Hello World 8,CRC,BEEA,RSSI,-30dBm,SNR,11dB,Length,13,Packets,9,Errors,0,IRQreg,16
Transmit Packet> receive OK 8  BytesSent,12  CRC,17F8  TransmitTime,48mS  PacketsSent,9

Received 1698s  Hello World 9,CRC,AECB,RSSI,-30dBm,SNR,11dB,Length,13,Packets,10,Errors,0,IRQreg,16
Transmit Packet> receive OK 9  BytesSent,12  CRC,7D9  TransmitTime,47mS  PacketsSent,10

photo
![image|481x500]