1Aug
Raspberry Pi gør en fin kompakt platform til at tilslutte et indikatorlys til alle slags projekter-vejrmeldinger, nye e-mails osv. Læs videre, som vi viser dig, hvordan du tilslutter et LED-modul til din Pi og sætter nogle grundlæggendeunderretninger.
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 har behov for , f.eks. En omgivende regnindikator i deres køkken, men bygningen er en sjov øvelse og en stor påmindelse om at bringe din paraply med dig på potentielle stormdage.
Hvad skal jeg bruge?
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 få 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 harshoved i skabet eller afhente en billig brugt en fra eBay eller lignende. Budgettet er den længe i tanden en Raspberry Pi 1 Model A eller Model B snagged off eBay for $ 10-15, der passer perfekt til dette projekt, når man køber en helt ny $ 35 nuværende generation Pi.
Ud over at have en funktionel Pi-enhed med Raspbian installeret på den, skal du bruge følgende ting:
- 1 LedBorg modul( ~ $ 5,00 med 4 $ frakt fra UK til USA, fungerer med alle Raspberry Pi modeller).
- 1 Clear Raspberry Pi Etui 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 i øjeblikket bruger en uigennemskuelig sag, vil din LED-indikator blive gemt inde. Du skal enten skære et hul i dit tilfælde for at slukke for lyset 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, giver det 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 en helt lysdiodeindikator( og en søgemaskineforespørgsel vil vise op masser af mennesker, der har gjort det) producerer Piborg-organisationen et så kompakt og billigt LED-modul, LedBorg, at vi ikke kunne 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-kortet( og dermed er LedBorgs kant fladt med kanterne af Pi-pladen medoverhæ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 svagere end LedBorg det var ikke længere distraherende.
Når du har installeret LedBorg 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 Software
PiBorg leverer en fantastisk softwarepakke til LedBorg, der indeholder både en GUI-controller og 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 revision # 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 kernenversion af din Rasbian-installation.Åbn terminalen og indtast følgende kommando for at tjekke:
uname -r
Når du har revisionsnummeret og kernenummeret, kan du besøge afsnittet Pakker 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 filen raspbian-2013-02-09-rev1.zip.
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 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 perfekte tidspunkt at sikre, at dit modul er funktionelt. Vælg enhver farve, gem til sort, for at prøve den. 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 spille 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 ved 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 nyttig.
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:
echo "000" & gt;/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 kombinerer 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 regnindikator
For denne del af øvelsen 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, der igen læser chancen for regn for dagen, og skift derefter lysdioden fra fra til lyseblå for at indikere det forventede regn.
Først skal vi få en API-adgangskode til Weather Underground. Til personlig brug og små udviklingsprojekter er API'en fri. Besøg registreringssiden for vejledende 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 prognoseside 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 vil bruge det til at redigere prognose-URL'en for API-værktøjet. Basiswebadressen er:
http: //api.wunderground.com/api/ DIN 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 URL, du har trukket fra dit vejrUnderjordiske 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 det:
fra 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 ['prognose'] ['txt_forecast'] ['forecastday'][0] ['pop'])
# Følgende er en fejlfinding.
# Rediger ud hash og skift
# heltalet til en 0-100 for at teste
# LED-responsen.
# pop = 0
print 'Nuværende chance for nedbør er{ }.'. Format( pop)
# Standardindstillingen er at tænde LED'en
# for nogen chance for regn over 20%.Du kan justere
# værdien i "if pop & gt; 20:" som du ønsker.
hvis pop & gt;20:
LedBorg = åben( '/dev/ ledborg', 'w')
LedBorg.write( '002')
del LedBorg
print( 'Rain!')
andet:
LedBorg = åben( '/dev/ ledborg'w ')
LedBorg.write( ' 000 ')
del LedBorg
print( ' Ingen regn! ')
Gem filen som wunderground.py i /home/pi/-mappen.Åbn terminalen og indtast følgende kommando:
python wunderground.py
Hvis du har indtastet din API-nøgle og dine stats- / bykoder korrekt, skal det sparke et svar, der ligner:
Hvis nedbør forudses for dit områdeDin LedBorg-udgang skal se sådan ud:
Nu venter på en regnvejrsdag til korrekt at teste scriptet, vil det 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 60at 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 opsætning 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 simpelt 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 gennemført, kan vi indstille til arbejde, der skaber 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.
import feedparser
# Indtast dit Gmail brugernavn
# og kodeord. Inkluder ikke
# @ gmail.com-delen af
# dit brugernavn.
brugernavn = "brugernavn"
password = "password"
mail = int( feedparser.parse( "https: //" + brugernavn + ":" + adgangskode + "@ mail.google.com /gmail/feed/ atom")"] [" fullcount "])
# Følgende er en fejlfinding.
# Rediger ud hash og skift
# heltalet til en 0 eller 1 for at teste
# LED-responsen.
# mail = 0
hvis mail & gt;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, skal din LedBorgvil se sådan ud:
Ligesom regntjekningsskriptet har vi inkluderet en debugging-værdi. Hvis du ikke har nogen ny e-mail, 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.
Konfiguration af en Cron-job til at køre dit script
Nu da 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-indikatoren aktuelle.
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 terminaltypen:
ekko "000" & gt;/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 teksteditoren. Brug piletasterne til at rulle ned til bunden. Det er her, vi skal opsætte det tilbagevendende cron job til vores Python scripts.
Hvis du vil oprette regnskriptet, 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 fornotifikation. 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 scriptet hvert minut for en meget hurtigereopdateringsmeddelelse.
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-aktiemarkedsværdier, pollen tæller, Twitter nævner, hvis der er en API til 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å i 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. Bidragsydere på /r/ LearnPython hjalp mig med at mucke om 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 learning modules på Code Academy var en stormåde at hente den grundlæggende syntaks og struktur af et sprog, jeg aldrig havde brugt før.