PROBLEMAS CON EL GSM

Hola buen día, estoy trabajando con Arduino Uno y GSM/GRPS SIM900 y GPS NEO 6M Ublox tengo la duda si pueden comunicar y trabajar con estos tres dispositivos ya antes mencionados otra duda es el siguiente no me responde a los comandos AT y lo único que hace es solo enviarme mensajes de forma automática y están en blanco y esto lo hace sin que yo le pida que me envié los mensajes, pero si le escribo un comando “AT+CMGF=1\r”, “AT + CMGS = “7471227975”;” en este ejemplo le mando un Z al GSM tendría que enviarme 5 mensajes con las coordenadas del GPS y no me responde estoy usando este código, me ayudarían si comentan este apartado. :frowning: :frowning:

#include <SoftwareSerial.h>
#include <String.h>

#include <Gpsneo.h>

Gpsneo gps(11,10);

char time[10];
char status[3];
char latitud[11];
char latitudHemisphere[3];
char longitud[11];
char longitudMeridiano[3];
char speedKnots[10];
char trackAngle[8];
char date[10];
char magneticVariation[10];
char magneticVariationOrientation[3];


SoftwareSerial mySerial(2, 3);
SoftwareSerial ss(11,10);

int rele=6;
int sensor=7;
int buzzer=12;
int led = 13;

char mensaje=0;

boolean Activacion=false;

void setup() {
  
 pinMode(led,OUTPUT);
 pinMode(buzzer,OUTPUT);
 pinMode(rele,OUTPUT);
 
 digitalWrite(led,LOW);
 digitalWrite(rele,HIGH);
 digitalWrite(buzzer,LOW);

           
 mySerial.begin(9600);
 Serial.begin(9600);  

}

void loop() {
//////Obtener coordenadas
  

 recive();
 int s=digitalRead(sensor); 

 Serial.println(s);
 
 if(mensaje=='w'){Activacion=true;}  //Activa modo alarma con el sensor
 if(mensaje=='v'){Activacion=false;} //Desactiva modo alarma con el sensor

 if(s==LOW && Activacion==true){ // Modo sensor
 // digitalWrite(rele,LOW); 
  manda();
  delay(10000);
  manda();
  delay(10000);
  manda();
  delay(10000);
  manda();
  delay(10000);
  manda();
  delay(10000);
  }
  
 if(mensaje=='z'){ ///Modo alarma
  digitalWrite(rele,LOW);
  manda();
  delay(10000);
  manda();
  delay(10000);
  manda();
  delay(10000);
  manda();
  delay(10000);
  manda();
  delay(10000);
  }

  if(mensaje=='x'){ ///Modo alarma
  //digitalWrite(rele,LOW);
  manda();
  delay(10000);
  manda();
  delay(10000);
  manda();
  delay(10000);
  manda();
  delay(10000);
  manda();
  delay(10000);
  }

  if(mensaje=='y'){ ///Modo alarma
  digitalWrite(rele,HIGH);
  
  }

}

void manda()
{
  gps.getDataGPRMC(time,
                    status,
                    latitud,
                    latitudHemisphere,
                    longitud,
                    longitudMeridiano,
                    speedKnots,
                    trackAngle,
                    date,
                    magneticVariation,
                    magneticVariationOrientation);
                    
  mySerial.print("AT+CMGF=1\r");    
  delay(500);
  mySerial.println("AT + CMGS = \"7471227975\";");
  delay(500);
  mySerial.println(latitud);
  delay(500);
  mySerial.println(longitud);
  delay(500);
  mySerial.println((char)26);
  delay(500);
  mySerial.println();
  delay(500);   // give module time to send SMS
  mySerial.flush();
}



void recive()
{
 
 mensaje= mySerial.read();
 
  if(mySerial.available()>0){ 
    Serial.print(mensaje);
   }

}

void llamada()
{

  mySerial.println("ATD + 5217471227975;");//dial the number
  delay(100);
  mySerial.println();
 
  }

Que pasó con este hilo? Errores con el GSM?

No puedes tener hilos del mismo tema abiertos!!

El otro hilo fue borrado.

Respondo tus preguntas:

estoy trabajando con Arduino Uno y GSM/GRPS SIM900 y GPS NEO 6M Ublox tengo la duda si pueden comunicar y trabajar con estos tres dispositivos ya antes mencionados

Si, no deberías tener problemas.
Superada la fase de pruebas reemplaza un SoftwareSerial por el Hardware Serial 0,1
Pero puedes tener dos SoftwareSerial sin problemas.

lo único que hace es solo enviarme mensajes de forma automática

Ese debe ser el GPS NEO quien te envia las posiciones porque asi estará programado por defecto. Evidentemente algun problema tienes en tu TX y su RX. Para recibir datos es que estas compartiendo GND con el.

Veo dos definiciones de SoftwareSerial

SoftwareSerial mySerial(2, 3);
SoftwareSerial ss(11,10);

pero solo una esta iniciada

mySerial.begin(9600);   // <= este es el conectado supongo al GPS
 Serial.begin(9600);

// este es tu monitor serie y falta ss.begin(algo)

Esteo esta mal, debe ser asi si esta conectado a 11 RX y 10 TX el SIM900

void llamada()
{

  ss.println("ATD + 5217471227975;");//dial the number
  delay(100);
  ss.println();
 
  }

Muchas gracias por el comentario, disculpe sobre esta apartado del código

mySerial.begin(9600);   // <= este es el conectado el gsm
ss.begin(9600);             // <= este es el conectado el gps

no hay problema si trabajan los dos dispositivos con la misma de 9600, tambien en el apartado de definiciones esta este parte del codigo

SoftwareSerial mySerial(2, 3);  //es la definicion del GSM
SoftwareSerial ss(11,10);        //es la definicion del GPS

pero no se por que razon el gsm no me responde a mis peticiones de comandos AT solo me via pero no me responde con una respuesta cuando yo se lo pido! podria ayudame con esa duda porfavor

Bueno, me alegro por esa parte pero void llamada estaba mal hecho.

Disculpen alguien me podría ayudar con un ejemplo para hacer la prueba con los comandos AT lo que pasa no me responde a los comandos, me ayudarían con este problema, el modulo que estoy utilizando es el que se muestra en el enlace:

http://www.tinyosshop.com/arduino-gsm-shield