A Raspberry Pi egy kompakt platformot kínál, amelyhez jelzőlámpát csatolhat mindenféle projekthez - időjárás-értesítés, új e-mailek stb. .
Miért akarom ezt megtenni?
Mert vicces. Ellentétben sok oktatóanyagunkkal, ahol egy kis részletet tartalmazunk a tetején, pontosan meghatározva, hogy milyen előnyökkel jár a projekt, a kivonat ebben az esetben elég rövid, mert az előny egyszerűen szórakozás.
A Raspberry Pi tökéletes eszköz, amellyel játszhatsz, kísérletezhetsz az elektronikával és megtanulhatsz programozni. Senki igények például a konyhájukban lévő környezeti esőjelző, de az egyik felépítése szórakoztató gyakorlat és remek emlékeztető arra, hogy viharos napokon magával vigye az esernyőt.
Mire van szükségem?
A bemutató nélkül néhány dologra van szükség. Először feltételezzük, hogy már követte korábbi oktatóanyagunkat: A HTG útmutató a Raspberry Pi használatának megkezdéséhez (és így áttekinthetők a Raspbian telepítése a Raspberry Pi-re).
Ha ezt a projektet költségvetéssel kívánja megvalósítani, magabiztosan elmondhatjuk, hogy a Raspberry Pi legújabb modellje jelentős túlterhelést jelent a munkához, és javasoljuk, hogy fújja le a port egy régi Raspberry Pi-ről, amelyet betolt a szekrényben, vagy vegyen fel egy olcsó használt egyszeri eBay-t vagy hasonlót. Költségvetési szempontból az a hosszú fogazat, hogy az eBay-ről 10-15 dollárért lekapott Raspberry Pi 1 A vagy B modell tökéletesen megfelel ennek a projektnek, mint egy teljesen új, 35 dolláros jelenlegi generációs Pi vásárlása.
Amellett, hogy egy funkcionális Pi egységet telepített Raspbian-ra, a következő dolgokra lesz szüksége:
- 1 LedBorg modul (~ 5,00 USD 4 dolláros szállítással az Egyesült Királyságból az Egyesült Államokba, minden Raspberry Pi modellhez használható).
- 1 A tiszta Raspberry Pi tok kompatibilis az adott Pi modellel mint ez a Raspberry Pi 1 Model B tok .
Jegyzet: A tiszta / matt Pi tok teljesen opcionális, de ha jelenleg átlátszatlan tokot használ, akkor a LED-je el lesz rejtve. Vagy ki kell vágnia egy lyukat a tokjába, hogy kialudjon a lámpa, vagy GPIO hosszabbító kábelt kell használnia kitörőkészlettel - például ez az Adafruit Industries-től - hogy összekösse a LedBorg-ot Raspberry Pi-jével. Míg a kitörő kábel használata körülbelül 8 dollárral jár a projekt költségén, nagyobb lehetőséget kínál a végtermék testreszabására, mivel könnyebben elhelyezheti a LED-et a dolgok belsejében vagy valami alatt, amelyet meg szeretne világítani.
A LedBorg telepítése
Bár minden bizonnyal fel tudna építeni magának egy teljesen a semmiből származó LED-jelzőt (és a keresőmotor megkeresése rengeteg embert keres fel, akik ezt megtették), a Piborg szervezete olyan kompakt és olcsó LED-modulot, a LedBorg-ot gyárt, amelyet nem tudtunk megtenni. Ne álljon ellen, hogy Raspberry Pi LED indikátor projektünk alapjául használja.
A modul telepítése gyors, mivel úgy tervezték, hogy közvetlenül illeszkedjen a Pi GPIO-csapjaihoz. Először kapcsolja ki a Pi-t, és nyissa ki a tokot.
A telepítési folyamat legfontosabb része az, hogy a modult úgy orientálja, hogy a LedBorg ikon legközelebb álljon a Raspberry Pi táblán található RCA modulhoz (és így a LedBorg éle egy szintben legyen a Pi tábla széleivel a túlnyúlóval. a LedBorg része a Pi tábla felett lóg, és nem a szélétől). Lásd a fenti fényképet.
Noha nyitva van a Pi tábla, most kiváló alkalom lenne fedélzeti LED-jelzőket lefedni (az USB-portok mellett), különösen, ha tiszta tokot használ. Nem akarja, hogy zavaró legyen a LedBorg jelzőjének elolvasása, mert az áramellátás és a hálózat jelzőfényei olyan erősek.
A mieinket fehér elektromos szalag réteggel borítottuk be. Ez eléggé elhomályosította őket ahhoz, hogy még mindig hivatkozhassunk rájuk, de annyira halványabbak voltak, mint a LedBorg, és ez már nem zavarta el a figyelmüket.
Miután telepítette a LedBorg-ot, és opcionálisan lefedte a Pi LED-jelzőit elektromos szalaggal, ideje lezárni a tokot. Indítsa el a Pi-t, mielőtt áttérne az oktatóprogram következő szakaszára.
A LedBorg szoftver telepítése
A PiBorg nagyszerű szoftvercsomagot kínál a LedBorg számára, amely tartalmaz egy GUI vezérlőt, valamint illesztőprogramokat a LedBorg parancssorból történő eléréséhez.
Mielőtt nekilátnánk, meg kell győződnie arról, hogy a Rasbian verziójának megfelelő csomagot és a Raspberry Pi kártya verziójának # változatát kapja meg.
Ha a Raspberry Pi kártyán nincsenek rögzítési lyukak, akkor ez az 1. verzió. Ha a Raspberry Pi-nek vannak rögzítő furatai (az USB-portoknál, valamint a táp- és a HDMI-port között), akkor ez a 2. verzió. Ismernie kell a kernel verzióját is. a Rasbian telepítésének. Nyissa meg a terminált, és írja be a következő parancsot az ellenőrzéshez:
uname -r
Miután megvan a Revision és a kernel száma, megteheti keresse fel itt a Csomagok részt hogy megragadd a csomagod linkjét. Esetünkben a Revision 1 táblát használjuk a 3.6.11 kernellel, így megragadjuk a raspbian-2013-02-09-rev1.zip fájlt.
Az összes finomság telepítéséhez meg kell nyitnunk a terminált a Pi-n. majd írja be a következő parancsokat a LedBorg csomag telepítéséhez.
Jegyzet: A harmadik parancs URL-jét a fórum / kernel kombináció csomagjának URL-jével kell kicserélnie.
mkdir ~ / ledborg-setup
cd ~ / ledborg-setup
wget -O setup.zip http://www.piborg.org/downloads/ledborg/raspbian-2013-02-09-rev1.zip
kicsomagolja a setup.zip fájlt
chmod + x install.sh
./install.sh
Ekkor már telepítve van a LedBorg illesztőprogramok és maguk az illesztőprogramok GUI burkolója. A Raspbian asztalon megjelenik egy ikon a GUI burkolóhoz:
Menj előre, és kattints a LedBorg ikonra a GUI burkoló elindításához. A színválasztó kezelőfelületét így kezeljük:
Itt az alkalom, hogy megbizonyosodjon a modul működőképességéről. Válassza ki a színt, kivéve a feketét, és próbálja ki. Tesztelni fogjuk néhány szín kiválasztásával:
Jól néz ki! Világos, és a projektbe megrendelt tok matt műanyagja mérsékelt diffúziót kínál. Ha tovább szeretne játszani a LED-modullal, mielőtt továbblépne, kattintson a Bemutató mód gombra:
Bemutató üzemmódban az összes színt különféle sebességgel lapozhatja, megnézheti a magas / alacsony kimenetet, és máskülönben a LED modult át tudja tenni.
Itt van a Bemutató mód részben, ahol a LedBorg-ot is a sok mutató közül az elsővé teheti. Ha kiválasztja a CPU-t a Színek részben, akkor a LED zöldről sárga-pirosra változik, jelezve a Raspberry Pi ARM processzorának terhelését. Javasoljuk, hogy változtassa a sebességet lassúvá, miközben Ön itt van - Gyorsan túl gyorsan frissíti a LED-et, és a CPU jelzője figyelemelterelővé teszi a hasznos helyett.
Amellett, hogy a GUI felületen keresztül választja ki a színeket, az RGB-értékek segítségével kiválaszthatja a színeket a terminálból. Nyissa meg a terminált, és írja be a következő parancsot a LED kikapcsolásához:
echo "000"> / dev / ledborg
A LedBorg RGB-értékeinek kezelése az, hogy 0 azt jelenti, hogy a csatorna ki van kapcsolva, az 1 azt jelenti, hogy a csatorna félenergiás, és 2 azt jelenti, hogy a csatorna teljes teljesítményű. Tehát például a 001 a vörös csatornát 0% -ra, a zöld csatornát 0% -ra, a kék csatornát pedig 50% -ra állítja.
Módosítsa az értéket 002-re, és a LED kimenete kék marad, de világosabb lesz, mert a kék csatorna most 100% -os kimenettel rendelkezik. Változtassa az értéket 202-re, és a vörös és a kék teljes energiával együtt bíborvörös színt kap.
Most, hogy tudjuk, hogyan kell manuálisan kezelni a LED-et, nézzük meg a szkriptek használatát, hogy LED-jünket egyszerű lámpából tényleges jelzővé alakítsuk.
A LedBorg konfigurálása esőjelzőként
Az oktatóanyag ezen részén több dolgot fogunk átfésülni annak érdekében, hogy a LedBorg LED modulunkat esőjelzővé alakítsuk a helyünk időjárás-előrejelzése alapján. Python szkript használatával meghívjuk az időjárás API-t, amely viszont felolvassa az eső esélyét a napra, majd a LED-et kikapcsolja élénkkékre az előrejelzett eső jelzésére.
Először is meg kell szereznünk egy API hozzáférési kulcsot a Weather Undergroundhoz. Személyes használatra és kis fejlesztési projektekre az API ingyenes. Itt keresse fel a Weather API regisztrációs oldalát és regisztráljon egy API kulcsra.
Miután megkapta az API kulcsát, látogasson el a Weather Undergroundba, és keresse meg a megfigyelni kívánt várost. Esetünkben figyelni fogjuk a San Fransisco-t, Kalifornia. A San Fransisco előrejelzési oldalának URL-je:
http://www.wunderground.com/US/CA/San_Francisco.html
Céljaink szempontjából fontos rész az URL utolsó része: /CA/San_Francisco.html. Ezt fogjuk használni az API eszköz előrejelzési URL-jének szerkesztéséhez. Az alap URL a következő:
http://api.wunderground.com/api/OUR API KEY / előrejelzés / q / STATE / CITY.json
Bármelyik amerikai városra elkészítheti az előrejelzést az API-kulcs, a kétbetűs államkód és a városnév megadásával abból az URL-ből, amelyet a Weather Underground keresési eredményekből kapott.
Miután megadta az API URL-t az API kulcsával és az állapot / város beillesztésével, akkor szerkesztheti a következő Python szkriptet úgy, hogy a Leafpad segítségével létrehoz egy új szöveges dokumentumot a Pi-n, és beilleszti a következő kódot:
az urllib2 import urlopenből
import json
req = urlopen ('http://api.wunderground.com/api/OUR API KEY / előrejelzés / q / STATE / CITY.json ')
parsed_json = json.load (req)
pop = int (parsed_json['forecast']['txt_forecast']['forecastday'][0]['pop'])# A következő egy hibakereső érték.
# Szerkessze ki a kivonatot és változtassa meg
# az egész szám 0-100-ig tesztelni
# a LED válasz.# pop = 0
print 'A csapadék jelenlegi esélye {}.'. formátum (pop)
# Az alapértelmezett beállítás a LED bekapcsolása
# 20% feletti eső esetén. Beállíthatja
# az "if pop> 20:" érték a kívánt módon.
ha pop> 20:
LedBorg = nyitott ('/ dev / ledborg', 'w')
LedBorg.write ('002')
írta: LedBorg
nyomtatás ('Eső!')
más:
LedBorg = nyitott ('/ dev / ledborg', 'w')
LedBorg.write ('000')
írta: LedBorg
nyomtatás ('Nincs eső!')
Mentse a fájlt wunderground.py néven a / home / pi / könyvtárba. Nyissa meg a terminált, és írja be a következő parancsot:
python wunderground.py
Ha megfelelően adta meg az API kulcsát és az állam / város kódjait, akkor annak vissza kell állítania a következőket:
Ha az Ön területére csapadékot jósolnak, akkor a LedBorg kimenetének így kell kinéznie:
Most fárasztó lenne várni egy esős napot a szkript megfelelő tesztelésére. Ha ma nincs esély az esőre a környéken, és azt szeretné, hogy a LED kigyulladjon, szerkessze a wunderground.py parancsfájlt, és a 13. sor „pop = pop” átereszt értékét cserélje le 20-nál nagyobb értékre, például a 60-ra. hogy előrejelzésünk visszatért. Csak ne felejtsen el visszaváltani a sort „pop = pop” -ra, ha kész.
Az utolsó lépés egy cron-feladat beállítása, amely az imént mentett szkriptet rendszeres időközönként automatikusan futtatja a LED-jelző áramának fenntartása érdekében. Mivel erre a feladatra szükség van mind a szkript, mind a következő e-mail indikátor számára, kitérünk egy cron job beállítására, miután megmutattuk, hogyan állíthatja be a másik szkriptet.
A LedBorg beállítása Gmail-mutatóként
Kinek nem tetszik az a dopaminjavítás, amely az új e-mailek bejövő üzeneteinek megtekintésével jár? Az oktatóanyag ezen részében bemutatjuk, hogyan használhatja a LedBorg-ot új Gmail-mutatóként. Csakúgy, mint legutóbb, a LED-ek vezérléséhez külső bemenetet (ebben az esetben Atom-hírcsatornát API helyett) és egy egyszerű szkriptet fogunk kombinálni.
Kicsit bővítenünk kell a Python telepítésünk funkcionalitását a telepítéssel FeedParser , egy Python RSS / Atom hírolvasó eszköz. Nyissa meg a terminált, és írja be a következő parancsot:
sudo easy_install feedparser
Miután a telepítés befejeződött, beállíthatjuk, hogy létrehozzuk a Gmail ellenőrző szkriptünket. Ismét a Leafpad segítségével illessze be a következő szöveget a szerkesztőbe. Módosítsa a felhasználónevet és a jelszót, hogy megfeleljen az ellenőrizni kívánt Gmail-fiók felhasználónevének és jelszavának.
import feedparser
# Írja be Gmail felhasználónevét
# és jelszó. Ne tartalmazzon
# a @ gmail.com része
# felhasználóneved.
felhasználónév = "felhasználónév"
password = "jelszó"
mail = int (feedparser.parse ("https: //" + felhasználónév + ":" + jelszó + "@ mail.google.com/gmail/feed/atom")["feed"]["fullcount"])# A következő egy hibakereső érték.
# Szerkessze ki a kivonatot és változtassa meg
# a tesztelni kívánt 0 vagy 1 egész szám
# a LED válasz.# mail = 0
ha mail> 0:
LedBorg = nyitott ('/ dev / ledborg', 'w')
LedBorg.write ('020')
írta: LedBorg
nyomtatás ('Mail!')
más:
LedBorg = nyitott ('/ dev / ledborg', 'w')
LedBorg.write ('000')
írta: LedBorg
nyomtatás ('Nincs levél!')
Mentse a szkriptet gmailcheck.py néven. Nyissa meg a terminált, és írja be a következő parancsot:
python gmailcheck.py
Ha e-mail ül a Gmail postaládájában, a LED zöldre vált, és ilyen választ kap:
Ha van e-mail a Gmail postaládájában, akkor a LedBorg így fog kinézni:
Csakúgy, mint az esőellenőrző szkript, itt is szerepel egy hibakeresési érték. Ha nincs új e-mailje, akkor küldhet magának egy e-mailt, amellyel 1-re emelheti a beérkező levelek számát, vagy szerkesztheti a megjegyzés kivonatát, és a szkript teszteléséhez módosíthatja a hibakeresési sort "mail = 1" -re. Ne felejtse el visszaállítani a sort, amikor végzett a teszteléssel.
Ugorjon az oktatóanyag következő szakaszába, és állítsa be a Gmail szkriptjének ütemezés szerinti futtatását.
Cron job beállítása a szkript futtatásához
Most, hogy van két szkriptünk, amikkel játszhatunk, be kell állítanunk egy cron feladatot annak érdekében, hogy a nap folyamán futtassuk őket, hogy a LED jelzője folyamatosan áramban legyen.
Az első dolog, amit meg akarunk tenni, a LED kikapcsolása, ha az jelenleg be van kapcsolva a korábbi kísérleteinkből. A terminál típusánál:
echo „000”> / dev / ledborg
Amíg még mindig a parancssorban tartózkodik, megnyithatja a cron szerkesztőt. Ha még soha nem állított be cron munkát, javasoljuk itt olvashatja el a használati útmutatónkat . Ez azt jelenti, hogy végigvezetjük Önt egy alapvető menetrend beállításán.
A terminál típusánál:
sudo crontab –e
Ez megnyitja a Raspbian cron táblázatot a Nano szövegszerkesztőben. A nyílbillentyűkkel görgessen le a legalsó részig. Itt állítjuk be a Python-szkriptjeink visszatérő cron-feladatát.
Ha fel akarja állítani az rain scriptet, írja be a következő sort a cron táblába:
* / 5 * * * * python /home/pi/wunderground.py
A kilépéshez nyomja meg a CTRL + X gombot; válassza az igen lehetőséget a meglévő cron tábla mentéséhez és felülírásához. A cron táblába beírt „* / 5 * * * *” érték úgy állítja be a parancsfájlt, hogy 5 percenként, örökké futjon.
Minden 5 perc jó időtartam egy szkript számára, amely ellenőrzi az előrejelzett esőt - akár azt is állíthatná, hogy ez egy kicsit túl agresszív -, de ha az e-mailje tetején akar lenni, akkor ez egy kicsit túl hosszú az értesítésre . Ha beállítja a Gmail értesítési parancsfájljának ütemezését, írja be a következő sort a cron táblázatba:
* / 1 * * * * python /home/pi/wunderground.py
Ez a bejegyzés percenként futtatja a gmailcheck.py parancsfájlt, sokkal gyorsabb értesítésért.
Ennyi van benne! Kísérletezhet saját Python-szkriptjeivel úgy, hogy kiemeli az if / else utasításokat a mieinkből, és vadonatúj változókkal próbálja ki őket. Ha talál egy bemeneti forrást az adatokhoz, akkor azt a Python szkriptben változóvá alakíthatja - tőzsdei átlagok, pollenszámok, a Twitter megemlíti, ha van rá API, akkor azt környezeti LED-jelzővé alakíthatja.
Végül szeretnék köszönetet mondani mindazon nagy erőforrásokért, amelyeket a projekten dolgoztam. Kicsit több mint egy évtized telt el azóta, hogy aktívan írtam programokat, és néhány kopogás kellett ahhoz, hogy a por és a rozsda kiszabaduljon. A közreműködők itt: / r / LearnPython segített elmozdulnom a Weather Underground API kimenetén, és tanulmányoztam, hogy Michael hogyan lépett át a Mitch Technél a Gmail Atom hírcsatornával foglalkozott megkönnyítette a LedBorg számára történő elemzést, és a Code Academy Python tanulási moduljainak tanulmányozása nagyszerű módja annak, hogy felvegyem egy olyan nyelv alapvető szintaxisát és felépítését, amelyet még soha nem használtam.