1Aug

Bygg en LED-indikator med en Raspberry Pi( för e-post, väder eller något)

Raspberry Pi gör en fin kompakt plattform för att anbringa en indikatorlampa för alla typer av projekt-väderrapportering, nya e-postmeddelanden etc. Läs vidare när vi visar dig hur du kopplar en LED-modul till din Pi och ställer in några grundläggandeanmälningar.

Varför vill jag göra detta?

Eftersom det är roligt. Till skillnad från många av våra tutorials där vi inkluderar en liten bild på toppen som beskriver exakt vilken nytta du kommer att härleda från projektet, är blurb ganska kort i det här fallet eftersom fördelen bara har roligt.

Raspberry Pi är en perfekt apparat att leka med, experimentera med elektronik och lära dig lite programmering. Ingen behöver en omgivande regnindikator i deras kök, till exempel, men att bygga en är en rolig övning och en stor påminnelse att föra ditt paraply med dig på potentiella stormdagar.

Vad behöver jag?

För att följa med ut handledning behöver du några saker. För det första antar vi att du redan har följt vår tidigare handledning: HTG Guide till Komma igång med Raspberry Pi( och sålunda har en grunderna täckt för att installera Rasbian på vår Raspberry Pi).

Om du vill göra detta projekt på en budget kan vi med säkerhet säga att den nyaste modellen Raspberry Pi är betydande överkill för jobbet och vi uppmuntrar dig att blåsa dammet av en gammal Raspberry Pi du harshoved i garderoben eller hämta en billig begagnad av eBay eller liknande. Budgetvis den långa i-tanden en Raspberry Pi 1 Modell A eller Modell B snagged off eBay för $ 10-15 är en perfekt passform för detta projekt över att köpa en helt ny $ 35 nuvarande generation Pi.

Förutom att ha en funktionell Pi-enhet med Raspbian installerad på den behöver du följande saker:

  • 1 LedBorg-modul( ~ $ 5,00 med $ 4 frakt från Storbritannien till USA, fungerar med alla Raspberry Pi-modeller).
  • 1 Klar Raspberry Pi-fodral kompatibel med din speciella Pi-modell som denna Raspberry Pi 1 Modell B-fodral.

Obs! Det klara / frostade Pi-fodralet är helt valfritt men om du använder ett ogenomskinligt fodral så kommer din LED-indikator att döljas inuti. Du behöver antingen skära ett hål i ditt fall för att släcka eller använda en GPIO förlängningskabel med ett breakout kit, som det här från Adafruit Industries, för att koppla LedBorg till din Raspberry Pi. Medan du använder breakout-kabeln, läggs ungefär $ 8 på bekostnad av projektet, erbjuder det mer potential för att anpassa slutprodukten genom att du lättare kan placera LED-lampan inuti saker eller under något du vill lysa.

Installera LedBorg

Medan du säkert skulle kunna bygga en helt LED-indikator från din dator( och en sökmotorförfrågan kommer att dyka upp många människor som har gjort det) producerar Piborg-organisationen en så kompakt och billig LED-modul, LedBorg, att vi inte kunde motstå att använda det som utgångspunkt för vårt Raspberry Pi LED indikatorprojekt.

Installera modulen är en snap eftersom den är utformad för att passa direkt över GPIO-stiften på Pi. Först, slå ner din Pi och öppna väskan.

Den viktigaste delen av installationsprocessen är att du orienterar modulen så att LedBorg-ikonen är närmast RCA-modulen på Raspberry Pi-kortet( och sålunda ligger LedBorgs kant i kanten av Pi-kortet medöverhängande delen av LedBorg hänger över Pi-kortet och inte av kanten).Se fotografiet ovan.

Medan du har Pi-kortet öppet, skulle det vara en utmärkt tid att täcka LED-indikatorerna( bredvid USB-portarna), speciellt om du använder ett klart fall. Du vill inte att det är förvirrande att läsa din LedBorg-indikator eftersom ström- och nätindikatorlamporna är så ljusa.

Vi täckte vårt med ett lager av vit elektrisk tejp. Detta dämpade dem tillräckligt så att vi fortfarande kunde referera dem men de var så mycket dimmare än LedBorg det var inte längre distraherande.

När du har installerat LedBorg och har valfritt täckt Pi-LED-indikatorerna med elektriskt band, är det dags att stänga väskan igen. Starta upp din Pi innan du går vidare till nästa steg i handledningen.

Installera LedBorg-programvaran

PiBorg erbjuder ett utmärkt program för LedBorg som innehåller både en GUI-controller och drivrutiner för att komma åt LedBorg från kommandoraden.

Innan vi börjar ska du se till att du tar rätt paket för din version av Rasbian och revisionen # av din Raspberry Pi-bräda.

Om din Raspberry Pi-bräda inte har några monteringshål, är det Revision 1. Om din Raspberry Pi har monteringshål( finns via USB-portarna och mellan ström och HDMI-port) är det Revision 2. Du måste också känna till kärnanversion av din Rasbian-installation.Öppna terminalen och skriv in följande kommando för att kontrollera:

uname -r

När du har revisionsnumret och kärnans nummer kan du besöka paketavsnittet här för att ta tag i länken för ditt paket. I vårt fall använder vi ett Revision 1-kort med 3.6.11-kärnan så vi skulle få tag i filen raspbian-2013-02-09-rev1.zip.

För att installera alla godisar måste vi öppna terminalen på Pi.och ange sedan följande kommandon för att installera LedBorg-paketet.

Anm.: Du måste ersätta URL: n i det tredje kommandot med paketets URL för din kartong / kärnkombination.

mkdir ~ / ledborg-setup
cd ~ / ledborg-setup
wget -O setup.zip http: //www.piborg.org/downloads/ledborg/ raspbian-2013-02-09-rev1.zip
unzip setup.zip
chmod + x install.sh
. /install.sh

Vid denna punkt har du nu GUI-omslaget för LedBorg-drivrutinerna och drivrutinerna själva installerade. På ditt Raspbian-skrivbord får du se en ikon för GUI-omslaget:

Fortsätt och klicka på LedBorg-ikonen för att starta GUI-omslaget. Du kommer att behandlas på färgplockargränssnittet så här:

Nu är det den perfekta tiden att se till att din modul är funktionell. Välj vilken färg som helst, spara för svart, för att prova det. Vi ska testa det genom att välja några färger:

Ser bra ut! Det är ljust och den frostade plasten i det fall vi beställde för projektet erbjuder måttlig diffusion. Om du vill spela med LED-modulen mer innan du går vidare klickar du på Demo Mode:

I demoläge kan du cykla genom alla färger med olika hastigheter, kolla in den höga / låga utgången och sätt annars LED-modulen genom steg.

Det är här i avsnittet Demo Mode att du också kan göra din LedBorg till den första av många indikatorer. Genom att välja CPU i avsnittet Färger börjar lampan växla från grönt till gult till rött för att indikera belastning på Raspberry Pi's ARM-processor. Vi föreslår att du ändrar hastigheten till långsam medan du är på den. Snabb uppdaterar LED-lampan för snabbt och gör att CPU-indikatorn distraherar istället för användbar.

Förutom att använda GUI-gränssnittet för att välja färger kan du välja färger från terminalen med hjälp av RGB-värden.Öppna terminalen och ange följande kommando för att stänga av lysdioden:

echo "000" & gt;/dev/ ledborg

Hur LedBorg hanterar RGB-värden är att 0 betyder att kanalen är av, 1 betyder att kanalen är halv kraft och 2 betyder att kanalen är full ström. Så exempelvis skulle 001 ställa in den röda kanalen vid 0%, den gröna kanalen vid 0% och den blå kanalen vid 50% effekt.

Ändra värdet till 002 och LED-utgången förblir blå men blir ljusare eftersom den blå kanalen nu är 100% ute.Ändra värdet till 202 och Röda och Blå vid full effekt kombineras för att skapa en magenta färg.

Nu när vi vet hur man manuellt manipulerar LED-lampan, låt oss titta på skript för att göra vår LED från ett enkelt ljus till en faktisk indikator.

Konfigurera din LedBorg som regnsindikator

För denna del av handledningen kommer vi att kombinera flera saker tillsammans för att göra vår LedBorg LED-modul till en regnindikator baserat på väderprognosen för vår plats. Vi använder ett Python-skript för att ringa ett väder-API som i sin tur läser risken för regn för dagen och sedan växla lysdioden från från till ljusblå för att indikera det prognostiserade regnet.

Först måste vi få en API-nyckel för Weather Underground. För personligt bruk och små utvecklingsprojekt är API gratis. Besök registreringssidan för Väder API här och registrera dig för en API-nyckel.

När du har din API-nyckel, besök Weather Underground och leta efter den stad du vill övervaka. I vårt fall kommer vi att övervaka San Fransisco, CA.URL för San Fransiscos prognos sida är:

http: //www.wunderground.com/US/CA/ San_Francisco.html

Den viktiga delen för vårt syfte är den sista delen av URL: /CA/ San_Francisco.html. Vi ska använda det för att redigera prognosadressen för API-verktyget. Basadressen är:

http: //api.wunderground.com/api/ DIN API KEY /forecast/q/STATE/ CITY.json

Du kan generera prognosen för en amerikansk stad genom att ange din API-nyckel, två bokstavskoden och stadens namn från den URL du drog från ditt VäderUnderjordiska sökresultat.

När du har API-webbadressen med din API-nyckel och stat / stad infogad kan du sedan redigera följande Python-skript genom att skapa ett nytt textdokument på din Pi med hjälp av Leafpad och klistra in följande kod i den:

från urllib2 import urlopen
import json

req = urlopen( 'http: //api.wunderground.com/api/ DIN API KEY /forecast/q/STATE/ CITY.json')
parsed_json = json.load( req)
pop = int( parsed_json ['prognos'] ['txt_forecast'] ['prognosdag'][0] ['pop'])

# Följande är ett felsökningsvärde.
# Redigera hash och byt
# heltalet till en 0-100 för att testa
# LED-svaret.

# pop = 0

print 'Nuvarande chans för nederbörd är{ }.'. Format( pop)

# Standardinställningen är att släcka lysdioden
# för någon risk för regn över 20%.Du kan justera
# värdet i "if pop & gt; 20:" som du önskar.

om pop & gt;20:
LedBorg = öppen( '/dev/ ledborg', 'w')
LedBorg.write( '002')
del LedBorg
print( 'Rain!')
Annan:
LedBorg = öppen( '/dev/ ledborg'w ')
LedBorg.write( ' 000 ')
del LedBorg
print( ' Ingen regn! ')

Spara filen som wunderground.py i /home/pi/-katalogen.Öppna terminalen och skriv in följande kommando:

python wunderground.py

Om du har angett din API-nyckel och dina stat / stadskoder ordentligt ska det sparka tillbaka ett svar som ser ut:

Om nederbörd förutses för ditt områdeDin LedBorg-produktionen ska se ut så här:

Nu väntar på en regnig dag för att ordentligt testa skriptet skulle vara tråkigt. Om det inte finns någon risk för regn i ditt område idag och du vill se lysdioden lyser, redigerar wunderground.py-skriptet och ersätter pop-pop-passet-värdet i rad 13 med ett värde större än 20 som 60att vår prognos återvände. Kom bara ihåg att ändra raden tillbaka till "pop = pop" när du är klar.

Det sista steget är att ställa in ett cron-jobb för att automatiskt köra skriptet som vi just sparat med ett regelbundet intervall för att hålla LED-indikatorn aktuell. Eftersom denna uppgift är nödvändig för både det här skriptet och den e-postindikator som följer, kommer vi att täcka upprättandet av ett cron-jobb efter att vi har visat dig hur du konfigurerar det andra skriptet.

Konfigurera din LedBorg som en Gmail-indikator

Vem gillar inte dopaminfixet som följer med att se ny e-post i inkorgen? I den här delen av handledningen kommer vi att visa dig hur du använder LedBorg som en ny Gmail-indikator. Precis som förra gången kommer vi att kombinera en extern ingång( i detta fall ett Atom-flöde istället för ett API) och ett enkelt skript för att driva vår LED.

Vi behöver utvidga funktionaliteten i vår Python-installation lite genom att installera FeedParser, ett Python RSS / Atom feed-läsverktyg.Öppna terminalen och skriv in följande kommando:

sudo easy_install feedparser

När installationen är klar kan vi ställa in för att skapa vårt Gmail-kontrollskript.Återigen, använd Leafpad, klistra in följande text i redigeraren.Ändra användarnamnet och lösenordet för att matcha användarnamnet och lösenordet för Gmail-kontot du vill kontrollera.

import feedparser

# Ange ditt användarnamn för Gmail
# och lösenord. Inkludera inte
# @ gmail.com-delen av
# ditt användarnamn.

användarnamn = "användarnamn"
lösenord = "lösenord"

mail = int( feedparser.parse( "https: //" + användarnamn + ":" + lösenord + "@ mail.google.com /gmail/feed/ atom")"] [" fullcount "])

# Följande är ett felsökningsvärde.
# Redigera hash och byt
# heltalet till en 0 eller 1 för att testa
# LED-svaret.

# mail = 0

om mail & gt;0:
LedBorg = öppen( '/dev/ ledborg', 'w')
LedBorg.write( '020')
del LedBorg
print( 'Mail!')
Annat:
LedBorg = öppen( '/dev/ ledborg'w ')
LedBorg.write( ' 000 ')
del LedBorg
skriv ut( ' Ingen mail! ')

Spara skriptet som gmailcheck.py.Öppna terminalen och skriv följande kommando:

python gmailcheck.py

Om du har e-post som sitter i din Gmail-inkorg, lyser lysdioden grön och du får ett svar som sådant:

Om du har mail i din Gmail-inkorg, kommer din LedBorgkommer att se ut så här:

Precis som regnkontrollen har vi inkluderat ett felsökningsvärde. Om du inte har någon ny e-post kan du antingen skicka dig ett e-postmeddelande för att höja din inkorgsräkning till 1 eller du kan redigera kommentarschacken och byta felsökningslinjen till "mail = 1" för att testa skriptet. Kom ihåg att återställa linjen när du är klar med testningen.

Hoppa till nästa avsnitt i handledningen för att ställa in ditt Gmail-skript för att köras på ett schema.

Ställa in ett Cron-jobb för att köra ditt skript

Nu när vi har två skript för att leka med måste vi ställa in ett cron-jobb för att kunna köra dem hela dagen för att hålla LED-indikatorn aktuell.

Det första vi vill göra är att stänga av lysdioden om den är på gång från våra tidigare experiment. Vid terminaltypen:

eko "000" & gt;/dev/ ledborg

Medan du fortfarande befinner dig på kommandoraden kan du öppna cron-redigeraren. Om du aldrig har skapat ett cron jobb tidigare, rekommenderar vi starkt att du kolla in vår guide för att använda den här. Med detta sagt går vi igenom ett grundläggande schema här.

Vid terminaltypen:

sudo crontab -e

Detta öppnar Raspbian cron-tabellen i Nano textredigeraren. Använd piltangenterna för att rulla ner till längst ner. Det här är där vi ska ställa in det återkommande cronjobbet för våra Python-skript.

Om du vill ställa in regnskriptet anger du följande rad i cron-tabellen:

* / 5 * * * * python /home/pi/ wunderground.py

Tryck på CTRL + X för att avsluta;välj ja för att spara och skriva över det befintliga cron-tabellen. Värdet vi angav i cron-tabellen "* / 5 * * * *" anger att skriptet körs var 5: e minut, för alltid.

Var 5: e minut är ett bra tidsrymd för ett manus som kontrollerar prognoserat regn - du kan till och med argumentera för att det är lite för aggressivt - men om du försöker hålla dig kvar på ditt mail är det lite för långt ett spannmål förunderrättelse. Om du ställer in schemat för Gmail-anmälningsskriptet anger du följande rad i cron-tabellen:

* / 1 * * * * python /home/pi/ wunderground.py

Den här posten körs gmailcheck.py-skriptet varje minut för en mycket snabbareuppdateringsmeddelande.

Det är allt som finns till det! Du kan experimentera med dina egna Python-skript genom att lyfta if / else-sorters uttalanden ur oss och försöka dem med helt nya variabler. Om du kan hitta en ingångskälla för data kan du ändra den till en variabel i Python-manuskriptmarknaden, pollenräkningar, Twitter nämner, om det finns ett API för det kan du göra det till en omgivande LED-indikator.

Slutligen vill jag tacka alla de stora resurserna som jag brukade arbeta med för projektet. Det har varit lite över ett decennium sedan jag aktivt skrev program och det tog några knappar för att få damm och rost ut. Bidragsgivarna på /r/ LearnPython hjälpte mig att krossa mig i API-utgången för Weather Underground, och studerade hur Michael över på Mitch Tech behandlade Gmail Atom-flödet som gjorde det enklare att analysera det för LedBorg och att studera Python-lärande modulerna vid Code Academy var en brasätt att hämta den grundläggande syntaxen och strukturen på ett språk jag aldrig brukade tidigare.