Kodėl aš noriu tai padaryti?
Nes tai yra 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ą. Niekas poreikiai Pavyzdžiui, virtuvėje yra aplinkos lietaus indikatorius, tačiau pastatymas yra įdomus užsiėmimas ir puikus priminimas, kad jūsų lietussargas su jumis galėtų kelti audrų dienas.
Ką man reikia?
Kad galėtumėte sekti kartu su 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 norėtumėte šį projektą atlikti 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 senus "Raspberry Pi" dulkes spinte arba pasiimkite pigiai panaudotą vien tik "eBay" ar pan. 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, įdiegę funkcinį "Pi" įrenginį su "Raspbian", jums reikės šių dalykų:
- 1 "LedBorg" modulis (~ $ 5.00 su 4 dol. Pristatymu iš Jungtinės Karalystės į JAV, dirba su visais "Raspberry Pi" modeliais).
- 1 "Clear Raspberry Pi Case" suderinamas su jūsų konkrečiu Pi modeliu, kaip šis "Raspberry Pi 1" B modelio pavyzdys.
Pastaba: Aiškus / matinis "Pi" korpusas yra visiškai neprivalomas, bet 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
Modulio įdiegimas yra greitas, nes jis suprojektuotas taip, kad tilptų tiesiai prie "Pi" GPIO kaiščių. 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 "Raspberry Pi" plokštės RCA modulio (taigi "LedBorg" kraštas yra lygiagretus "Pi" plokštės kraštams su "overhanging" dalis "LedBorg" kabo virš "Pi" lentos, o ne nuo krašto). Ž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 mūsų 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 dėmesio.
Kai jūs turite įdiegtą "LedBorg" ir pasirinkę "Pi" LED indikatorius su elektrine juosta, atėjo laikas uždaryti korpusą atgal. Įkelkite savo Pi aukštyn prieš pereidami į kitą mokymo pakopą.
"LedBorg" programinės įrangos įdiegimas
Prieš pradėdami, turite įsitikinti, kad esate sugriebęs tinkamą "Rasbian" versiją ir "Raspberry Pi" pataisos # paketą.
Jei jūsų "Raspberry Pi" lentoje nėra montavimo skylių, tai yra 1 versija. Jei jūsų "Avokadas" Pi yra montavimo skylių (esančių USB prievaduose ir tarp maitinimo ir HDMI prievado), tai yra 2 redagavimas. Taip pat turite žinoti branduolio versiją savo "Rasbian" įrenginio. Atidarykite terminalą ir įveskite šią komandą, kad patikrintumėte:
uname -r
Kai turite redagavimo numerį ir branduolio numerį, galite apsilankyti skyriuje "Paketai", 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.
Norint įdiegti visas gėles, mes turime atidaryti "Pi" terminalą. tada įdiekite LedBorg paketo diegimo šias komandas.
Pastaba: Jūs turite pakeisti trečiosios komandos URL adresą, nurodydamas savo lentos / branduolio derinio paketo URL.
mkdir ~/ledborg-setup cd ~/ledborg-setup wget -O setup.zip https://www.piborg.org/downloads/ledborg/raspbian-2013-02-09-rev1.zip unzip setup.zip chmod +x install.sh./install.sh
Šiuo metu dabar turite GUI aplanką, skirtą "LedBorg" tvarkyklėms ir patys įdiegtiems vairuotojams. Raspbian darbalaukyje pamatysite GUI aplanko piktogramą:
Tai yra skyriuje "Demo režimas", pagal kurią jūs taip pat galite paversti "LedBorg" pirmąja iš daugelio 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 to, kad naudosite GUI sąsają, kad pasirinktumėte spalvas, galite pasirinkti spalvas iš terminalo, naudodami RGB vertes. Atidarykite terminalą ir įveskite šią komandą, kad išjungtumėte LED:
echo '000' > /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 mes žinome, kaip manipuliuoti LED rankiniu būdu, pažvelkime į scenarijų naudojimą, kad mūsų šviesos diodas būtų įjungtas nuo paprastos šviesos iki faktinio indikatoriaus.
Jūsų "LedBorg" konfigūravimas kaip lietaus rodiklis
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 turėsite 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:
https://www.wunderground.com/US/CA/San_Francisco.html
Svarbi mūsų tikslų dalis yra paskutinė URL dalis: /CA/San_Francisco.html. Mes ketiname tai naudoti norėdami redaguoti API įrankio prognozuojamą URL. Pagrindinis URL yra:
https://api.wunderground.com/api/YOUR API KEY/forecast/q/STATE/CITY.json
Galite generuoti prognozę bet kuriame JAV mieste, įveskite savo API raktą, abiejų raidžių valstijos kodą ir miesto pavadinimą iš URL, kurį ištraukėte iš savo "Weather Underground" paieškos rezultatų.
Kai URL-adresas yra API, kuriame yra įvestas jūsų API raktas ir valstybės / miestas, tuomet galėsite redaguoti šį "Python" scenarijų, sukurdami naują tekstinį dokumentą savo "Pi" naudojant "Leafpad" ir įtrauksite į jį šį kodą:
from urllib2 import urlopen import json
req = urlopen('https://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šos ir keiskite # sveikasis skaičius išbandyti 0-100 # 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!')
Išsaugokite failą kaip wunderground.py kataloge / home / pi /. Atidarykite terminalą ir įveskite šią komandą:
python wunderground.py
Jei tinkamai įvedėte savo API raktą ir valstybės / miesto kodus, jis turėtų atmesti atsakymą, kuris atrodo taip:
Paskutinis veiksmas - nustatyti cron'o darbą, kad automatiškai paleistumėte tik ką laiką išsaugotą scenarijų, 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" konfigūravimas kaip "Gmail" rodiklis
Mums reikia išplėsti mūsų "Python" diegimo funkciją, įdiekdami "FeedParser", Python RSS / Atom kanalo skaitymo įrankį. Atidarykite terminalą ir įveskite šią komandą:
sudo easy_install feedparser
Kai diegimas bus baigtas, mes 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.
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šos ir keiskite # sveikasis skaičius išbandyti 0 arba 1 # LED atsakas.
# mail = 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 jūsų "Gmail" gautųjų el. Laiške sėdi, šviesos diodas pasidaro žalios spalvos, todėl gausite tokį atsakymą:
Pasukite į kitą mokymo paketą, kad savo "Gmail" scenarijų paleistumėte pagal tvarkaraštį.
"Cron" užduoties paleisti scenarijų nustatymas
Pirmas dalykas, kurį norime padaryti, yra išjungti šviesos diodą, jei jis šiuo metu yra iš mūsų ankstesnių eksperimentų. Terminalo tipo:
echo “000” > /dev/ledborg
Kol 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" stalą 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 šią eilutę į cron lentelę:
*/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 šiek tiek pernelyg agresyvus, bet jei bandote išlaikyti savo el. Laišką, tai yra pernelyg ilgas pranešimas. Jei nustatote "Gmail" pranešimų scenarijų grafiką, įveskite šią eilutę lentelėje cron:
*/1 * * * * python /home/pi/wunderground.py
Šis įrašas paleidžia gmailcheck.py scenarijų kiekvieną minutę, kai pateikiamas žymiai greitesnis naujinimo pranešimas.
Štai viskas! 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 puikius 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. "Contributors at / r / LearnPython" padėjo man išsiaiškinti apie "Weather Underground" API išvestį, tyrinėjant, kaip Michaelas per "Mitch Tech" nagrinėjo "Gmail Atom" paštą, paruoštą LedBorg lengvai, ir mokytis kodo akademijos "Python" mokymosi modulių. puikus būdas paimti pagrindinę kalbos, kuriai anksčiau niekada nebuvo naudojama, sintaksę ir struktūrą.