Zgradite LED indikator z Raspberry Pi (za e-pošto, vreme ali kar koli drugega)



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. Berite naprej, ko vam pokažemo, kako priključiti LED modul na vaš Pi in nastaviti nekaj osnovnih obvestil .

Zakaj želim to storiti?

Ker je zabavno. Za razliko od mnogih naših vadnic, kjer na vrhu vključimo majhen opis, ki natančno opisuje, kakšne koristi boste imeli od projekta, je v tem primeru opis precej kratek, ker je korist preprosto zabava.





Raspberry Pi je popolna naprava za igranje, eksperimentiranje z elektroniko in učenje programiranja. Nihče potrebe indikator zunanjega dežja v njihovi kuhinji, na primer, toda gradnja enega je zabavna vaja in odličen opomnik, da ob morebitnih nevihtnih dneh prinesete s seboj svoj dežnik.

Kaj potrebujem?

Če želite slediti naši vadnici, boste potrebovali nekaj stvari. Najprej predvidevamo, da ste že sledili naši prejšnji vadnici: Vodnik HTG za začetek uporabe Raspberry Pi (in tako imamo pokrite osnove za namestitev Rasbiana na naš Raspberry Pi).



Če želite ta projekt izvesti z nizkimi stroški, vam lahko samozavestno povemo, da je najnovejši model Raspberry Pi precejšen presežek za to delo, zato bi vas spodbujali, da odpihnete prah s starega Raspberry Pi, ki ste ga nagnali. v omari ali poberi poceni rabljeno na eBayu ali podobno. Proračunsko dolgo v zobu Raspberry Pi 1 Model A ali Model B, ki so ga kupili na eBayu za 10-15 $, je kot nalašč za ta projekt v primerjavi z nakupom povsem novega Pija trenutne generacije za 35 $.

Oglas

Poleg funkcionalne enote Pi z nameščenim Raspbianom boste potrebovali naslednje stvari:

Opomba: Prozorno/matirano ohišje Pi je povsem neobvezno, če pa trenutno uporabljate neprozorno ohišje, bo vaš LED indikator skrit v notranjosti. V ohišju boste morali izrezati luknjo, da izpustite svetlobo, ali pa uporabite podaljšek GPIO s kompletom za prekinitev, npr. ta iz Adafruit Industries — da povežete LedBorg z vašim Raspberry Pi. Medtem ko uporaba prekinitvenega kabla doda približno 8 $ k strošku projekta, ponuja več možnosti za prilagajanje končnega izdelka, saj lahko LED diodo lažje postavite v stvari ali pod nekaj, kar želite osvetliti.

Namestitev LedBorg

Čeprav bi si zagotovo lahko izdelali LED indikator popolnoma iz nič (in poizvedba iskalnika bo odkrila veliko ljudi, ki so to storili), organizacija Piborg proizvaja tako kompakten in poceni LED modul, LedBorg, da ga ne bi mogli. Ne upirajte se, da bi ga uporabili kot osnovo za naš projekt LED indikatorjev Raspberry Pi.

Namestitev modula je hitra, saj je zasnovan tako, da se prilega neposredno preko zatičev GPIO na Pi. Najprej izklopite svoj Pi in odprite ohišje.

Najpomembnejši del postopka namestitve je, da modul usmerite tako, da je ikona LedBorg najbližje modulu RCA na plošči Raspberry Pi (in tako je rob LedBorg poravnan z robovi plošče Pi s previsom del LedBorg, ki visi nad ploščo Pi in ne z roba). Oglejte si zgornjo fotografijo.

Medtem ko imate odprto ploščo Pi, bi bil zdaj odličen čas, da pokrijete vgrajene LED indikatorje (poleg vrat USB), še posebej, če uporabljate prozorno ohišje. Ne želite, da bi bilo branje indikatorja LedBorg zmedeno, ker so indikatorske lučke napajanja in omrežja tako svetle.

Oglas

Svojega smo prekrili s plastjo belega električnega traku. To jih je dovolj zatemnilo, da smo jih lahko še vedno referencirali, vendar so bili toliko bolj zatemnjeni kot LedBorg, da niso več motili.

Ko namestite LedBorg in opcijsko pokrijete LED indikatorje Pi z električnim trakom, je čas, da zaprete ohišje nazaj. Preden nadaljujete na naslednjo fazo vadnice, zaženite svoj Pi.

Namestitev programske opreme LedBorg

PiBorg ponuja odličen programski paket za LedBorg, ki vključuje tako krmilnik GUI kot tudi gonilnike za dostop do LedBorg iz ukazne vrstice.

Preden začnemo, se morate prepričati, da vzamete pravi paket za svojo različico Rasbian in številko revizije vaše plošče Raspberry Pi.

Če vaša plošča Raspberry Pi nima montažnih lukenj, je to revizija 1. Če ima vaš Raspberry Pi luknje za pritrditev (ki se nahajajo ob vratih USB in med vrati za napajanje in HDMI), potem je to revizija 2. Prav tako morate poznati različico jedra vaše Rasbian namestitve. Odprite terminal in vnesite naslednji ukaz, da preverite:

uname -r

Ko imate številko revizije in številko jedra, lahko obiščite razdelek Paketi tukaj da prevzamete povezavo za svoj paket. V našem primeru uporabljamo ploščo Revizije 1 z jedrom 3.6.11, tako da bi zgrabili datoteko raspbian-2013-02-09-rev1.zip.

Oglas

Za namestitev vseh dobrot 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
razpakirajte setup.zip
chmod +x install.sh
./install.sh

Na tej točki imate zdaj nameščen ovoj GUI za gonilnike LedBorg in same gonilnike. Na namizju Raspbian boste videli ikono za ovoj GUI:

Pojdite naprej in kliknite ikono LedBorg, da zaženete ovoj GUI. Z vmesnikom izbirnika barv boste obravnavani takole:

Zdaj je pravi čas, da se prepričate, da vaš modul deluje. Izberite katero koli barvo, razen črne, da jo preizkusite. Preizkusili ga bomo tako, da bomo izbrali nekaj barv:

Izgleda v redu! Je svetel in mat plastika ohišja, ki smo ga naročili za projekt, ponuja zmerno razpršitev. Če se želite več poigrati z LED modulom, preden nadaljujete, kliknite Demo Mode:

Oglas

V demo načinu lahko krožite po vseh barvah z različnimi hitrostmi, preverite visoko/nizko izhodno moč in drugače premikate LED modul.

Tukaj v razdelku Demo Mode lahko svoj LedBorg spremenite tudi v prvi od mnogih indikatorjev. Z izbiro CPU v razdelku Barve se bo LED začela spreminjati iz zelene v rumeno v rdečo, kar označuje obremenitev procesorja ARM Raspberry Pi. Predlagamo, da spremenite hitrost v Počasno, medtem ko ste pri tem – Hitro posodobi LED prehitro in povzroči, da indikator CPE odvrača pozornost namesto uporabnega.

Poleg uporabe vmesnika GUI za izbiro barv lahko izberete barve s terminala z uporabo vrednosti RGB. Odprite terminal in vnesite naslednji ukaz, da izklopite LED:

echo '000' > /dev/ledborg

Način, kako LedBorg obravnava vrednosti RGB, je, da 0 pomeni, da je kanal izklopljen, 1 pomeni, da ima kanal polovično moč, 2 pa pomeni, da je kanal polne moči. Tako bi na primer 001 nastavil rdeči kanal na 0%, zeleni kanal na 0% in modri kanal na 50% moči.

Spremenite vrednost na 002 in izhod LED ostane moder, vendar postane svetlejši, ker je modri kanal zdaj na 100 % izhodu. Spremenite vrednost na 202 in rdeča in modra se pri polni moči združita v magenta barvo.

Zdaj, ko vemo, kako ročno manipulirati z LED, si oglejmo uporabo skriptov za preoblikovanje naše LED iz preproste luči v dejanski indikator.

Konfiguriranje vašega LedBorg kot indikatorja dežja

V tem delu vadnice bomo združili več stvari, da bomo naš LED modul LedBorg spremenili v indikator dežja na podlagi vremenske napovedi za našo lokacijo. Uporabili bomo skript Python za klic vremenskega API-ja, ki bo nato prebral možnost dežja za ta dan, nato pa preklopil LED iz ugasnjene na svetlo modro, da bo prikazal napovedani dež.

Oglas

Najprej moramo pridobiti ključ za dostop do API-ja za Weather Underground. Za osebno uporabo in manjše razvojne projekte je API brezplačen. Obiščite stran za prijavo Weather API tukaj in se prijavite za ključ API.

Ko imate ključ API, obiščite Weather Underground in poiščite mesto, ki ga želite spremljati. V našem primeru bomo spremljali San Francisco, CA. URL strani za napovedi v San Franciscu 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/VAŠ KLJUČ API/forecast/q/STATE/CITY.json

Napoved za katero koli mesto v ZDA lahko ustvarite tako, da vnesete svoj ključ API, dvočrkovno kodo stanja in ime mesta iz URL-ja, ki ste ga potegnili iz rezultatov iskanja Weather Underground.

Ko imate URL API z vstavljenim ključem API in državo/mesto, lahko nato uredite naslednji skript Python tako, da ustvarite nov besedilni dokument na vašem Pi z Leafpadom in vanj prilepite naslednjo kodo:

from 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'])

# Naslednja je vrednost za odpravljanje napak.
# Uredite hash in ga spremenite
# celo število na 0-100 za preizkus
# odziv LED.

# 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!')

Oglas

Shranite datoteko kot wunderground.py v imenik /home/pi/. Odprite terminal in vnesite naslednji ukaz:

python wunderground.py

Če ste pravilno vnesli svoj ključ API in kode države/mesta, bi moral vrniti odgovor, ki je videti tako:

Če so za vaše območje predvidene padavine, naj bi vaš LedBorg izhod izgledal takole:

Zdaj bi bilo čakanje na deževen dan za pravilno testiranje scenarija dolgočasno. Če na vašem območju danes ni možnosti dežja in želite videti, da LED sveti, uredite skript wunderground.py in zamenjajte vrednost pop = pop v vrstici 13 z vrednostjo, večjo od 20, kot je 60, ki jo imamo napoved vrnjena. Ko končate, ne pozabite spremeniti vrstice nazaj v pop = pop.

Zadnji korak je nastavitev opravila cron za samodejno izvajanje skripta, ki smo ga pravkar shranili, v rednih intervalih, da ohranimo LED indikator aktualen. Ker je ta naloga potrebna tako za ta skript kot za indikator e-pošte, ki sledi, bomo obravnavali nastavitev opravila cron, potem ko vam pokažemo, kako nastavite drugi skript.

Konfiguriranje vašega LedBorg kot indikatorja Gmaila

Komu ni všeč popravek dopamina, ki ga prinaša nova e-pošta v mapi »Prejeto«? V tem delu vadnice vam bomo pokazali, kako uporabiti LedBorg kot nov indikator Gmaila. Tako kot prejšnjič bomo združili zunanji vhod (v tem primeru vir Atom namesto API-ja) in preprost skript za pogon naše LED.

Oglas

Z namestitvijo moramo nekoliko razširiti funkcionalnost naše namestitve Pythona FeedParser , orodje za branje virov RSS/Atom Python. Odprite terminal in vnesite naslednji ukaz:

sudo easy_install feedparser

Ko je namestitev končana, lahko začnemo z ustvarjanjem našega skripta za preverjanje Gmaila. Ponovno z Leafpadom prilepite naslednje besedilo v urejevalnik. Spremenite uporabniško ime in geslo, da se bosta ujemala z uporabniškim imenom in geslom Gmail računa, ki ga želite preveriti.

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'])

# Naslednja je vrednost za odpravljanje napak.
# Uredite hash in ga spremenite
# celo število na 0 ali 1 za preizkus
# odziv LED.

# pošta = 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!')

Skript shranite kot gmailcheck.py. Odprite terminal in vnesite naslednji ukaz:

python gmailcheck.py

Če imate e-pošto v mapi Prejeto v Gmailu, bo lučka LED zasvetila zeleno in prejeli boste takšen odgovor:

Če imate pošto v Gmailovem nabiralniku, bo vaš LedBorg izgledal tako:

Tako kot skript za preverjanje dežja smo vključili vrednost za odpravljanje napak. Če nimate novega e-poštnega sporočila, si lahko pošljete e-pošto, da povečate število mape »Prejeto« na 1, ali pa uredite razpršitev komentarja in spremenite vrstico za odpravljanje napak v mail = 1, da preizkusite skript. Ko končate s testiranjem, ne pozabite vrniti vrstice.

Oglas

Skočite v naslednji razdelek vadnice, da nastavite svoj Gmailov skript, da se izvaja po urniku.

Nastavitev Cronovega opravila za zagon vašega skripta

Zdaj, ko imamo dva skripta za igranje, moramo nastaviti opravilo cron, da bi jih izvajali čez dan, da bo LED indikator aktualen.

Prva stvar, ki jo želimo narediti, je izklopiti LED, če je trenutno vklopljena iz naših prejšnjih poskusov. Na vrsti terminala:

echo 000 > /dev/ledborg

Medtem ko ste še vedno v ukazni vrstici, lahko odprete urejevalnik cron. Če še nikoli niste vzpostavili delovnega mesta cron, vam toplo priporočamo tukaj si oglejte naš vodnik za uporabo . Kljub temu vas bomo tukaj vodili skozi nastavitev osnovnega urnika.

Na vrsti terminala:

sudo crontab -e

To bo odprlo tabelo Raspbian cron v urejevalniku besedil Nano. S puščičnimi tipkami se pomaknite navzdol do samega dna. Tu bomo nastavili ponavljajoče se opravilo cron za naše skripte Python.

Če želite nastaviti skript za rain, vnesite naslednjo vrstico v cron tabelo:

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

Oglas

Pritisnite CTRL+X za izhod; izberite da, da shranite in prepišete obstoječo cron tabelo. Vrednost, ki smo jo vnesli v cron tabelo */5 * * * * nastavi, da se skript izvaja vsakih 5 minut, za vedno.

Vsakih 5 minut je kratek čas za skript, ki preveri napovedani dež – lahko bi celo trdili, da je nekoliko preveč agresiven – vendar če poskušate obdržati e-pošto na vrhu, je to nekoliko predolgo obdobje za obvestila. . Če nastavljate urnik za skript za obveščanje Gmaila, vnesite naslednjo vrstico v cron tabelo:

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

Ta vnos vsako minuto zažene skript gmailcheck.py za veliko hitrejše obvestilo o posodobitvi.


To je vse! Lahko eksperimentirate s svojimi lastnimi skripti Python tako, da dvignete izjave if/else iz naših in jih preizkusite s popolnoma novimi spremenljivkami. Če lahko najdete vhodni vir za podatke, jih lahko spremenite v spremenljivko v svojem skriptu Python – povprečja borze, število cvetnega prahu, omemba Twitterja, če za to obstaja API, ga lahko spremenite v ambientalni LED indikator.

Na koncu bi se rad zahvalil za vse velike vire, ki sem jih uporabil pri delu na tem projektu. Minilo je nekaj več kot desetletje, odkar sem aktivno pisal programe in potrebovalo je nekaj udarcev, da sem odstranil prah in rjo. Sodelujoči na /r/LearnPython mi je pomagal pri preučevanju izhoda API-ja za Weather Underground, ko sem preučeval, kako je Michael pri Mitch Tech obravnaval vir Gmail Atom olajšal razčlenjevanje za LedBorg in študira učne module Pythona na Code Academy je bil odličen način, da poberem osnovno sintakso in strukturo jezika, ki je še nikoli nisem uporabljal.

PREBERITE NAPREJ Profilna fotografija za Jasona Fitzpatricka Jason Fitzpatrick
Jason Fitzpatrick je glavni urednik LifeSavvy, sestrskega spletnega mesta How-To Geek, osredotočenega na življenjske trike, nasvete in trike. Ima več kot desetletje izkušenj z založništvom in je avtor na tisoče člankov pri revijah Review Geek, How-To Geek in Lifehacker. Jason je služil kot Lifehackerjev Weekend urednik, preden se je pridružil How-To Geek.
Preberite celotno biografijo

Zanimivi Članki