1Aug

Sukurkite LED indikatorių su aviečių Pi( el. Paštui, oru ar viskam)

"Raspberry Pi" sukuria gražų kompaktišką platformą, skirtą pritvirtinti indikatorių, skirtą visų tipų projektams - pranešimams apie orą, naujus el. Laiškus ir pan. Perskaitykite, kaip parodysime, kaip prijungti LED modulį prie savo "Pi" ir nustatyti keletą pagrindiniųpranešimai.

Kodėl aš noriu tai padaryti?

Kadangi tai smagu. Skirtingai nuo daugelio mūsų samouczków, kuriuose mes įtraukiame šiek tiek sumaišytą į viršų, tiksliai nurodydami, kokią naudą jūs gausite iš projekto, šis atvejis yra gana trumpas, nes nauda yra tiesiog linksma.

"Raspberry Pi" yra puikus būdas žaisti, eksperimentuoti su elektronika ir sužinoti apie programavimą.Niekam , pvz., Nėra aplinkos lietaus indikatoriaus, bet pastato vienas iš jų yra įdomus užsiėmimas ir puikus priminimas, kad jūsų skėtis su jumis gali būti dėl audrų dienų.

Ką man reikia?

Norėdami sekti kartu su išorine pamoka, jums reikės kelių dalykų.Pirma, mes manome, kad jau vykdote ankstesnį pamokėlį: "HTG" vadovas pradedant "Raspberry Pi"( ir todėl pagrindai yra įtraukti į "Rasbian" įdiegimą "Raspberry Pi").

Jei norite atlikti šį projektą pagal biudžetą, galime pasitikėti, kad naujausias modelis "Raspberry Pi" yra reikšmingas darbo užmokestis, ir mes norėtume paskatinti jus išpūsti dulkes nuo senojo "Raspberry Pi"paimtas į spintelę arba pasiimkite pigiai naudojamą vieną iš "eBay" ar panašių.Biudžeto protingas ilgas dantis "Raspberry Pi 1" modelis "A" arba "B" modelis, užpuls "eBay" už 10-15 dolerių, puikiai tinka šiam projektui įsigyti visiškai naują 35 $ dabartinės kartos Pi.

Be to, jei jame įdiegtas funkcionalus "Pi" įrenginys su "Raspbian", jums reikės šių dalykų:

  • 1 LedBorg modulis( ~ 5 USD su 4 USD siuntimu iš Jungtinės Karalystės į JAV, dirba su visais "Raspberry Pi" modeliais).
  • 1 "Clear Raspberry Pi" dėžutė suderinama su jūsų konkrečiu "Pi" modeliu, kaip šis "Raspberry Pi 1" modelis B atvejis.

Pastaba: "Clear / frosted" "Pi" korpusas yra visiškai neprivalomas, tačiau jei šiuo metu naudojate nepermatomą atvejį, jūsų LED indikatorius bus paslėptas viduje. Jums reikės iškirpti skylę, kad galėtumėte išvystyti šviesą, arba naudokite GPIO pratęsimo kabelį su "Breakout" komplektu, kaip šis iš "Adafruit Industries", kad "LedBorg" būtų prijungtas prie "Raspberry Pi".Naudodamiesi "Breakout" kabeliu, projekto sąskaita pridedama apie 8 JAV dolerių, todėl jis suteikia daugiau galimybių pritaikyti galutinį produktą, nes jūs galite lengviau įdėti šviesos diodą į viduje esančius daiktus arba pagal kažką, kurį norite apšviesti.

"LedBorg

" diegimas. Nors jūs tikrai galėtumėte pastatyti sau visiškai nulenkiamą šviesos diodo indikatorių( ir paieškos užklausa atsiras daug žmonių, kurie tai padarė), "Piborg" organizacija gamina tokį kompaktišką ir nebrangų LED modulį, "LedBorg", kad mes negalėjome atsispirti naudoti kaip pagrindą mūsų "Raspberry Pi LED" indikatoriaus projektą.

Modulio įdiegimas yra greitas, nes jis suprojektuotas taip, kad tilptų tiesiai per "Pi" GPIO kaiščius. Pirma, išjunkite Pi ir atidarykite dėžutę.

Svarbiausia diegimo proceso dalis yra ta, kad nukreipiate modulį taip, kad LedBorg piktograma būtų arčiausiai prie "Raspberry Pi" RCA modulio( taigi "LedBorg" kraštas yra lygiagretus "Pi" plokštės kraštams su"LedBorg" viršutinė dalis, kabanti virš "Pi" lentos, o ne kraštas).Žiūrėkite aukščiau esančią nuotrauką.

Nors "Pi" lenta atvira, dabar būtų puikus laikas padengti indikatoriaus šviesos diodų indikatorius( šalia USB jungčių), ypač jei naudojate aiškų dėklą.Jūs nenorite, kad būtų supainioti skaityti jūsų "LedBorg" indikatorių, nes maitinimo ir tinklo lemputės yra tokios ryškios.

Mes padengėme baltos elektros juostos sluoksniu. Tai sugadina juos pakankamai, kad mes galėtume vis dar atsekti juos, bet jie buvo daug mažesni, nei "LedBorg", tai nebeatitiko.

Kai turite įdiegtą "LedBorg" ir, pasirinktinai, "Pi" LED indikatorius padengtas elektrine juosta, atėjo laikas uždaryti korpusą atgal.Įkelkite savo Pi aukštyn prieš pereidami į kitą mokymo pakopą.

"LedBorg" programinės įrangos įdiegimas

"PiBorg" yra puikus "LedBorg" programinės įrangos paketas, apimantis tiek GUI valdiklį, tiek tvarkykles, kad galėtų pasiekti "LedBorg" iš komandinės eilutės.

Prieš pradėdami, turite įsitikinti, kad esate įsimylėję tinkamą "Rasbian" versiją ir "Raspberry Pi" pataisos # paketą.

Jei jūsų "Raspberry Pi" lentoje nėra montavimo skylių, tai yra 1 peržiūra. Jei jūsų Raspberry Pi turi montavimo angas( esančių USB prievaduose ir tarp maitinimo ir HDMI prievado), tai yra 2-oji versija. Taip pat turite žinoti branduolįjūsų "Rasbian" įrenginio versija. Atidarykite terminalą ir įveskite šią komandą, kad patikrintumėte:

uname-r

Kai turite redagavimo numerį ir branduolio numerį, galite aplankyti skyrių "Packages" čia, norėdami paimti paketo nuorodą.Mūsų atveju mes naudojame "Review Revision 1" plokštę su 3.6.11 branduoliu, kad būtų galima paimti failą raspbianii-02-09-rev1.zip.

Norėdami įdiegti visas gėles, mes turime atidaryti terminalą "Pi".tada įdiekite LedBorg paketo diegimo šias komandas.

Pastaba: Jūs turite pakeisti trečiosios komandos URL adresą naudodami paketo URL, skirtą jūsų valdybos / branduolio kombinacijai.

mkdir ~ / ledborg-setup
cd ~ / ledborg-setup
wget-O setup.zip http: //www.piborg.org/downloads/ledborg/ raspbianii-02-09-rev1.zip
unzip setup.zip
chmod + x install.sh
. /install.sh

Šiuo metu turite įdiegti GUI aplanką "LedBorg" tvarkyklėms ir patiems tvarkytuvams."Raspbian" darbalaukyje pamatysite GUI aplanko piktogramą:

Eik į priekį ir spustelėkite piktogramą "LedBorg", kad paleistumėte GUI aplanką.Jums bus pritaikyta tokia spalvų rinkimo sąsaja:

Dabar yra puikus laikas įsitikinti, ar modulis veikia. Paimkite bet kokią spalvą, išskyrus juodą, išbandykite. Mes ketiname jį išbandyti pasirinkdami kelias spalvas:

Atrodo gerai! Tai ryškus ir matinio plastiko, kurį mes užsakėme projektui, siūlo vidutinį sklaidą.Jei prieš paleidžiant norėsite žaisti su LED moduliu, spustelėkite Demo režimas:

. Demonstraciniame režime galite pereiti per visas spalvas su skirtingu greičiu, patikrinti aukštą / žemą išėjimą, o kitaip dėti LED modulį per žingsnius.

Tai yra skyriuje Demo režimas, kurį taip pat galite paversti savo "LedBorg" pirmaisiais daugybe rodiklių.Pasirinkus CPU skyriuje "Spalvos", LED pradės keisti nuo žalios iki geltonos spalvos į raudoną, kad būtų nurodyta "Raspberry Pi" ARM procesoriaus apkrova. Mes rekomenduojame pakeisti greitį į lėtą, kol esate prie jo. Greitai atnaujina LED pernelyg greitai, o CPU indikatorius atitraukia, o ne naudingas.

Be GUI sąsajos naudojimo spalvų pasirinkimui galite pasirinkti spalvas iš terminalo naudodamiesi RGB reikšmėmis. Atidarykite terminalą ir įveskite šią komandą, kad išjungtumėte LED:

echo "000" & gt;/dev/ ledborg

Kaip LedBorg tvarko RGB reikšmes, tai reiškia, kad kanalas yra išjungtas, 1 reiškia, kad kanalas yra pusiau galios, o 2 reiškia, kad kanalas yra pilnutinė.Pvz., 001 nustatys raudoną kanalą 0%, Žaliąjį kanalą - 0%, o Mėlynąjį kanalą - 50%.

Pakeiskite reikšmę į 002, o šviesos diodo išvestis išlieka mėlyna, bet tampa ryškesnė, nes "Blue" kanalas dabar yra 100% išvesties. Pakeiskite vertę iki 202, o raudonai ir mėlynai - su visišku galingumu, kad padarytumėte raudonos spalvos.

Dabar, kai žinome, kaip manipuliuoti LED rankiniu būdu, pažvelkime į scenarijų naudojimą, kad mūsų šviesos diodas būtų įjungtas iš paprastos šviesos į tikrąjį indikatorių.

"LedBorg" kaip lietaus indikatoriaus

konfigūravimas. Šioje mokymo dalyje paminėkime keletą dalykų kartu, kad mūsų "LedBorg" LED modulis taptų lietaus indikatoriumi, pagrįstu mūsų vietovės orų prognoze. Mes panaudosime "Python" scenarijų, kad paskambintume "Weather API", kuris savo ruožtu skaitė dienos lietaus galimybę, o po to perjungsite šviesos diodą iš išjungto iki ryškiai mėlynos, kad nurodytumėte numatomą lietų.

Pirma, mes turime gauti API prieigos raktą "Weather Underground".Asmeniniam naudojimui ir mažiems plėtros projektams API yra nemokamas. Apsilankykite "Weather API" registracijos puslapyje ir užsiregistruokite API raktą.

Kai turite savo API raktą, apsilankykite Weather Underground ir ieškokite miesto, kurį norite stebėti.Šiuo atveju mes stebėsime San Fransisko, CA.San Francisko prognozių puslapio URL yra:

http: //www.wunderground.com/US/CA/ San_Francisco.html

Svarbi mūsų tikslai yra paskutinė URL dalis: /CA/ San_Francisco.html. Mes ketiname tai naudoti norėdami redaguoti API įrankio prognozuojamą URL.Pagrindinis URL yra:

http: //api.wunderground.com/api/ YOUR API KEY /forecast/q/STATE/ CITY.json

Galite generuoti prognozę bet kuriame JAV mieste įveskite savo API raktą, dviejų raidžių valstijos kodą ir miesto pavadinimą iš URL, kurį ištraukėte iš savo orųPožeminės paieškos rezultatai.

Kai turite API URL su savo API raktu ir valstybės / miesto įdėta, tuomet galėsite redaguoti šį "Python" scenarijų, sukurdami naują tekstinį dokumentą savo "Pi" naudojant "Leafpad" ir įtraukdami į jį šį kodą:

iš urllib2 importo urlopen
importas 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'] ['predicday'][0] ['pop'])

# Toliau pateikiama derinimo reikšmė.
# Redaguokite maišos ir pakeiskite
# sveikasis skaičius 0-100, kad išbandytumėte
# LED atsakymą.

# pop = 0

spausdinti "Dabartinė kritulių tikimybė yra{ }". "Formatas( pop)

# Numatytasis nustatymas - įjungti LED
# bet kokią lietaus tikimybę virš 20%.Jūs galite pakoreguoti
# reikšmę "if pop> 20:", kiek norite.

jei pop & gt;20:
LedBorg = atvira( /dev/ ledborg, w)
LedBorg.write( '002')
del LedBorg
spausdinti( "lietus")
dar:
LedBorg = atviroji( "/dev/ ledborg", "w ')
LedBorg.write( ' 000 ')
del LedBorg
spausdinti( "Nėra lietaus!")

Išsaugokite failą kaip wunderground.py /home/pi/ kataloge. Atidarykite terminalą ir įveskite šią komandą:

python wunderground.py

Jei turite tinkamai įvesti savo API raktą ir savo valstybės / miesto kodus, jis turi grąžinti atsakymą, kuris atrodo taip:

Jei prognozuojama jūsų teritorijai krituliaijūsų "LedBorg" produkcija turėtų atrodyti tokia:

Dabar laukiu lietingos dienos, kad tinkamai išbandytumėte scenarijų būtų varginantis. Jei šiandien jūsų rajone nėra lietaus, ir norėtumėte matyti, kad lemputė įsižiebia, redaguokite wunderground.py scenarijų ir pakeiskite "pop = pop" passthrough vertę 13 eilutėje, kurios reikšmė yra didesnė nei 20, pvz., 60kad mūsų prognozė sugrįžta. Tiesiog nepamirškite pakeisti eilutę atgal į "pop = pop", kai baigsite.

Paskutinis žingsnis yra nustatyti cron'o užduotį, kad automatiškai paleistumėte scenarijų, kurį ką tik išsaugojome reguliariai, kad LED indikatorius būtų toks pats. Kadangi ši užduotis yra reikalinga ir šiai scenarijai, ir toliau pateikiamam el. Pašto indikatoriui, mes ketiname apriboti cron užduoties nustatymą, kai parodysime, kaip nustatyti kitą scenarijų.

"LedBorg" kaip "Gmail" rodiklio

konfigūravimas Kas nemėgsta dopamino pataisymų, kai jų gautuosiuose matysite naujus el. Laiškus?Šioje mokymo dalyje mes parodysime, kaip naudoti "LedBorg" kaip naują "Gmail" rodiklį.Kaip ir paskutinį kartą, mes ketiname sujungti išorinį įvestį( šiuo atveju "Atom" kanalą, o ne API) ir paprastą scenarijų, skirtą mūsų LED.

Mums reikia išplėsti mūsų "Python" diegimo funkcionalumą, įdiekant "FeedParser", Python RSS / Atom kanalo skaitymo įrankį.Atidarykite terminalą ir įveskite šią komandą:

sudo easy_install feedparser

Kai diegimas bus baigtas, galime nustatyti, kad sukursime "Gmail" tikrinimo scenarijų.Vėlgi, naudojant "Leafpad", įterpkite šį tekstą į redaktorių.Keiskite naudotojo vardą ir slaptažodį, kad atitiktumėte "Gmail" paskyros naudotojo vardą ir slaptažodį, kurį norite patikrinti.

importavimas feedparser

# Įveskite savo "Gmail" naudotojo vardą
# ir slaptažodį.Neįtraukite
# # @ gmail.com dalies
# savo vartotojo vardą.

username = "username"
password = "password"

mail = int( feedparser.parse( "https: //" + username + ":" + password + "@ mail.google.com /gmail/feed/ atom") ["feed"] [" fullcount "])

# Toliau nurodyta derinimo reikšmė.
# Redaguokite maišos ir pakeiskite
# sveiką skaičių prie 0 arba 1, kad išbandytumėte
# LED atsaką.

# mail = 0

jei paštas>0:
LedBorg = atvira( '/dev/ ledborg', 'w')
LedBorg.write( '020')
del LedBorg
print( 'Mail!')
dar:
LedBorg = open( '/dev/ ledborg'w ')
LedBorg.write( ' 000 ')
del LedBorg
print( ' No mail! ')

Išsaugokite scenarijų kaip gmailcheck.py. Atidarykite terminalą ir įveskite šią komandą:

python gmailcheck.py

Jei jūsų pašto dėžutėje esantis el. Laiškas sėdi, šviesos diodas pasidaro žalios spalvos, todėl gausite tokį atsakymą:

Jei turite paštą savo "Gmail" dėžutėje, jūsų "LedBorg"atrodys taip:

Kaip ir lietaus tikrinimo scenarijus, mes įtraukėme derinimo vertę.Jei neturite jokio naujo el. Pašto, galite atsiųsti sau el. Laišką, kad padidintumėte gautųjų skaičių iki 1, arba galite redaguoti komentaro maišos ir pakeisti scenarijų išbandyti liniją "mail = 1".Nepamirškite grąžinti linijos, kai baigsite bandymus.

Hop į kitą mokymo programą, kad jūsų "Gmail" scenarijus būtų paleistas pagal tvarkaraštį.

"Cron" užduoties paleisti scenarijų nustatymas

Dabar, kai mes turime du scenarijus, su kuriais turėtume žaisti, mes turime nustatyti cron darbą, kad jie būtų paleisti per visą dieną, kad būtų išlaikytas šviesos diodo indikatorius.

Pirmas dalykas, kurį mes norime padaryti, yra išjungti LED, jei jis šiuo metu yra iš mūsų ankstesnių eksperimentų.Terminalo tipo:

echo "000" & gt;/dev/ ledborg

Nors vis dar esate komandinės eilutės, galite atidaryti cron redaktorių.Jei niekada nesukūrėte "cron" darbo anksčiau, mes primygtinai rekomenduotume perskaityti mūsų vadovą apie jo naudojimą čia. Tai pasakė, kad mes pasistengsime nustatyti pagrindinį tvarkaraštį čia.

Terminalo tipo:

sudo crontab -e

Tai atidarys "Raspbian cron" lentelę Nano teksto redaktoriuje. Naudokite rodyklių klavišus, norėdami pereiti žemyn į apačią.Tai kur mes ketiname nustatyti pasikartojančią cron darbą mūsų Python scenarijus.

Jei norite nustatyti lietaus scenarijų, įveskite į cron lentelę šią eilutę:

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

Paspauskite CTRL + X, kad išeitumėte;pasirinkite Taip, kad išsaugotumėte ir perrašytumėte esamą cron lentelę.Vertė, kurią mes įrašome cron lentelėje "* / 5 * * * *" nustato, kad scenarijus paleidžiamas kas 5 minutes, amžinai.

Kas 5 minutes yra puikus laiko scenarijus, kuris tikrina prognozuojamą lietų - netgi galite teigti, kad tai yra šiek tiek pernelyg agresyvus, bet jei bandysite išlaikyti savo el. Laišką, tai yra šiek tiek per ilgas laiko tarpaspranešimas. Jei nustatote "Gmail" pranešimų scenarijaus tvarkaraštį, įveskite šią eilutę cron lentelėje:

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

Šis įrašas paleidžia gmailcheck.py scenarijų kiekvieną minutę žymiai greičiauatnaujinti pranešimą.

Tai viskas, ko reikia! Galite eksperimentuoti su savo "Python" scenarijais, iškeldami "if / else" teiginius iš mūsų ir išbandydami juos visiškai naujais kintamaisiais. Jei galite rasti duomenų įvesties šaltinį, kurį galite paversti kintamu savo "Python" scenarijų akcijų rinkos vidurkiu, žiedadulkių skaičius, minimas Twitter, jei yra API, galite paversti jį aplinkos šviesos diodų indikatoriumi.

Galiausiai norėčiau padėkoti už visus didžiulius išteklius, su kuriais dirbau šiuo projektu. Tai buvo šiek tiek daugiau nei dešimtmetį nuo tada, kai aktyviai rašiau programas, ir reikėjo kelių smūgių, kad ištrauktų dulkes ir rūdis."/r/" mokytojai "LearnPython" prisidėjo prie "Weather Underground" API išvesties, mokydamiesi, kaip "Mitch" per "Mitch Tech" nagrinėjo "Gmail" atomo paštą, paruoštą lengvai LedBorg, ir mokytis kodo akademijos "Python" mokymo modulių buvo puikusbūdas paimti pagrindinę kalbos, kuriai anksčiau niekada nebuvo naudojamas, sintaksę ir struktūrą.