Go Down

Topic: Conexión GPRS (Read 809 times) previous topic - next topic

abmicros

Jun 10, 2011, 06:37 pm Last Edit: Jun 10, 2011, 07:00 pm by abmicros Reason: 1
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

Code: [Select]
#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.

Go Up