Construiește un indicator LED cu o piersică Pi (pentru email, vreme sau orice altceva)
Raspberry Pi face o platforma compacta pentru a atasa un indicator luminos pentru tot felul de proiecte - notificari meteorologice, emailuri noi etc. Citeste mai departe pe masura ce va aratam cum sa conectati un modul LED la Pi si sa setati cateva notificari de baza.
De ce vreau să fac asta?
Pentru că e distractiv. Spre deosebire de multe dintre tutorialele noastre, în care includem un mic blur în partea superioară care conturează exact ce beneficii veți obține din proiect, blurbul este destul de scurt în acest caz deoarece beneficiul este pur și simplu distractiv.
Raspberry Pi este un dispozitiv perfect pentru a juca cu, experimenta cu electronica, si de a invata unele programare. Nimeni are nevoie un indicator de ploaie în bucătăria lor, de exemplu, dar construirea unuia este un exercițiu distractiv și un memento minunat pentru a vă aduce umbrela cu tine în zilele potențial de furtună.
Ce am nevoie?
Pentru a urmări împreună cu tutorialul, veți avea nevoie de câteva lucruri. În primul rând, presupunem că ați urmat deja tutorialul nostru anterior: Ghidul HTG pentru a începe cu Raspberry Pi (și, prin urmare, aveți la dispoziție elementele de bază pentru instalarea Rasbian pe Raspberry Pi).
Dacă sunteți în căutarea de a face acest proiect pe un buget, vă putem spune cu încredere că cel mai nou model Raspberry Pi este o depășire semnificativă a locului de muncă și vă încurajăm să aruncați praful de pe un vechi Raspberry Pi, în dulap sau ridica un ieftin folosit unul off eBay sau similare. Bugetul înțelept de lung-în-dinte o Pi Z1 Modelul A sau Model B snagged de pe eBay pentru $ 10-15 este o potrivire perfectă pentru acest proiect peste achiziționarea unui brand nou $ 35 actuală generație Pi.
Pe lângă faptul că aveți o unitate funcțională Pi cu Raspbian instalată pe ea, veți avea nevoie de următoarele lucruri:
- 1 modul LedBorg (~ $ 5.00 cu 4 dolari de transport maritim din Marea Britanie în SUA, funcționează cu toate modelele Raspberry Pi).
- 1 Pulbere de zmeura Pi compatibila cu modelul dumneavoastra special Pi cum ar fi acest caz Raspberry Pi 1 model B.
Notă: Cazul clar / matat Pi este în întregime opțional, dar dacă utilizați în prezent un caz opac, atunci indicatorul dvs. LED va fi ascuns în interior. Va trebui fie să tăiați o gaură în cazul dvs. pentru a lăsa luminile sau să utilizați un cablu prelungitor GPIO cu un kit de declanșare, cum ar fi acesta de la Adafruit Industries, pentru a lega LedBorg-ul dvs. de Raspberry Pi. În timp ce utilizați cablul de breakout adaugă aproximativ 8 dolari pe cheltuiala proiectului, acesta oferă un potențial mai mare pentru personalizarea produsului final prin faptul că puteți amplasa mai ușor LED-ul în interiorul lucrurilor sau sub ceva ce doriți să iluminați.
Instalarea LedBorg
În timp ce vă puteți construi cu siguranță un indicator LED complet (de la o mașină de căutare), organizația Piborg va produce un modul LED compact și ieftin, LedBorg, pe care nu l- t rezistați-l folosindu-l ca bază pentru proiectul Indicator de LED-uri pentru zmeură Pi.
Instalarea modulului este un snap așa cum este proiectat să se potrivească direct peste pinii GPIO de pe Pi. Mai întâi, porniți-vă Pi și deschideți carcasa.
Cea mai importantă parte a procesului de instalare este aceea că orientați modulul astfel încât pictograma LedBorg să fie cea mai apropiată de modulul RCA de pe placa Raspberry Pi (și astfel marginea LedBorg este la același nivel cu marginile plăcii Pi, parte a LedBorg care atârnă deasupra plăcii Pi și nu de pe margine). Vedeți fotografia de mai sus.
În timp ce aveți placa Pi deschisă, acum ar fi un timp excelent pentru a acoperi indicatorii LED de la bord (lângă porturile USB), mai ales dacă utilizați un caz clar. Nu doriți să fie confuz să citiți indicatorul LedBorg deoarece indicatoarele de alimentare și de rețea sunt atât de luminoase.
Ne-am acoperit cu un strat de bandă electrică albă. Acest lucru le-a diminuat suficient, pentru ca noi să le mai putem referi, dar ele erau atât de mult mai diminuate decât LedBorg,.
Odată ce ați instalat LedBorg și ați acoperit opțional indicatorii LED ai lui Pi cu bandă electrică, este timpul să închideți carcasa înapoi. Porniți-vă dispozitivul Pi înainte de a trece la următoarea fază a tutorialului.
Instalarea software-ului LedBorg
PiBorg oferă un pachet software excelent pentru LedBorg, care include atât un controler GUI, cât și drivere pentru a accesa LedBorg din linia de comandă.
Înainte de a începe, trebuie să vă asigurați că luați pachetul potrivit pentru versiunea dvs. de Rasbian și revizia # a plăcii dvs. Raspberry Pi.
Dacă bordul dvs. Raspberry Pi nu are găuri de montare, este Revizia 1. În cazul în care Raspberry Pi are găuri de montare (amplasate de porturile USB și între portul de alimentare și HDMI), atunci este Revizia 2. De asemenea, trebuie să cunoașteți versiunea kernel din instalarea dvs. Rasbian. Deschideți terminalul și introduceți următoarea comandă pentru a verifica:
uname -r
După ce ai numărul Revizie și numărul de kernel, poți accesa secțiunea Pachete aici pentru a apuca link-ul pentru pachetul tău. În cazul nostru, folosim o placă de revizie 1 cu kernelul 3.6.11, astfel încât să luăm fișierul raspbian-2013-02-09-rev1.zip.
Pentru a instala toate bunele trebuie să deschidem terminalul de pe Pi. apoi introduceți următoarele comenzi pentru a instala pachetul LedBorg.
Notă: Trebuie să înlocuiți adresa URL din a treia comandă cu adresa URL a pachetului pentru combinația de bord / kernel.
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
În acest moment aveți acum pachetul GUI pentru driverele LedBorg și driverele instalate. Pe desktopul Raspbian veți vedea o pictogramă pentru pachetul GUI:
Mergeți mai departe și faceți clic pe pictograma LedBorg pentru a lansa pachetul GUI. Veți fi tratat la interfața de selectare a culorilor astfel:
Acum este timpul perfect pentru a vă asigura că modulul este funcțional. Alegeți orice culoare, în afară de negru, pentru ao încerca. Vom încerca să alegem câteva culori:
Arata bine! Este luminoasă și plasticul maturat al casetei pe care l-am comandat pentru proiect oferă o difuzie moderată. Dacă doriți să jucați mai mult cu modulul LED înainte de a vă deplasa, faceți clic pe Mod demo:
În modul demo puteți să navigați prin toate culorile la diferite viteze, să verificați ieșirea de nivel ridicat / scăzut și altfel puneți modulul LED prin pași.
Este aici în secțiunea Mod Demo pe care îl puteți transforma, de asemenea, în LedBorg în primul dintre numeroși indicatori. Prin selectarea procesorului în secțiunea Culori, LED-ul va începe să se schimbe de la verde la galben în roșu pentru a indica încărcarea procesorului ARM al lui Raspberry Pi. Vă sugerăm să schimbați Viteza până la Slow în timp ce vă aflați la ea - Actualizează rapid LED-ul prea repede și face ca indicatorul CPU să distragă atenția în loc de util.
Pe lângă utilizarea interfeței GUI pentru a selecta culorile, puteți alege culori de la terminal folosind valorile RGB. Deschideți terminalul și introduceți următoarea comandă pentru a dezactiva LED-ul:
echo "000"> / dev / ledborg
Modul în care LedBorg se ocupă de valorile RGB este că 0 înseamnă că canalul este dezactivat, 1 înseamnă că canalul este jumătate de putere, iar 2 înseamnă că canalul este de putere maximă. De exemplu, 001 ar seta canalul roșu la 0%, canalul verde la 0% și canalul albastru la o putere de 50%.
Schimbați valoarea la 002, iar ieșirea LED-ului rămâne albastră, dar devine mai luminoasă, deoarece canalul albastru este acum la ieșire de 100%. Schimbați valoarea la 202, iar Roșul și Albastrul se combină la putere maximă pentru a obține o culoare purpurie.
Acum, că știm cum să manipulăm LED-ul manual, să analizăm folosirea de scripturi pentru a transforma LED-ul nostru dintr-o lumină simplă într-un indicator real.
Configurarea LedBorg ca indicator de ploaie
Pentru această parte a tutorialului, vom combina mai multe lucruri împreună pentru a transforma modulul LedBorg LED într-un indicator de ploaie bazat pe prognoza meteo pentru locația noastră. Vom folosi un script Python pentru a apela un API meteo, care va citi, la rândul său, șansa de ploaie pentru a doua zi, apoi a schimba LED-ul de la oprit la albastru strălucitor pentru a indica ploaia preconizată.
În primul rând, trebuie să obținem o cheie de acces API pentru Weather Underground. Pentru utilizarea personală și proiectele de dezvoltare mică API este gratuit. Accesați pagina de înscriere API Meteo aici și înscrieți-vă pentru o cheie API.
Odată ce aveți cheia dvs. API, accesați Weather Underground și căutați orașul pe care doriți să îl monitorizați. În cazul nostru, vom monitoriza San Fransisco, CA. Adresa URL a paginii cu prognoze pentru San Fransisco este:
http://www.wunderground.com/US/CA/San_Francisco.html
Partea importantă pentru scopurile noastre este ultima parte a URL-ului: /CA/San_Francisco.html. O vom folosi pentru a edita adresa URL de prognoză pentru instrumentul API. Adresa URL de bază este:
http://api.wunderground.com/api/ KEY API / previziune / q / STATE / CITY.json
Puteți genera prognoza pentru orice oraș din SUA introducând cheia dvs. API, codul de stare al celor două litere și numele orașului de la adresa URL pe care ați tras-o din rezultatele căutării Meteo Underground.
Odată ce ați introdus adresa API cu cheia API și cu statul / orașul introdus, puteți să editați următorul script Python creând un nou document text pe fișierul dvs. Pi utilizând Leafpad și inserând următorul cod în el:
de la urllib2 import urlopen
importați json
req = urlopen ('http://api.wunderground.com/api/ KEY API / previziune / q / STATE / CITY.json' ')
parsed_json = json.load (req)
pop = int (parsed_json ['prognoza'] ['txt_forecast'] ['prognoza'] [0] ['pop'])# Următoarea este o valoare de depanare.
# Editați hașul și modificați
# întregul la 0-100 pentru a testa
# răspunsul LED.# pop = 0
print 'Șansa curentă de precipitații este .'. format (pop)
# Setarea implicită este de a activa LED-ul
# pentru orice sansa de ploaie peste 20%. Puteți ajusta
# valoarea în "dacă pop> 20:" după cum doriți.
dacă pop> 20:
LedBorg = deschis ('/ dev / ledborg', 'w')
LedBorg.write ( '002')
del LedBorg
print ('Rain!')
altceva:
LedBorg = deschis ('/ dev / ledborg', 'w')
LedBorg.write ( '000')
del LedBorg
print ("Nu ploaie!")
Salvați fișierul ca wunderground.py în directorul / home / pi /. Deschideți terminalul și introduceți următoarea comandă:
python wunderground.py
Dacă ați introdus corect cheia dvs. API și codurile dvs. de stat / oraș, ar trebui să repetați un răspuns care arată astfel:
Dacă precipitarea este prezisă pentru zona dvs., ieșirea dvs. LedBorg ar trebui să arate astfel:
Acum, așteptând o zi ploioasă pentru a testa în mod corespunzător scenariul, ar fi plictisitor. Dacă nu există nici o șansă de ploaie în zona dvs. de azi și doriți să vedeți LED-ul aprins, editați scriptul wunderground.py și înlocuiți valoarea passthrough "pop = pop" în rândul 13 cu o valoare mai mare de 20, cum ar fi 60 prognoza noastră a revenit. Nu uitați să schimbați linia înapoi la "pop = pop" când ați terminat.
Ultimul pas este să setați o sarcină cron pentru a rula automat scriptul pe care tocmai l-am salvat la un interval regulat pentru a menține curentul indicator LED. Deoarece această sarcină este necesară atât pentru acest script, cât și pentru indicatorul de e-mail care urmează, vom include acoperirea unei activități cron după ce v-am arătat cum să configurați celălalt script.
Configurarea LedBorg-ului dvs. ca indicator Gmail
Cui nu-i place fixarea dopaminei care vine cu să vadă noi e-mailuri în căsuța de e-mail? În această parte a tutorialului vă vom arăta cum să utilizați LedBorg ca un nou indicator Gmail. La fel ca și ultima oară, vom combina o intrare externă (în acest caz un feed Atom în loc de un API) și un script simplu pentru a conduce LED-.
Trebuie să extindem puțin funcționalitatea instalării Python, instalând FeedParser, un instrument de citire a feedului RSS / Atom Python. Deschideți terminalul și introduceți următoarea comandă:
sudo easy_install feedparser
Odată ce instalarea este finalizată, putem seta să lucrăm creând scriptul de verificare Gmail. Din nou, folosind Leafpad, inserați următorul text în editor. Schimbați numele de utilizator și parola pentru a se potrivi cu numele de utilizator și parola contului Gmail pe care doriți să îl verificați.
importați feedparser
# Introduceți numele de utilizator Gmail
# și parola. Nu includeți
# porțiunea @ gmail.com din
# nume de utilizator.
username = "username"
parola = "parola"
mail = int (feedparser.parse ("https: //" + username + ":" + parola + "@ mail.google.com/gmail/feed/atom")["fefeed"]["fullcount"])
# Următoarea este o valoare de depanare.
# Editați hașul și modificați
# întregul la 0 sau 1 pentru a testa
# răspunsul LED.# mail = 0
dacă poșta> 0:
LedBorg = deschis ('/ dev / ledborg', 'w')
LedBorg.write ( '020')
del LedBorg
print ('Mail!')
altceva:
LedBorg = deschis ('/ dev / ledborg', 'w')
LedBorg.write ( '000')
del LedBorg
print ("Nu există poștă!")
Salvați scriptul ca fiind gmailcheck.py. Deschideți terminalul și tastați următoarea comandă:
python gmailcheck.py
Dacă aveți e-mail în căsuța de e-mail Gmail, LED-ul va deveni verde și veți primi un răspuns ca acesta:
Dacă aveți e-mail în căsuța poștală Gmail, LedBorg va arăta astfel:
La fel ca și scriptul de verificare a ploii, am inclus o valoare de depanare. Dacă nu aveți niciun e-mail nou, puteți să vă trimiteți un e-mail pentru a crește numărul de mesaje primite la 1 sau puteți modifica codul de codificare a hash-ului și modificați linia de depanare la "mail = 1" pentru a testa scriptul. Amintiți-vă să reveniți la rând când ați terminat testarea.
Hop în secțiunea următoare a tutorialului pentru a vă seta scriptul Gmail să ruleze într-un program.
Configurarea unei activități Cron pentru a rula scenariul
Acum, că avem două scenarii cu care să ne jucăm, trebuie să organizăm o activitate cron pentru a le rula pe parcursul zilei pentru a menține indicatorul LED.
Primul lucru pe care dorim să-l facem este să dezactivați LED-ul dacă acesta se află în prezent în urma experimentelor noastre anterioare. La tipul de terminal:
echo "000"> / dev / ledborg
În timp ce sunteți încă la linia de comandă, puteți deschide editorul cron. Dacă nu ați mai configurat niciodată o activitate cron, vă sugerăm să consultați ghidul nostru pentru al folosi aici. Acestea fiind spuse, vă vom trece prin stabilirea unui program de bază chiar aici.
La tipul de terminal:
sudo crontab -e
Aceasta va deschide tabelul cron Raspbian în editorul de text Nano. Utilizați tastele săgeți pentru a derula în jos până la partea de jos. Aici vom seta jobul cron recurent pentru scripturile noastre Python.
Dacă doriți să configurați scriptul de ploaie, introduceți următoarea linie în tabelul cron:
* / * * * * * Python /home/pi/wunderground.py
Apăsați CTRL + X pentru a ieși; selectați da pentru a salva și a suprascrie tabelul cron existent. Valoarea pe care am introdus-o în tabelul cron "* / 5 * * * *" stabilește scriptul să ruleze la fiecare 5 minute, pentru totdeauna.
La fiecare 5 minute este o perioadă bună de timp pentru un scenariu care verifică ploaia preconizată - ați putea chiar argumenta că este un pic prea agresiv - dar dacă încercați să păstrați în partea de sus a e-mail-ului dvs., este o perioadă de timp prea lungă pentru notificare . Dacă configurați programul pentru scriptul de notificare Gmail, introduceți următorul rând în tabelul cron:
* / * * * * * Python /home/pi/wunderground.py
Această intrare rulează scriptul gmailcheck.py în fiecare minut pentru o notificare de actualizare mai rapidă.
Cam despre asta e! Puteți experimenta propriile dvs. scripturi Python prin ridicarea declarațiilor if / else din a noastră și încercându-le cu variabile noi. Dacă găsiți o sursă de intrare pentru datele pe care o puteți transforma într-o variabilă în mediile de stocare ale script-urilor Python, numărul de polen, Twitter menționează, dacă există un API pentru acesta, îl puteți transforma într-un indicator LED ambiental.
În final, vreau să mulțumesc tuturor marilor resurse pe care le-am folosit pentru a lucra la acest proiect. A fost cam peste un deceniu de când scriam în mod activ programe și mi-a trebuit câteva lovituri pentru a scoate praful și rugina. Contribuitorii la / r / LearnPython m-au ajutat să mă rănesc în ieșirea API pentru Weather Underground, studiind modul în care Michael de la Mitch Tech sa ocupat de feed-ul Gmail Atom, făcând parsarea lui pentru LedBorg ușor și studiind modulele de învățare Python de la Code Academy o modalitate excelentă de a ridica sintaxa de bază și structura unei limbi pe care nu l-am mai folosit până acum.