Använda twitter och väder för att posta anteckningar och temperatur till kontor dörr



Synopsis
========
Målet med detta projekt är att använda ett Twitter-konto för att skicka
anteckningar till din kontor dörr, som är utrustad med en 20 x 4 LCD
(Visa). Detta projekt utgör i princip en implementering av
den idé som diskuteras i denna artikel IEEE spektrum:
http://Spectrum.IEEE.org/Geek-Life/hands-on/Send-a-tweet-to-your-Office-Door
Som en tilläggsprodukt visar det även aktuell temperatur (Läs i
från weather.gov) i en given plats. Genomförandet bygger på
kombinationen av en Arduino Uno ombord med en Arduino Ethernet
Sköld. Den totala kostnaden är ungefär $120. Det förutsätts att du
är bekanta med Arduino verktyg.

Maskin- och programvara
=====================

Hårdvara
--------
$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 vit på blå: http://www.hacktronics.com/LCDs/20-x-4-LCD-White-on-Blue/flypage.tpl.html (kunde få liknande från sparkfun.com att minimera fraktkostnaderna)
$11,95 - Arduino projekt kapsling: http://www.sparkfun.com/products/10088 (värd för både styrelsen och sköld)
USB-kabel A $3,95 - till B - 6 fot: http://www.sparkfun.com/products/512 (valfritt; du bör ha en redan)
$2,99 - 9 ledare 24 AWG strandsatta-skärmad 6FT: http://www.frys.com/product/3550794?site=sr:SEARCH:MAIN_RSLT_PG (för att koppla upp LCD-displayen till styrelsen)
$2,99 - 3 FT CAT6 patchkabel: http://www.frys.com/product/5979924?site=sr:SEARCH:MAIN_RSLT_PG (för att koppla upp styrelsen att din Internet-router)
$1,90 - 6 pin rätvinkliga kvinnliga huvud: http://www.sparkfun.com/products/9429 (två av dem, för LCD-anslutning)
$1,90 - projektet Box: http://www.futurlec.com/ProjectBoxes.shtml (för visning)
--------------
$116.53 - TOTALT

Programvara
--------
--Arduino skiss: ingår i slutet av detta instructable. Skissen
måste ändras för att möta dina individuella specifikationer. Den innehåller
kommentarer med beskrivning av varje ändring och hur det kan göras.
--Du kommer att behöva kompilera och ladda skissen till styrelsen med Arduino verktyg: http://arduino.cc/en/Main/Software
För att kunna kompilera det behöver du även följande bibliotek för Arduino-verktyg:
--Arduino EthernetDHCP: http://gkaindl.com/software/arduino-ethernet/dhcp
--Text Finder bibliotek: http://www.arduino.cc/playground/Code/TextFinder

Arduino skiss: bzdoor2lcd.pde
------------------------------

Få "markerade" senaste tweet från Twitter-konto "BZDoor" och Visa det på den
LCD-display, som jag har fast på min kontor dörr. Av utvalda jag menar tweets som
börja med nyckeln "BZD" bara. Jag använder Twitter-konto för att skriva anteckningar på min
Office dörren om kontorstid, att vara ute för kaffe, etc. :-)
//
Krets:
LCD stift 1,3,5,16 till Arduino digital stift GND
LCD stift 2 till Arduino digital pin + 5V
LCD pin 15 via Resitor 330 ohm till Arduino digital pin + 5V
LCD stift 14 till Arduino digital stift 2
LCD stift 13 till Arduino digital stift 3
LCD stift 12 till Arduino digital stift 4
LCD stift 11 till Arduino digital stift 5
LCD stift 4 till Arduino digital pin 9
LCD stift 6 till Arduino digital stift 8

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

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

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

#define NUM_CHAR_USERNAME 7 / / "BZDoor:" är användarnamn med 6 tecken +:
#define TWEET_OFFSET NUM_CHAR_USERNAME + 5 / / nyttig info från tweet visas visas efter "BZDoor: BZD"
char tweet [NUM_CHAR_USERNAME + 140]; 147 = "BZDoor:" + 140 för faktiska tweet
char old_tweet [] = {"BZDoor: BZD inga uppdateringar. Ha en trevlig dag! Aktuella temp: NA Cris "};
char temperatur [8].

Klient-klient (server, 80);
TextFinder finder(client);
Klienten client_weather (server_weather, 80);
TextFinder finder_weather(client_weather);

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

void loop()
{
(1) kontrollera om ny tweet i BZDoor konto;
check_for_new_valid_tweet();
2) check för temperatur; också Visa signatur;
check_for_new_temperature();
(3) rensa upp;
client.stop();
client.flush();
client_weather.stop();
client_weather.flush();
(4) också klart "tweet" lagringsmatrisen; annars om senaste tweet är kortare
än den tidigare blir rester från föregående en del av senaste;
för (int jag = 0; jag < NUM_CHAR_USERNAME + 140; i ++) tweet [i] = "";
5) dröjsmål 2 minuter innan nästa uppdatering;
Delay(120000);
}

void check_for_new_valid_tweet() {
ansvariga med 1 och 2 rader med 4 x 20 LCD;
ansluta till Twitter (RSS för användare BZDoor: 316663659) och få den senaste tweeten;
denna kontroll kommer att ske varje andra 2 minuter, så om fler tweets har bokförts
har bokförts inom dessa 2 minuter bara senaste tweet skall bearbetas.
om (client.connect()) {
client.println ("GET http://www.twitter.com/statuses/user_timeline/316663659.rss HTTP/1.0"); BZDoor;
client.println();
} annat {
lcd.setCursor(0,0); LCD.Print ("Twitter anslutning");
lcd.setCursor(0,1); LCD.Print ("misslyckades!");
Serial.println ("Twitter anslutning misslyckades.");
}
om (client.connected()) {
få senaste tweet i Bzdoors konto genom att helt enkelt analysera objekt och title-Taggar;
om ((finder.find ("< element >") & & (finder.getString ("< title >", "</title >", tweet, 140)! = 0))) {
endast tweets som börjar med de tre tecknen "BZD" kommer att visas
på LCD-skärmen på office dörren; alla andra kommer att skrivas ut endast till
den Arduino seriell monitor
Serial.println(tweet);
en ordinarie tweet i Bzdoors konto är alltid i ett av två format:
1) "BZDoor: detta är ett Hello World! Tweet! ", som inte visas på LCD;
2) "BZDoor: BZD någon uppdatering", som visas på LCD eftersom börjar med nyckel BZD;
om (tweet [8] == 'B' & & tweet [9] == "Z" & & tweet [10] == hade ") {
Detta är en tweet som har en uppdatering från BZDoor som ska visas på office dörren;
display_tweet(tweet);
också kopiera denna senaste PIKA till old_tweet kedjan;
strncpy (old_tweet, tweet, 80 + TWEET_OFFSET);
} annat {
display_tweet(old_tweet); första gången detta säger inga nya uppdateringar;
}
} annat {
lcd.setCursor(0,0); LCD.Print kunde ("inte hitta artikeln");
lcd.setCursor(0,1); LCD.Print ("fält i senaste PIKA");
Serial.println kunde ("inte hitta fältet artikeln i senaste PIKA");
}
} annat {
lcd.setCursor(0,0); LCD.Print ("frånkopplad från");
lcd.setCursor(0,1); LCD.Print ("twitter");
Serial.println ("frånkopplad från twitter");
}
}

void display_tweet (char msg[]) {
Visa endast 40 tecken på de två första raderna av den
20 x 4 LCD-skärm; på tredje och fjärde raden används för
temperatur och signatur-bildskärm.
LCD.Clear();
Visa tweet är första 40 tecken;
lcd.setCursor(0,0);
för (int jag = TWEET_OFFSET; jag < TWEET_OFFSET + 20; i ++) {
om (msg [i]! = 0) lcd.print(msg[i]);
annat lcd.print(' ');
}
lcd.setCursor(0,1);
för (int jag = TWEET_OFFSET + 20; jag < TWEET_OFFSET + 40; i ++) {
om (msg [i]! = 0) lcd.print(msg[i]);
annat lcd.print(' ');
}
skriva ut också till seriell bildskärm;
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() {
ansvariga med 3 och 4 rader med 4 x 20 LCD;
ansluta till www.weather.gov och få temperatur för Fargo flygplats.
om (client_weather.connect()) {
client_weather.println ("GET /xml/current_obs/KFAR.xml HTTP/1.0");
client_weather.println();
} annat {
lcd.setCursor(0,2); LCD.Print ("väder anslutning");
lcd.setCursor(0,3); LCD.Print ("misslyckades!");
Serial.println ("väder anslutning misslyckades.");
}
om (client_weather.connected()) {
om ((finder_weather.getString ("< temp_f >","</temp_f >", temperatur, 8)! = 0)) {
lcd.setCursor(0,2);
LCD.Print ("Curr temp:"); LCD.Print(temperature); LCD.Print "F".
lcd.setCursor(0,3); LCD.Print ("Cris");
också till seriell utskriftsövervakare
Serial.println ("Curr temp:"); Serial.println(temperature); Serial.println "F".
Serial.println ("Cris");
} annat {
lcd.setCursor(0,2); LCD.Print ("aktuell temp: NA");
lcd.setCursor(0,3); LCD.Print ("Cris");
Serial.println kunde inte ("hitta temp_f i vädret ström");
}
} annat {
lcd.setCursor(0,2); LCD.Print ("aktuell temp: NA");
lcd.setCursor(0,3); LCD.Print ("Cris");
Serial.println ("frånkopplad från väder");
}
}

Relaterade Ämnen

Hur utforma, skriva ut och använda 3D tryckt läder stämplar!

Remläder och producerar vackra och intrikata mönster för hand kan vara mycket utmanande. Har nu gjort flera läder projekt, jag har lärt mig mycket om att arbeta med läder och som sådan jag letar alltid efter nya och bättre sätt att producera mönster...

Att göra en snabb sprayfärg stencil och använda det på kläder

denna idé kom från mitt år 8 art uppdrag. Utmaningen var att göra något vanliga extraordinära. Detta är inte den bästa idén inte heller de mest unika jag gillar resultatet och bär mina extra byxor just nu.En stencil är ett användbart verktyg att ha s...

Använda SMTP- och SASL med Postfix när din ISP kommer inte att vidarebefordra

bra dag!Jag tillbringade nyligen flera timmar lutad över konfigurationsfiler och telnet-sessioner, försökande till räkna ut varför jag inte kunde skicka mail från min linux-maskin något mera.I år har jag använt postfix mailer för att hantera skicka e...

Använda salvia och sälja din miniräknare innan det är försent

detta är en introduktion till en bit av programvara kallas Sage som tillåter dig att sälja din kalkylator (förutsatt, naturligtvis, att du har en miniräknare) och fortfarande göra dina beräkningar lättare än med din miniräknare (du behöver en dator,...

Använda pil och båge

fören är ett bra verktyg. Du kan jaga eller bara mål praxis. Men snart efter att du kommer att ha många frågor. Vilken typ av båge? Quick release eller inte? Vilken typ av pilar? Vilken stil? Handboken bör hjälpa dig komma igång.Steg 1: Vilken typ av...

Använda en DIY rörelsesensor för att automatisera din spökhus

De särskilda effekterna i ett spökhus måste vara väl tidsinställda. Det bästa sättet att göra detta är att använda sensorer för att upptäcka där dina gäster är i spökhuset. Så gör jag en rad projekt som visar en mängd olika sensorer som du kan använd...

Lägga till sensorer till din router! Använda GPIO och sensorer på OpenWrt

Om ditt nätverksrouter stöder OpenWrt Linux, kan du låsa upp många användbara funktioner för dina projekt!Check för suported routrarhttp://wiki.OpenWrt.org/Toh/startsedan kontrollera routerns toh sida för detaljer på att hitta gpio stiften.Exempel fö...

Använda sensorer och ställdon för att göra en mekanisk labyrint labyrint

En tre-axlig accelerometer fångar lutningen på Kinoma skapa. Kinoma skapa processer tilt data i programvara för att styra rotation av två servomotorer ansluten till labyrinten. Resultatet är intuitiv rörelse av labyrinten i förhållande till registera...

DIY-kabel att använda OTG och samtidigt Ladda enheten (Windows och Android)

Du kan använda denna kabel med alla android och windows-enheter att använda funktionen OTG och samtidigt ladda enheterna.Steg 1: Material som krävs förMicro USB hane A,USB A hane,USB kvinnliga ADPDT eller 2P2W eller 2P2T switchoch några kablar.Steg 2...

Använda Arduino och RS232 sköld att gränssnittet integrerad UHF RFID reader LSID-0702

Lång rad UHF RFID-läsare (1-6 M) (ISO18000-6 C EPC G2) integrerarläsaren med antennen. När första driv på, buzz läsaren kommer en gång för att indikera att det börjar att arbeta. När det finns taggen närmar sig läsaren, kommer det buzz för att indike...

Använda SSH och XMing Display X program från en Linux-dator på en Windows dator

om du använder Linux och Windows hemma, eller tvärtom, kan du ibland behöva logga in på datorn på andra plats, och köra program. Tja, kan du installera en X-Server, aktivera SSH Tunneling med din SSH-klient och en upp både VNC och fjärrskrivbord för...

Spela fransmännen kan kan använda Arduino och Summer

Bonjour!Gör din Arduino spela den franska kan kan använda en Summer. Ingen tång. Inga bränder. Det är så rakt fram att det är så upprörande den kan kan innebär.Detta instructable täcker några inledande elektronik info, och fokuserar på att skriva skr...

Hur man gör en Awesome Design (använda Paint och Adobe Photoshop)

på detta Instructable, jag kommer att visa dig hur man drar en awesome design på Paint (eller något annat program som du använder för att rita på datorn), och Adobe Photoshop. Jag kom med denna idé från en historia som jag skriver. Det fanns en viss...

Räkna och mäta objekt genom att använda arduino och potentiometer eller en ultrasonic sensor på kunskapsförmedlare produktion

Detta instructable förklarar hur du använder en potentiometer och en ultrasonic sensor med arduino att räkna/mäta/log olika objekt på ett transportband. Det blir också några lysdioder som blinkar med olika hastighet och olika antal gånger.Instrucable...

Läst realtid analog ingång genom att använda Arduino och rita med LabVIEW

När jag gjorde mina projekt en av integrerad del analoga data läses och rita ut den. Sedan hittade jag inga artiklar eller instructable med tillförlitliga material för att göra det jag tänkte skriva ned de olika stegen som jag använde slutligen att u...

Använda en gammal Xbox PSU för att driva en bil förstärkare.

Detta är min första Instructable så bli inte alltför hårt på mig. Jag är säker det är förvirrande i en massa ställen.Jag ser tutorials över hela Internet om hur du använder en PC NÄTAGG för att driva en bil förstärkare i ett hus. Jag ville prova det...

Soft Reset din Handflatta PDA utan att använda den återställa hål i the Back (inte ansöka till FRYSER)

till mycket lätt mjuk återställa handflatan utan att behöva sticka en nål i ryggen, med en gratis Palm program som heter HackMasterDETTA INSTRUCTABLE KOMMER INTE VARA TILL NÅGON NYTTA OM DIN PALM FRYSER. DET ÄR ENDAST FÖR ANVÄNDNING AV RESETTING DIN...

Använda Cerat och lös ögonskugga pigment att skapa en awesome läppfärg!

För denna tutorial kommer du att behöva följande material:1. 2 läpp penslar2. glimmer skönhet skimmer 91 Diligence (Mörkbrun)3. glimmer skönhet skimmer 9 Carnival (guld färg)4. glimmer skönhet klart läppbalsam5. 1 pappershandduk6. Foudation eller täc...

Använda Arduino och Bluetooth kontroll en två-bil

vi bara ändrat en två-förare bil kontroll av Arduino och Bluetooth-modulen. Kontrollera sidan används Freaduino 328 och två Joystick modul och Bluetooth sköld för skicka data. Andra sidan används Arduino Pro och Bluetooth Bee för mottagna data och st...