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]