Hola a todos.
Luego de resolver un problema de hardware con ayuda del foro, era que no sabía como conectar el módulo sim al arduino.
Ahora ya funcionando, no consigo enviar un sms.Adjunto .jpg con el monitor serial.
Todo lo hace bien con excepción del sms.
Me pueden decir donde està el error???, Gracias.
Daniel(Apaserv)
ya hice la prueba, no funciona como dije antes.
Que me queda hacer??
Es que el proyecto es leer datos de un puerto serial y enviarlos a un host.
Pero si no puedo enviar un sms , no se si podre el resto.
Que opinas??
Gracias
Daniel
En el monitor serial se ve que cuando hace "AT+COPS?" responde 0.
Tendrá algo que ver?? la sim es de Movistar , no tiene PIN y en un teléfono si manda SMS.
Voy a probar con otra de Orange que si tiene PIN y mando sms sin problema.
Bueno ya hice la prueba:
"AT+CPIN=4210" responde OK, pero hace lo mismo que con la otra se queda en el simbolo >
Serial.println("MODO SMS\r\n");
mySerial.print("AT+CMGF=1\r\n");
delay(300);
Resp();
Serial.write("ENVIO NUM. MOVIL Y TEXTO\r\n");
mySerial.println("AT + CMGS = \"+34615075326\"");
// mySerial.println("AT + CMGS = \"+34616683861\"");
delay(500);
mySerial.print("MENSAJE DE PRUEBA ");
delay(1000);
mySerial.write(char(26));
delay(500);
Resp();
Serial.write("\r\n FIN DEL TEST\r\n");
}
[code]
Con estos 2 delay(500);
conseguÍ que muestre después del > MENSAJE DE PRUEBA
y la respuesta es ERROR, VER .JPG
#include <SoftwareSerial.h>
SoftwareSerial modemGPRS(2, 3); //rx y tx en la shield no en el arduino
#define POWER 9
void setup()
{
modemGPRS.begin(19200);
Serial.begin(19200);
pinMode(POWER,OUTPUT);
digitalWrite(POWER,HIGH);
delay(1000);
digitalWrite(POWER,LOW);
delay(5000);
modemGPRS.println("AT+CPIN=xxxx"); //el pin de la sim
delay(30000);
modemGPRS.println("AT+CREG=?"); //registrar network( la red)
delay(100);
ShowSerialData();
}
void loop()
{
SendTextMessage();
do{} while(1);
//if (modemGPRS.available())
//Serial.write(modemGPRS.read());
}
/*void DialVoiceCall()
{
modemGPRS.println("ATD + +34xxxxxxxxx;");//el numero de tlf con el 34 de españa
delay(100);
modemGPRS.println();
}*/
void ShowSerialData()
{
while(modemGPRS.available()!=0)
Serial.write(modemGPRS.read());
}
void SendTextMessage()
{
modemGPRS.print("AT+CMGF=1\r"); //habilita sms en modo texto
delay(100);
modemGPRS.println("AT + CMGS = \"+34xxxxxxxxx\"");//enviar mensaje al telefono, con numero de pais
delay(100);
modemGPRS.println("Mensaje desde arduino");//este es el mensaje
delay(100);
modemGPRS.println((char)26); //fin de mensaje con ASCII es ctrl+z es 26
delay(100);
modemGPRS.println();
}
Hola, con el sketch tal cual lo enviaste no hace nada.
Hice la siguiente modificación, la SIM no tiene PIN :
#include <SoftwareSerial.h>
SoftwareSerial modemGPRS(2, 3); //rx y tx en la shield no en el arduino
#define POWER 9
void setup()
{
modemGPRS.begin(9600);
Serial.begin(9600);
pinMode(POWER,OUTPUT);
digitalWrite(POWER,HIGH);
delay(1000);
digitalWrite(POWER,LOW);
//delay(5000);
modemGPRS.println("AT"); //el pin de la sim
delay(300);
ShowSerialData();
delay(300);
modemGPRS.println("AT+CREG=?"); //registrar network( la red)
delay(1000);
ShowSerialData();
delay(300);
}
void loop()
{
SendTextMessage();
do{} while(1);
//if (modemGPRS.available())
//Serial.write(modemGPRS.read());
}
/*void DialVoiceCall()
{
modemGPRS.println("ATD + +34xxxxxxxxx;");//el numero de tlf con el 34 de españa
delay(100);
modemGPRS.println();
}*/
void ShowSerialData()
{
while(modemGPRS.available()!=0)
Serial.write(modemGPRS.read());
}
void SendTextMessage()
{
modemGPRS.print("AT+CMGF=1\r"); //habilita sms en modo texto
delay(300);
ShowSerialData();
delay(300);
modemGPRS.println("AT + CMGS = \"+34615075326\"");//enviar mensaje al telefono, con numero de pais
delay(300);
ShowSerialData();
delay(300);
modemGPRS.println("Mensaje desde arduino");//este es el mensaje
delay(300);
modemGPRS.println((char)26); //fin de mensaje con ASCII es ctrl+z es 26
delay(500);
ShowSerialData();
delay(300);
modemGPRS.println();
}
[code]
y obtuve lo siguiente en el monitor:
[code]
AT
OK
AT-CREG=?
+CREG: (0-2)
OK
AT+CMGF=1
OK
AT+CMGS= "+34615075326"
> Mensaje desde arduino
>
ERROR
[code]
No entiendo, con otro sketch con AT+COPS? responde +COPS: 0 , con AT+CSQ responde +CSQ: 27,0
Te dice algo esto???
Gracias
Daniel
Con el sketch que me enviaste no consigo nada en el monitor serial a 19200.
Hice algunas modificaciones y conseguì resutados en el monitor serial.
Cambie a 9200 y agregue delays y lecturas del modulo.
Así quedo:
[code]
#include <SoftwareSerial.h>
SoftwareSerial modemGPRS(2, 3); //rx y tx en la shield no en el arduino
#define POWER 9
void setup()
{
modemGPRS.begin(9600);
Serial.begin(9600);
pinMode(POWER,OUTPUT);
digitalWrite(POWER,HIGH);
delay(1000);
digitalWrite(POWER,LOW);
modemGPRS.println("AT"); //el pin de la sim
delay(300);
ShowSerialData();
delay(300);
modemGPRS.println("AT+CREG=?"); //registrar network( la red)
delay(1000);
ShowSerialData();
delay(300);
}
void loop()
{
SendTextMessage();
do{} while(1);
}
void ShowSerialData()
{
while(modemGPRS.available()!=0)
Serial.write(modemGPRS.read());
}
void SendTextMessage()
{
modemGPRS.print("AT+CMGF=1\r"); //habilita sms en modo texto
delay(300);
ShowSerialData();
delay(300);
modemGPRS.println("AT + CMGS = \"+34615075326\"");//enviar mensaje al telefono, con numero de pais
delay(300);
ShowSerialData();
delay(300);
modemGPRS.println("Mensaje desde arduino");//este es el mensaje
delay(300);
modemGPRS.println((char)26); //fin de mensaje con ASCII es ctrl+z es 26
delay(500);
ShowSerialData();
delay(300);
modemGPRS.println();
}
Obtuve lo siguiente en el monitor serial:
AT
OK
AT+CREG=?
+CREG: (0-2)
OK
AT+CMGF=1
OK
AT+CMGS = "+34615075326"
> Mensaje desde arduino
>
ERROR
Hola pincho41700, he revisado el comando AT+CREG=?
La respuesta es:
+CREG: (0-2)
OK
Según el manual es 0 DISABLE NETWORK REGISTRATION UNSOLICITED CODE RESULT.
2 not registered but MT is currently searching a new operator for register.
Intenté volver a la configuración de fábrica, aunque no cambié nada, pero responde solo OK.
El operador es MOVISTAR y la sim no tiene pin.
Cual es el módulo que estas utilizando?
Gracias por tu aporte.
Daniel(apaserv)
Hola pincho41700,
He echo lo que me indicaste, pero no cambio nada.
Leyendo y leyendo me econtré con lo siguiente:
AT + CPIN? responde + CPIN: PH-NET PIN
Leí que esto significa que el módulo no esta liberado, por eso no reconoce ningún operador
Envié la consulta a m2m@m2m-com.com pero hasta ahora no tuve respuesta.
A ver si tengo suerte y alguien sabe como hacerlo.
En los teléfonos que no están liberados el fabricante proporciona el código de liberación.
En este caso es la empresa fabricante del chip, pero si no responde, que hago?.
Hola, aparentemente es así, no esta liberado.
No entiendo como venden algo así y el fabricante no responda.
Voy a ver como resuelvo esto y publicaré la solución.
Espero que se pueda liberar.
Daniel(apaserv)
Hola pincho41700,
Mira la respuesta del soporte de SIMCOM:
m2m support Agregar a contactos 24/09/2015 Conservar este mensaje en la parte superior de la bandeja de entrada
Para: 'Daniel Alberto Aparicio García'
m2m@m2m-com.com
[color=red]I’m not sure, I only know that SIM900A is a Chinese domestic version, not was planned for EU market, that can be an issue[/color]
From: Daniel Alberto Aparicio García [mailto:apaserv@hotmail.com]
Sent: Thursday, September 24, 2015 6:32 PM
To: m2m support <m2m@m2m-com.com>
Subject: RE: Query module SIM900
Hello Lazlo, have you any notice?
I have an other board with SIM900 (Gboard 1.0 by ITEAD), the same has 1137B01SIM900_64_ENHANCED and works OK.
The SIM900A V 3.8.2 MINI(I bought the board in ........) has 1137B03SIM900_64_ENHANCED , what is the diference??
I expect your reponse
Best regards.
A ver que solución me da el proveedor .......(no se si estaría bien poner el nombre).
Un saludo