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?