El placa Arduino GSM Shield 2 permite que una tarjeta Arduino se conecte a Internet, haga / reciba llamadas de voz y envíe / reciba mensajes SMS.
Esta placa utiliza un módem de radio M10 de Quectel. Es posible comunicarse con la placa utilizando comandos AT. La biblioteca GSM tiene un gran número de métodos para la comunicación con la placa. Esta placa utiliza los pines digitales 2 y 3 para la comunicación en serie del software con el M10. El pin 2 está conectado al pin TX del M10 y el pin 3 a su pin RX.
El pin PWRKEY del módem está conectado al pin Arduino 7. El M10 es un módem de banda cuádruple GSM / GPRS que funciona en las frecuencias GSM850MHz, GSM900MHz, DCS1800MHz y PCS1900MHz. Soporta protocolos TCP / UDP y HTTP a través de una conexión GPRS.
El enlace descendente de datos GPRS y la velocidad de transferencia de enlace ascendente es de 85,6 kbps. Para poder conectarse con la red de telefonía móvil la placa requiere una tarjeta SIM proporcionada por un operador de red.
En Prometec podemos encontrar el código de Arduino para realizar llamadas y enviar mensajes SMS.
#include <SoftwareSerial.h>
SoftwareSerial SIM900(7, 8); // 10 y 11 para el Arduino Mega. Configura el puerto serie para el SIM900.
void setup()
{
//digitalWrite(9, HIGH); // Descomentar para activar la alimentación de la tarjeta por Software
//delay(1000);
//digitalWrite(9, LOW);
delay (5000); //Nos damos un tiempo para encender el GPRS y la alimentación de la tarjeta
SIM900.begin(19200); //Configura velocidad del puerto serie para el SIM900
Serial.begin(19200); //Configura velocidad del puerto serie del Arduino
Serial.println("OK");
delay (1000);
SIM900.println("AT+CPIN=\"XXXX\""); //Comando AT para introducir el PIN de la tarjeta
delay(25000); //Tiempo para que encuentre una RED
}
void mensaje_sms()
{
Serial.println("Enviando SMS...");
SIM900.print("AT+CMGF=1\r"); //Configura el modo texto para enviar o recibir mensajes
delay(1000);
SIM900.println("AT+CMGS=\"XXXXXXXXX\""); //Numero al que vamos a enviar el mensaje
delay(1000);
SIM900.println("SMS enviado desde un Arduino. Saludos de Prometec."); // Texto del SMS
delay(100);
SIM900.println((char)26); //Comando de finalización ^Z
delay(100);
SIM900.println();
delay(5000); // Esperamos un tiempo para que envíe el SMS
Serial.println("SMS enviado");
}
En tr3sdland encontramos información sobre como hacer fotografías con una cámara jpg y enviarlas en un email.
void tomaFoto(){
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.. ahi quieto parao..
name[z]=Serial.read(); //A paritr 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"); //paramos la camara
while(Serial.read()!='K');
Serial.println("Foto almacenada correctamente...");
}
Para enviarlas en un email:
void mandaMms(){
Serial.println("Enviando MMS...");
Serial.println("AT+FSCD=D:"); //Le decimos la unidad donde esta nuestra foto
while(Serial.read()!='K');
delay(2000);
Serial.println("AT+FSCD=PICTURE"); //Le decimos la carpeta
while(Serial.read()!='K');
delay(5000);
Serial.println("AT+CMMSEDIT=1"); //Entramos en modo edicion de mms
while(Serial.read()!='K');
delay(2000);
Serial.println("at+cmmsdowm="TITLE",6"); //Le decimos que el titulo del mms va a ser ladron
delay(2000);
Serial.println("LADRON");
delay(4000);
Serial.print("AT+CMMSDOWN="FILE",4,""); //Le decimos el nombre de la foto a mandar
Serial.print(name);
Serial.println(""");
delay(5000);
while(Serial.read()!='K');
delay(2000);
Serial.print("AT+CMMSRECP=""); //Le añadimos un destinatario
Serial.print(correo);
Serial.println(""");
while(Serial.read()!='K');
delay(2000);
Serial.println("AT+CMMSSEND"); //Y lo enviamos!!!
while(Serial.read()!='K');
delay(15000);
}
Con estas placas también se puede montar un Web Server.
No hay comentarios:
Publicar un comentario