Sukurkite LED indikatorių naudodami Raspberry Pi (el. paštui, orams ar bet kam)



„Raspberry Pi“ yra puiki kompaktiška platforma, prie kurios galima pritvirtinti indikatoriaus lemputę įvairiems projektams – pranešimams apie orą, naujiems el. laiškams ir kt. Skaitykite toliau, kaip parodysime, kaip prijungti LED modulį prie „Pi“ ir nustatyti kai kuriuos pagrindinius pranešimus. .

Kodėl aš noriu tai padaryti?

Nes tai yra smagu. Skirtingai nuo daugelio mūsų mokymo programų, kurių viršuje pateikiame nedidelį suliejimą, tiksliai nurodantį, kokią naudą gausite iš projekto, šiuo atveju suliejimas yra gana trumpas, nes nauda yra tiesiog smagu.





Raspberry Pi yra puikus įrenginys, su kuriuo galima žaisti, eksperimentuoti su elektronika ir išmokti programuoti. Niekas poreikiai Pavyzdžiui, aplinkos lietaus indikatorius jų virtuvėje, tačiau jį sukurti yra smagus užsiėmimas ir puikus priminimas, kad galimai audringomis dienomis reikia atsinešti skėtį.

Ko man reikia?

Jei norite sekti pamoką, jums reikės kelių dalykų. Pirma, manome, kad jau sekėte ankstesnę mokymo programą: HTG vadovas, kaip pradėti naudotis Raspberry Pi (ir taip turėkite pagrindus, kaip įdiegti Rasbian mūsų Raspberry Pi).



Jei norite įgyvendinti šį projektą su biudžetu, galime drąsiai teigti, kad naujausias Raspberry Pi modelis yra gerokai perteklinis šiam darbui, todėl raginame nupūsti dulkes nuo seno Raspberry Pi, kurį nustūmėte. spintoje arba pasiimti pigų naudotą iš eBay ar pan. Biudžeto požiūriu ilgas „Raspberry Pi 1 Model A“ arba „Model B“, kurį „eBay“ įsigijo už 10–15 USD, puikiai tinka šiam projektui, o ne perkant visiškai naują dabartinės kartos Pi už 35 USD.

Skelbimas

Be funkcionalaus Pi įrenginio su įdiegtu Raspbian, jums reikės šių dalykų:

Pastaba: Skaidrus / matinis Pi dėklas yra visiškai neprivalomas, tačiau jei šiuo metu naudojate nepermatomą dėklą, LED indikatorius bus paslėptas viduje. Dėkle turėsite išpjauti skylę, kad šviesa išeitų, arba naudoti GPIO ilginamąjį laidą su pertraukimo rinkiniu, pvz. šis iš Adafruit Industries - Pririšti LedBorg prie Raspberry Pi. Nors naudojant atjungimo kabelį prie projekto išlaidų pridedama apie 8 USD, tai suteikia daugiau galimybių pritaikyti galutinį produktą, nes galite lengviau įdėti šviesos diodą į daiktus arba po tuo, ką norite apšviesti.

„LedBorg“ montavimas

Nors jūs tikrai galėtumėte sukurti visiškai nuo nulio LED indikatorių (o paieškos variklio užklausa atsiras daug žmonių, kurie tai padarė), Piborg organizacija gamina tokį kompaktišką ir nebrangų LED modulį LedBorg, kad mes negalėjome Nenaudokite jo kaip mūsų Raspberry Pi LED indikatoriaus projekto pagrindo.

Modulio įdiegimas yra lengvas, nes jis skirtas tiesiai ant Pi GPIO kaiščių. Pirmiausia išjunkite „Pi“ ir atidarykite dėklą.

Svarbiausia diegimo proceso dalis yra nukreipti modulį taip, kad LedBorg piktograma būtų arčiausiai Raspberry Pi plokštės RCA modulio (todėl LedBorg kraštas būtų lygus Pi plokštės kraštams su iškyša. LedBorg dalis, kabanti virš Pi lentos, o ne nuo krašto). Žiūrėkite aukščiau esančią nuotrauką.

Kol Pi plokštė atidaryta, dabar būtų puikus laikas uždengti integruotus LED indikatorius (šalia USB prievadų), ypač jei naudojate skaidrų dėklą. Nenorite, kad būtų painu skaityti „LedBorg“ indikatorių, nes maitinimo ir tinklo indikatoriaus lemputės yra tokios ryškios.

Skelbimas

Mes padengėme savo baltos elektros juostos sluoksniu. Tai pakankamai pritemdė juos, kad vis tiek galėtume jas remtis, tačiau jie buvo tiek blausesni nei LedBorg, kad nebeblaško dėmesio.

Įdiegę „LedBorg“ ir, pasirinktinai, uždengę Pi LED indikatorius elektrine juosta, laikas uždaryti dėklą. Prieš pereidami prie kito mokymo etapo, paleiskite Pi.

LedBorg programinės įrangos diegimas

„PiBorg“ siūlo puikų „LedBorg“ programinės įrangos paketą, kuriame yra ir GUI valdiklis, ir tvarkyklės, leidžiančios pasiekti „LedBorg“ iš komandinės eilutės.

Prieš pradėdami, turite įsitikinti, kad pasirinkote tinkamą Rasbian versijos ir Raspberry Pi plokštės versijos # paketą.

Jei jūsų Raspberry Pi plokštėje nėra tvirtinimo angų, tai yra 1 versija. Jei jūsų Raspberry Pi yra tvirtinimo angų (esančių prie USB prievadų ir tarp maitinimo ir HDMI prievado), tai yra 2 versija. Taip pat turite žinoti branduolio versiją. jūsų Rasbian diegimo. Atidarykite terminalą ir įveskite šią komandą, kad patikrintumėte:

uname -r

Kai turėsite peržiūros numerį ir branduolio numerį, galite apsilankykite čia skiltyje „Paketai“. norėdami paimti paketo nuorodą. Šiuo atveju naudojame 1 versijos plokštę su 3.6.11 branduoliu, kad gautume raspbian-2013-02-09-rev1.zip failą.

Skelbimas

Norėdami įdiegti visas gėrybes, turime atidaryti „Pi“ terminalą. ir tada įveskite šias komandas, kad įdiegtumėte LedBorg paketą.

Pastaba: Trečiojoje komandoje URL turite pakeisti savo plokštės/branduolių derinio paketo URL.

mkdir ~/ledborg-setup
cd ~/ledborg-setup
wget -O setup.zip http://www.piborg.org/downloads/ledborg/raspbian-2013-02-09-rev1.zip
išpakuokite setup.zip
chmod +x install.sh
./install.sh

Šiuo metu jūs turite „LedBorg“ tvarkyklių ir pačių tvarkyklių GUI paketą. „Raspbian“ darbalaukyje pamatysite GUI paketo piktogramą:

Eikite į priekį ir spustelėkite LedBorg piktogramą, kad paleistumėte GUI paketą. Būsite traktuojami kaip spalvų parinkiklio sąsaja:

Dabar pats tinkamiausias laikas įsitikinti, ar jūsų modulis veikia. Pasirinkite bet kokią spalvą, išskyrus juodą, kad išbandytumėte. Išbandysime pasirinkdami keletą spalvų:

Atrodo gerai! Jis yra šviesus, o matinis korpuso plastikas, kurį užsakėme projektui, pasižymi vidutine sklaida. Jei norite daugiau žaisti su LED moduliu prieš tęsdami, spustelėkite Demo režimas:

Skelbimas

Demonstraciniu režimu galite perjungti visas spalvas įvairiu greičiu, patikrinti aukštą / mažą išvestį ir kitaip perjungti LED modulį.

Čia, demonstracinio režimo skiltyje, taip pat galite paversti savo LedBorg pirmuoju iš daugelio indikatorių. Pasirinkus CPU skiltyje Spalvos, šviesos diodas pradės keistis iš žalios į geltoną į raudoną, kad parodytų Raspberry Pi ARM procesoriaus apkrovą. Rekomenduojame pakeisti greitį į lėtą – Fast atnaujina šviesos diodą per greitai ir procesoriaus indikatorius blaško dėmesį, o ne naudingas.

Be GUI sąsajos spalvoms pasirinkti, galite pasirinkti spalvas iš terminalo naudodami RGB reikšmes. Atidarykite terminalą ir įveskite šią komandą, kad išjungtumėte šviesos diodą:

echo '000' > /dev/ledborg

„LedBorg“ apdoroja RGB reikšmes taip, kad 0 reiškia, kad kanalas išjungtas, 1 reiškia, kad kanalas yra pusės galios, o 2 reiškia, kad kanalas yra pilnas. Taigi, pavyzdžiui, 001 raudonajam kanalui būtų nustatyta 0%, žaliajam - 0%, o mėlynam - 50% galios.

Pakeiskite reikšmę į 002 ir LED išvestis liks mėlyna, bet taps ryškesnė, nes mėlynas kanalas dabar yra 100 %. Pakeiskite reikšmę į 202, o raudona ir mėlyna visu pajėgumu derinamos, kad būtų purpurinė spalva.

Dabar, kai žinome, kaip valdyti šviesos diodą rankiniu būdu, pažiūrėkime, kaip naudoti scenarijus, kad šviesos diodas iš paprastos šviesos paverstų tikru indikatoriumi.

„LedBorg“ kaip lietaus indikatoriaus konfigūravimas

Šioje pamokos dalyje sujungsime keletą dalykų, kad mūsų LedBorg LED modulis būtų lietaus indikatorius, pagrįstas mūsų vietos orų prognozėmis. Naudosime Python scenarijų, kad iškviestume orų API, kuri savo ruožtu nuskaitys dienos lietaus tikimybę, o tada perjungs šviesos diodą iš išjungto į ryškiai mėlyną, kad parodytų prognozuojamą lietų.

Skelbimas

Pirmiausia turime gauti „Weather Underground“ API prieigos raktą. Asmeniniam naudojimui ir nedideliems plėtros projektams API yra nemokama. Apsilankykite Weather API registracijos puslapyje čia ir prisiregistruokite gauti API raktą.

Kai turėsite API raktą, apsilankykite „Weather Underground“ ir ieškokite miesto, kurį norite stebėti. Mūsų atveju mes stebėsime San Fransiską, Kaliforniją. San Fransisko prognozės puslapio URL yra:

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

Mūsų tikslams svarbi dalis yra paskutinė URL dalis: /CA/San_Francisco.html. Tai naudosime redaguodami API įrankio prognozės URL. Bazinis URL yra:

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

Galite sugeneruoti bet kurio JAV miesto prognozę įvesdami API raktą, dviejų raidžių valstybės kodą ir miesto pavadinimą iš URL, kurį ištraukėte iš „Weather Underground“ paieškos rezultatų.

Įdėję API URL su API raktu ir valstija / miestu, galite redaguoti šį Python scenarijų sukurdami naują tekstinį dokumentą savo Pi naudodami Leafpad ir įklijuodami į jį šį kodą:

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

# Toliau pateikiama derinimo vertė.
# Redaguokite maišą ir pakeiskite
# sveikasis skaičius nuo 0 iki 100, kurį norite patikrinti
# LED atsakas.

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

Skelbimas

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

python wunderground.py

Jei tinkamai įvedėte API raktą ir valstijos / miesto kodus, jis turėtų atšaukti atsakymą, kuris atrodo taip:

Jei jūsų vietovėje numatomi krituliai, jūsų LedBorg produkcija turėtų atrodyti taip:

Dabar laukti lietingos dienos tinkamai išbandyti scenarijų būtų nuobodu. Jei šiandien jūsų vietovėje lietaus tikimybės nėra ir norite, kad užsidegtų šviesos diodas, redaguokite wunderground.py scenarijų ir pakeiskite pop = pop passthrough reikšmę 13 eilutėje didesne nei 20 reikšme, pvz., 60, kurią mūsų grįžo prognozė. Tiesiog nepamirškite pakeisti eilutės į pop = pop, kai baigsite.

Paskutinis veiksmas yra nustatyti cron užduotį, kad būtų automatiškai paleistas scenarijus, kurį ką tik išsaugojome reguliariais intervalais, kad LED indikatorius būtų nuolatinis. Kadangi ši užduotis reikalinga ir šiam scenarijui, ir toliau esančiam el. pašto indikatoriui, parodysime, kaip nustatyti kitą scenarijų, nustatyti cron užduotį.

„LedBorg“ konfigūravimas kaip „Gmail“ indikatorius

Kam nepatinka dopamino taisymas, gaunamas gautuosiuose pamačius naują el. laišką? Šioje pamokos dalyje parodysime, kaip naudoti LedBorg kaip naują Gmail indikatorių. Kaip ir praėjusį kartą, mes derinsime išorinę įvestį (šiuo atveju „Atom“ tiekimą, o ne API) ir paprastą scenarijų, kad valdytume mūsų LED.

Skelbimas

Diegdami turime šiek tiek išplėsti Python diegimo funkcionalumą FeedParser , Python RSS/Atom informacijos santraukos skaitymo įrankis. Atidarykite terminalą ir įveskite šią komandą:

sudo easy_install feedparser

Kai diegimas bus baigtas, galime pradėti kurti „Gmail“ tikrinimo scenarijų. Vėlgi, naudodami Leafpad, įklijuokite šį tekstą į redaktorių. Pakeiskite vartotojo vardą ir slaptažodį, kad jie atitiktų „Gmail“ paskyros, kurią norite patikrinti, vartotojo vardą ir slaptažodį.

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

# Toliau pateikiama derinimo vertė.
# Redaguokite maišą ir pakeiskite
# sveikasis skaičius iki 0 arba 1, kurį norite patikrinti
# LED atsakas.

# laiškas = 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!')

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

python gmailcheck.py

Jei Gmail gautuosiuose yra el. laiškas, šviesos diodas užsidegs žaliai ir gausite tokį atsakymą:

Jei jūsų Gmail pašto dėžutėje yra laiškų, jūsų LedBorg atrodys taip:

Kaip ir lietaus tikrinimo scenarijus, įtraukėme derinimo vertę. Jei neturite naujo el. laiško, galite išsiųsti sau el. laišką, kad gautųjų skaičių padidintumėte iki 1, arba galite redaguoti komentarų maišą ir pakeisti derinimo eilutę į paštas = 1, kad išbandytumėte scenarijų. Baigę bandymą nepamirškite grąžinti linijos.

Skelbimas

Pereikite į kitą mokymo programos skyrių, kad nustatytumėte „Gmail“ scenarijų, kad jis veiktų pagal tvarkaraštį.

Cron darbo nustatymas scenarijui paleisti

Dabar, kai turime du scenarijus, su kuriais galime žaisti, turime nustatyti cron darbą, kad galėtume juos paleisti visą dieną, kad LED indikatorius veiktų.

Pirmas dalykas, kurį norime padaryti, yra išjungti šviesos diodą, jei jis šiuo metu įjungtas iš ankstesnių eksperimentų. Terminalo tipas:

echo 000 > /dev/ledborg

Kol vis dar esate komandinėje eilutėje, galite atidaryti cron redaktorių. Jei niekada anksčiau nesate sukūrę cron darbo, primygtinai rekomenduojame skaitykite mūsų vadovą, kaip jį naudoti čia . Tai reiškia, kad mes padėsime jums čia nustatyti pagrindinį tvarkaraštį.

Terminalo tipas:

sudo crontab -e

Tai atvers Raspbian cron lentelę Nano teksto rengyklėje. Rodyklių klavišais slinkite žemyn iki pat apačios. Čia mes nustatysime pasikartojančią cron užduotį mūsų Python scenarijų.

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

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

Skelbimas

Norėdami išeiti, paspauskite CTRL+X; pasirinkite yes, kad išsaugotumėte ir perrašytumėte esamą cron lentelę. Vertė, kurią įvedėme į cron lentelę */5 * * * * nustato, kad scenarijus būtų paleistas kas 5 minutes amžinai.

Kas 5 minutės yra puikus laiko tarpas scenarijui, kuris tikrina, ar nėra prognozuojamo lietaus (galite net ginčytis, kad jis šiek tiek per agresyvus), bet jei bandote neatsilikti nuo el. laiško, pranešimo laikotarpis yra šiek tiek per ilgas. . Jei nustatote „Gmail“ pranešimų scenarijaus tvarkaraštį, cron lentelėje įveskite šią eilutę:

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

Šis įrašas kas minutę paleidžia gmailcheck.py scenarijų, kad būtų greičiau pranešta apie atnaujinimą.


Tai viskas! Galite eksperimentuoti su savo Python scenarijais pašalindami if/else teiginius iš mūsų ir išbandydami juos naudodami visiškai naujus kintamuosius. Jei galite rasti duomenų įvesties šaltinį, galite paversti jį kintamuoju savo Python scenarijuje – biržos vidurkiais, žiedadulkių skaičiumi, Twitter minimu, jei tam yra API, galite jį paversti aplinkos LED indikatoriumi.

Galiausiai noriu padėkoti už visus puikius išteklius, kuriuos panaudojau dirbdamas su šiuo projektu. Praėjo šiek tiek daugiau nei dešimtmetis nuo tada, kai aktyviai rašau programas, ir prireikė kelių smūgių, kad pašalintų dulkes ir rūdis. Prisidėjusieji adresu /r/LearnPython padėjo man sugadinti API išvestį „Weather Underground“, tiriant, kaip Michaelas dirba „Mitch Tech“. tvarkėsi su „Gmail Atom“ sklaidos kanalu palengvino jo analizavimą LedBorg ir studijuoja Python mokymosi modulius Code Academy buvo puikus būdas perimti pagrindinę kalbos, kurios niekada anksčiau nenaudojau, sintaksę ir struktūrą.

SKAITYTI KITAS Jasono Fitzpatricko profilio nuotrauka Jasonas Fitzpatrickas
Jasonas Fitzpatrickas yra „LifeSavvy“, „How-To Geek“ seserinės svetainės, kurioje daugiausia dėmesio skiriama gyvenimo įsilaužimams, patarimams ir gudrybėms, vyriausiasis redaktorius. Jis turi daugiau nei dešimtmetį leidybos patirtį ir yra parašęs tūkstančius straipsnių „Review Geek“, „How-To Geek“ ir „Lifehacker“. Prieš prisijungdamas prie How-To Geek, Jasonas dirbo Lifehacker's Weekend redaktoriumi.
Skaityti visą biografiją

Įdomios Straipsniai