Rakenna LED-ilmaisin Raspberry Pi:llä (sähköpostille, säälle tai muulle)



Raspberry Pi on mukava kompakti alusta, johon voit kiinnittää merkkivalon kaikenlaisia ​​projekteja varten – säätiedotuksia, uusia sähköposteja jne. Lue eteenpäin, kun näytämme, kuinka voit liittää LED-moduulin Pi:hen ja määrittää perusilmoituksia. .

Miksi haluan tehdä tämän?

Koska se on hauskaa. Toisin kuin monissa opetusohjelmissamme, joissa yläreunassa on pieni tiivistelmä, jossa kerrotaan tarkalleen, mitä hyötyä projektista saat, tiivistelmä on tässä tapauksessa melko lyhyt, koska etu on yksinkertaisesti hauskanpitoa.





Raspberry Pi on täydellinen laite leikkimiseen, elektroniikan kokeilemiseen ja ohjelmoinnin opetteluun. Ei kukaan tarpeisiin esimerkiksi ympäristön sateen ilmaisin keittiössä, mutta sellaisen rakentaminen on hauskaa harjoitusta ja hyvä muistutus tuoda sateenvarjo mukanasi mahdollisina myrskypäivinä.

Mitä minä tarvitsen?

Jotta voit seurata opetusohjelmaa, tarvitset muutamia asioita. Ensin oletetaan, että olet jo seurannut edellistä opetusohjelmaamme: HTG-opas Raspberry Pi:n käytön aloittamiseen (ja sinulla on siis perusteet Rasbianin asentamiseen Raspberry Pi:lle).



Jos aiot toteuttaa tämän projektin budjetilla, voimme vakuuttavasti kertoa, että uusin Raspberry Pi -malli on merkittävä ylilyönti tähän työhön, ja kehotamme sinua puhaltamaan pölyn pois vanhasta Raspberry Pi:stä, jonka olet työstänyt. kaapista tai hae halpa käytetty eBaysta tai vastaava. Budjettinsa kannalta pitkähampaainen Raspberry Pi 1 Model A tai Model B, joka nappasi eBaysta 10–15 dollarilla, sopii täydellisesti tähän projektiin verrattuna upouuden 35 dollarin nykyisen sukupolven Pi:n ostamiseen.

Mainos

Sen lisäksi, että sinulla on toimiva Pi-yksikkö, johon on asennettu Raspbian, tarvitset seuraavat asiat:

merkintä: Kirkas/himmeä Pi-kotelo on täysin valinnainen, mutta jos käytät tällä hetkellä läpinäkymätöntä koteloa, LED-merkkivalo on piilossa. Sinun on joko leikattava koteloosi reikä päästääksesi valo ulos tai käyttää GPIO-jatkokaapelia, jossa on irrotussarja, esim. tämä Adafruit Industriesilta - kytkeä LedBorg Raspberry Pi -laitteeseen. Vaikka irrotuskaapelin käyttö lisää noin 8 dollaria projektin kustannuksella, se tarjoaa enemmän mahdollisuuksia lopputuotteen mukauttamiseen, koska voit helpommin sijoittaa LEDin esineiden sisään tai valaisevan kohteen alle.

LedBorgin asennus

Vaikka voisit varmasti rakentaa itsellesi täysin tyhjästä LED-ilmaisimen (ja hakukonekysely löytää paljon ihmisiä, jotka ovat tehneet niin), Piborgin organisaatio tuottaa niin kompaktin ja halvan LED-moduulin, LedBorgin, että emme voineet Älä käytä sitä Raspberry Pi LED -ilmaisinprojektimme perustana.

Moduulin asentaminen on helppoa, koska se on suunniteltu sopimaan suoraan Pi:n GPIO-nastojen päälle. Ensin sammuta Pi ja avaa kotelo.

Asennusprosessin tärkein osa on, että suuntaat moduulin niin, että LedBorg-kuvake on lähinnä Raspberry Pi -levyn RCA-moduulia (ja siten LedBorgin reuna on samassa tasossa Pi-levyn reunojen kanssa ulkonemalla. LedBorgin osa roikkuu Pi-levyn päällä eikä reunasta). Katso yllä oleva valokuva.

Kun Pi-kortti on auki, nyt olisi hyvä aika peittää sisäiset LED-ilmaisimet (USB-porttien vieressä), varsinkin jos käytät läpinäkyvää koteloa. Et halua, että LedBorg-ilmaisimen lukeminen on hämmentävää, koska virran ja verkon merkkivalot ovat niin kirkkaita.

Mainos

Peitimme omamme kerroksella valkoista sähköteippiä. Tämä himmenti niitä tarpeeksi, jotta voimme edelleen viitata niihin, mutta ne olivat niin paljon himmeämpiä kuin LedBorg, ettei se enää häirinnyt.

Kun olet asentanut LedBorgin ja valinnaisesti peittänyt Pi:n LED-merkkivalot sähköteipillä, on aika sulkea kotelo takaisin. Käynnistä Pi ennen kuin siirryt opetusohjelman seuraavaan vaiheeseen.

LedBorg-ohjelmiston asentaminen

PiBorg tarjoaa erinomaisen ohjelmistopaketin LedBorgille, joka sisältää sekä graafisen käyttöliittymän ohjaimen että ajurit LedBorgin käyttämiseksi komentoriviltä.

Ennen kuin aloitamme, sinun on varmistettava, että hankit oikean paketin Rasbian-versiollesi ja Raspberry Pi -levysi versionumerolle.

Jos Raspberry Pi -levyssäsi ei ole kiinnitysreikiä, se on versio 1. Jos Raspberry Pi -levyssäsi on kiinnitysreiät (sijaitsevat USB-porttien ja virta- ja HDMI-portin välissä), se on versio 2. Sinun on myös tiedettävä ytimen versio Rasbian-asennuksestasi. Avaa pääte ja tarkista seuraava komento:

uname -r

Kun sinulla on versionumero ja ytimen numero, voit tehdä sen vieraile Paketit-osiossa täällä nappaaksesi linkin pakettiisi. Meidän tapauksessamme käytämme Revision 1 -levyä, jossa on 3.6.11-ydin, joten tartumme raspbian-2013-02-09-rev1.zip-tiedostoon.

Mainos

Jotta voimme asentaa kaikki herkut, meidän on avattava Pi:n pääte. ja anna sitten seuraavat komennot asentaaksesi LedBorg-paketin.

merkintä: Sinun on korvattava kolmannen komennon URL-osoite paketin URL-osoitteella levy/ydinyhdistelmääsi varten.

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

Tässä vaiheessa sinulla on nyt asennettuna LedBorg-ajureiden GUI-kääre ja itse ajurit. Näet Raspbian-työpöydälläsi GUI-kääreen kuvakkeen:

Siirry eteenpäin ja napsauta LedBorg-kuvaketta käynnistääksesi GUI-kääreen. Sinua kohdellaan värinvalitsimen käyttöliittymään seuraavasti:

Nyt on täydellinen aika varmistaa, että moduulisi toimii. Valitse mikä tahansa väri mustaa lukuun ottamatta ja kokeile sitä. Testaamme sitä valitsemalla muutama väri:

Näyttää hyvältä! Se on kirkas ja projektiin tilaamamme kotelon himmeä muovi tarjoaa kohtalaisen diffuusion. Jos haluat leikkiä LED-moduulilla enemmän ennen kuin jatkat, napsauta Demotila:

Mainos

Demotilassa voit selata kaikkia värejä eri nopeuksilla, tarkistaa korkean/matalan tehon ja muuten laittaa LED-moduulin läpi vauhtia.

Täällä Demotila-osiossa voit myös muuttaa LedBorgin ensimmäiseksi monista ilmaisimista. Valitsemalla CPU Colors-osiosta LED alkaa muuttua vihreästä keltaiseksi punaiseksi osoittaen Raspberry Pi:n ARM-prosessorin kuormitusta. Suosittelemme vaihtamaan Nopeus-asetukseksi Slow samalla kun olet siinä – Fast päivittää LEDin liian nopeasti ja tekee CPU-ilmaisimesta häiritsevän sen sijaan, että se olisi hyödyllinen.

Sen lisäksi, että käytät GUI-käyttöliittymää värien valitsemiseen, voit valita värit päätteestä käyttämällä RGB-arvoja. Avaa pääte ja anna seuraava komento sammuttaaksesi LED:

echo '000' > /dev/ledborg

LedBorg käsittelee RGB-arvoja siten, että 0 tarkoittaa, että kanava on pois päältä, 1 tarkoittaa, että kanava on puolitehoa ja 2 tarkoittaa, että kanava on täysitehoinen. Joten esimerkiksi 001 asettaisi punaisen kanavan 0 %:iin, vihreän kanavan 0 %:iin ja sinisen kanavan 50 % tehoon.

Muuta arvoksi 002 ja LED-lähtö pysyy sinisenä, mutta kirkkaampana, koska sininen kanava on nyt 100 % teholla. Muuta arvoksi 202 ja punainen ja sininen täydellä teholla muodostavat magentan värin.

Nyt kun tiedämme kuinka käsitellä LEDiä manuaalisesti, tarkastellaan komentosarjojen käyttämistä LED-valon muuttamiseksi yksinkertaisesta valosta todelliseksi ilmaisimeksi.

LedBorgin määrittäminen sadeilmaisimeksi

Tässä opetusohjelman osassa yhdistämme useita asioita muuttaaksemme LedBorg LED -moduulistamme sateenilmaisimen sijaintimme sääennusteen perusteella. Käytämme Python-skriptiä kutsumaan sää-API:tä, joka puolestaan ​​lukee päivän sateen mahdollisuuden ja vaihtaa sitten LEDin pois päältä kirkkaan siniseksi ilmoittamaan ennustetun sateen.

Mainos

Ensin meidän on hankittava API-käyttöavain Weather Undergroundille. Sovellusliittymä on ilmainen henkilökohtaiseen käyttöön ja pieniin kehitysprojekteihin. Vieraile Weather API -kirjautumissivulla täällä ja rekisteröidy API-avaimeen.

Kun sinulla on API-avaimesi, käy Weather Undergroundissa ja etsi kaupunki, jota haluat seurata. Meidän tapauksessamme aiomme tarkkailla San Fransiscoa, Kalifornia. San Fransiscon ennustesivun URL-osoite on:

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

Tärkeä osa tarkoituksiinmme on URL-osoitteen viimeinen osa: /CA/San_Francisco.html. Käytämme sitä API-työkalun ennusteen URL-osoitteen muokkaamiseen. Perus-URL on:

http://api.wunderground.com/api/SINUN API-AVAIN/forecast/q/STATE/CITY.json

Voit luoda ennusteen mille tahansa Yhdysvaltain kaupungille syöttämällä API-avaimesi, kaksikirjaimisen osavaltiokoodin ja kaupungin nimen Weather Underground -hakutuloksista hakemastasi URL-osoitteesta.

Kun olet lisännyt API-URL-osoitteen API-avaimesi ja osavaltion/kaupungin kanssa, voit muokata seuraavaa Python-komentosarjaa luomalla uuden tekstidokumentin Pi:llesi Leafpadilla ja liittämällä siihen seuraavan koodin:

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

# Seuraava on virheenkorjausarvo.
# Muokkaa tiivistettä ja muuta
# testattava kokonaisluku 0-100
# LED-vaste.

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

Mainos

Tallenna tiedosto nimellä wunderground.py hakemistoon /home/pi/. Avaa pääte ja kirjoita seuraava komento:

python wunderground.py

Jos olet syöttänyt API-avaimesi ja osavaltio-/kaupunkikoodit oikein, sen pitäisi antaa palautetta, joka näyttää tältä:

Jos alueellesi on ennustettu sadetta, LedBorg-tuotannon pitäisi näyttää tältä:

Nyt sateisen päivän odottaminen käsikirjoituksen kunnolla testaamiseksi olisi tylsää. Jos alueellasi ei ole tänään sademahdollisuutta ja haluat LED-valon syttyvän, muokkaa wunderground.py-skriptiä ja korvaa rivillä 13 oleva pop = pop passthrough -arvo arvolla, joka on suurempi kuin 20, kuten 60, jonka ennuste palasi. Muista vain vaihtaa rivi takaisin muotoon pop = pop, kun olet valmis.

Viimeinen vaihe on määrittää cron-työ suorittamaan automaattisesti juuri tallentamamme komentosarjan säännöllisin väliajoin, jotta LED-ilmaisin pysyy ajan tasalla. Koska tämä tehtävä on välttämätön sekä tälle skriptille että sitä seuraavalle sähköpostiindikaattorille, käsittelemme cron-työn määrittämistä sen jälkeen, kun olemme näyttäneet sinulle, kuinka toinen komentosarja määritetään.

LedBorgin määrittäminen Gmail-ilmaisimeksi

Kukapa ei pidä dopamiinikorjauksesta, joka tulee uuden sähköpostin näkemiseen postilaatikossaan? Tässä opetusohjelman osassa näytämme sinulle, kuinka LedBorgia käytetään uutena Gmail-indikaattorina. Kuten viime kerralla, aiomme yhdistää ulkoisen tulon (tässä tapauksessa Atom-syötteen API:n sijaan) ja yksinkertaisen skriptin LED-valon ohjaamiseksi.

Mainos

Meidän on laajennettava Python-asennuksemme toimintoja hieman asentamalla FeedParser , Python RSS/Atom -syötteen lukutyökalu. Avaa pääte ja kirjoita seuraava komento:

sudo easy_install feedparser

Kun asennus on valmis, voimme alkaa luomaan Gmail-tarkistusskriptimme. Liitä seuraava teksti editoriin Leafpadin avulla. Vaihda käyttäjänimi ja salasana vastaamaan tarkistettavan Gmail-tilin käyttäjätunnusta ja salasanaa.

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

# Seuraava on virheenkorjausarvo.
# Muokkaa tiivistettä ja muuta
# testattava kokonaisluku 0:ksi tai 1:ksi
# LED-vaste.

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

Tallenna skripti nimellä gmailcheck.py. Avaa pääte ja kirjoita seuraava komento:

python gmailcheck.py

Jos Gmail-postilaatikossasi on sähköpostia, LED muuttuu vihreäksi ja saat seuraavanlaisen vastauksen:

Jos sinulla on postia Gmail-postilaatikossasi, LedBorg näyttää tältä:

Kuten sateentarkistusskripti, olemme lisänneet virheenkorjausarvon. Jos sinulla ei ole uutta sähköpostiviestiä, voit joko lähettää itsellesi sähköpostin nostaaksesi postilaatikon määrän yhteen tai voit muokata kommentin hajautusarvoa ja muuttaa virheenkorjausrivin arvoksi mail = 1 testataksesi komentosarjaa. Muista palauttaa linja, kun olet valmis.

Mainos

Siirry opetusohjelman seuraavaan osaan asettaaksesi Gmail-skripti toimimaan aikataulun mukaisesti.

Cron-työn määrittäminen komentosarjasi suorittamista varten

Nyt kun meillä on kaksi skriptiä, joilla pelata, meidän on määritettävä cron-työ, jotta voimme käyttää niitä koko päivän, jotta LED-ilmaisin pysyy vireänä.

Ensimmäinen asia, jonka haluamme tehdä, on sammuttaa LED, jos se on tällä hetkellä päällä aikaisemmissa kokeissamme. Terminaalissa tyyppi:

echo 000 > /dev/ledborg

Kun olet edelleen komentorivillä, voit avata cron-editorin. Jos et ole koskaan aiemmin perustanut cron-työtä, suosittelemme tutustu sen käyttöoppaaseemme täällä . Tästä huolimatta opastamme sinut perusaikataulun määrittämisessä täällä.

Terminaalissa tyyppi:

sudo crontab -e

Tämä avaa Raspbian cron -taulukon Nano-tekstieditorissa. Vieritä alas alas nuolinäppäimillä. Tässä aiomme määrittää toistuvan cron-työn Python-skripteillemme.

Jos haluat määrittää sateen skriptin, kirjoita seuraava rivi cron-taulukkoon:

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

Mainos

Paina CTRL+X poistuaksesi; valitse Kyllä tallentaaksesi ja korvataksesi olemassa olevan cron-taulukon. Arvo, jonka syötimme cron-taulukkoon */5 * * * * asettaa skriptin suorittamaan 5 minuutin välein, ikuisesti.

Joka 5 minuutti on hieno aika skriptille, joka tarkistaa ennustetun sateen varalta – voit jopa väittää, että se on vähän liian aggressiivinen – mutta jos yrität pysyä sähköpostisi ajan tasalla, ilmoitusväli on hieman liian pitkä. . Jos määrität Gmailin ilmoitusskriptin aikataulua, kirjoita seuraava rivi cron-taulukkoon:

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

Tämä merkintä suorittaa gmailcheck.py-komentosarjan joka minuutti paljon nopeamman päivitysilmoituksen saamiseksi.


Siinä kaikki! Voit kokeilla omia Python-komentosarjojasi nostamalla if/else-lausekkeet pois meistä ja kokeilemalla niitä aivan uusilla muuttujilla. Jos löydät syöttölähteen tiedoille, voit muuttaa sen muuttujaksi Python-skriptissäsi - osakemarkkinoiden keskiarvot, siitepölymäärät, Twitter mainitsee, jos sille on API, voit muuttaa sen ympäristön LED-ilmaisimeksi.

Lopuksi haluan kiittää kaikkia upeita resursseja, joita käytin työskennelläkseni tämän projektin parissa. Siitä on kulunut hieman yli vuosikymmen, kun kirjoitin aktiivisesti ohjelmia, ja pölyn ja ruosteen poistaminen kesti muutaman koputuksen. Osallistujat osoitteessa /r/LearnPython auttoi minua sotkemaan Weather Undergroundin API-ulostulossa, kun tutkin, kuinka Michael selvisi Mitch Techissä käsitellä Gmail Atom -syötettä teki sen jäsentämisestä LedBorgille helppoa, ja Python-oppimismoduulien opiskelu Code Academyssa oli loistava tapa poimia perussyntaksi ja rakenne kielestä, jota en ollut koskaan käyttänyt.

LUE SEURAAVA Jason Fitzpatrickin profiilikuva Jason Fitzpatrick
Jason Fitzpatrick on LifeSavvy-lehden, How-To Geekin sisarsivuston, päätoimittaja, joka keskittyy elämään hakkerointiin, vinkkeihin ja temppuihin. Hänellä on yli vuosikymmenen kokemus julkaisemisesta ja hän on kirjoittanut tuhansia artikkeleita Review Geekissä, How-To Geekissä ja Lifehackerissa. Jason toimi Lifehacker's Weekend -toimittajana ennen kuin hän liittyi How-To Geekiin.
Lue koko bio

Mielenkiintoisia Artikkeleita