jueves, 9 de marzo de 2017

Activar cámara con Twitter



Objetivo:
El proyecto intenta aprovechar la plataforma de Twitter para subir imágenes desde una ubicación remota con conexión a una red móvil. De esta manera la imagen mostrará información visual sobre el estado de un jardín o las condiciones climáticas.

Circuito:


El código consiste en enviar un tweet con una palabra clave como @rodrigo123 o #rodrigo123, el smartphone esclavo que está anclado vía bluetooth a la placa 1sheeld hará un seguimiento a este código y cuando el tweet (mensaje + palabra clave) cumpla con las condiciones impuestas en el código este encenderá un led y activará la cámara del smartphone, posteriormente el smartphone subirá la imagen capturada a twitter para que pueda ser visualizado por otro usuario desde otro lugar.

Como twitter no permite repetir mensajes se incorpora una variable que es la hora, por lo que el código esta condicionado a enviar un tweet  y por lo tanto subir la foto por cada una hora.
El código también restringe al autor del tweet, por lo que no solo basta que coincida el contenido del mensaje.


Codigo:
       
#include <OneSheeld.h>
#define CUSTOM_SETTINGS
#define INCLUDE_TERMINAL_SHIELD
#define INCLUDE_TWITTER_SHIELD
#define INCLUDE_CLOCK_SHIELD
#define INCLUDE_CAMERA_SHIELD



int hour;

int led=10;

void setup()
{
  OneSheeld.begin();

  pinMode(led,OUTPUT);
  
}
 
void loop()
{

Twitter.trackKeyword("@Abel212Rodrigo");  //SIGA ESE CLAVE
Twitter.setOnNewTweet(&checkTweets);//VERIFIQUE NUEVO TWEET

  }
 
void checkTweets(String user , String sms)
{
  Terminal.println(sms);
  Terminal.println(user);
  Clock.queryDateAndTime();
  hour = Clock.getHours();

  String hora=String (hour);
  String keyword =" @Abel212Rodrigo";

  String palabrainfo=String ("Information ");
  String palabrahrs=String (" hrs");
  String oracioninfo=String (palabrainfo+hora+palabrahrs+keyword);
  
  String ledon=String ("On li ");
  String ledoff=String ("Off li ");
  String apagarled=String (ledoff+hora+palabrahrs+keyword);
  String prenderled=String (ledon+hora+palabrahrs+keyword);
  Terminal.println(oracioninfo);
  Terminal.println(prenderled);
  Terminal.println(apagarled)
   ;
 

  if (sms == prenderled   && user == "Rodrigo" ) {
     digitalWrite(led,HIGH); 
     
     Camera.setQuality(LOW_QUALITY);
     Camera.setFlash(ON);
    /* Take the picture. */
    Camera.rearCapture();
    /* Wait for 10 seconds. */
    OneSheeld.delay(10000);
    /* Post the picture on Twitter. */
    Twitter.tweetLastPicture("oracion_de_informacion",0);
    
  }

  if (sms == apagarled   && user == "Rodrigo" ) {
     digitalWrite(led,LOW); 
  }
   
}

Vídeo 1:


vídeo pendiente con la activación de la cámara.






Vídeo 2:
El código anterior con modificaciones también es útil para activar y desactivar electrovalvulas, luces u otros dispositivos, como también añadir sensores de humedad y temperatura para que que el sistema haga un tweet con esta información. Lo anterior se puede ver el siguiente vídeo: