Usar twitter y el tiempo para registrar notas y temperatura a la puerta de la oficina

Sinopsis
========
El objetivo de este proyecto es utilizar una cuenta de Twitter para enviar
Notas a la puerta de la oficina, que está equipado con un 20 x 4 LCD
(pantalla). Este proyecto presenta, básicamente, una implementación de
la idea discutida en este artículo de espectro de IEEE:
http://Spectrum.IEEE.org/geek-Life/Hands-on/Send-a-Tweet-to-your-Office-Door
Como una mejora, también muestra la temperatura actual (leer en
de weather.gov) en un lugar determinado. La aplicación se basa en
la combinación de una placa Arduino Uno con un Arduino Ethernet
Escudo. El costo total es de aproximadamente $120. Se supone que usted
están familiarizados con herramientas de Arduino.

Hardware y software
=====================

Hardware
--------
$45.95 - Arduino Ethernet Shield: http://www.sparkfun.com/products/9026
$29.95 - Arduino Uno: http://www.sparkfun.com/products/9950
$14.95 - 20 x 4 LCD blanco en azul: http://www.hacktronics.com/LCDs/20-x-4-LCD-White-on-Blue/flypage.tpl.html (podría conseguir similar de sparkfun.com para reducir al mínimo los gastos de envío)
$11.95 - Arduino proyecto recinto: http://www.sparkfun.com/products/10088 (acoge la Junta y el escudo)
$3.95 - Cable USB A B - 6 pies: http://www.sparkfun.com/products/512 (opcional; se debe hacer ya)
$2.99 - 9 conductor 24 AWG trenzado blindado 6FT: http://www.frys.com/product/3550794?site=sr:SEARCH:MAIN_RSLT_PG (para enganchar la pantalla LCD para la Junta)
$2.99 - 3 FT CAT6 Cable de conexión: http://www.frys.com/product/5979924?site=sr:SEARCH:MAIN_RSLT_PG (para enganchar la Junta a su router de Internet)
$1.90 - 6 pin ángulo recto hembra encabezado: http://www.sparkfun.com/products/9429 (dos de ellos, para la conexión del LCD)
$1.90 - cuadro de proyecto: http://www.futurlec.com/ProjectBoxes.shtml (para pantalla)
--------------
$116.53 - TOTAL

Software
--------
-Arduino sketch: incluye al final de este instructivo. El bosquejo
se debe modificar para satisfacer sus especificaciones individuales. Contiene
Comentarios con la descripción de cada cambio y cómo se puede hacer.
--Usted necesitará compilar y cargar el sketch a la placa Arduino herramientas: http://arduino.cc/en/Main/Software
Para poder compilarlo usted también necesitará las siguientes bibliotecas para sus herramientas de Arduino:
-Arduino EthernetDHCP: http://gkaindl.com/software/arduino-ethernet/dhcp
--Biblioteca de buscador texto: http://www.arduino.cc/playground/Code/TextFinder

Sketch de Arduino: bzdoor2lcd.pde
------------------------------

Get "seleccionado" último tweet de la cuenta de Twitter "BZDoor" y mostrar en la
Exhibición del LCD, que he fijado en la puerta de mi oficina. Seleccionado por significo ser tweets que
arranca con la llave "BZD" solamente. Utilizar la cuenta de Twitter para publicar notas sobre mi
puerta de la oficina sobre horas de oficina, siendo hacia fuera para el café, etc.. :-)
//
El circuito:
LCD 1,3,5,16 para pin digital de Arduino GND de los pernos
Pin 2 de la LCD para pin digital de Arduino + 5V
Pin de LCD 15 via Resitor 330 Ohms para pin digital de Arduino + 5V
Pin de LCD 14 para pin digital de Arduino 2
LCD 13 a pin Arduino digital pin 3
Pin de LCD 12 para pin digital de Arduino 4
Pin de LCD 11 al pin digital de Arduino 5
LCD 4 a pin Arduino digital pin 9
Pin de LCD 6 al pin digital de Arduino 8

#include < SPI.h >
#include < Ethernet.h >
#include < EthernetDHCP.h >
#include < TextFinder.h >
#include < LiquidCrystal.h >

LiquidCrystal lcd (9, 8, 5, 4, 3, 2);

mac de bytes [] = {0x90, 0xA2, 0xDA, 0 x 00, 0x4F, 0x8A};
byte ip [] = {192,168,1,177};
servidor de bytes [] = {199,59,148,10}; Twitter.com
Byte [] server_weather = {140,90,113,200}; Weather.gov

#define NUM_CHAR_USERNAME 7 / / "BZDoor:" es el nombre de usuario con 6 caracteres +:
#define TWEET_OFFSET NUM_CHAR_USERNAME + 5 / / información útil del tweet aparezca aparece después de "BZDoor: BZD"
char un tweet [NUM_CHAR_USERNAME + 140]; 147 = "BZDoor:" + 140 para real tweet
char old_tweet [] = {"BZDoor: BZD no hay actualizaciones. ¡Que tengas un buen día! Temperatura actual: NA Cris "};
temperatura de Char [8];

Cliente cliente (servidor, 80);
Finder(client) de TextFinder;
Cliente client_weather (server_weather, 80);
Finder_weather(client_weather) de TextFinder;

void setup()
{
LCD.Begin(4,20);
LCD.Clear();
LCD.Print("BZDoor2LCD");
Serial.Begin(9600);
Serial.println("BZDoor2LCD");
Ethernet.Begin (mac, ip);
}

void loop()
{
(1) comprobar si hay nuevo tweet en la cuenta de BZDoor;
check_for_new_valid_tweet();
(2) control de temperatura; también Mostrar la firma;
check_for_new_temperature();
(3) limpiar;
Client.STOP();
Client.Flush();
client_weather.STOP();
client_weather.Flush();
(4) claro también la matriz de almacenamiento de "tweet"; por otra parte si el último tweet es más corto
que el anterior, restos de la anterior pasarán a formar parte de la última;
para (int i = 0; i < NUM_CHAR_USERNAME + 140; i ++) tweet [i] = ' ';
(5) demora 2 minutos antes de la próxima actualización;
Delay(120000);
}

void check_for_new_valid_tweet() {}
responsable con las filas 1 y 2 de 4 x 20 LCD;
conectar a Twitter (RSS del usuario BZDoor: 316663659) y el tweet más reciente;
Esta comprobación se hará cada otros 2 minutos, así que si han sido escritos más tweets
han sido escritos dentro de esos 2 minutos que se procesará sólo el tweet más reciente;
Si (client.connect()) {}
Client.println ("GET http://www.twitter.com/statuses/user_timeline/316663659.rss HTTP/1.0"); BZDoor;
Client.println();
} else {}
lcd.setCursor(0,0); LCD.Print ("Twitter conexión");
lcd.setCursor(0,1); LCD.Print ("error.");
Serial.println ("Twitter conexión fallada.");
}
Si (client.connected()) {}
obtener el último tweet en la cuenta de BZDoor por simplemente analizar las etiquetas artículo y título;
Si ((finder.find ("< item >") & & (finder.getString ("< title >", "</título >", tweet, 140)! = 0))) {}
sólo tweets que empiezan con los tres personajes que se mostrará "BZD"
en la pantalla LCD en la puerta de la oficina; todos los demás se imprimirá sólo a
monitor serie de Arduino
Serial.println(Tweet);
un regular tweet en la cuenta de BZDoor está siempre en uno de dos formatos:
1) "BZDoor: esto es un Hola mundo! Tweet! ", que no aparece en la pantalla LCD;
2) "BZDoor: BZD alguna actualización", que se visualiza en el LCD porque comienza con clave BZD;
Si (tweet [8] == 'B' & & tweet [9] == 'Z' & & tweet [10] == había ') {}
Esto es un tweet que tiene una actualización de BZDoor a mostrarse en la puerta de la oficina;
display_tweet(Tweet);
también copiar a este último twit a old_tweet matriz;
strncpy (old_tweet, tweet, 80 + TWEET_OFFSET);
} else {}
display_tweet(old_tweet); primera vez, esto dice no hay actualizaciones nuevas;
}
} else {}
lcd.setCursor(0,0); LCD.Print ("no pudo encontrar elemento");
lcd.setCursor(0,1); LCD.Print (campo en el último twit");
Serial.println ("no pudo encontrar campo artículo en último twit");
}
} else {}
lcd.setCursor(0,0); LCD.Print ("desconectado de");
lcd.setCursor(0,1); LCD.Print ("twitter");
Serial.println ("desconectado de twitter");
}
}

void display_tweet (char msg[]) {}
Mostrar sólo 40 caracteres en las dos primeras filas de la
pantalla LCD 20 x 4; las filas terceros y cuarta se usan para
exhibición de la temperatura y la firma;
LCD.Clear();
Mostrar a caracteres primeros 40 del tweet;
lcd.setCursor(0,0);
para (int i = TWEET_OFFSET; i < TWEET_OFFSET + 20; i ++) {}
Si (msg [i]! = 0) lcd.print(msg[i]);
lcd.print(' ') otra cosa;
}
lcd.setCursor(0,1);
para (int i = TWEET_OFFSET + 20; i < TWEET_OFFSET + 40; i ++) {}
Si (msg [i]! = 0) lcd.print(msg[i]);
lcd.print(' ') otra cosa;
}
imprimir también al monitor serial;
char buffer_row [20];
strncpy (buffer_row, msg + TWEET_OFFSET, 20); buffer_row [20] = '\0';
Serial.println(buffer_row);
strncpy (buffer_row, msg + TWEET_OFFSET + 20, 20); buffer_row [20] = '\0';
Serial.println(buffer_row);
}

void check_for_new_temperature() {}
responsable con 3 y 4 filas de 4 x 20 LCD;
conectarse www.weather.gov y conseguir la temperatura para el aeropuerto de Fargo;
Si (client_weather.connect()) {}
client_weather.println ("GET /xml/current_obs/KFAR.xml HTTP/1.0");
client_weather.println();
} else {}
lcd.setCursor(0,2); LCD.Print ("el tiempo en la conexión");
lcd.setCursor(0,3); LCD.Print ("error.");
Serial.println ("tiempo conexión fallada.");
}
Si (client_weather.connected()) {}
Si ((finder_weather.getString ("< temp_f >","</temp_f > «, temperatura, 8)! = 0)) {}
lcd.setCursor(0,2);
LCD.Print ("cambio de temperatura:"); LCD.Print(Temperature); LCD.Print ("F");
lcd.setCursor(0,3); LCD.Print ("Cris");
imprimir también en el monitor serial
Serial.println ("Curr temperatura:"); Serial.println(Temperature); Serial.println ("F");
Serial.println ("Cris");
} else {}
lcd.setCursor(0,2); LCD.Print ("temperatura actual: NA");
lcd.setCursor(0,3); LCD.Print ("Cris");
Serial.println ("no pudo encontrar temp_f en la corriente del tiempo");
}
} else {}
lcd.setCursor(0,2); LCD.Print ("temperatura actual: NA");
lcd.setCursor(0,3); LCD.Print ("Cris");
Serial.println ("desconectado del tiempo");
}
}

Artículos Relacionados

Registrador de datos geo: Arduino + GPS + SD + acelerómetro para registrar, sello de tiempo y datos del sensor geo-tag

Registrador de datos geo: Arduino + GPS + SD + acelerómetro para registrar, sello de tiempo y datos del sensor geo-tag

versiones17 de octubre de 2013: he publicado una guía sobre el uso de tu teléfono Android para llevar a cabo una tarea similar al aprovechar tu Android dispositivo de construido en GPS y sensores.06 de febrero de 2013: Aparece en GeoAwesomeness http:
Cómo usar Twitter para conectarse con la Iglesia Bautista victoria

Cómo usar Twitter para conectarse con la Iglesia Bautista victoria

Twitter es un servicio de internet en la World Wide Web (WWW) que permite mensajes de texto corto que se transmitirá a todo el mundo o sólo tus amigos, dependiendo de lo que usted quiere.Usted puede enviar mensajes a Twitter a través de correo electr
Reloj de tiempo para

Reloj de tiempo para

Este es el primer portátil que he hecho. Es una estación meteorológica portátil, que puede ser útil si están en festivales al aire libre, acampar o simplemente a dar largos paseos. Los monitores de Vigilancia meteorológica de aire la presión y temper
Arduino, el corazón de Charliplexed, justo a tiempo para el día de San Valentín.

Arduino, el corazón de Charliplexed, justo a tiempo para el día de San Valentín.

Aquí es un Arduino controlado Charliplexed LED corazón justo a tiempo para el día de San Valentín. Utiliza un total de 6 cables para controlar los 27 LEDs. Un PIC o AVR fácilmente podría ser utilizado para esto, pero tengo Arduinos ahí y son fáciles
Cómo actualizar tu Blog cuando no tienes tiempo para escribir

Cómo actualizar tu Blog cuando no tienes tiempo para escribir

Resumen: una manera simple y gratis, actualizar tu blog de Wordpress, timeline de Twitter y página de Facebook mediante un servicio de marcadores social como Delicious o Diigo.Muchos personales y blogs de empresa no sólo porque es difícil encontrar a
Cómo ser una persona de mañana y tener más tiempo para ti!

Cómo ser una persona de mañana y tener más tiempo para ti!

¿Odia tener que levantarse por la mañana?¿El sonido de su despertador configurar en pánico, seco suda y traigo casi hasta las lágrimas cada mañana?¿Odias las personas que son felices y chipper temprano en la mañana?¿Necesita tener por lo menos dos ta
El tiempo para todos de James Bond en su Mac o el Apple Remote reloj

El tiempo para todos de James Bond en su Mac o el Apple Remote reloj

¿qué hora es?Es el momento de la bomba hasta el volumen!!!y cambio pistas pull up Front Row, o controlar tus presentaciones de Keynote desde super cool reloj.El apple remote es muy bien, sin embargo es apenas otra cosa que llevar o un mando a distanc
Encontrar tiempo para amanecer con mapas de la estrella

Encontrar tiempo para amanecer con mapas de la estrella

por tonytran2015 (Melbourne, Australia).Encontrar tiempo para la salida del sol es necesario para viajar a través de desiertos como los viajeros puede estar a tiempo para evitar el frío y el calor excesivo. También es necesario por larga distancia co
Lapso de tiempo para cámara

Lapso de tiempo para cámara

Me pidieron hacer un dispositivo de lapso de tiempo para una cámara de Sony que tiene un mando a distancia IR.Clasificación de los códigos de IR hubiera sido mucho tiempo si no había hallado esta excelente biblioteca Sebastian Setz.http://Sebastian.S
Encontrar tiempo para la puesta de sol con las manos desnudas

Encontrar tiempo para la puesta de sol con las manos desnudas

por tonytran2015 (Melbourne, Australia)Hay veces cuando usted no tiene ningún reloj o cuando no es práctico llevar un reloj (como cuando va a nadar en el mar) y necesita saber la hora del amanecer o al atardecer. Este tiempo puede ser determinado usa
Usar esmalte de uñas para aislar tela conductora

Usar esmalte de uñas para aislar tela conductora

Tejido conductivo es un gran producto. Métodos de aislamiento son lentos y no ayudar a la tela conductora se fusionan con el tejido.La solución más fácil es usar esmalte de uñas para aislar.Paso 1: Hierro en el tejido conductor en la tela Paso 2: Pin
Dibujar un cráneo justo a tiempo para Halloween

Dibujar un cráneo justo a tiempo para Halloween

Todo en una sola página y justo a tiempo para tu fiesta de Halloween! Cómo dibujar una calavera en 6 pasos fáciles! Se va preguntando por qué has pensado que era tan difícil! Hice la mitad de uno de estos en mi puerta, y resultó muy bien! ¿Lo único q
Cómo usar Gmail o Google Apps para negocios con Microsoft Exchange Email

Cómo usar Gmail o Google Apps para negocios con Microsoft Exchange Email

muchas organizaciones utilizan Microsoft Exchange para correo electrónico.  Encuentra cambio a ser un sistema muy pobre y no como los típicos métodos de lectura de correo electrónico en un servidor de Exchange: Outlook o Outlook Web App.  Me gusta mu
Rover de lapso de tiempo para eMotimo TB3

Rover de lapso de tiempo para eMotimo TB3

Secuencias de lapso de tiempo se está convirtiendo en muy popular, y añadir movimiento a los ganchos añade interés a los resultados finales. Usando un eMotimo TB3 como el controlador, estaba originalmente limitado a un sistema de riel de 6 pies de 3