Problemas para recibir respuesta de Comandos AT con Modulo Sim 808

Acabo de comprar un modulo SIM 808 EVB-V3.2 y quise realizar una prueba simple para ver si funcionaba de forma correcta

Este es el código que utilice para la prueba:

#include <SoftwareSerial.h>
SoftwareSerial SIM808(7, 8); //Seleccionamos los pines 7 como Rx y 8 como Tx

void setup()
{
 SIM808.begin(9600);
 Serial.begin(9600);
 delay(100);
}

void loop()
{
 //Envíamos y recibimos datos
 if (Serial.available() > 0)
 SIM808.write(Serial.read());
 if (SIM808.available() > 0)
 Serial.write(SIM808.read());
}

Este codigo lo conseguir del siguiente tutorial: https://www.prometec.net/sim808/#:~:text=Para%20encender%20el%20módulo%20utilizaremos,parpadear%20una%20vez%20por%20segundo

Se supone que con este código al escribir un comando AT el modulo me debería regresar una respuesta como en la imagen de acá

Pero cuando intento lo mismo de mi lado, obtengo este símbolo raro en la terminal:

Tienen idea de que significa este simbolo o porque lo estoy recibiendo?

Para dar mas información sobre como lo estoy ejecutando, estoy alimentando el modulo con 9V y 2A

La forma en la cual lo estoy conectando es la siguiente:

  • pin 7(RX) -> TX
  • pin 8(TX) -> RX
  • Tierra -> Tierra(cable negro)

Conexiones físicas

La verdad desconozco que estoy haciendo mal, el modulo parece funcionar bien ya que recibe la energía e incluso el led de la sim parpadea cada 3 segundos indicando conectividad .

Cualquier sugerencia seria de mucha ayuda

Para poner en marcha esos módulos debes presionar el boton POWERON que hace titilar (no recuerdo) un led y entones el módulo esta escuchando.

No se si se llama exactamente asi pero te indiqué donde esta.
Los códigos y tutoriales suelen usar un pin del Arduino para crear la secuencia que lo pone en marcha, algo como 1 seg en HIGHT 2 seg LOW y otro seg HIGH si mal recuerdo.
Verifica esto porque lo escribo de memoria y tengo todas las dudas.

En la foto que mande estaba apagado pero si he logrado prenderlo

Prende el led de energia e incluso el LED de la sim parpadea cada 3 segundos (segun lo que investigue eso significa que esta recibiendo la señal de la sim)

Pareciera que el módulo estuviera a otra velocidad. Prueba solo por probar, cambiando la velocidad en el terminal a ver si esos caracteres se vuelven legibles.

La guia Prometec dice "Nosotros hemos elegido 19200 porque es la que usa el SIM900, de forma que podamos usar los programas que ya tenemos de esas sesiones."

Pues intente algo parecido con el siguiente codigo:

#include <SoftwareSerial.h>



SoftwareSerial softSerial(7, 8);  // Rx, Tx


uint32_t baud[] = {   
                       300,
                       600,
                      1200,
                      2400,
                      4800,
                      9600,
                     19200,
                     38400,
                     57600,
                     74880,
                    115200,
                    230400,
                    460800,
                    500000,
                    921600
                  };

void setup()
{

  Serial.begin(9600);
  
  for (uint8_t i = 0; i < sizeof(baud) / sizeof(baud[0]); i++)
  {
    softSerial.begin (baud[i]);
    
    Serial.print("Trying @ ");
    Serial.println(baud[i]);
    
    softSerial.println("AT"); 

    unsigned long start = millis();
      
    while (millis() - start < 500)
    {
      while (softSerial.available() > 0)
      {
        
        Serial.write(softSerial.read());
      }
    }
       
  }
}


void loop()
{}

Al correrlo tengo el siguiente resultado:
image

Siguen apareciendo estos simbolos. Por cierto sabes que significa o porque aparecen esos simbolos? me gustaria almenos tener contexto de eso.

Por cierto investigando el datasheet encontre esto:

A lo que entiendo, el modulo deberia funcionar almenos entre 1200 - 115200 bps

Esto usando SoftwareSerial es como minimo exagerado.
Mas alla de 115200 no tiene sentido.
Además dice


Asi que supustamente debería funcionar a cualquier cosa pero no mayor a 115k2.
Okay, por acá no esta la solución.
Invierte los cables Tx y RX solo para descartar.

Okey ahora invertí los cables:
Pin 7 --> RX
Pin 8 --> TX

Y al ejecutar la prueba obtengo esto en la terminal
image

Ya no aparecen los simbolos extraños, solo aparece lo impresó por el Serial del arduino

O sea, los cables estaban bien porque recibias algo y ahora nada.

Si, parece que el problema radica en los baudios pero no logro hacer que funcione :confused:

Okey parece que ya lo resolví gracias a la respuesta de otra publicación.

Añadí que imprimiera el serial del SIM esto -> AT+IPR=9600

Quedando en el código de la siguiente manera:

#include <SoftwareSerial.h>
SoftwareSerial SIM808(7, 8); //Seleccionamos los pines 7 como Rx y 8 como Tx

void setup()
{
 SIM808.begin(9600);
 Serial.begin(9600);

 SIM808.println("AT+IPR=9600");

 delay(100);
}

void loop()
{
 //Envíamos y recibimos datos
 if (Serial.available() > 0)
 SIM808.write(Serial.read());
 if (SIM808.available() > 0)
 Serial.write(SIM808.read());
}

y ahora si puedo ver las respuestas del modulo desde el terminal

image

Hasta incluso intente llamarme con un comando ADT a mi propio celular y funciono, si me entro la llamada!

image

Aunque bueno de esto, en realidad quiero comprender que sucedió aquí.
Tengo siempre que establecer el baud rate del modulo? Acaso no tiene uno establecido de forma default?

Le cambiaste la velocidad a tu módulo.

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