viernes, 1 de mayo de 2009

Código

Este es el código para el Arduino. Lo más importante son las pausas. Tardé en dare cuenta de que si no espero lo suficiente el siguiente comando AT no entra. Debe ser porque no uso el pin de RX y hay que esperar a algún timeout.


void setup()
{
// El pin 13 en Arduino tiene un LED que nos servirá para darnos alguna pista de por donde va el programa
pinMode(13, OUTPUT);
// El pin 12 es el que activa el relé
pinMode(12, OUTPUT);
Serial.begin(9600);
}

void loop()
{
// El LED de la patilla 13 parpadea 3 veces para indicar que empezamos
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);
delay(500);
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);
delay(500);
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);
// Se activa el relé durante un segundo. Esto enciende el móvil.
digitalWrite(12, HIGH);
delay(1000);
digitalWrite(12, LOW);
// Esperamos 15 segundos a que termine de encenderse
delay(15000);

// Este comando permite que controlemos el teclado del móvil por el puerto serie
Serial.println("AT+CMEC=2");
delay(1000); // Esperamos un segundo porque si no no acepta el siguiente comando
// Hace que se pulse la tecla soft izquierda. Es para que diga OK al mensaje de conexión.
// Es un mensaje de protección de avión. Sale porque hemos desactivado la petición de PIN de la SIM
Serial.println("AT+CKPD=[");
delay(10000); // 10 segundos para que conecte a algún servicio GSM

// Usa el listín telefónico de la SIM
Serial.println("AT+CPBS=SM");
delay(5000); // 5 segundos para que lo trague
// Y hace una llamada al número de teléfono de la primera entrada del listín
Serial.println("ATD>1;");
// Serial.println("ATDT123456789;"); // Así sería si marcaramos un número concreto
delay(60000UL); // Un minuto para que llame
// Cuelga todas las llamadas
Serial.println("AT+CHUP");
delay(5000);
// Apaga el móvil
Serial.println("AT^SMSO");
// Arduino ya no tiene más que hacer. Como no se hacerle un halt lo meto en un bucle infinito
for(;;);
}

No hay comentarios:

Publicar un comentario en la entrada