Buenas, llevo mucho tiempo intentando hacer funcionar un modulo gprs quadband de libelium y me funciona esporadicamente, pero no he conseguido saber el motivo.
No puede ser de alimentación por que lo alimento a traves de un LD1085v50 que da 3A.
Voy a explicar las pruebas que he hecho:
Si le uso sin el ATMEGA en un duemilanova poniendo los puentes en alimentacion externa, y USB conecta con el servidor con las siguientes
instrucciones:
AT+CPIN="8400"
AT&K3
AT+KCNXCFG=0,"GPRS","internet","oange","orange"
AT+KCNXTIMER=0,60,2,70
AT+KCNXPROFILE=0
AT+CGATT=1
AT+KTCPCFG=0,0,"xxx.xxx.xxx.xxx",5523
AT+KTCPCNX=1
AT+KTCPSND=1,18
HOLA MUNDO
--EOF--Pattern--
AT+KTCPCLOSE=1,1
Funciona siempre. Uso el programa Terminal v1.9b, con macros creadas y solo espero a que conteste OK despues de AT+KTCPCNX=1, ya que lo demás contesta antes de que pulse el siguiente boton de macro.
En cuanto pongo el ATMEGA y cargo el siguiente programa
#include <NewSoftSerial.h>
#define rxPin 6
#define txPin 8
NewSoftSerial nss(rxPin, txPin);
void setup()
{
pinMode(2, OUTPUT);
pinMode(rxPin, INPUT);
pinMode(txPin, OUTPUT);
Serial.begin(57600);
nss.begin(57600);
nss.println("Inicializando");
digitalWrite(2,HIGH);
delay(3000);
digitalWrite(2,LOW);
nss.println("Módulo encendido");
delay(1000);
Serial.println("AT+CPIN=\"8400\"");
delay(1000);
while (Serial.available() > 0)
{
char c;
c = Serial.read();
nss.print(c);
delay(5);
}
nss.println("PIN");
for (int i=0;i<10;i++)
{
nss.print(".");
delay(3000);
}
nss.println(".");
nss.println("Registrado");
Serial.println("AT&K3");
nss.println("AT&K3");
delay(100);
Serial.println("AT+KCNXCFG=0,\"GPRS\",\"internet\",\"orange\",\"orange\"");
nss.println("AT+KCNXCFG=0,\"GPRS\",\"internet\",\"orange\",\"orange\"");
delay(100);
Serial.println("AT+KCNXTIMER=0,60,2,70");
nss.println("AT+KCNXTIMER=0,60,2,70");
delay(100);
Serial.println("AT+KCNXPROFILE=0");
nss.println("AT+KCNXPROFILE=0");
delay(100);
Serial.println("AT+CGATT=1");
nss.println("AT+CGATT=1");
delay(100);
Serial.println("AT+KTCPCFG=0,0,\"xxx.xxx.xxx.xxx\",5523");
nss.println("AT+KTCPCFG=0,0,\"xxx.xxx.xxx.xxx\",5523");
delay(500);
while (Serial.available() > 0)
{
char c;
c = Serial.read();
nss.print(c);
delay(5);
}
delay(100);
Serial.println("AT+KTCPCNX=1");
nss.println("AT+KTCPCNX=1");
nss.println("Esperamos 50s");
delay(50000);
while (Serial.available() > 0)
{
char c;
c = Serial.read();
nss.print(c);
delay(5);
}
Serial.println("AT+KTCPSND=1,10");
nss.println("AT+KTCPSND=1,10");
delay(100);
Serial.println("HOLA MUNDO");
nss.println("HOLA MUNDO");
delay(100);
Serial.println("--EOF--Pattern--");
nss.println("--EOF--Pattern--");
delay(100);
Serial.println("AT+KTCPCLOSE=1,1");
nss.println("AT+KTCPCLOSE=1,1");
delay(100);
while (Serial.available() > 0)
{
char c;
c = Serial.read();
nss.print(c);
delay(5);
}
Serial.println("AT+PSCPOF");
nss.println("AT+PSCPOF");
nss.println("Módulo apagado");
}
void loop()
{
}
que hace lo mismo y envia por softserial las contestaciones despues de esperar los 50s a que conecte me pone NO CARRIER.
He probado con varios modulos, y con todos hace lo mismo.
¿Alguna idea para probar?
Atentamente
juan
P.D. Ademas de con varios módulos he probado también con un arduino ONE y con un atmega en placa perforada y con todos pasa lo mismo.
P.D. Si alguien ha conseguido que funcione la conexión gprs del módulo dualband de libelium también me vale, que también tengo alguno para probar.