Raspberry Pi er en fin kompakt plattform for å feste en indikatorlampe til for alle slags prosjekter - værvarsling, nye e-poster osv. Les videre når vi viser deg hvordan du kobler en LED-modul til Pi-en din og setter opp noen grunnleggende varsler .
Hvorfor vil jeg gjøre dette?
Fordi det er morsomt. I motsetning til mange av våre opplæringsprogrammer der vi inkluderer en liten uskarphet øverst som viser nøyaktig hvilken fordel du vil få av prosjektet, er uskarpheten ganske kort i dette tilfellet fordi fordelen bare er å ha det gøy.
Raspberry Pi er en perfekt enhet å leke med, eksperimentere med elektronikk og lære litt programmering. Ingen behov en omgivende regnindikator på kjøkkenet deres, for eksempel, men å bygge en er en morsom øvelse og en flott påminnelse om å ta med paraplyen din på potensielt stormdager.
Hva trenger jeg?
For å følge opp veiledningen trenger du noen ting. Først antar vi at du allerede har fulgt vår forrige opplæring: HTG-guiden for å komme i gang med Raspberry Pi (og dermed ha det grunnleggende dekket for å installere Raspbian på vår Raspberry Pi).
Hvis du ønsker å gjøre dette prosjektet på et budsjett, kan vi trygt fortelle deg at den nyeste modellen Raspberry Pi er betydelig overkill for jobben, og vi vil oppfordre deg til å blåse støvet av en gammel Raspberry Pi du har skubbet i skapet eller hent en billig brukt på eBay eller lignende. Budsjettmessig er den lang-i-tannen en Raspberry Pi 1 Model A eller Model B hakket av eBay for $ 10-15 en perfekt passform for dette prosjektet over å kjøpe en helt ny $ 35 dagens generasjons Pi.
I tillegg til å ha en funksjonell Pi-enhet med Raspbian installert på, trenger du følgende ting:
- 1 LedBorg-modul (~ $ 5,00 med $ 4 frakt fra Storbritannia til USA, fungerer med alle Raspberry Pi-modeller).
- 1 Klar Raspberry Pi-sak kompatibel med din spesielle Pi-modell som denne Raspberry Pi 1 Model B-saken .
Merk: Den klare / frostede Pi-saken er helt valgfri, men hvis du for øyeblikket bruker en ugjennomsiktig sak, vil LED-indikatoren din være skjult inne. Du må enten klippe et hull i saken for å slippe lyset ut, eller bruke en GPIO-skjøteledning med et breakout-sett - som denne fra Adafruit Industries — Å binde LedBorg til din Raspberry Pi. Mens du bruker breakout-kabelen, gir det rundt $ 8 til bekostning av prosjektet, men det gir mer potensial for å tilpasse sluttproduktet ved at du lettere kan plassere LED-en i ting eller under noe du vil belyse.
Installere LedBorg
Mens du absolutt kunne bygge deg en helt fra-bunnen av LED-indikator (og en søkemotorforespørsel vil vise mange mennesker som har gjort det), produserer Piborg-organisasjonen en så kompakt og billig LED-modul, LedBorg, at vi ikke kunne ' ikke motstå å bruke det som grunnlag for vårt Raspberry Pi LED-indikatorprosjekt.
Installasjonen av modulen er et øyeblikk da den er designet for å passe direkte over GPIO-pinnene på Pi. Slå først av Pi og åpne saken.
Den viktigste delen av installasjonsprosessen er at du orienterer modulen slik at LedBorg-ikonet er nærmest RCA-modulen på Raspberry Pi-kortet (og dermed kanten av LedBorg er i flukt med kantene på Pi-kortet med det overhengende del av LedBorg hengende over Pi-brettet og ikke utenfor kanten). Se fotografiet over.
Mens du har Pi-kortet åpent, vil det nå være en utmerket tid å dekke de innebygde LED-indikatorene (ved siden av USB-portene), spesielt hvis du bruker en klar sak. Du vil ikke at det skal være forvirrende å lese LedBorg-indikatoren fordi strøm- og nettverksindikatorlampene er så lyse.
Vi dekket vårt med et lag med hvitt elektrisk tape. Dette dempet dem nok til at vi fremdeles kunne referere til dem, men de var så mye svakere enn LedBorg at det ikke lenger var distraherende.
Når du har installert LedBorg og eventuelt har dekket Pi's LED-indikatorer med elektrisk tape, er det på tide å lukke saken igjen. Start Pi opp før du går videre til neste fase av opplæringen.
Installere LedBorg-programvaren
PiBorg gir en flott programvarepakke for LedBorg som inkluderer både en GUI-kontroller og drivere for å få tilgang til LedBorg fra kommandolinjen.
Før vi begynner, må du sørge for at du tar tak i riktig pakke for din versjon av Rasbian og revisjonsnummeret til Raspberry Pi-kortet.
Hvis Raspberry Pi-kortet ditt ikke har monteringshull, er det Revision 1. Hvis Raspberry Pi-kortet ditt har monteringshull (plassert ved USB-portene og mellom strøm- og HDMI-porten), er det Revision 2. Du må også kjenne til kjerneversjonen av din Rasbian-installasjon. Åpne terminalen og skriv inn følgende kommando for å sjekke:
uname -r
Når du har revisjonsnummeret og kjernetallet, kan du besøk pakken-delen her for å hente lenken til pakken din. I vårt tilfelle bruker vi et revisjon 1-kort med 3.6.11-kjernen, slik at vi tar tak i raspbian-2013-02-09-rev1.zip-filen.
For å installere alle godbitene må vi åpne terminalen på Pi. og skriv deretter inn følgende kommandoer for å installere LedBorg-pakken.
Merk: Du må erstatte URL-en i den tredje kommandoen med URL-en til pakken for bord- / kjernekombinasjonen.
mkdir ~ / ledborg-setup
cd ~ / ledborg-oppsett
wget -O setup.zip http://www.piborg.org/downloads/ledborg/raspbian-2013-02-09-rev1.zip
pakke ut setup.zip
chmod + x install.sh
./install.sh
På dette punktet har du nå GUI-innpakningen for LedBorg-driverne og driverne selv installert. På ditt Raspbian-skrivebord ser du et ikon for GUI-innpakningen:
Gå videre og klikk på LedBorg-ikonet for å starte GUI-innpakningen. Du vil bli behandlet til grensesnittet for fargevelgeren slik:
Nå er det den perfekte tiden for å sørge for at modulen din er funksjonell. Velg hvilken som helst farge, lagre for svart for å prøve den. Vi skal teste det ved å velge noen få farger:
Ser bra ut! Det er lyst og den frostede plasten i saken som vi bestilte for prosjektet, gir moderat diffusjon. Hvis du vil spille med LED-modulen mer før du går videre, klikker du på Demomodus:
I demo-modus kan du bla gjennom alle fargene i forskjellige hastigheter, sjekke ut høy / lav utgang, og ellers sette LED-modulen gjennom trinnene.
Det er her i Demo Mode-delen at du også kan gjøre LedBorg til den første av mange indikatorer. Ved å velge CPU i delen Farger, vil LED-lampen skifte fra grønn til gul til rød for å indikere belastning på Raspberry Pi’s ARM-prosessor. Vi foreslår at du endrer hastigheten til sakte mens du er i gang - oppdaterer raskt LED-lampen for raskt og gjør CPU-indikatoren distraherende i stedet for nyttig.
I tillegg til å bruke GUI-grensesnittet for å velge farger, kan du velge farger fra terminalen ved hjelp av RGB-verdier. Åpne terminalen og skriv inn følgende kommando for å slå av LED-lampen:
ekko "000"> / dev / ledborg
Måten LedBorg håndterer RGB-verdier på er at 0 betyr at kanalen er av, 1 betyr at kanalen er halv effekt, og 2 betyr at kanalen er full effekt. For eksempel vil 001 sette den røde kanalen til 0%, den grønne kanalen til 0% og den blå kanalen til 50% effekt.
Endre verdien til 002, og LED-utgangen forblir blå, men blir lysere fordi den blå kanalen nå har 100% utgang. Endre verdien til 202, og rød og blå ved full effekt kombineres for å lage en magenta farge.
Nå som vi vet hvordan man manipulerer LED-en manuelt, la oss se på å bruke skript for å gjøre LED-lampen vår fra et enkelt lys til en faktisk indikator.
Konfigurere LedBorg som en regnindikator
For denne delen av opplæringen vil vi kamme flere ting sammen for å gjøre LedBorg LED-modulen om til en regnindikator basert på værmeldingen for vårt sted. Vi bruker et Python-skript for å kalle et vær-API som igjen vil lese sjansen for regn for dagen, og deretter slå lysdioden fra av til lyseblå for å indikere det forventede regnværet.
Først må vi få en API-tilgangsnøkkel for Weather Underground. For personlig bruk og små utviklingsprosjekter er API gratis. Gå til Weather API-registreringssiden her og registrer deg for en API-nøkkel.
Når du har API-nøkkelen, kan du gå til Weather Underground og søke etter byen du vil overvåke. I vårt tilfelle skal vi overvåke San Fransisco, CA. URL-en for San Fransiscos prognoseside er:
http://www.wunderground.com/US/CA/San_Francisco.html
Den viktige delen for våre formål er den siste delen av URL: /CA/San_Francisco.html. Vi kommer til å bruke det til å redigere URL-en for prognosen for API-verktøyet. Basis URL er:
http://api.wunderground.com/api/ DIN API-NØKKEL / prognose / q / STATE / CITY.json
Du kan generere prognosen for hvilken som helst by i USA ved å skrive inn API-nøkkelen, statskoden med to bokstaver og bynavnet fra URL-en du hentet fra Weather Underground-søkeresultatene.
Når du har API-URL-en med API-nøkkelen og staten / byen satt inn, kan du redigere følgende Python-skript ved å opprette et nytt tekstdokument på din Pi ved hjelp av Leafpad og lime inn følgende kode i den:
fra urllib2 import urlopen
importere json
req = urlopen ('http://api.wunderground.com/api/ DIN API-NØKKEL / prognose / q / STATE / CITY.json ')
parsed_json = json.load (req)
pop = int (parsed_json['forecast']['txt_forecast']['forecastday'][0]['pop'])# Følgende er en feilsøkingsverdi.
# Rediger hash og endre
# heltallet til en 0-100 for å teste
# LED-responsen.# pop = 0
skriv ut 'Nåværende sjanse for nedbør er {}.'. format (pop)
# Standardinnstillingen er å slå på LED-lampen
# for enhver sjanse for regn over 20%. Du kan justere
# verdien i "hvis pop> 20:" som du ønsker.
hvis pop> 20:
LedBorg = åpen ('/ dev / ledborg', 'w')
LedBorg.write ('002')
av LedBorg
trykk ('Regn!')
ellers:
LedBorg = åpen ('/ dev / ledborg', 'w')
LedBorg.write ('000')
av LedBorg
utskrift ('Ingen regn!')
Lagre filen som wunderground.py i / home / pi / katalogen. Åpne terminalen og skriv inn følgende kommando:
python wunderground.py
Hvis du har angitt API-nøkkelen og stat / bykoder på riktig måte, bør den slå tilbake et svar som ser ut som:
Hvis det er spådd nedbør for ditt område, bør LedBorg-produksjonen se slik ut:
Å vente på en regnfull dag for å teste skriptet riktig, ville være kjedelig. Hvis det ikke er noen sjanse for regn i ditt område i dag, og du vil se LED-lampen lyser, kan du redigere wunderground.py-skriptet og erstatte "pop = pop" -gjennomstrømningsverdien i linje 13 med en verdi større enn 20, for eksempel 60 at prognosen vår kom tilbake. Bare husk å endre linjen tilbake til "pop = pop" når du er ferdig.
Det siste trinnet er å sette opp en cron-jobb for automatisk å kjøre skriptet vi nettopp lagret med jevne mellomrom for å holde LED-indikatoren oppdatert. Siden denne oppgaven er nødvendig for både dette skriptet og e-postindikatoren som følger, skal vi dekke oppsett av en cron-jobb etter at vi har vist deg hvordan du konfigurerer det andre skriptet.
Konfigurere LedBorg som en Gmail-indikator
Hvem liker ikke dopaminfiksingen som følger med å se ny e-post i innboksen? I denne delen av opplæringen skal vi vise deg hvordan du bruker LedBorg som en ny Gmail-indikator. Akkurat som forrige gang, skal vi kombinere en ekstern inngang (i dette tilfellet en Atom-feed i stedet for en API) og et enkelt skript for å drive LED-en.
Vi må utvide funksjonaliteten til Python-installasjonen vår litt ved å installere FeedParser , et leseverktøy for Python RSS / Atom-feed. Åpne terminalen og skriv inn følgende kommando:
sudo easy_install feedparser
Når installasjonen er fullført, kan vi begynne å lage Gmail-kontrollskriptet vårt. Igjen, ved hjelp av Leafpad, lim inn følgende tekst i redigereren. Endre brukernavn og passord for å matche brukernavnet og passordet til Gmail-kontoen du vil sjekke.
importer feedparser
# Skriv inn Gmail-brukernavnet ditt
# og passord. Ikke inkluder
# delen @ gmail.com av
# ditt brukernavn.
brukernavn = "brukernavn"
passord = "passord"
mail = int (feedparser.parse ("https: //" + brukernavn + ":" + passord + "@ mail.google.com/gmail/feed/atom")["feed"]["fullcount"])# Følgende er en feilsøkingsverdi.
# Rediger hash og endre
# heltallet til 0 eller 1 for å teste
# LED-responsen.# mail = 0
hvis e-post> 0:
LedBorg = åpen ('/ dev / ledborg', 'w')
LedBorg.write ('020')
av LedBorg
skriv ut ('Mail!')
ellers:
LedBorg = åpen ('/ dev / ledborg', 'w')
LedBorg.write ('000')
av LedBorg
skriv ut ('Ingen post!')
Lagre skriptet som gmailcheck.py. Åpne terminalen og skriv inn følgende kommando:
python gmailcheck.py
Hvis du har e-post i Gmail-innboksen, blir LED-lampen grønn, og du vil få et svar som sådan:
Hvis du har e-post i Gmail-innboksen, vil LedBorg se slik ut:
Akkurat som regnsjekkingsskriptet, har vi tatt med en feilsøkingsverdi. Hvis du ikke har noen ny e-post, kan du enten sende deg en e-post for å øke innboksen til 1, eller du kan redigere kommentarhashen og endre feilsøkingslinjen til "mail = 1" for å teste skriptet. Husk å tilbakestille linjen når du er ferdig med å teste.
Gå inn i neste del av opplæringen for å angi at Gmail-skriptet skal kjøre etter en tidsplan.
Sette opp en Cron-jobb for å kjøre skriptet ditt
Nå som vi har to skript å leke med, må vi sette opp en cron-jobb for å kjøre dem hele dagen for å holde LED-indikatoren oppdatert.
Det første vi vil gjøre er å slå av LED-lampen hvis den for øyeblikket er på fra våre tidligere eksperimenter. Ved terminalen:
ekko “000”> / dev / ledborg
Mens du fremdeles er på kommandolinjen, kan du åpne cron-editoren. Hvis du aldri har satt opp en cron-jobb før, vil vi på det sterkeste foreslå sjekk ut guiden vår for å bruke den her . Når det er sagt, vil vi lede deg gjennom å sette opp en grunnleggende tidsplan her.
Ved terminalen:
sudo crontab –e
Dette åpner Raspbian cron-tabellen i Nano-teksteditoren. Bruk piltastene til å bla ned til bunnen. Det er her vi skal sette opp den gjentatte cron-jobben for våre Python-skript.
Hvis du vil sette opp regnskriptet, skriver du inn følgende linje i crontabellen:
* / 5 * * * * python /home/pi/wunderground.py
Trykk CTRL + X for å avslutte; velg ja for å lagre og overskrive den eksisterende cron-tabellen. Verdien vi skrev inn i crontabellen “* / 5 * * * *” setter skriptet til å kjøre hvert 5. minutt, for alltid.
Hvert 5. minutt er et fint tidsrom for et skript som kontrollerer om det er forventet regn - du kan til og med hevde at det er litt for aggressivt - men hvis du prøver å holde deg oppdatert på e-posten din, er det litt for langt for varsling . Hvis du setter opp tidsplanen for Gmail-varslingsskriptet, skriver du inn følgende linje i crontabellen:
* / 1 * * * * python /home/pi/wunderground.py
Denne oppføringen kjører skriptet gmailcheck.py hvert minutt for et mye raskere varsel om oppdatering.
Det er alt det er! Du kan eksperimentere med dine egne Python-skript ved å løfte if / else-utsagnene ut av våre og prøve dem ut med helt nye variabler. Hvis du finner en inngangskilde for dataene, kan du gjøre den om til en variabel i Python-skriptet - aksjemarkedsgjennomsnitt, antall pollen, nevner Twitter. Hvis det finnes en API for det, kan du gjøre det om til en LED-indikator.
Til slutt vil jeg takke alle de store ressursene jeg brukte til å jobbe med dette prosjektet. Det har gått litt over et tiår siden jeg aktivt skrev programmer, og det tok noen slag for å få støvet og rusten ut. Bidragsyterne kl / r / LearnPython hjalp meg med å skimte rundt i API-utgangen for Weather Underground, og studerte hvordan Michael var på Mitch Tech behandlet Gmail Atom-feeden gjorde det enkelt å analysere det for LedBorg, og studerer Python-læringsmodulene ved Code Academy var en fin måte å plukke opp den grunnleggende syntaksen og strukturen til et språk jeg aldri hadde brukt før.