Necesito ayuda con ESP32 y SIM800L

Estoy haciendo un simple proyecto donde quiero conectar mi ESP32 para poder enviar mensajes cuando un boton es presionado.

El modulo sim está alimentado con una fuente externa de 5v y 3a conectada a un step-down para bajar el voltaje a 4v. Al mismo tiempo la conexión Rx del modulo al Tx del ESP32 con un divisor de tension para que la entrada de este sea de 3.3v. Adjunto foto al final del post.

Tengo este codigo:

#define RX_PIN 16 // Configura el pin RX del ESP32 para el módulo SIM800L
#define TX_PIN 17 // Configura el pin TX del ESP32 para el módulo SIM800L

HardwareSerial mySerial(2); // Usamos el puerto Serial2 del ESP32

void setup() {
  Serial.begin(9600); // Configura el baud rate del Monitor Serial
  delay(1000);

  mySerial.begin(9600, SERIAL_8N1, RX_PIN, TX_PIN); // Configura el baud rate del módulo SIM800L y los pines
  delay(1000);
  Serial.println("Inicializando...");
  delay(1000);

  // Limpiar buffers
  Serial.flush();
  mySerial.flush();

  // Enviar comandos AT al módulo SIM800L
  sendCommand("AT"); // Prueba de handshake
  sendCommand("AT+CSQ"); // Prueba de calidad de señal
  sendCommand("AT+CCID"); // Leer información de la SIM
  sendCommand("AT+CREG?"); // Verificar registro en la red
}

void loop() {
  updateSerial(); // Leer datos disponibles del módulo SIM800L y del Monitor Serial
}

void sendCommand(const String &command) {
  mySerial.println(command); // Envía el comando al módulo SIM800L
  Serial.print("Enviado al módulo SIM800L: ");
  Serial.println(command); // Imprime el comando enviado en el Monitor Serial
  delay(1000); // Esperar para que el comando sea procesado
  updateSerial(); // Leer la respuesta del módulo SIM800L
}

void updateSerial() {
  delay(500); // Esperar 0.5 segundos

  // Enviar datos del Monitor Serial al módulo SIM800L
  while (Serial.available()) {
    String command = Serial.readStringUntil('\n'); // Lee la línea completa del Monitor Serial
    mySerial.println(command); // Envía el comando al módulo SIM800L
    Serial.print("Enviado al módulo SIM800L: ");
    Serial.println(command); // Imprime el comando enviado en el Monitor Serial
  }

  // Enviar datos del módulo SIM800L al Monitor Serial
  while (mySerial.available()) {
    String response = mySerial.readStringUntil('\n'); // Lee la línea completa del módulo SIM800L
    Serial.print("Recibido del módulo SIM800L: ");
    Serial.println(response); // Imprime la respuesta en el Monitor Serial
  }
}

El problema es que cuando ingreso (o inicializo el proyecto y se ejecutan los comandos) da las siguientes respuestas:

Enviado al módulo SIM800L: AT+CSQ

Recibido del módulo SIM800L: IU+CSQ

Enviado al módulo SIM800L: AT+CCID

Recibido del módulo SIM800L: AtijT�5)�

Enviado al módulo SIM800L: AT+CREG?

Recibido del módulo SIM800L: AT+C�EG?

Por lo tanto está claro que el modulo no está recibiendo adecuadamente los comandos. Ya probé con distintos baud rates tanto en el serial del sim como en el serial usb y en ninguno logro comunicar adecuadamente el modulo con el esp32, que puede estar fallando?

Please write in English in the English section or post in the native section.

Su publicacion se MUEVE a su ubicacion actual ya que es mas adecuada.

Moderador:
Por favor, lee las Normas del foro
Si posteas en el foro en inglés usa idioma inglés para expresarte, eso incluye los comentarios de tu código. Si un código tiene comentarios en español también moverán tu hilo a esta sección en Español.
Si escribes en español debes usar el foro Arduino en español
Edita tu título, usa uno que no tenga justamente lo que se considera un título inútil.
Ver en las normas punto 5.
Quita el "Necesito ayuda.."

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.