Zgradite LED indikator z Raspberry Pi (za e-pošto, vreme ali vse)
Raspberry Pi je prijetna kompaktna platforma za pritrditev indikatorske lučke za vse vrste projektov - obvestila o vremenu, nova e-poštna sporočila itd. Preberite o tem, kako vam pokažemo, kako priključiti LED modul na vaš Pi in nastavite nekaj osnovnih obvestil..
Zakaj želim to storiti??
Ker je zabavno. V nasprotju z mnogimi našimi vadnicami, kjer smo vključili majhen zvok na vrhu, ki natančno opisuje, kakšne koristi boste pridobili iz projekta, je v tem primeru blurb precej kratek, saj je korist preprosto zabava.
Raspberry Pi je odlična naprava za igranje z, eksperimentiranje z elektroniko in učenje programiranja. Nihče potrebe indikator dežja v njihovi kuhinji, na primer, toda zgradba je zabavna vaja in odličen opomnik, da s seboj prinesete dežnik ob potencialno nevihtnih dneh.
Kaj potrebujem??
Če želite slediti skupaj z out tutorial boste potrebovali nekaj stvari. Prvič, predpostavljamo, da ste že sledili naši prejšnji vadnici: Vodnik HTG za začetek uporabe Raspberry Pi (in tako osnove, ki so zajete do namestitve Rasian na naš Raspberry Pi).
Če ste pripravljeni opraviti ta projekt v skladu s proračunom, vam lahko z gotovostjo povemo, da je najnovejši model Raspberry Pi pomemben za delo, zato bi vas spodbudili, da odstranite prah iz starega Raspberry Pi v omari ali pobrati poceni rabljeno eBay ali podobno. Proračun pametno dolgo-v-zob Raspberry Pi 1 Model A ali Model B snagged off eBay za $ 10-15 je odlično prilegajo za ta projekt nad nakupom čisto nov $ 35 trenutne generacije Pi \ t.
Poleg nameščene funkcionalne Pi enote z Raspbiano potrebujete naslednje stvari:
- 1 modul LedBorg (~ 5,00 $ s poštnino 4 USD iz Združenega kraljestva v ZDA, deluje z vsemi modeli Raspberry Pi).
- 1 Clear Raspberry Pi Case združljiv z vašim posebnim modelom Pi, kot je ta primer Raspberry Pi 1 Model B.
Opomba: Primer Clear / Frosted Pi je popolnoma neobvezen, če pa trenutno uporabljate neprozoren kovček, bo vaš LED indikator skrit v notranjosti. Boste morali zmanjšati luknjo v vašem primeru, da pustite luči ven ali uporabite GPIO podaljšek kabel z zlom kit-tako kot ta od Adafruit Industries-za povezavo LedBorg na Raspberry Pi. Medtem ko z uporabo kabla za prekinitev doda približno 8 dolarjev na stroške projekta, ponuja več možnosti za prilagajanje končnega izdelka, tako da lahko lažje postavite LED znotraj stvari ali pod nečim, kar želite osvetliti..
Namestitev LedBorg
Medtem ko si lahko zagotovo zgradite popolnoma LED-indikator (z iskanjem po iskalnikih boste našli veliko ljudi, ki so to storili), organizacija Piborg proizvaja tako kompakten in poceni LED modul, LedBorg, ki ga ne bi mogli. upreti se uporabi kot osnova za naš projekt LED indikatorja Raspberry Pi.
Namestitev modula je snap, saj je zasnovana tako, da se prilega neposredno preko GPIO zatiči na Pi. Najprej izklopite Pi in odprite kovček.
Najpomembnejši del namestitvenega procesa je, da usmerite modul tako, da je ikona LedBorg najbližja modulu RCA na plošči Raspberry Pi (in tako je rob LedBorga poravnan z robovi Pi plošče s previsnim del LedBorga, ki visi nad Pi ploščo in ne z roba). Glej fotografijo zgoraj.
Medtem ko imate odprto Pi kartico, bi bil zdaj odličen čas za pokritje vgrajenih LED indikatorjev (poleg USB vrat), še posebej, če uporabljate jasno ohišje. Ne želite, da bi bilo zmedeno prebrati vaš indikator LedBorg, ker so lučke za napajanje in omrežje tako svetle.
Pokrivali smo s plastjo belega električnega traku. To jih je dovolj zatemnilo, da bi jih lahko še vedno omenjali, vendar so bili toliko bolj zatemnjeni kot LedBorg, ni bilo več motečega.
Ko je LedBorg nameščen in po želji pokrival LED indikatorje Pi z električnim trakom, je čas, da zapremo nazaj. Zaženite svoj Pi, preden se premaknete na naslednjo fazo vadnice.
Namestitev programske opreme LedBorg
PiBorg ponuja odličen programski paket za LedBorg, ki vključuje krmilnik GUI in gonilnike za dostop do LedBorg iz ukazne vrstice.
Preden začnemo, se morate prepričati, da ste vzeli pravi paket za vašo različico Rasianija in revizijo # vaše plošče Raspberry Pi..
Če vaša tablica Raspberry Pi nima lukenj za montažo, je Revizija 1. Če ima vaš Raspberry Pi luknje za montažo (ki se nahajajo ob vratih USB in med napajalnim in HDMI vhodom), je to Revizija 2. Prav tako morate vedeti različico jedra vaše namestitve Rasian. Odprite terminal in vnesite naslednji ukaz, da preverite:
uname -r
Ko imate številko revizije in številko jedra, lahko tukaj obiščete razdelek »Paketi«, da zagrabite povezavo za vaš paket. V našem primeru uporabljamo ploščo Revizija 1 s kernelom 3.6.11, tako da bomo zgrabili datoteko raspbian-2013-02-09-rev1.zip.
Da bi namestili vse dobrote, moramo odpreti terminal na Pi. in nato vnesite naslednje ukaze za namestitev paketa LedBorg.
Opomba: URL v tretjem ukazu morate zamenjati z URL-jem paketa za kombinacijo plošče / jedra.
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
Na tej točki imate zdaj grafični vmesnik za gonilnike LedBorg in gonilnike. Na namizju Raspbian boste videli ikono za ovoj GUI:
Nadaljujte in kliknite ikono LedBorg, da zaženete ovoj GUI. Vmesnik barvnega izbirnika vas bo obravnaval tako:
Zdaj je pravi čas, da se prepričate, ali je vaš modul funkcionalen. Izberite katero koli barvo, razen za črno, da jo preizkusite. Preizkusili ga bomo z izbiro nekaj barv:
Izgleda v redu! Svetla je, plastika, ki smo jo naročili za projekt, pa ima zmerno difuzijo. Če se želite pred uporabo premakniti z modulom LED, kliknite Demo način:
V demo načinu lahko krožite skozi vse barve pri različnih hitrostih, preverite visok / nizek izhod in drugače postavite modul LED skozi korake.
Tukaj v razdelku Demo Mode lahko tudi LedBorg pretvorite v prvi od mnogih kazalnikov. Z izbiro CPU v razdelku Colors se bo LED začel spreminjati iz zelene v rumeno do rdeče, da prikaže obremenitev ARM procesorja Raspberry Pi. Predlagamo, da spremenite Hitrost na Počasi, ko ste pri njej - Hitro posodablja LED-lučka prehitro in namesto da bi bila uporabna.
Poleg tega, da uporabite vmesnik GUI za izbiro barv, lahko izberete barve iz terminala z uporabo RGB vrednosti. Odprite terminal in vnesite naslednji ukaz za izklop LED:
echo "000"> / dev / ledborg
Način, kako LedBorg upravlja RGB vrednosti je, da 0 pomeni, da je kanal izklopljen, 1 pomeni, da je kanal pol moči, in 2 pomeni, da je kanal poln. Tako bi na primer 001 nastavil rdeči kanal na 0%, zeleni kanal na 0% in modri kanal pri 50% moči.
Spremenite vrednost na 002 in izhod LED bo ostala modra, vendar postane svetlejša, ker je Blue kanal zdaj na 100% izhodu. Spremenite vrednost na 202, rdeča in modra pa s polno močjo, da ustvarite škrlatno barvo.
Zdaj, ko vemo, kako ročno upravljati LED, poglejmo s pomočjo skriptov, da spremenimo LED iz preproste svetlobe v dejanski indikator.
Konfiguriranje vašega LedBorg kot indikatorja dežja
Za ta del vadnice bomo skupaj razčistili več stvari, da bi naš LED modul LedBorg pretvorili v indikator dežja glede na vremensko napoved naše lokacije. Uporabili bomo Python skript, da pokličemo vremenski API, ki bo nato prebral možnost dežja za ta dan, in nato preklopite LED iz off na svetlo modro, da označite napovedani dež.
Najprej moramo dobiti API dostopni ključ za Weather Underground. Za osebno uporabo in majhne razvojne projekte je API brezplačen. Tukaj obiščite stran za prijavo vremenskih API in se prijavite za ključ API.
Ko imate ključ API, obiščite vremensko podzemno in poiščite mesto, ki ga želite spremljati. V našem primeru bomo spremljali San Fransisco, CA. URL strani za napoved San Fransisco je:
http://www.wunderground.com/US/CA/San_Francisco.html
Pomemben del za naše namene je zadnji del URL-ja: /CA/San_Francisco.html. To bomo uporabili za urejanje URL-ja napovedi za orodje API. Osnovni URL je:
http://api.wunderground.com/api/YOUR API KEY / forecast / q / STATE / CITY.json
Napoved za katero koli mesto v ZDA lahko ustvarite z vnosom ključa API, dvočrkovne kode države in imena mesta iz URL-ja, ki ste ga izvlekli iz rezultatov iskanja v podnebnem vremenu.
Ko ste vnesli URL API z vstavljenim ključem API in stanjem / mestom, lahko uredite naslednji Pythonov skript tako, da ustvarite nov dokument z besedilom na vaši Pi z Leafpadom in vanj vstavite naslednjo kodo:
iz urllib2 uvoz urlopen
uvoz 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'] ['vremenska napoved'] [0] ['pop'])# Sledi vrednost za odpravljanje napak.
# Uredite razpršitev in spremenite
# celo število na 0-100 za preskus
# odziv LED.# pop = 0
print 'Trenutna možnost padavin je .'. format (pop)
# Privzeta nastavitev je vklop LED
# za vsako možnost dežja nad 20%. Prilagodite lahko
# vrednost v "if pop> 20:", kot želite.
če je pop> 20:
LedBorg = odprto ('/ dev / ledborg', 'w')
LedBorg.write ('002')
del LedBorg
print ('dež!')
drugo:
LedBorg = odprto ('/ dev / ledborg', 'w')
LedBorg.write ('000')
del LedBorg
print ("Ni dežja!")
Shranite datoteko kot wunderground.py v imenik / home / pi /. Odprite terminal in vnesite naslednji ukaz:
python wunderground.py
Če ste pravilno vnesli ključ API in kodo države / mesta, bi moral odvrniti odgovor, ki izgleda kot:
Če je padavina predvidena za vaše območje, mora vaš LedBorg izhod videti tak:
Sedaj čakamo na deževni dan, da bi pravilno preizkusili scenarij. Če na vašem območju danes ni možnosti dežja in želite videti, da se LED prižge, uredite skript wunderground.py in vrednost "pop = pop" zamenjajte v vrstico 13 z vrednostjo, večjo od 20, kot je 60 da se je naša napoved vrnila. Ne pozabite spremeniti vrstice nazaj na »pop = pop«, ko končate.
Končni korak je nastavitev cron opravila za samodejni zagon skripta, ki smo ga pravkar shranili v rednem intervalu, da bi LED indikator ostal aktiven. Ker je ta naloga potrebna tako za ta skript kot za kazalnik e-pošte, ki sledi, bomo pokrili nastavitev cron opravila, potem ko smo vam pokazali, kako nastaviti drugi skript.
Konfiguriranje vašega LedBorg kot Gmail indikatorja
Kdo ne mara popravka dopamina, ki prihaja z videnjem nove e-pošte v mapi »Prejeto«? V tem delu vadnice vam bomo pokazali, kako uporabljati LedBorg kot nov kazalnik Gmail. Tako kot zadnjič, bomo združili zunanji vhod (v tem primeru Atomov vir namesto API-ja) in preprost skript za pogon naše LED-enote.
Funkcijo naše namestitve Python moramo nekoliko razširiti z namestitvijo orodja FeedParser, orodja za branje virov RSS / Atom v Pythonu. Odprite terminal in vnesite naslednji ukaz:
sudo easy_install vir podatkov
Ko je namestitev končana, lahko nastavimo, da ustvarimo naš Gmailov kontrolni skript. Ponovno, z uporabo Leafpad, prilepite naslednje besedilo v urejevalnik. Spremenite uporabniško ime in geslo, da se ujemata z uporabniškim imenom in geslom Gmailovega računa, ki ga želite preveriti.
uvoznik
# Vnesite svoje uporabniško ime za Gmail
# in geslo. Ne vključujte
# del @ gmail.com
# vaše uporabniško ime.
username = "username"
password = "password"
mail = int (feedparser.parse ("https: //" + uporabniško ime + ":" + geslo + "@ mail.google.com/gmail/feed/atom")["eded"]["fullcount"])
# Sledi vrednost za odpravljanje napak.
# Uredite razpršitev in spremenite
# celo število na 0 ali 1 za preskus
# odziv LED.# mail = 0
če je pošta> 0:
LedBorg = odprto ('/ dev / ledborg', 'w')
LedBorg.write ('020')
del LedBorg
print ('Mail!')
drugo:
LedBorg = odprto ('/ dev / ledborg', 'w')
LedBorg.write ('000')
del LedBorg
print ("Ni pošte!")
Skript shranite kot gmailcheck.py. Odprite terminal in vnesite naslednji ukaz:
python gmailcheck.py
Če imate e-poštno sporočilo v vaši nabiralniki Gmail, se bo LED dioda obarvala zeleno in dobili boste odgovor kot je:
Če imate v poštnem nabiralniku Gmail pošto, bo LedBorg izgledal tako:
Tako kot skript za preverjanje dežja smo vključili vrednost za odpravljanje napak. Če nimate nobenega novega e-poštnega sporočila, lahko sami pošljete e-poštno sporočilo, da povečate število prejetih sporočil na 1, ali pa uredite razpršeno komentarje in spremenite vrstico za odpravljanje napak na »mail = 1«, da preskusite skript. Ne pozabite povrniti vrstice, ko končate s testiranjem.
Skočite v naslednji razdelek vadnice, da nastavite svoj Gmailov skript na urnik.
Nastavitev Cron opravila za zagon skripta
Zdaj, ko imamo dva skripta, s katerima se bomo lahko igrali, moramo vzpostaviti cronsko opravilo, da jih bomo vodili skozi ves dan, da bo LED indikator aktiven.
Prva stvar, ki jo želimo storiti, je, da izklopite LED, če je trenutno vključen iz naših prejšnjih poskusov. Pri tipu terminala:
echo “000”> / dev / ledborg
Medtem ko ste še vedno v ukazni vrstici, lahko odprete urejevalnik cron. Če še nikoli niste nastavili cron-a, vam priporočamo, da si ogledate naš vodnik za njegovo uporabo tukaj. To vas bo vodilo skozi vzpostavitev osnovnega urnika tukaj.
Pri tipu terminala:
sudo crontab -e
To bo odprlo tabelo Raspbian cron v urejevalniku besedila Nano. S puščičnimi tipkami se pomaknite navzdol do dna. Tukaj bomo nastavili ponavljajoče se cronovo delo za naše Python skripte.
Če želite nastaviti dežni skript, vnesite naslednjo vrstico v kronsko tabelo:
* / 5 * * * * python /home/pi/wunderground.py
Za izhod pritisnite tipki CTRL + X; izberite yes za shranjevanje in prepisovanje obstoječe tabele cron. Vrednost, ki smo jo vnesli v kronsko tabelo “* / 5 * * * *, določa, da se skript teče vsakih 5 minut, za vedno.
Vsakih 5 minut je lep čas za skripto, ki preverja napovedan dež - lahko bi celo trdili, da je preveč agresivna - toda če hočete obdržati na vrhu svojega e-poštnega sporočila, je to predolgo obdobje za obveščanje . Če nastavljate urnik za Gmailovo obvestilo, vnesite naslednjo vrstico v kronsko tabelo:
* / 1 * * * * python /home/pi/wunderground.py
Ta vnos zažene skript gmailcheck.py vsako minuto za hitrejše obvestilo o posodobitvi.
To je vse! Svoje lastne skripte Python lahko eksperimentirate z dvigom stavkov if / else iz naših in jih preizkusite z novimi spremenljivkami. Če lahko najdete vhodni vir za podatke, ga lahko spremenite v spremenljivko v Pythonovem skriptnem povprečju, številke cvetnega prahu, Twitter omenja, če obstaja API za to lahko spremenite v ambientalni LED indikator..
Nazadnje se želim zahvaliti vsem velikim sredstvom, ki sem jih uporabil za delo na tem projektu. To je bilo malo več kot desetletje, odkar sem aktivno pisanje programov in to je nekaj udarcev, da bi dobili prah in rje. Sodelavci na / r / LearnPython so mi pomagali pri izpisu API-jev za Weather Underground, preučevali, kako se je Michael v Mitch Techu ukvarjal z Gmail Atom-om, razčlenjeval je za LedBorg in preučevanje Pythonovih učnih modulov na Code Academy odličen način, da izberete osnovno sintakso in strukturo jezika, ki ga še nisem uporabljal.