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

    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 sätta på 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äggande meddelanden.

    Varför vill jag göra det här?

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

    Raspberry Pi är en perfekt enhet att leka med, experimentera med elektronik och lära sig lite programmering. Ingen behov En omgivande regnindikator i deras kök, till exempel, men att bygga en är en rolig övning och en stor påminnelse att ta med dig ditt paraply 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 skulle uppmuntra dig att blåsa dammet av en gammal Raspberry Pi du har skjutit 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 Clear Raspberry Pi-fodral kompatibel med din speciella Pi-modell som denna Raspberry Pi 1 Modell B-fodral.

    Notera: Det klara / frostade Pi-fodralet är helt valfritt men om du använder ett ogenomskinligt fodral, kommer din LED-indikator att döljas inuti. Du måste antingen klippa ett hål i ditt fall för att släcka eller använda en GPIO förlängningskabel med ett breakout kit som den 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 LED-indikator helt från scratch (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, som vi inte kunde " t motstå med att använda den som grund för vårt framtidsprojekt för Raspberry Pi LED.

    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 på Pi-kortet med överhängande del av LedBorg hänger över Pi-kortet och inte av kanten). Se fotografiet ovan.

    Medan du har Pi-kortet öppet, skulle det nu vara en utmärkt tid att täcka de inbyggda LED-indikatorerna (bredvid USB-portarna), speciellt om du använder ett tydligt 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 tillhandahåller ett bra mjukvarupaket 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 måste 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 (ligger vid USB-portarna och mellan ström och HDMI-port) är det Revision 2. Du måste också veta kärnversionen av din Rasbian-installation. Öppna terminalen och ange följande kommando för att kontrollera:

    uname -r

    När du har revisionsnumret och kärnanummeret 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 behöver vi öppna terminalen på Pi. och sedan mata in följande kommandon för att installera LedBorg-paketet.

    Notera: Du måste ersätta webbadressen i det tredje kommandot med paketets URL för din styrelse / 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 tidpunkt har du nu GUI-omslaget för LedBorg-drivrutinerna och drivrutinerna själva installerade. På ditt Raspbian-skrivbord ser du 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 som så:

    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, klicka 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 CPU-indikatorn distraherande 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 skriv in följande kommando för att stänga av lysdioden:

    eko "000"> / dev / ledborg

    Sättet som 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å till exempel 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 kombinerar 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 en regnindikator

    För den här delen 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-åtkomstnyckel 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 väl 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 viktigaste delen för våra syften ä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/YOUR API KEY / forecast / q / STATE / CITY.json

    Du kan generera prognosen för en amerikansk stad genom att ange din API-nyckel, statsbokskoden för två bokstäver och stadens namn från webbadressen som du drog från sökresultatet från Weather Underground..

    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
    importera json

    req = urlopen ('http://api.wunderground.com/api/YOUR 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 isch och ändra
    # 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> 20:" som du önskar.

    om pop> 20:
    LedBorg = öppen ('/ dev / ledborg', 'w')
    LedBorg.write ( '002')
    del LedBorg
    skriv ut ('regn!')
    annan:
    LedBorg = öppen ('/ dev / ledborg', 'w')
    LedBorg.write ( '000')
    del LedBorg
    skriv ut ('ingen regn!')

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

    python wunderground.py

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

    Om nederbörd förutses för ditt område ska din LedBorg-produkt se ut som sådan:

    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 att LED-lampan lyser, redigerar wunderground.py-skriptet och ersätter pop-pop-passeringsvärdet i rad 13 med ett värde större än 20 som 60 att vår prognos återvände. Kom bara ihåg att ändra linjen 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 sparade med ett regelbundet intervall för att hålla LED-indikatorn aktuell. Eftersom den här uppgiften ä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 expandera funktionaliteten i vår Python-installation lite genom att installera FeedParser, ett Python RSS / Atom-feedlä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 det Gmail-konto du vill kontrollera.

    importera feedparser

    # Ange ditt Gmail-användarnamn
    # och lösenord. Inkludera inte
    # the @ 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")["feed"]["fullcount"])

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

    # mail = 0

    om mail> 0:
    LedBorg = öppen ('/ dev / ledborg', 'w')
    LedBorg.write ( '020')
    del LedBorg
    skriv ut ('Mail!')
    annan:
    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 i din Gmail-inkorg, lyser lysdioden grönt och du får ett svar som sådant:

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

    Precis som regnkontrollen har vi inkluderat ett felsökningsvärde. Om du inte har något nytt e-postmeddelande kan du antingen skicka dig ett e-postmeddelande för att höja din inkorgsräkning till 1 eller du kan redigera kommentarschacken och ändra 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 script

    Nu när vi har två skript att spela med, måste vi skapa ett cronjobb för att kunna köra dem hela dagen för att hålla LED-indikatorn ström.

    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"> / 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. Som sagt kommer vi att gå igenom dig genom att skapa ett grundschema 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 CTRL + X för att avsluta; välj ja för att spara och skriva över det befintliga cron-tabellen. Värdet vi skrev in 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änge ett spännande meddelande . 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

    Denna post körs gmailcheck.py-skriptet varje minut för en mycket snabbare uppdateringsmeddelande.


    Det är allt där det är! Du kan experimentera med dina egna Python-skript genom att lyfta if / else-utsikten ut ur vårt 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-manuskriptmarknadsvärdena, pollenräkning, 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 resurser som jag brukade arbeta för i 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 med att mucka om 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 studera Python-lärande modulerna vid Code Academy var ett bra sätt att hämta den grundläggande syntaxen och strukturen på ett språk jag aldrig brukade tidigare.