miércoles, 4 de octubre de 2017

Enviar imágenes con Arduino y GSM


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: