Alarm function:
void Alarma(){
if(SMS[x] == '4')
{
Serial.println("AT+FSCD=D:/Audio"); //Indicamos en que carpeta esta nuestro mp3
while(Serial.read()!='K');
Serial.println("carpeta configurada");
Serial.println("AT+CSDVC=3"); //Le decimos por donde queremos que lo reproduzca, el 3 para el speaker, el 2 para conectar los audífonos.
while(Serial.read()!='K');
Serial.println("altavoz seleccionado");
delay(1000);
Serial.println("AT+CCMXPLAY=\"alarma.MP3\",0"); //Le damos al play
while(Serial.read()!='K');
Serial.println("reproduciendo");
//retorna a rutina main.
}
}
Cam function:
/*
Secuencias para la toma de fotografias
desde el modulo 3G
*/
//Configuramos parámetros cámara
void tomaFoto(){
if (SMS[x] == '2')
{
Serial.println("Haciendo fotografia...");
Serial.println("AT+CCAMS"); //Iniciamos la camara
while(Serial.read()!='K');
Serial.println("AT+CCAMSETD=640,480"); //Indicamos la resolucion
while(Serial.read()!='K');
Serial.println("AT+CCAMTP"); //Tomamos la fotografia
while(Serial.read()!='K');
delay(2000);
Serial.println("AT+CCAMEP"); //Guardamos la foto
Serial.flush();
while(Serial.read()!='/'); //Seleccionamos a partir de donde vamos a empezar a guardar el nombre de la foto
while(Serial.read()!='/');
//Guardamos el nombre de la foto para luego enviarla
int z=0;
//Mientras z sea menor que 19...
do
{
while(Serial.available()==0); //Mientras no haya nada en el puerto serie..funciona en standby..
name[z]=Serial.read(); //A partir de que reciba algo, lo empieza a almacenar
z++;
}
while(z < 19);
while(Serial.read()!='K');
delay(500);
Serial.print("El nombre de la foto es ");
Serial.println(name);
Serial.println("AT+CCAME"); //Se detiene la cam
while(Serial.read()!='K');
Serial.println("Foto almacenada correctamente...");
}
}
GPS function:
void get_GPS(){
answer = sendATcommand("AT+CGPS=1,1","OK",1000);
if (answer == 0)
{
Serial.println("Error starting the GPS");
Serial.println("The code stucks here!!");
while(1);
}
if (SMS[x] == '1')
{
answer = sendATcommand("AT+CGPSINFO","+CGPSINFO:",1000);
delay(60000); // request info from GPS
if (answer == 1)
{
contador = 0;
do{
while(Serial.available() == 0);
gps_data[contador] = Serial.read();
contador++;
}
while(gps_data[contador - 1] != '\r');
gps_data[contador] = '\0';
if(gps_data[0] == ',')
{
Serial.println("No GPS data available");
}
else
{
Serial.print("GPS data:");
Serial.println(gps_data);
Serial.println("");
}
}
else
{
Serial.println("Error");
}
delay(2000); //en caso de if
}
}
Recording voice function:
void rec_voz()
{
if (SMS[x] == '5')
{
//RECORDING A SOUND CLIP
int8_t answer, counter;
int onModulePin = 2;
char clip_name[20];
char aux_str[50];
// Takes a picture, but not saved it
answer = sendATcommand2("AT+CQCPREC=0,amr", "D:/Audio/", "ERROR", 5000);
if (answer == 1)
{
counter = 0;
while(Serial.available()==0);
do{
clip_name[counter] = Serial.read();
counter++;
while(Serial.available()==0);
}
while (clip_name[counter-1] != 0x0D);
clip_name[counter-1] = '\0';
Serial.print("Clip name: ");
Serial.println(clip_name);
delay(10000);
/*
sendATcommand2("AT+CQCPPAUSE", "OK", "ERROR", 2000);
delay(5000);
sendATcommand2("AT+CQCPRESUME", "OK", "ERROR", 2000);
delay(5000);
*/
sendATcommand2("AT+CQCPSTOP", "OK", "ERROR", 2000);
sendATcommand2("AT+FSCD=D:/Audio", "OK", "ERROR", 2000);
sprintf(aux_str, "AT+CCMXPLAY=\"%s\",0", clip_name);
answer = sendATcommand2(aux_str, "OK", "ERROR", 2000);
if (answer == 1)
{
/*
delay(5000);
sendATcommand2("AT+CCMXPAUSE", "OK", "ERROR", 2000);
delay(5000);
sendATcommand2("AT+CCMXRESUME", "OK", "ERROR", 2000);
*/
delay(10000);
sendATcommand2("AT+CCMXSTOP", "OK", "ERROR", 2000);
}
else
{
Serial.println("Error playing");
}
}
else
{
Serial.println("Error recording");
}
}
}