Go Down

Topic: El módulo SIM800L no responde a los comandos AT (Read 2454 times) previous topic - next topic

viriato

He intentado hacer funcionar el módulo SIM800L con un microcontrolador compatible con Arduino REV UNO sin exito. Para ello, he usado una tarjeta SIM de Orange que sirve solo para hacer llamadas y enviar SMS. Le pedí a la dependienta de la tienda Orange que dicha tarjeta SIM debía ser compatible con GSM y ella me dijo que lo era. Tengo que fiarme de su palabra...


He seguido los pasos que indica esta web y he hecho un montaje idéntico al que se muestra en esa web con componentes muy parecidos:

https://exploreembedded.com/wiki/GSM_SIM800L_Sheild_with_Arduino

He utilizado una bateria de litio de un viejo celular para alimentar el módulo SIM800L, por ahora no tengo baterias LIPO.

Las caracteristicas tecnicas de mi modulo SIM800L

SIM800L módulo GSM GPRS con el cable de la antena
Cuatro bandas 850/900/1800 / 1900MHz
Se utiliza en proyectos basados ??en GSM, GPS, proyectos basados ??en proyectos de robótica, o 8051 proyectos basados ??/ AVR / ARM / PIC / Arduino / Frambuesa-pi
Conectividad GPRS Class12 de múltiples segmentos: máx. 85.6kbps (abajo-carga / up-carga)
GPRS estación móvil de clase B

¿Alguien puede ayudarme? Gracias por contestar.


s3elman

Hola, primero verifica si es que la compañía que te vendió la SIM card tiene las bandas con servicios GSM funcionando, hay en varias partes que ya están sacando este tipo de portadoras.
Sebas

FRAN2017

Amigo ese chip no lo haces funcionar ni loco con esa pila, ese chip tiene picos de 2A. Y para que funcione la alimentación  tiene que estar clavada a lo que marca el fabricante. mirate la hoja de características.

Yo trabajo con esos modem y funcionan bien simpre que respetes la el voltaje y la intesidad de trabajo.

Suerte.

Fran

viriato

Gracias a los dos por contestar, especialmente al que señaló la escasa intensidad de corriente de la bateria de LITIO como parte  del problema. Me había fijado en el voltaje pero obvié el amperaje necesario para que el  módulo SIM800L funcionase. En vez de liarme con pilas de LITIO o LIPO, decidí comprar módulos DC/DC que permiten regular el voltaje con una Intensidad de Corriente de hasta 3 Amperios. Llevan un pequeño potenciómetro a la salida para variar su tensión.

Arduino se conecta a este regulador de voltaje  a su entrada (INPUT) que a su vez se conecta a su salida al sim800L



Conecté mi ARDUINO REV UNO al puerto USB de mi laptop y con este código conseguí que funcionase el envío de SMS.

Code: [Select]
#include <SoftwareSerial.h>
 
//SIM800 TX is connected to Arduino D8
#define SIM800_TX_PIN 8
 
//SIM800 RX is connected to Arduino D7
#define SIM800_RX_PIN 7
 
//Create software serial object to communicate with SIM800
SoftwareSerial serialSIM800(SIM800_TX_PIN,SIM800_RX_PIN);
 
void setup() {
  //Begin serial comunication with Arduino and Arduino IDE (Serial Monitor)
  Serial.begin(19200);
  while(!Serial);
   
  //Being serial communication witj Arduino and SIM800
  serialSIM800.begin(19200);
  delay(1000);
 
  Serial.println("Setup Complete!");
  serialSIM800.println("AT+CPIN=\"9446\"");  //Comando AT para introducir el PIN de la tarjeta
  delay(25000);  //Tiempo para que encuentre una RED
  EnviaSMS();               // Llamada a la funcion que envia el SMS
}
void loop() {
  //Read SIM800 output (if available) and print it in Arduino IDE Serial Monitor
  if(serialSIM800.available()){
    Serial.write(serialSIM800.read());
  }
  //Read Arduino IDE Serial Monitor inputs (if available) and send them to SIM800
  if(Serial.available()){   
    serialSIM800.write(Serial.read());
  }
}
// Funcion para el envio de un SMS
void EnviaSMS(){   
 serialSIM800.println("AT+CMGF=1");                 // Activamos la funcion de envio de SMS
 delay(100);                                    // Pequeña pausa
 serialSIM800.println("AT+CMGS=\"+34625XXXXXX\"");  // Definimos el numero del destinatario en formato internacional
 delay(100);                                    // Pequeña pausa
 serialSIM800.print("Hola Mundo!");                 // Definimos el cuerpo del mensaje
 delay(500);                                    // Pequeña pausa
 serialSIM800.print(char(26));                      // Enviamos el equivalente a Control+Z
 delay(100);                                    // Pequeña pausa
serialSIM800.println("");                          // Enviamos un fin de linea
 delay(100);                                    // Pequeña pausa
}


Un saludo y mil gracias a los dos.

Doy por solucionado este tema.

viriato

#4
Nov 10, 2017, 08:10 pm Last Edit: Nov 11, 2017, 10:21 pm by viriato
Dejo este código para hacer llamadas con el módulo SIM800L, funciona también como el anterior.

Code: [Select]
#include <SoftwareSerial.h>
 
//SIM800 TX is connected to Arduino D8
#define SIM800_TX_PIN 8
 
//SIM800 RX is connected to Arduino D7
#define SIM800_RX_PIN 7
 
//Create software serial object to communicate with SIM800
SoftwareSerial serialSIM800(SIM800_TX_PIN,SIM800_RX_PIN);

void setup()
   {
      //digitalWrite(9, HIGH); // Descomentar para activar la alimentación de la tarjeta por Software
      //delay(1000);
      //digitalWrite(9, LOW);
      delay (5000);  //Nos damos un tiempo para encender el GPRS y la alimentación de la tarjeta
      serialSIM800.begin(19200);  //Configura velocidad del puerto serie para el SIM900
      Serial.begin(19200);  //Configura velocidad del puerto serie del Arduino
      Serial.println("OK");
      delay (1000);
      serialSIM800.println("AT+CPIN=\"9446\"");  //Comando AT para introducir el PIN de la tarjeta
      delay(25000);  //Tiempo para que encuentre una RED
   }

void llamar()
   {
      Serial.println("Realizando llamada...");
      serialSIM800.println("ATD+34625XXXX47;");  //Comando AT para realizar una llamada     
      delay(30000);  // Espera 30 segundos mientras realiza la llamada
      serialSIM800.println("ATH");  // Cuelga la llamada
      delay(1000);
      Serial.println("Llamada finalizada");
   }

void loop()
   {
      llamar();  //Realiza la llamada
      while (1);
   }


Dejo el montaje físico de la conexión del módulo SIM800L, con el regulador de voltaje DC y el microcontrolador Arduino REV UNO.

Go Up