SIM800L no responde a los comandos AT

1

Estoy en un proyecto muy emocionante, ¡porque el módulo SIM800L se está resistiendo!

El hardware:

  • clon arduino nano (dx.com)
  • módulo SIM800L + antena (dx.com)
  • Lipo batería 3.7V 150mAh (letmeknow.com)

Elproblema:

elmóduloSIM800LnorespondealoscomandosAT.

Endetalle,aveceslaserieestádisponible,noimprimanadaenelmonitordeserie.

Elcódigo:

#include<SoftwareSerial.h>StringArsp,Grsp;SoftwareSerialgsm(11,12);//RX,TXvoidsetup(){Serial.begin(9600);Serial.println("Setup");
  Serial.println("Testing GSM SIM800L");

  pinMode(LED_BUILTIN, OUTPUT);

  gsm.begin(9600);
}

void loop() {
  // turn on the led
  digitalWrite(LED_BUILTIN, HIGH);

  if(gsm.available())
  {
    Serial.println("gsm available");
    Grsp = gsm.readString();
    Serial.println(Grsp);
    Serial.println("gsm available end");
  }

  if(Serial.available())
  {
    Arsp = Serial.readString();

    Serial.println("Serial available");
    Serial.println(Arsp);
    gsm.println(Arsp);
    Serial.println("Serial available end");
  }

  // turn off the led
  digitalWrite(LED_BUILTIN, LOW);

  delay(500);
}

Mis pruebas & errores hasta ahora:

  • Me encargué de encender correctamente la SIM800L con el voltaje adecuado.
  • todos los suelos son comunes (batería y arduino).
  • rx to tx y tx to rx verificados 100 veces.
  • cambiando los números de pin también.
  • el sim insertado está conectado a la red a veces, pero no siempre. Cuando estoy conectado, puedo llamar al número y escucho el tono de "timbre" correcto en la línea.
  • el led del módulo sim800L está parpadeando lentamente cuando está conectado. Pero el 50% de las veces también parpadea 1 Hz como si estuviera buscando una red.
  • el pin RST del módulo sim800L está conectado al puerto 3.3V del arduino.
  • He cambiado la velocidad en baudios del objeto de software a 1200 2400 4800 y 9600 sin éxito.
  • He marcado "Ambos NL y amp; CR" en la configuración del monitor serie.
  • He publicado "AT" y "at" y todas las demás cosas.
  • sea cual sea el comando, el módulo nunca responde a una cadena clara. Está vacío o "?" señales.
  • y finalmente, sin tocarlo, el módulo está "disponible" de vez en cuando y no genera nada.

Aquí hay un registro como ejemplo después de un restablecimiento:

Estoy perdido! Toda la ayuda será muy apreciada, muchas gracias.

    
pregunta NoonanRosenblum

1 respuesta

0

Ok amigos, ¡ahora estoy interactuando exitosamente con el módulo! Aquí están los pocos pasos que me ayudaron:

  1. ha cambiado Grsp = gsm.readString(); a char c = gsm.read(); . Supongo que las funciones de alto nivel como readString() pueden ser demasiado a veces. La cadena es un objeto complejo para manejar. Parece que leer char por char es más seguro en este caso.
  2. eliminando el delay(500);
  3. cambié mi rutina de "encender" para dejarle más tiempo al módem para que se encienda. Básicamente conecto la batería para que el módem se encienda. Conecto el arduino al portátil para que arduino se encienda. A continuación, abra el monitor de serie (sin parpadear el arduino). Y luego haga clic en el botón de reinicio en el tablero.

Aquí hay una captura de pantalla del monitor serie. Y debajo del nuevo código que usé.

#include<SoftwareSerial.h>SoftwareSerialmySerial(11,10);//RX,TXvoidsetup(){//OpenserialcommunicationSerial.begin(9600);//setthedataratefortheSoftwareSerialportmySerial.begin(9600);delay(1000);Serial.println("Testing SIM800L module");
  Serial.println();
  Serial.print("Sizeof(mySerial) = "); Serial.println(sizeof(mySerial));
  Serial.println();

}

void loop() // run over and over
{

  if( mySerial.available() )
  {
    char c = mySerial.read();
    Serial.print(c);
  }

  if(Serial.available())
  {
    String Arsp = Serial.readString();

    Serial.println("Serial available");
    Serial.println(Arsp);
    mySerial.println(Arsp);
    Serial.println("Serial available end");
  }

}

Encontré esto usando un proyecto antiguo que hice usando un módulo GPS. Espero que esto ayude a otros.

    
respondido por el NoonanRosenblum

Lea otras preguntas en las etiquetas