Bygg en LED-indikator med en Raspberry Pi (for e-post, vær eller noe)

Innholdsfortegnelse:

Bygg en LED-indikator med en Raspberry Pi (for e-post, vær eller noe)
Bygg en LED-indikator med en Raspberry Pi (for e-post, vær eller noe)

Video: Bygg en LED-indikator med en Raspberry Pi (for e-post, vær eller noe)

Video: Bygg en LED-indikator med en Raspberry Pi (for e-post, vær eller noe)
Video: 30 Ultimate Outlook Tips and Tricks for 2020 - YouTube 2024, Mars
Anonim
Raspberry Pi gjør en fin kompakt plattform for å legge til en indikatorlampe for alle slags prosjekter-værvarsel, nye e-postmeldinger, etc. Les videre slik vi viser deg hvordan du kobler en LED-modul til Pi og setter opp noen grunnleggende varsler.
Raspberry Pi gjør en fin kompakt plattform for å legge til en indikatorlampe for alle slags prosjekter-værvarsel, nye e-postmeldinger, etc. Les videre slik vi viser deg hvordan du kobler en LED-modul til Pi 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 hvor vi inkluderer en liten blurb på toppen, og som beskriver nøyaktig hvilken fordel du vil få fra prosjektet, er blurb ganske kort i dette tilfellet fordi fordelen bare har det gøy.

Raspberry Pi er en perfekt enhet å leke med, eksperimentere med elektronikk, og lære litt programmering. Ingen behov En omgivende regnindikator i kjøkkenet, for eksempel, men å bygge en er en morsom øvelse og en stor påminnelse om å ta med paraplyen med deg på potensielle stormdager.

Hva trenger jeg?

Å følge med ut opplæringen trenger du noen få ting. For det første antar vi at du allerede har fulgt vår tidligere opplæring: HTG-veiledningen for å komme i gang med Raspberry Pi (og dermed ha det grunnleggende dekket for å installere Rasbian 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 skjøvet i skapet eller hente en billig brukt en av eBay eller lignende. Budsjett klokt i lang tid, en Raspberry Pi 1 Modell A eller Modell B snagged av eBay for $ 10-15 er en perfekt passform for dette prosjektet, og du kjøper en helt ny $ 35 nåværende generasjon Pi.

I tillegg til å ha en funksjonell Pi-enhet med Raspbian installert på den, 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 Modell B-saken.

Merk: Det klare / frostede Pi-tilfellet er helt valgfritt, men hvis du bruker et ugjennomsiktig tilfelle, vil LED-indikatoren din bli skjult inne. Du må enten kutte et hull i ditt tilfelle for å slukke eller bruke en GPIO-forlengelseskabel med et breakout-sett som Adafruit Industries-for å tette LedBorg til Raspberry Pi. Mens du bruker breakout-kabelen, legger du til rundt $ 8 på bekostning av prosjektet, det gir mer potensial for å tilpasse sluttproduktet, slik at du lettere kan plassere lysdioden inne i ting eller under noe du vil belyse.

Installere LedBorg

Image
Image

Mens du sikkert kunne bygge deg en helt LED-indikator helt fra scratch (og en søkemotorforespørsel vil vise opp mange folk som har gjort det) produserer Piborg-organisasjonen en så kompakt og rimelig LED-modul, LedBorg, at vi ikke kunne ' Ikke motstå å bruke det som grunnlag for vår Raspberry Pi LED indikatorprosjekt.

Installasjon av modulen er et snap som det er designet for å passe direkte over GPIO-pinnene på Pi. Først, slå 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-bordet (og dermed er LedBorgs kant flatt med kantene på Pi-kortet med overhengende del av LedBorg hengende over Pi-platen og ikke av kanten). Se bildet ovenfor.

Mens du har Pi-kortet åpent, vil det nå være en utmerket tid å dekke LED-indikatorene (ved siden av USB-porter), spesielt hvis du bruker et klart tilfelle. 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 dimmet dem nok slik at vi fortsatt kunne referere dem, men de var så mye dimmere enn LedBorg det var ikke lenger distraherende.

Når du har installert LedBorg og eventuelt dekket Pi-LED-indikatorene med elektrisk tape, er det på tide å lukke saken på nytt. Oppstart din Pi 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.
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 kommer i gang må du sørge for at du tar den riktige pakken for din versjon av Rasbian og revisjonen # av Raspberry Pi-brettet.

Hvis din Raspberry Pi-brett har ingen monteringshull, er det Revisjon 1. Hvis din Raspberry Pi har monteringshull (plassert ved USB-porter og mellom strøm og HDMI-port), så er det Revisjon 2. Du må også kjenne kjerneversjonen av din Rasbian-installasjon. Åpne terminalen og skriv inn følgende kommando for å sjekke:

uname -r

Når du har revisjonsnummeret og kjerne nummeret, kan du besøke pakken delen her for å hente linken for pakken din. I vårt tilfelle bruker vi et Revision 1-kort med 3.6.11-kjernen, så vi kunne ta tak i filen raspbian-2013-02-09-rev1.zip.

For å installere alle godbiter må vi åpne opp terminalen på Pi. og skriv deretter inn følgende kommandoer for å installere LedBorg-pakken.

Merk: Du må erstatte nettadressen i den tredje kommandoen med nettadressen til pakken for kombinasjonen med brettet / kjernen.

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

På dette punktet har du nå GUI wrapper for LedBorg drivere og driverne selv installert. På Raspbian-skrivebordet ser du et ikon for GUI-omslaget:

Gå videre og klikk på LedBorg-ikonet for å starte GUI-omslaget. Du vil bli behandlet på fargepluksjonsgrensesnittet slik som:
Gå videre og klikk på LedBorg-ikonet for å starte GUI-omslaget. Du vil bli behandlet på fargepluksjonsgrensesnittet slik som:
Nå er det den perfekte tiden for å sikre 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:
Nå er det den perfekte tiden for å sikre 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 frostet plast av saken vi bestilte for prosjektet, tilbyr moderat diffusjon. Hvis du vil spille med LED-modulen mer før du går videre, klikker du Demo Mode:
Ser bra ut! Det er lyst og frostet plast av saken vi bestilte for prosjektet, tilbyr moderat diffusjon. Hvis du vil spille med LED-modulen mer før du går videre, klikker du Demo Mode:
I demo-modus kan du sykle gjennom alle fargene ved forskjellige hastigheter, sjekke ut høy / lav utgang, og ellers sette LED-modulen gjennom trinnene.
I demo-modus kan du sykle gjennom alle fargene ved 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 slå LedBorg til den første av mange indikatorer. Ved å velge CPU i avsnittet Farger begynner lysdioden å skifte fra grønt til gul til rødt for å indikere belastning på Raspberry Pi's ARM-prosessor. Vi foreslår at du endrer hastigheten til sakte mens du er på det. Hurtig oppdaterer LED-lampen for fort og gjør CPU-indikatoren forstyrrende 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 lysdioden:

echo '000' > /dev/ledborg

Måten LedBorg håndterer RGB-verdier er at 0 betyr at kanalen er av, 1 betyr at kanalen er halv strøm, og 2 betyr at kanalen er full strøm. Så for eksempel vil 001 sette den røde kanalen på 0%, den grønne kanalen ved 0% og den blå kanalen ved 50% strøm.

Endre verdien til 002 og LED-utgangen forblir blå, men blir lysere fordi den blå kanalen nå er 100% utgang. Endre verdien til 202 og Rød og Blå ved full kraft kombinere for å lage en magenta farge.

Nå som vi vet hvordan man skal manipulere LED'en manuelt, la oss se på bruk av skript for å skru LED-lyset fra et enkelt lys til en faktisk indikator.

Konfigurere LedBorg som regnindikator

For denne delen av opplæringen kombinerer vi flere ting sammen for å slå vår LedBorg LED-modul inn i en regnindikator basert på værmeldingen for vår plassering. Vi bruker et Python-skript for å ringe et vær-API som igjen leser sjansen for regn for dagen, og deretter skifter lysdioden fra av til lyseblå for å indikere det regnede regnet.
For denne delen av opplæringen kombinerer vi flere ting sammen for å slå vår LedBorg LED-modul inn i en regnindikator basert på værmeldingen for vår plassering. Vi bruker et Python-skript for å ringe et vær-API som igjen leser sjansen for regn for dagen, og deretter skifter lysdioden fra av til lyseblå for å indikere det regnede regnet.

Først må vi få en API-tilgangsnøkkel for Weather Underground. For personlig bruk og små utviklingsprosjekter er API gratis. Gå til registreringssiden for Weather API, og registrer deg for en API-nøkkel.

Når du har din API-nøkkel, besøk Weather Underground og søk etter byen du vil overvåke. I vårt tilfelle skal vi overvåke San Fransisco, CA. Nettadressen for San Fransiscos prognose side er:

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

Den viktigste delen for vårt formål er den siste delen av nettadressen: /CA/San_Francisco.html. Vi skal bruke det for å redigere prognosen URL for API-verktøyet. Basisadressen er:

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

Du kan generere prognosen for en hvilken som helst amerikansk by ved å skrive inn din API-nøkkel, tobrikkens tilstandskode og bynavnet fra nettadressen du dro fra søkeresultatene i Weather Underground.

Når du har API-nettadressen med API-nøkkelen og stat / by innført, kan du deretter redigere følgende Python-skript ved å opprette et nytt tekstdokument på Pi ved hjelp av Leafpad og lime inn følgende kode i den:

from urllib2 import urlopen import json

req = urlopen('https://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 feilsøkingsverdi. # Rediger ut hash og endre # hele tallet til en 0-100 for å teste # LED-responsen.

# pop = 0

print 'Current chance of precipitation is {}.'.format(pop)

# The default setting is to turn on the LED # for any chance of rain above 20%. You can adjust # the value in 'if pop > 20:' as you wish.

if pop > 20: LedBorg = open('/dev/ledborg', 'w') LedBorg.write('002') del LedBorg print ('Rain!') else: LedBorg = open('/dev/ledborg', 'w') LedBorg.write('000') del LedBorg print ('No rain!')

Lagre filen som wunderground.py i / home / pi / directory. Åpne terminalen og skriv inn følgende kommando:

python wunderground.py

Hvis du har angitt API-nøkkelen og statens / bykodene dine på riktig måte, bør det spole tilbake et svar som ser ut som:

Hvis nedbør forutsettes for ditt område, skal LedBorg-utgangen se slik ut:
Hvis nedbør forutsettes for ditt område, skal LedBorg-utgangen se slik ut:
Nå venter på en regnfull dag for å teste skriptet riktig, ville det være kjedelig. Hvis det ikke er noen mulighet for regn i ditt område i dag, og du vil se lysdioden lyser, rediger wunderground.py-skriptet og erstatt "pop = pop" passord-verdien i linje 13 med en verdi større enn 20 som 60 at vår prognose returnerte. Bare husk å endre linjen tilbake til "pop = pop" når du er ferdig.
Nå venter på en regnfull dag for å teste skriptet riktig, ville det være kjedelig. Hvis det ikke er noen mulighet for regn i ditt område i dag, og du vil se lysdioden lyser, rediger wunderground.py-skriptet og erstatt "pop = pop" passord-verdien i linje 13 med en verdi større enn 20 som 60 at vår prognose returnerte. 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 nåværende. 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 dopamin-løsningen som kommer med å se ny e-post i innboksen deres? I denne delen av opplæringen skal vi vise deg hvordan du bruker LedBorg som en ny Gmail-indikator. På samme måte 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 å kjøre LED-en.
Hvem liker ikke dopamin-løsningen som kommer med å se ny e-post i innboksen deres? I denne delen av opplæringen skal vi vise deg hvordan du bruker LedBorg som en ny Gmail-indikator. På samme måte 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 å kjøre LED-en.

Vi må utvide funksjonaliteten til Python-installasjonen litt ved å installere FeedParser, et Python RSS / Atom feed lesingsverktøy. Åpne terminalen og skriv inn følgende kommando:

sudo easy_install feedparser

Når installasjonen er fullført, kan vi sette inn på jobb som lager vårt Gmail-kontrollskript. Igjen, bruk Leafpad, lim inn følgende tekst i redigeringsprogrammet. Endre brukernavn og passord for å matche brukernavnet og passordet til Gmail-kontoen du vil sjekke.

import feedparser

# Enter your Gmail username # and password. Don't include # the @gmail.com portion of # your username.

username = 'username' password = 'password'

mail = int(feedparser.parse('https://' + username + ':' + password +'@mail.google.com/gmail/feed/atom')['feed']['fullcount'])

# Følgende er en feilsøkingsverdi. # Rediger ut hash og endre # hele tallet til en 0 eller 1 for å teste # LED-responsen.

# mail = 0

if mail > 0: LedBorg = open('/dev/ledborg', 'w') LedBorg.write('020') del LedBorg print ('Mail!') else: LedBorg = open('/dev/ledborg', 'w') LedBorg.write('000') del LedBorg print ('No mail!')

Lagre skriptet som gmailcheck.py. Åpne terminalen og skriv inn følgende kommando:

python gmailcheck.py

Hvis du har e-post som sitter i Gmail-innboksen din, blir lysdioden grønn, og du får svar slik:

Hvis du har e-post i Gmail-innboksen din, vil LedBorg se slik ut:
Hvis du har e-post i Gmail-innboksen din, vil LedBorg se slik ut:
På samme måte som regnesjekkingsskriptet har vi inkludert en feilsøkingsverdi. Hvis du ikke har noen ny e-post, kan du enten sende deg en e-post for å heve innboksen din til 1, eller du kan redigere kommentaren hash og endre feilsøkingslinjen til "mail = 1" for å teste skriptet. Husk å returnere linjen når du er ferdig med testing.
På samme måte som regnesjekkingsskriptet har vi inkludert en feilsøkingsverdi. Hvis du ikke har noen ny e-post, kan du enten sende deg en e-post for å heve innboksen din til 1, eller du kan redigere kommentaren hash og endre feilsøkingslinjen til "mail = 1" for å teste skriptet. Husk å returnere linjen når du er ferdig med testing.

Hopp inn i neste del av opplæringen for å angi at Gmail-skriptet skal kjøre på en tidsplan.

Sette opp en Cron-jobb for å kjøre ditt script

Nå som vi har to skript å leke med, må vi sette opp en cron-jobb for å kunne kjøre dem hele dagen for å holde LED-indikatoren aktiv.
Nå som vi har to skript å leke med, må vi sette opp en cron-jobb for å kunne kjøre dem hele dagen for å holde LED-indikatoren aktiv.

Det første vi ønsker å gjøre er å slå av lysdioden hvis den er på vei fra våre tidligere eksperimenter. Ved terminaltype:

echo “000” > /dev/ledborg

Mens du fortsatt er på kommandolinjen, kan du åpne cron-editoren. Hvis du aldri har satt opp en cron jobb før, anbefaler vi sterkt at du sjekker ut vår guide for å bruke den her. Når det er sagt, vil vi gå deg gjennom å sette opp en grunnleggende tidsplan her.

Ved terminaltype:

sudo crontab –e

Dette åpner Raspbian cron-tabellen i Nano-tekstredigeringsprogrammet. 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, skriv inn følgende linje i cronbordet:

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

Trykk CTRL + X for å avslutte; velg ja for å lagre og overskrive eksisterende cron-tabell. Verdien vi skrev inn i cron-tabellen "* / 5 * * * *" angir at skriptet skal løpe hvert 5. minutt, for alltid.

Hvert 5 minutter er et fint tidsrom for et skript som kontrollerer forventet regn - du kan til og med hevde at det er litt for aggressivt - men hvis du prøver å holde deg på e-posten din, er det litt for lang tid for melding. Hvis du konfigurerer tidsplanen for Gmail-varslingsskriptet, skriver du inn følgende linje i cron-tabellen:

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

Denne oppføringen kjører gmailcheck.py-skriptet hvert minutt for et mye raskere oppdateringsvarsel.

Det er alt der er til det! Du kan eksperimentere med dine egne Python-skript ved å løfte om / else-setningene ut av vår, og prøve dem ut med helt nye variabler. Hvis du kan finne en inngangskilde for dataene, kan du slå den inn i en variabel i Python-aksjemarkedet, pollen tellinger, Twitter nevner, hvis det er en API for det, kan du slå den inn i en omgivende LED-indikator.

Til slutt vil jeg takke alle de gode ressursene jeg pleide å jobbe med på dette prosjektet. Det har vært litt over et tiår siden jeg var aktivt med å skrive programmer og det tok noen knapper for å få støv og rust ut. Bidragerne på / r / LearnPython hjalp meg med å lure meg i API-utgangen for Weather Underground, og studerte hvordan Michael over på Mitch Tech behandlet Gmail Atom-feedet, som gjorde det enklere å analysere det for LedBorg, og å studere Python-læringsmodulene ved Code Academy var en fin måte å hente grunnleggende syntaks og struktur på et språk jeg aldri hadde brukt før.

Anbefalt: