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());
}
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 .
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.
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."
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 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
Hasta incluso intente llamarme con un comando ADT a mi propio celular y funciono, si me entro la llamada!
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?