If-Koubou

Construiți un Indicator LED cu o Pi Ză (pentru email, vreme sau orice altceva)

Construiți un Indicator LED cu o Pi Ză (pentru email, vreme sau orice altceva) (Cum să)

Raspberry Pi face o platforma compacta pentru a atasa un indicator luminos pentru tot felul de proiecte - notificari meteorologice, emailuri noi, etc. Cititi-va cum va aratam cum sa conectati un modul LED la Pi si sa setati unele 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 distracția.

Raspberry Pi este un dispozitiv perfect pentru a juca cu, experimenta cu electronica, si 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 bază temele acoperite până la 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 pe care l-ați împins în dulap sau ridica un ieftin folosit de pe eBay sau ceva asemănător. Bugetul înțelept de lungă durată în dinte o Pi Z1 modelul A sau modelul B lovit de pe eBay pentru $ 10-15 este o potrivire perfectă pentru acest proiect peste achiziționarea unei noi generații noi de producție de $ 35, 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 livrare 4 dolari din Marea Britanie spre SUA, lucrează cu toate modelele Raspberry Pi).
  • 1 Zmeură de zmeură Pi compatibilă cu modelul tău special Pi ca și 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. Veți avea nevoie fie să tăiați o gaură în cazul dvs. pentru a lăsa lumina sau să utilizați un cablu prelungitor GPIO cu un kit de rupere - 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 zero) (și o întrebare despre motoarele de căutare va genera o mulțime de oameni care au făcut-o), organizația Piborg produce un modul LED compact, ieftin, LedBorg, t rezistați-l folosindu-l ca bază pentru proiectul indicelui nostru LED-uri de zmeură Pi.

Instalarea modulului este un snap, deoarece este proiectat să se potrivească direct peste pinii GPIO de pe Pi. În primul rând, opriț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 cu consola o parte din LedBorg atârnând peste placa Pi și nu 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 indicatoarele LED de la bord (lângă porturile USB), mai ales dacă utilizați un caz clar. Nu doriți să fie confuz pentru a vă citi 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 face referire la ele, dar ele erau atât de mult mai luminoase decât LedBorg, încât nu mai era distragătoare.

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ă 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 tău Raspberry Pi nu are găuri de montare, este Revizia 1. Dacă Raspberry Pi are găuri de montare (localizate de porturile USB și între portul de putere și portul 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 linkul pentru pachetul tău. În cazul nostru, folosim o placă Revizia 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
dezarhivați 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, cu excepția negru, pentru ao încerca. Vom încerca să alegem câteva culori:

Arata bine! Este luminos ș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 ridicată / scăzută și altfel să puneți modulul LED în pași.

Este aici, în secțiunea Demo Mode, că puteți transforma LedBorg-ul dvs. în primul dintre multele indicatori. Prin selectarea procesorului în secțiunea Culori, LED-ul va începe să se schimbe de la verde la galben la roșu pentru a indica încărcarea procesorului ARM al lui Raspberry Pi. Vă sugerăm să schimbați Viteza 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.

În plus față de utilizarea interfeței GUI pentru selectarea culorilor, puteți alege culori de la terminal utilizând 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 oprit, 1 înseamnă că canalul este jumătate de putere, iar 2 înseamnă că canalul este plin. De exemplu, 001 ar seta canalul roșu la 0%, canalul verde la 0% și canalul albastru la 50% putere.

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ând știm cum să manipulăm LED-ul manual, să analizăm folosirea de scripturi pentru a transforma LED-ul nostru de la o lumină simplă la 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 comuta LED-ul de la off la albastru luminos pentru a indica ploaia prognozată.

În primul rând, trebuie să obținem o cheie de acces API pentru Weather Underground. Pentru aplicații personale și proiecte mici de dezvoltare, 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 din adresa URL pe care ați tras-o din rezultatele căutării Meteo-metrou.

După ce ați introdus adresa URL 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 ['prognoză'] ['txt_forecast'] ['prognoză'] [0] ['pop'])

# Următoarea este o valoare de depanare.
# Editați hașul și schimbaț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 ("ploaie!")
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 tastați următoarea comandă:

python wunderground.py

Dacă ați introdus corect cheia dvs. API și codurile dvs. de stat / oraș, ar trebui să respingă un răspuns care arată:

Dacă precipitarea este prevăzută 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 luminos. 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ă noul e-mail î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-ul nostru.

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, lipiț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 schimbaț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 e mail!')

Salvați scriptul ca 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 hash-ul comentariu și modificați linia de depanare la "mail = 1" pentru a testa scriptul. Nu uitați să reluați linia 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ă jucăm, trebuie să organizăm o activitate cron pentru a le rula pe parcursul zilei pentru a menține curentul indicator LED.

Primul lucru pe care dorim să-l facem este să dezactivați LED-ul dacă acesta este în prezent pe experimentele 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 creat niciodată o activitate cron înainte, 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 un interval prea lung de notificare . Dacă configurați programul pentru scriptul de notificare Gmail, introduceți următoarea linie î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 date, o puteți transforma într-o variabilă în mediile de stocare pe scripturile Python, numărul de polen, Twitter menționează, dacă există un API pentru acesta, îl puteți transforma într-un indicator LED ambiental.

În cele din urmă, vreau să mulțumesc tuturor marilor resurse pe care le-am folosit pentru a lucra la acest proiect. A fost un pic mai mult de un deceniu de când scriam în mod activ programe și a fost nevoie de câteva lovituri pentru a obține 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.