Bicheando Twitter con Arduino…

Twittear usando ArduinoUna de las cosas que más interés produce a la gente es el IOT. El conectar cosas con Internet. Comunicarse con objetos. Vamos que nos pone que las máquinas nos digan que están haciendo para sentirnos sus amos y señores. Es por eso que hoy te traigo un post dónde te voy a enseñar a hablar a los objetos a través de la red social del pajarito: Twitter.

Para ello necesitas de una cuenta en Twitter y de una placa Arduino con una Shield Yun o con el Arduino Yún directamente, que es el que yo mismo utilizo. Con esto vamos a intentar lanzar algún tweet. La cosa está en que con la Arduino Yún no se hace con el IDE de toda la vida sino que se necesita de un programa en otro lenguaje que se encargue de recuperar los tweets.

Esto es por la particularidad del Arduino Yún. Existe una librería para Twitter ,que ya no sé si funciona, que permitía conectarse y enviar algún tweet con todos los Arduino. Pero la verdad es que con lo restrictivo que se ha vuelto Twitter no sé yo si aún funcionará. Este método es como si con un ordenador te conectases a sacar los datos y luego por un puente pasases esa información a Arduino que ya se encargaría de utilizar esa información.

Voy a intentar contarlo paso por paso….

Obteniendo datos de Internet con Arduino Yún

Lo primero de todo será el código del IDE. El código en el IDE utiliza una librería llamada Bridge (Puente en inglés). Sé que esto ya lo conté en su día al hablar del Arduino Yún pero me gusta repetirme… como el ajo. La cosa es que este bridge permite conectarse a una terminal Linux, a un pequeño ordenador, y hacer ciertas cosas allí. En este caso tomar datos de Internet que luego se pasan a la placa Arduino. Por ejemplo un número o una letra las pasamos a Arduino y según el número o la letra hacemos alguna cosa.

Desde activar un motor a encender unas luces o empezar a leer una temperatura que luego enviaremos a la persona que nos la ha pedido. Al final es echarle imaginación al asunto. Eso y un poco de conocimiento de programación. A eso es a lo que vamos.

Para utilizar esta librería bridge habrá que declararla al inicio del programa:

#include <Bridge.h>

Una vez incluida debes de iniciar el puente. Es por eso que en el setup, la primera línea que utilizaremos es:

Bridge.begin();

Con esto ya se pueden utilizar las bondades del bridge. Puedes tomar datos de la parte Linux, puedes enviarlos y puedes mandar órdenes de consola (Rollo el cmd de Windows). Para ello tendrás que crear lo que se llaman procesos. Al final solamente es un nombre, invéntate lo que quieras. La cosa quedaría así:

Process envio;

Una vez tenemos el proceso hay que tratar el proceso como una librería con funciones. Entonces para enviar una orden al sistema operativo incluido en Arduino Yún lo que se hace es esto:

envio.runShellCommand("ls");

Lo que he he hecho es enviar el comando ls al terminal. Este comando lo que hace es listar los archivos que hay en la carpeta. vaya, que es inofensivo. Cuando utilicemos este comando (el runshellCommand) es recomendable utilizar una espera detrás, quedando algo como esto:

envio.runShellCommand("ls");
while(envio.running());

Lo que pasa es que runShellCommand es una función bloqueante, tal vez te suene de las interrupciones. Bloqueante significa que mientras se ejecuta no permite hacer otras cosas. Para que no sea bloqueante y puedas hacer cosas debes de utilizar el comando:

envio.runShellCommandAsynchronously("ls");

¿No te parece raro eso de que uno permita hacer más cosas y otro no? Al final, el procesador es el mismo… Claro, lo que pasa es que la primera opción bloquea el pequeño ordenador de Arduino Yún y el Arduino en sí. La segunda opción bloquea el pequeño ordenador pero la placa sigue funcionando.

Esto sirve para cuando quieres enviar algo y seguir con tus cosas. Evidentemente, si necesitas un valor lo que harás será esperarte a que llegue ya que sin él no podrás avanzar. Para obtener este valor, una vez lo ha conseguido Arduino, se utiliza la función parseInt() si el dato que recogemos del ordenador es un número entero, parseFloat() si es un número con decimales, readString() o readStringUntil() te permite leer frases. De esta manera la primera lee lo que hay en el buffer, la segunda opción es más recomendable. Yo lo usaría así:

String datos = envio.readStringUntil('\n')

Lo que hago es leer hasta llegar a el /n que se llama final de carro. Se llama así porque se añade automáticamente al pulsar la tecla enter para continuar con la siguiente frase. El nombre viene un poco de cuando aún se utilizaban máquinas de escribir a menudo. Esta opción te permite escribir hasta que le des a Enter, no está mal porque te aseguras de que no habrá nada anterior en el buffer que no querías.

Si no pillas lo del buffer, es como la cadena de todo lo que se ha ido acumulando. Digamos que todo lo que llega, todos los mensajes, se va quedando en el buffer. Evidentemente, el buffer tiene un límite.

Como ves, ya sabes cómo enviar órdenes al ordenador de la placa y cómo absorber los datos. Ahora te falta la parte de Twitter.

Utilizando Twitter con Arduino

Para empezar tendrás que venir aquí y dar de alta una aplicación de Twitter. Dónde pone Callback URL déjalo vacío porque no vamos a hacer ningún servidor web. La finalidad de esto es encontrar los valores de CONSUMER_KEY y CONSUMER_SECRET. Son las claves para que Twitter sepa que somos nosotros sin tener que autenticarnos en plan, vas a una pantalla y haces click a las condiciones para autorizar la aplicación… aquí todo es por consola y no podemos hacerlo.

Para continuar, debes de utilizar los scripts en python adecuados y llamarlos desde Arduino. Para no copiar lo que no es mío (Ya que yo de python estoy bastante verde) lo que hago es enviarte a esta página dónde alguien ya lo ha hecho por ti. Pero hay más, hay scripts que buscan tweets con un hashtag o solo los de una persona en concreto… ya te imaginas cómo va esto.

Opt In Image

Y se marchó, y a su barco lo llamó libertad…

Y bueno, hasta aquí llego. Espero que entiendas cómo funciona Arduino Yún y sus comandos. De manera que si eres un poco programador puedas hacer llamadas a cosas en internet. O montarte tu propio servidor. O poder calcular el número de veces que se escribe #summer en Twitter. A ver si me dejas algún comentario ahí abajo, gañán 😉

[Total:4    Promedio:4.5/5]

Deja un comentario