Sukurkite LED indikatorių su Raspberry Pi (el. Paštu, oru arba bet kas kita)
„Raspberry Pi“ yra puiki kompaktiška platforma, skirta prijungti indikatoriaus lemputę visų rūšių projektams, pranešimams apie orą, naujus el. Laiškus ir tt Skaitykite, kaip parodysime, kaip prijungti LED modulį prie „Pi“ ir nustatyti pagrindinius pranešimus.
Kodėl aš noriu tai padaryti?
Nes tai yra smagu. Skirtingai nuo daugelio mūsų pamokų, kuriose viršūnėje yra šiek tiek blurbio, kuriame tiksliai apibūdinama, kokią naudą gausite iš projekto, šiuo atveju blurbas yra gana trumpas, nes nauda yra tiesiog įdomus.
„Raspberry Pi“ yra puikus prietaisas, skirtas žaisti aplink, eksperimentuoti su elektronika ir išmokti programuoti. Niekas poreikiai pavyzdžiui, aplinkos lietaus indikatorius savo virtuvėje, tačiau vieno iš jų kūrimas yra įdomus pratimas ir puikus priminimas, kad jūsų skėčiai su jumis galimai audringomis dienomis.
Ką man reikia??
Norėdami sekti kartu su pamoka, jums reikės keleto dalykų. Pirma, mes darome prielaidą, kad jūs jau sekėte mūsų ankstesnę pamoką: „The HTG Guide to Getting Started with Raspberry Pi“ (ir turėkite pagrindinius dalykus, kurie bus įtraukti į „Rasbian“ diegimą mūsų „Raspberry Pi“).
Jei norite atlikti šį projektą biudžete, mes galime patikimai pasakyti, kad naujausias modelis Raspberry Pi yra didelis darbo užmokestis, ir mes norėtume paskatinti jus išpūsti dulkes nuo senosios Raspberry Pi spintoje arba pasiimkite pigų naudotą „eBay“ ar pan. Biudžetas protingas „Raspberry Pi 1“ modeliui „A“ arba „B“ modeliui nuskambėjo „eBay“ už 10–15 JAV dolerių..
Be funkcinio „Pi“ įrenginio, kuriame įdiegta „Raspbian“, jums reikės šių dalykų:
- 1 „LedBorg“ modulis (~ $ 5,00 su 4 JAV dolerių gabenimu iš Jungtinės Karalystės į JAV, dirba su visais „Raspberry Pi“ modeliais).
- 1 Išvalykite Raspberry Pi bylą, atitinkančią jūsų konkrečią „Pi“ modelį, kaip šis „Raspberry Pi 1“ modelio B atvejis.
Pastaba: Skaidrus / matinis „Pi“ atvejis yra visiškai neprivalomas, tačiau jei šiuo metu naudojate nepermatomą atvejį, jūsų LED indikatorius bus paslėptas. Jums reikės iškirpti skylę, kad galėtumėte apšviesti arba naudoti GPIO prailginimo kabelį su panašiu „Adafruit Industries“ rinkiniu, kad pririštumėte „LedBorg“ prie „Raspberry Pi“. Naudodamiesi „breakout“ kabeliu, projekto sąskaita kainuoja apie 8 JAV dolerius, o tai suteikia daugiau galimybių galutiniam produktui pritaikyti, nes galite lengviau įdėti LED viduje daiktus ar kažką, ką norite apšviesti.
„LedBorg“ diegimas
Nors jūs tikrai galėtumėte sau sukurti visiškai nuo nulio LED indikatorių (ir paieškos variklio tyrimas sukels daug žmonių, kurie tai padarė), „Piborg“ organizacija gamina tokį kompaktišką ir nebrangų LED modulį, „LedBorg“, kad mes negalėjome • neprieštarauti, kad jis būtų mūsų Raspberry Pi LED indikatoriaus projekto pagrindas.
Modulio įdiegimas yra greitas, nes jis suprojektuotas taip, kad tilptų tiesiai virš „Pi“ GPIO smeigtukų. Pirma, išjunkite „Pi“ ir atidarykite bylą.
Svarbiausia įrengimo proceso dalis yra tai, kad jūs orientuojate modulį taip, kad LedBorg piktograma būtų arčiausiai RCA modulio Raspberry Pi plokštėje (taigi LedBorg kraštas yra lygus su Pi plokštės kraštais, su perėjimu LedBorg dalis, kabanti virš Pi lentos, o ne nuo krašto). Žr. Aukščiau esančią nuotrauką.
Atidarius „Pi“ plokštę, dabar būtų puikus laikas padengti LED indikatorius (šalia USB prievadų), ypač jei naudojate aiškų atvejį. Jūs nenorite, kad būtų painu skaityti jūsų „LedBorg“ indikatorių, nes maitinimo ir tinklo indikatoriai yra tokie ryškūs.
Mes padengėme mus su balta elektros juostele. Tai pakankamai susilpnino, kad galėtume vis dar juos apibūdinti, tačiau jie buvo tokie brangesni, kaip LedBorg, kuris nebebus trukdomas.
Įdiegę „LedBorg“ ir pasirinktinai padengėte „Pi“ LED indikatorių su elektros juosta, atėjo laikas uždaryti bylą. Paleiskite „Pi“ prieš pradėdami eiti į kitą pamokos etapą.
„LedBorg“ programinės įrangos įdiegimas
„PiBorg“ siūlo puikų programinės įrangos paketą „LedBorg“, kuri apima ir GUI valdiklį, ir tvarkykles, leidžiančias pasiekti „LedBorg“ iš komandų eilutės.
Prieš pradėdami, turite įsitikinti, kad jūs patraukiate teisingą paketą, skirtą jūsų „Rasbian“ versijai ir „Raspberry Pi“ lentos versijai..
Jei jūsų „Raspberry Pi“ plokštėje nėra tvirtinimo skylių, tai yra „Revision 1“. Jei jūsų Raspberry Pi turi tvirtinimo angas (esančių USB jungtyse ir tarp maitinimo ir HDMI prievado), tai yra 2 versija. Taip pat reikia žinoti branduolio versiją jūsų Rasbino instaliacijos. Atidarykite terminalą ir patikrinkite šią komandą:
uname -r
Kai turėsite „Revision“ numerį ir branduolio numerį, galite apsilankyti skyriuje „Paketai“, kad pasiektumėte savo paketo nuorodą. Mūsų atveju mes naudojame „Revision 1“ plokštę su 3.6.11 branduoliu, kad mes paimtume raspbian 2013-02-09-rev1.zip failą.
Norint įdiegti visus daiktus, turime atverti terminalą „Pi“. ir tada įdėkite šias komandas, kad įdiegtumėte „LedBorg“ paketą.
Pastaba: Trečiojoje komandoje esančią URL turite pakeisti paketo URL, esančią jūsų lentos / branduolio derinyje.
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
Šiuo metu turite „GUI“ pakuotę „LedBorg“ vairuotojams ir patiems vairuotojams. Raspbian darbalaukyje matysite GUI įvynioklio piktogramą:
Eikite į priekį ir spustelėkite „LedBorg“ piktogramą, kad paleistumėte GUI įvynioklį. Jūs elgiatės su spalvų rinkėjo sąsaja, pvz .:
Dabar tinkamas laikas įsitikinti, kad jūsų modulis yra funkcionalus. Išbandykite bet kurią spalvą, išskyrus juodą. Mes jį išbandysime, pasirinkdami kelias spalvas:
Atrodo gerai! Šviesus ir matinis plastikas, kurį užsakėme projektui, suteikia vidutinio sunkumo. Jei norite daugiau žaisti su LED moduliu, prieš pradėdami judėti, spustelėkite Demo režimas:
Demonstraciniu režimu galite pereiti per visas spalvas įvairiais greičiais, patikrinti aukštą / žemą išėjimą ir kitaip įdėti šviesos diodų modulį per tempus.
Demonstracinio režimo skyriuje jūs taip pat galite paversti savo „LedBorg“ į pirmąjį iš daugelio rodiklių. Pasirinkus CPU spalvų skiltyje, šviesos diodas pradės keisti nuo žalios iki geltonos iki raudonos, kad būtų rodoma apkrova Raspberry Pi ARM procesoriui. Siūlome keisti „Speed to Slow“, kai esate „Fast“, o „Fast“ sparčiai atnaujina šviesos diodą ir daro procesoriaus indikatorių trukdančią, o ne naudingą.
Be GUI sąsajos spalvų pasirinkimui galite pasirinkti spalvas iš terminalo, naudodami RGB reikšmes. Atidarykite terminalą ir įveskite šią komandą, kad išjungtumėte LED:
echo "000"> / dev / ledborg
Kaip „LedBorg“ valdo RGB reikšmes, 0 reiškia, kad kanalas išjungtas, 1 reiškia, kad kanalas yra pusė galios, o 2 reiškia, kad kanalas yra pilnos galios. Pavyzdžiui, 001 „Red“ kanalą nustatytų 0%, „Green“ kanalą 0% ir „Blue“ kanalą - 50%.
Pakeiskite reikšmę iki 002, o LED išėjimas išlieka mėlynas, bet tampa ryškesnis, nes „Blue“ kanalas dabar yra 100%. Pakeiskite reikšmę iki 202, o raudonos ir mėlynos spalvos, esant pilnai galiai, sujungia rausvą spalvą.
Dabar, kai žinome, kaip valdyti LED rankiniu būdu, pažiūrėkime, kaip naudoti scenarijus, kad mūsų šviesos diodas iš paprastos šviesos paverstų faktiniu indikatoriumi.
„LedBorg“ konfigūravimas kaip lietaus indikatorius
Šiai pamokos daliai kartu sujungsime kelis dalykus, kad mūsų „LedBorg“ LED modulis taptų lietaus indikatoriumi pagal mūsų buvimo vietos prognozes. Naudosime „Python“ scenarijų, jei norite paskambinti orų API, kuri savo ruožtu perskaitys dienos lietaus tikimybę, o tada persijungs šviesos diodas iš išjungimo į ryškiai mėlyną, nurodydami prognozuojamą lietų..
Pirma, turime gauti API prieigos raktą „Weather Underground“. Asmeniniam naudojimui ir mažiems plėtros projektams API yra nemokama. Aplankykite „API API“ prisiregistravimo puslapį čia ir prisiregistruokite API raktui.
Kai turėsite API raktą, apsilankykite meteorologijos požemyje ir suraskite miestą, kurį norite stebėti. Mūsų atveju mes stebėsime San Fransisco, CA. „San Fransisco“ prognozės puslapio URL yra:
http://www.wunderground.com/US/CA/San_Francisco.html
Svarbi mūsų tikslų dalis yra paskutinė URL dalis: /CA/San_Francisco.html. Mes naudosime tai, kad galėtume redaguoti API įrankio prognozuojamą URL. Pagrindinis URL yra:
http://api.wunderground.com/api/YOUR API KEY / prognozė / q / STATE / CITY.json
Galite generuoti prognozes bet kuriam JAV miestui įvesdami API raktą, dviejų raidžių būsenos kodą ir miesto pavadinimą iš URL, kurį ištraukėte iš savo „Underground“ paieškos rezultatų.
Įdiegę API URL su savo API raktu ir būsena / miestas, galite redaguoti šį „Python“ scenarijų, sukurdami naują „Pi“ dokumentą, naudodami „Leafpad“ ir įklijuodami šį kodą į jį:
iš urllib2 importuoti urlopen
importuoti „Json“
req = urlopen („http://api.wunderground.com/api/YOUR API raktas / prognozė / q / STATE / CITY.json“)
parsed_json = json.load (req)
pop = int (parsed_json ['prognozė'] ['txt_forecast'] ['prognozė'] [0] ['pop'])# Toliau pateikiama derinimo reikšmė.
# Redaguoti maišos ir pakeitimus
# sveikasis skaičius iki 0-100 testavimui
# LED atsakas.# pop = 0
spausdinti „Dabartinė kritulių tikimybė yra .“. formatas (pop)
# Numatytasis nustatymas yra įjungti LED
# dėl bet kokio lietaus tikimybės virš 20%. Galite reguliuoti
# reikšmė "jei pop> 20:", kaip norite.
jei pop> 20:
LedBorg = open ('/ dev / ledborg', 'w')
LedBorg.write ('002')
del LedBorg
spausdinti („Lietus!“)
Kitas:
LedBorg = open ('/ dev / ledborg', 'w')
LedBorg.write ('000')
del LedBorg
spausdinti („Nėra lietaus!“)
Įrašykite failą kaip wunderground.py į / home / pi / katalogą. Atidarykite terminalą ir įveskite šią komandą:
python wunderground.py
Jei tinkamai įvedėte API raktą ir savo valstybės / miesto kodus, jis turėtų sugrąžinti atsakymą, kuris atrodo kaip:
Jei jūsų vietovėje numatomas kritulių kiekis, jūsų „LedBorg“ išvestis turėtų atrodyti tokia:
Dabar laukia, kol lietaus diena bus tinkamai išbandyta. Jei šiandien jūsų vietovėje nėra lietaus tikimybės ir norite pamatyti, kad šviesos diodas įsižiebia, redaguokite „wunderground.py“ scenarijų ir pakeiskite „pop = pop“ perėjimo vertę 13 eilutėje, kurios vertė yra didesnė nei 20, pvz., 60 kad mūsų prognozė grįžo. Tiesiog nepamirškite pakeisti linijos atgal į „pop = pop“, kai baigsite.
Paskutinis žingsnis yra nustatyti cron užduotį, kad automatiškai būtų paleistas scenarijus, kurį mes tiesiog išsaugojome reguliariai, kad LED indikatorius būtų išlaikytas. Kadangi ši užduotis reikalinga ir šiam scenarijui, ir toliau nurodytam el. Pašto rodikliui, mes aptarsime „cron“ užduoties nustatymą po to, kai parodysime, kaip nustatyti kitą scenarijų.
„LedBorg“ konfigūravimas kaip „Gmail“ indikatorius
Kas nepatinka dopamino nustatymo, kuris pateikiamas kartu su nauju el. Laišku jų gautuosiuose? Šioje pamokos dalyje parodysime, kaip naudoti „LedBorg“ kaip naują „Gmail“ indikatorių. Kaip ir paskutinį kartą, ketiname sujungti išorinį įvestį (šiuo atveju „Atom“ kanalą vietoj API) ir paprastą scenarijų, kad galėtume vairuoti mūsų LED.
Turime šiek tiek išplėsti „Python“ diegimo funkcionalumą įdiegdami „FeedParser“, „Python RSS / Atom“ pašarų skaitymo įrankį. Atidarykite terminalą ir įveskite šią komandą:
sudo easy_install feedparser
Kai įdiegimas bus baigtas, galime nustatyti, kad būtų sukurtas „Gmail“ tikrinimo scenarijus. Vėlgi, naudodami „Leafpad“, į redaktorių įklijuokite šį tekstą. Pakeiskite naudotojo vardą ir slaptažodį, kad atitiktų norimos patikrinti „Gmail“ paskyros naudotojo vardą ir slaptažodį.
importuoti „feedparser“
# Įveskite „Gmail“ naudotojo vardą
# ir slaptažodis. Neįtraukite
# @ gmail.com dalis
# Jūsų slapyvardis.
username = "naudotojo vardas"
password = "password"
mail = int (feedparser.parse ("https: //" + naudotojo vardas + ":" + slaptažodis + "@ mail.google.com/gmail/feed/atom") rules"feed"] ["fullcount"])
# Toliau pateikiama derinimo reikšmė.
# Redaguoti maišos ir pakeitimus
# sveikasis skaičius iki 0 arba 1 bandymui
# LED atsakas.# mail = 0
jei paštas> 0:
LedBorg = open ('/ dev / ledborg', 'w')
LedBorg.write ('020')
del LedBorg
spausdinti („Paštas!“)
Kitas:
LedBorg = open ('/ dev / ledborg', 'w')
LedBorg.write ('000')
del LedBorg
spausdinti („Nėra pašto“)
Išsaugokite scenarijų kaip gmailcheck.py. Atidarykite terminalą ir įveskite šią komandą:
python gmailcheck.py
Jei „Gmail“ el. Pašto dėžutėje yra el. Laiškas, šviesos diodas užsidegs ir gausite tokį atsakymą:
Jei Gmail pašto dėžutėje yra laiškų, jūsų „LedBorg“ atrodys taip:
Kaip ir lietaus tikrinimo scenarijus, įtraukėme derinimo reikšmę. Jei neturite jokio naujo el. Laiško, galite atsiųsti el. Laišką, kad padidintumėte gautų laiškų skaičių iki 1, arba galite redaguoti komentaro maišą ir pakeisti derinimo eilutę į „mail = 1“, kad patikrintumėte scenarijų. Nepamirškite grįžti į liniją, kai baigsite testavimą.
Įdėkite į kitą pamokos dalį, kad nustatytumėte, jog „Gmail“ scenarijus bus rodomas pagal tvarkaraštį.
„Cron“ užduoties nustatymas, norint paleisti scenarijų
Dabar, kai turime du scenarijus, kuriuos reikia žaisti, turime nustatyti cron užduotį, kad galėtume juos paleisti visą dieną, kad LED indikatorius būtų išlaikytas..
Pirmas dalykas, kurį mes norime padaryti, yra išjungti šviesos diodą, jei jis šiuo metu veikia iš ankstesnių eksperimentų. Pagal terminalo tipą:
echo “000”> / dev / ledborg
Kol vis dar esate komandinėje eilutėje, galite atidaryti cron redaktorių. Jei dar niekada nenustatėte „cron“ darbo, primygtinai rekomenduojame patikrinti mūsų vadovą, kaip jį naudoti čia. Be to, mes čia nueisime į pagrindinį tvarkaraštį.
Pagal terminalo tipą:
sudo crontab -e
Tai atveria „Raspbian cron“ lentelę „Nano“ teksto redaktoriuje. Rodyklių klavišais slinkite žemyn iki apačios. Čia mes nustatysime pasikartojančius „Cron“ darbus mūsų „Python“ scenarijus.
Jei norite nustatyti lietaus scenarijų, įveskite eilutę į cron lentelę:
* / 5 * * * * python / home /pi/wunderground.py
Norėdami išeiti, paspauskite CTRL + X; pasirinkite Taip, kad išsaugotumėte ir perrašytumėte esamą cron lentelę. Vertė, kurią įvedėte į „cron“ lentelę „* / 5 * * * *“, nustato scenarijų, kuris bus rodomas kas 5 minutes, visam laikui.
Kas 5 minutes yra puikus laiko scenarijus scenarijai, kuris tikrina prognozuojamą lietų, netgi galite teigti, kad tai šiek tiek pernelyg agresyvus, bet jei bandote išlaikyti savo el. Pašto viršūnę, tai šiek tiek per ilgas pranešimo laikotarpis . Jei nustatote „Gmail“ pranešimo scenarijaus tvarkaraštį, įveskite eilutę cron lentelėje:
* / 1 * * * * python / home /pi/wunderground.py
Šis įrašas paleidžia „gmailcheck.py“ scenarijų kas minutę, kad gautų daug greičiau atnaujinimo pranešimą.
Tai viskas, kas ten yra! Galite išbandyti savo „Python“ scenarijus, ištraukdami iš / ir kitokius pareiškimus iš mūsų ir bandydami juos išbandyti naujais kintamaisiais. Jei galite rasti duomenų įvesties šaltinį, galite jį paversti savo „Python“ scenarijų akcijų rinkos vidurkiais, „žiedadulkių skaičius“, „Twitter“ paminėja, jei yra API, galite ją paversti aplinkos indikatoriumi.
Galiausiai noriu padėkoti visiems dideliems ištekliams, kuriuos dirbau šiame projekte. Tai buvo šiek tiek daugiau nei dešimtmetį nuo to laiko, kai aš aktyviai rašiau programas ir paėmė keletą smūgių, kad gautų dulkes ir rūdis. „/ R / LearnPython“ dalyviai padėjo man prisiminti „Weather Underground“ API išvestį, studijavę, kaip „Michael“ per „Mitch Tech“ nagrinėjo „Gmail Atom“ pašarą, suprojektuotą LedBorg lengvai, ir mokytis „Python“ mokymosi modulių Kodo akademijoje buvo puikus būdas pasiimti pagrindinę kalbos sintaksę ir struktūrą.