ESP32C3 Serial UART Example of use

Hello everyone,

I’m currently trying to use the Xiao ESP32C3 board with the Reiyax RYLR998 LoRa module, but I’m encountering issues when uploading the code. The upload process seems to start correctly, but shortly after, the ESP32C3 disconnects from the Arduino IDE and the upload fails. Has anyone experienced this issue before or have any ideas on how to troubleshoot and solve it?

I suspect that the problem might be related to the declaration of Serial for the LoRa module on pins 6 and 7. To address this.

This is the error

Sketch uses 245058 bytes (18%) of program storage space. Maximum is 1310720 bytes.
Global variables use 13844 bytes (4%) of dynamic memory, leaving 313836 bytes for local variables. Maximum is 327680 bytes.
esptool.py v4.5.1
Serial port COM3

A fatal error occurred: Could not open COM3, the port doesn’t exist
Failed uploading: uploading error: exit status 2

#include <HardwareSerial.h>

// Configuración de pines para LoRaSerial
const int LoRaSerialRX = -1; // Por defecto
const int LoRaSerialTX = -1; // Por defecto

// Configuraciones de LoRa Module para el nodo transmisor
String lora_band = "915000000"; // Banda LoRa
String lora_TX_address = "126"; // Dirección LoRa del transmisor
String lora_networkid = "7";    // ID de red LoRa (debe ser el mismo para nodos Tx y Rx)

// Parámetros LoRa
int spreadingFactor = 9;        // Factor de esparcimiento
int bandwidth = 7;              // Ancho de banda
int codingRate = 1;             // Tasa de codificación
int programmedPreamble = 12;    // Preámbulo programado
int potenciaTx = 22;            // Potencia de transmisión en dBm

// Contraseña para las comunicaciones
String password = "EEDCAA90";

HardwareSerial LoRaSerial(1); // Instancia de LoRaSerial

void setup() {
    Serial.begin(115200); // Inicialización del Serial Monitor
    LoRaSerial.begin(115200, SERIAL_8N1, LoRaSerialRX, LoRaSerialTX); // Inicialización de 
    configureLoRa(); // Configuración del módulo LoRa al inicio
}

void loop() {
    // Enviar un mensaje "Hola Mundo" desde el dispositivo uno
    int address = 1; // Dirección del dispositivo uno
    int payloadLength = 10; // Longitud del mensaje "Hola Mundo"
    String data = "Hola Mundo"; // Mensaje a enviar
    send_data(address, payloadLength, data);
    Serial.print("Mensaje enviado: ");
    Serial.println(data); // Mostrar el mensaje enviado en el puerto serial
    delay(5000); // Esperar 5 segundos antes de enviar otro mensaje
}

// Función para configurar el módulo LoRa
void configureLoRa() {
    // Configurar banda LoRa
    LoRaSerial.println("AT+BAND=" + lora_band);
    delay(500);
    Serial.println("Banda LoRa configurada: " + lora_band);

    // Configurar dirección LoRa del transmisor
    LoRaSerial.println("AT+ADDRESS=" + lora_TX_address);
    delay(500);
    Serial.println("Dirección LoRa del transmisor configurada: " + lora_TX_address);

    // Configurar ID de red LoRa
    LoRaSerial.println("AT+NETWORKID=" + lora_networkid);
    delay(500);
    Serial.println("ID de red LoRa configurado: " + lora_networkid);

    // Configurar potencia Tx
    LoRaSerial.println("AT+CRFOP=" + potenciaTx);
    delay(500);
    Serial.println("Potencia de transmisión configurada: " + String(potenciaTx) + " dBm");

    // Configurar contraseña para las comunicaciones
    LoRaSerial.println("AT+CPIN=" + password);
    delay(500);
    Serial.println("Contraseña configurada para las comunicaciones LoRa: " + password);

    // Construir el comando AT para establecer los parámetros LoRa
    String sf_bw_cd_pB = "AT+PARAMETER=" + String(spreadingFactor) + "," + String(bandwidth) + "," + String(codingRate) + "," + String(programmedPreamble);
    
    // Enviar el comando AT para establecer los parámetros LoRa
    LoRaSerial.println(sf_bw_cd_pB);
    delay(500);
    Serial.println("Parámetros LoRa configurados: SF=" + String(spreadingFactor) + ", BW=" + String(bandwidth) + ", CR=" + String(codingRate) + ", Preamble=" + String(programmedPreamble));
}

// Función para enviar datos a través de LoRaSerial
void send_data(int address, int payloadLength, String data) {
    String command = "AT+SEND=" + String(address) + "," + String(payloadLength) + "," + data;
    LoRaSerial.println(command);
    delay(250);
}

change the com name and try again

this may be true… in arduino i know it will smoetimes increment the com number after upload… upload will be on com 3… but after reboot it comes up as com 4 and to get serial monitor you have to select com 4 for example

Maybe you can enter the bootloader mode to solve this problem