Hjemmeside » hvordan » Byg en LED indikator med en Raspberry Pi (til Email, Weather eller noget)

    Byg en LED indikator med en Raspberry Pi (til Email, Weather eller noget)

    Raspberry Pi gør en god kompakt platform til at tilslutte en indikatorlampe til alle slags projekter-vejrmelding, nye e-mails osv. Læs videre, som vi viser dig, hvordan du tilslutter et LED-modul til din Pi og opretter nogle grundlæggende meddelelser.

    Hvorfor vil jeg gøre dette?

    Fordi det er sjovt. I modsætning til mange af vores tutorials, hvor vi indeholder en lille blurb på toppen, der præciserer præcis, hvilken fordel du får af projektet, er blurb ganske kort i dette tilfælde, fordi fordelen simpelthen har det sjovt.

    Raspberry Pi er en perfekt enhed til at lege med, eksperimentere med elektronik og lære nogle programmering. Ingen behov En omgivende regnindikator i deres køkken, for eksempel, men at bygge en er en sjov øvelse og en stor påmindelse om at bringe din paraply med dig på potentielle stormdage.

    Hvad har jeg brug for?

    For at følge med med selvstudiet skal du bruge et par ting. For det første antager vi, at du allerede har fulgt vores tidligere vejledning: HTG-vejledningen til at komme i gang med Raspberry Pi (og dermed har det grundlæggende til at installere Rasbian på vores Raspberry Pi).

    Hvis du ønsker at gøre dette projekt på et budget, kan vi med sikkerhed fortælle dig, at den nyeste model Raspberry Pi er betydelig overkill for jobbet, og vi vil opfordre dig til at blæse støvet fra en gammel Raspberry Pi, du har skubbet i skabet eller afhente en billig brugt en fra eBay eller lignende. Budgetvis den lange i-tanden en Raspberry Pi 1 Model A eller Model B snagged off eBay til $ 10-15 er en perfekt pasform til dette projekt over at købe en helt ny $ 35 nuværende generation Pi.

    Ud over at have en funktionel Pi enhed med Raspbian installeret på den skal du have følgende ting:

    • 1 LedBorg modul (~ $ 5,00 med $ 4 fragt fra Storbritannien til USA, arbejder med alle Raspberry Pi modeller).
    • 1 Clear Raspberry Pi Case kompatibel med din særlige Pi model som denne Raspberry Pi 1 Model B sag.

    Bemærk: Det klare / frostede Pi-tilfælde er helt valgfrit, men hvis du bruger et uigennemtrængeligt tilfælde, bliver din LED-indikator gemt inde. Du skal enten skære et hul i dit tilfælde for at slukke eller bruge et GPIO-forlængerkabel med et breakout-sæt som dette fra Adafruit Industries-for at binde LedBorg til din Raspberry Pi. Mens du bruger breakout-kablet, tilføjer ca. $ 8 til bekostning af projektet, det giver mere potentiale til at tilpasse slutproduktet, idet du lettere kan placere LED'en inde i ting eller under noget, du vil belyse.

    Installation af LedBorg

    Selvom du helt sikkert kunne opbygge dig selv en LED-indikator helt fra scratch (og en søgemaskineforespørgsel vil dukke op masser af mennesker, der har gjort det), producerer Piborg-organisationen et så kompakt og billigt LED-modul, LedBorg, at vi ikke kunne ' ikke modstå at bruge det som grundlag for vores Raspberry Pi LED indikatorprojekt.

    Installering af modulet er et snap, da det er designet til at passe direkte over GPIO-benene på Pi. Først skal du slå din Pi ned og åbne sagen.

    Den vigtigste del af installationsprocessen er, at du orienterer modulet, så LedBorg-ikonet er tættest på RCA-modulet på Raspberry Pi-pladen (og dermed er LedBorgs kant fladt med kanterne af Pi-pladen med det overhængende del af LedBorg hængende over Pi bordet og ikke af kanten). Se billedet ovenfor.

    Mens du har Pi-kortet åbent, ville det nu være en god tid at dække LED-indikatorerne (ved siden af ​​USB-portene), især hvis du bruger et klart tilfælde. Du vil ikke have det forvirrende at læse din LedBorg-indikator, fordi strøm- og netindikatorlamperne er så lyse.

    Vi dækkede vores med et lag af hvidt elektrisk tape. Dette dæmpede dem nok, så vi stadig kunne henvise dem, men de var så meget lysere end LedBorg det var ikke længere distraherende.

    Når først LedBorg er installeret og eventuelt har dækket Pi's LED-indikatorer med elektrisk tape, er det tid til at lukke sagen igen. Start din Pi op, før du går videre til næste fase af øvelsen.

    Installation af LedBorg-softwaren

    PiBorg leverer en fantastisk softwarepakke til LedBorg, der indeholder både en GUI controller samt drivere for at få adgang til LedBorg fra kommandolinjen.

    Før vi kommer i gang, skal du sørge for at få fat i den rigtige pakke til din version af Rasbian og revisionen # af din Raspberry Pi bord.

    Hvis din Raspberry Pi bord ikke har monteringshuller, er det Revision 1. Hvis din Raspberry Pi har monteringshuller (placeret ved USB-portene og mellem strøm- og HDMI-porten), så er det Revision 2. Du skal også kende kerneversionen af din Rasbian-installation. Åbn terminalen og indtast følgende kommando for at tjekke:

    uname -r

    Når du har revisionsnummeret og kerne nummeret, kan du besøge pakken sektionen her for at hente linket til din pakke. I vores tilfælde bruger vi et Revision 1 bord med 3.6.11 kernen, så vi kunne få fat i raspbian-2013-02-09-rev1.zip filen.

    For at installere alle godbidder skal vi åbne terminalen på Pi. og indtast derefter følgende kommandoer for at installere LedBorg-pakken.

    Bemærk: Du skal erstatte URL'en i den tredje kommando med URL'en for pakken til din bord / kernekombination.

    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

    På dette tidspunkt har du nu GUI wrapper til LedBorg drivere og driverne selv installeret. På dit Raspbian skrivebord vises et ikon til GUI wrapper:

    Gå videre og klik på LedBorg-ikonet for at starte GUI wrapper. Du vil blive behandlet på farvevælgerinterfacet som sådan:

    Nu er det den perfekte tid til at sikre, at dit modul er funktionelt. Vælg enhver farve, gem til sort, for at prøve det. Vi skal teste det ved at vælge et par farver:

    Ser godt ud! Det er lyst og den frostede plastik i den sag, vi bestilte til projektet, tilbyder moderat diffusion. Hvis du vil lege med LED-modulet mere, før du går videre, skal du klikke på Demo Mode:

    I demo-tilstand kan du cykle gennem alle farverne med forskellige hastigheder, tjekke høj / lav udgang og ellers sætte LED-modulet gennem trinene.

    Det er her i Demo Mode sektionen, at du også kan slå din LedBorg til den første af mange indikatorer. Ved at vælge CPU i sektionen Farver begynder LED'en at skifte fra grønt til gul til rødt for at angive belastning på Raspberry Pi's ARM-processor. Vi foreslår, at du ændrer hastigheden til langsom, mens du er ved det. Hurtigt opdaterer LED'en for hurtigt og gør CPU-indikatoren distraherende i stedet for nyttige.

    Ud over at bruge GUI-grænsefladen til at vælge farver kan du vælge farver fra terminalen ved hjælp af RGB-værdier. Åbn terminalen og indtast følgende kommando for at slukke for LED'en:

    ekko "000"> / dev / ledborg

    Måden LedBorg håndterer RGB-værdier er, at 0 betyder, at kanalen er slukket, 1 betyder, at kanalen er halv strøm, og 2 betyder, at kanalen er fuld effekt. Så for eksempel vil 001 indstille den røde kanal ved 0%, den grønne kanal ved 0% og den blå kanal ved 50% effekt.

    Skift værdien til 002, og LED-udgangen forbliver blå, men bliver lysere, fordi den blå kanal nu er 100% output. Skift værdien til 202, og den Røde og Blå ved fuld effekt kombinere for at gøre en magenta farve.

    Nu da vi ved, hvordan man manipulerer LED'en manuelt, lad os se på brug af scripts for at vende vores LED fra et simpelt lys til en faktisk indikator.

    Konfiguration af din LedBorg som en regnindikator

    For denne del af tutorialen kæmper vi flere ting sammen for at gøre vores LedBorg LED-modul til en regnindikator baseret på vejrudsigten for vores placering. Vi bruger et Python-script til at kalde et vejr-API, som igen læser chancen for regn for dagen og derefter skifter LED'en fra til lyseblå for at indikere den forventede regn.

    For det første skal vi få en API-adgangskode til Weather Underground. Til personlig brug og små udviklingsprojekter er API'en gratis. Besøg registreringssiden for vejret API her og tilmelde dig en API-nøgle.

    Når du har din API-nøgle, skal du besøge vejrundergrunden og søge efter den by, du vil overvåge. I vores tilfælde vil vi overvåge San Fransisco, CA. Webadressen til San Fransiscos prognose side er:

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

    Den vigtige del til vores formål er den sidste del af webadressen: /CA/San_Francisco.html. Vi skal bruge det til at redigere prognose-URL'en for API-værktøjet. Basisadressen er:

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

    Du kan generere prognosen for en hvilken som helst amerikansk by ved at indtaste din API-nøgle, tobogstaverens tilstandskode og byens navn fra den webadresse, du har trukket fra dine vejrundergrounds søgeresultater.

    Når du har API-URL'en med din API-nøgle og stat / by indsat, kan du derefter redigere følgende Python-script ved at oprette et nyt tekstdokument på din Pi ved hjælp af Leafpad og indsætte følgende kode i den:

    fra urllib2 import urlopen
    import 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 ['forecast'] ['txt_forecast'] ['forecastday'] [0] ['pop'])

    # Følgende er en fejlfinding.
    # Rediger ud hash og skift
    # heltalet til en 0-100 til test
    # LED-responsen.

    # pop = 0

    print 'Nuværende chance for nedbør er .'. format (pop)

    # Standardindstillingen er at tænde LED'en
    # for enhver chance for regn over 20%. Du kan justere
    # værdien i "if pop> 20:" som du ønsker.

    hvis pop> 20:
    LedBorg = åben ('/ dev / ledborg', 'w')
    LedBorg.write ( '002')
    del LedBorg
    print ('regn!')
    andet:
    LedBorg = åben ('/ dev / ledborg', 'w')
    LedBorg.write ( '000')
    del LedBorg
    print ('Ingen regn!')

    Gem filen som wunderground.py i / home / pi / directory. Åbn terminalen og indtast følgende kommando:

    python wunderground.py

    Hvis du har indtastet din API-nøgle og dine stats- / bykoder ordentligt, skal det sparke et svar, der ligner:

    Hvis nedbør forudses for dit område, skal din LedBorg-produktion se ud som sådan:

    Nu venter på en regnvejrsdag at korrekt teste scriptet ville være kedeligt. Hvis der ikke er nogen chance for regn i dit område i dag, og du vil se LED'en lyser, skal du redigere wunderground.py scriptet og erstatte "pop = pop" passthrough-værdien i linje 13 med en værdi større end 20 som 60 at vores prognose returneres. Bare husk at ændre linjen tilbage til "pop = pop", når du er færdig.

    Det sidste trin er at oprette et cron-job til automatisk at køre det script, vi netop har sparet med et regelmæssigt interval for at holde LED-indikatoren aktuelle. Da denne opgave er nødvendig for både dette script og den e-mail-indikator, der følger, skal vi dække oprettelsen af ​​et cron-job, efter at vi har vist dig, hvordan du konfigurerer det andet script.

    Konfiguration af din LedBorg som en Gmail-indikator

    Hvem kan ikke lide dopamin-rettelsen, der følger med at se ny email i deres indbakke? I denne del af vejledningen skal vi vise dig, hvordan du bruger LedBorg som en ny Gmail-indikator. Ligesom sidste gang skal vi kombinere en ekstern indgang (i dette tilfælde et Atom-feed i stedet for en API) og et enkelt script til at drive vores LED.

    Vi skal udvide funktionaliteten i vores Python-installation lidt ved at installere FeedParser, et Python RSS / Atom feed læsningsværktøj. Åbn terminalen og indtast følgende kommando:

    sudo easy_install feedparser

    Når installationen er færdig, kan vi indstille os til at oprette vores Gmail-kontrol script. Igen skal du bruge Leafpad til at indsætte følgende tekst i editoren. Skift brugernavn og kodeord for at matche brugernavnet og adgangskoden til den Gmail-konto, du vil kontrollere.

    importer feedparser

    # Indtast dit Gmail brugernavn
    # og adgangskode. Inkluder ikke
    # den @ gmail.com del af
    # dit brugernavn.

    brugernavn = "brugernavn"
    password = "password"

    mail = int (feedparser.parse ("https: //" + brugernavn + ":" + adgangskode + "@ mail.google.com/gmail/feed/atom")["feed"]["fullcount"])

    # Følgende er en fejlfinding.
    # Rediger ud hash og skift
    # heltalet til en 0 eller 1 til test
    # LED-responsen.

    # mail = 0

    hvis mail> 0:
    LedBorg = åben ('/ dev / ledborg', 'w')
    LedBorg.write ( '020')
    del LedBorg
    print ('Mail!')
    andet:
    LedBorg = åben ('/ dev / ledborg', 'w')
    LedBorg.write ( '000')
    del LedBorg
    print ('Ingen mail!')

    Gem scriptet som gmailcheck.py. Åbn terminalen og skriv følgende kommando:

    python gmailcheck.py

    Hvis du har e-mail, der sidder i din Gmail-indbakke, bliver LED'en grøn, og du får svar som sådan:

    Hvis du har mail i din Gmail-indbakke, vil din LedBorg se ud som sådan:

    Ligesom regntjekningsskriptet har vi inkluderet en debugging-værdi. Hvis du ikke har nogen ny email, kan du enten sende dig en e-mail for at hæve din indbakke tæller til 1, eller du kan redigere kommentaren hash og ændre fejlretningslinjen til "mail = 1" for at teste scriptet. Husk at vende tilbage linjen, når du er færdig med at teste.

    Hop ind i næste afsnit af vejledningen for at indstille dit Gmail-script til at køre på en tidsplan.

    Opsætning af en Cron-job til at køre dit script

    Nu hvor vi har to scripts at lege med, skal vi oprette et cron job for at kunne køre dem hele dagen for at holde LED indikatorstrømmen.

    Det første, vi vil gøre, er at slukke for LED'en, hvis den er på nuværende tidspunkt fra vores tidligere eksperimenter. Ved terminaltype:

    ekko "000"> / dev / ledborg

    Mens du stadig er på kommandolinjen, kan du åbne cron editoren. Hvis du aldrig har oprettet et cron-job før, anbefaler vi stærkt, at du tjekker vores vejledning til at bruge det her. Når det er sagt, går vi igennem med at oprette en grundplan her.

    Ved terminaltype:

    sudo crontab -e

    Dette åbner Raspbian cron tabellen i Nano tekst editor. Brug piletasterne til at rulle ned til bunden. Det er her, vi skal opsætte det tilbagevendende cron job for vores Python scripts.

    Hvis du vil oprette regnescriptet, skal du indtaste følgende linje i cron-tabellen:

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

    Tryk på CTRL + X for at afslutte; vælg ja for at gemme og overskrive det eksisterende cron-bord. Værdien vi indtastede i cron tabellen "* / 5 * * * *" indstiller scriptet til at køre hvert 5. minut, for evigt.

    Hvert 5 minutter er et fint tidsrum til et script, der kontrollerer forventet regn. Du kan endda hævde, at det er lidt for aggressivt, men hvis du forsøger at holde dig oven på din email, er det lidt for lang tid for underretning . Hvis du konfigurerer tidsplanen for Gmail-notifikationsskriptet, skal du indtaste følgende linje i cron-tabellen:

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

    Denne post kører gmailcheck.py script hvert minut for en meget hurtigere opdateringsmeddelelse.


    Det er alt der er til det! Du kan eksperimentere med dine egne Python-scripts ved at løfte if / else-udsagnene ud af vores og prøve dem ud med helt nye variabler. Hvis du kan finde en input kilde til dataene, kan du konvertere den til en variabel i dine Python script-aktiemarkeds gennemsnit, pollen tæller, Twitter nævner, hvis der er en API for det, kan du gøre det til en omgivende LED indikator.

    Endelig vil jeg gerne takke alle de store ressourcer, jeg plejede at arbejde på med dette projekt. Det har været lidt over et årti siden jeg var aktivt ved at skrive programmer, og det tog et par banke at få støv og rust ud. Bidragerne på / r / LearnPython hjalp mig med at mumle i API-udgangen til Weather Underground, hvor jeg studerede, hvordan Michael over på Mitch Tech behandlede Gmail Atom-feedet, der gjorde det nemt at analysere det for LedBorg, og at studere Python-læringsmodulerne på Code Academy var en god måde at hente den grundlæggende syntaks og struktur af et sprog, jeg aldrig havde brugt før.