1Aug
De Raspberry Pi vormt een mooi compact platform om een indicatielampje aan te bevestigen voor allerlei projecten - weerbericht, nieuwe e-mails, enz. Lees verder, terwijl we je laten zien hoe je een LED-module op je Pi aansluit en een basis insteltmeldingen.
Waarom wil ik dit doen?
Omdat het leuk is. In tegenstelling tot veel van onze tutorials waarin we een beetje een blurb bovenaan plaatsen die precies aangeeft welk voordeel je uit het project haalt, is de blurb in dit geval vrij kort omdat het voordeel gewoon plezier is.
De Raspberry Pi is een perfect apparaat om mee te spelen, te experimenteren met elektronica en wat programmeerwerk te leren. Niemand heeft bijvoorbeeld een indicator voor omgevingsregen in de keuken nodig, maar het bouwen ervan is een leuke oefening en een goede herinnering om uw paraplu mee te nemen op mogelijk stormachtige dagen.
Wat heb ik nodig?
Als u de zelfstudie wilt volgen, hebt u een paar dingen nodig. Ten eerste gaan we ervan uit dat je onze vorige tutorial al hebt gevolgd: de HTG-handleiding om met Raspberry Pi aan de slag te gaan( en dus een basisprincipe heeft om Rasbian op onze Raspberry Pi te installeren).
Als je dit project met een beperkt budget wilt doen, kunnen we je met zekerheid vertellen dat het nieuwste model Raspberry Pi een aanzienlijke overkill is voor de klus en we raden je aan om het stof van een oude Raspberry Pi te blazen die je hebtgeschoven in de kast of een goedkoop gebruikt exemplaar van eBay of iets dergelijks. Budgetvriendelijk is de lang-in-de-tand een Raspberry Pi 1 Model A of Model B die voor $ 10-15 van eBay afhangt, perfect geschikt voor dit project door een gloednieuwe Pi van $ 35 van de huidige generatie aan te schaffen.
Naast het hebben van een functionele Pi-eenheid waarop Raspbian is geïnstalleerd, hebt u de volgende dingen nodig:
- 1 LedBorg-module( ~ $ 5,00 met $ 4 verzending vanuit het VK naar de VS, werkt met alle Raspberry Pi-modellen).
- 1 Clear Raspberry Pi-koffer, compatibel met jouw specifieke Pi-model, zoals deze Raspberry Pi 1 Model B-behuizing.
Opmerking: De heldere / matte Pi-behuizing is volledig optioneel, maar als u op dit moment een ondoorzichtig hoesje gebruikt, zal uw led-indicator binnenin verborgen zijn. Je moet ofwel een gat in je hoesje knippen om het licht uit te laten of een GPIO-verlengkabel gebruiken met een breakout-set, zoals deze van Adafruit Industries, om de LedBorg aan je Raspberry Pi vast te maken. Tijdens het gebruik van de breakout-kabel voegt u ongeveer $ 8 toe aan de kosten van het project, maar het biedt wel meer mogelijkheden om het eindproduct aan te passen, omdat u de LED gemakkelijker in dingen kunt plaatsen of onder iets kunt verlichten.
Installatie van de LedBorg
Hoewel u zeker een volledig lege LED-indicator kunt bouwen( en een zoekmachineonderzoek zal veel mensen opdraven die dit hebben gedaan), produceert de Piborg-organisatie zo'n compacte en goedkope LED-module, de LedBorg, dat we het niet konden laten om het te gebruiken als basis voor ons Raspberry Pi LED-indicatorproject.
Het installeren van de module is in een handomdraai, omdat deze rechtstreeks op de GPIO-pinnen op de Pi past. Schakel eerst je Pi uit en open de behuizing.
Het belangrijkste onderdeel van het installatieproces is dat u de module zodanig oriënteert dat het LedBorg-pictogram zich het dichtst bij de RCA-module op de Raspberry Pi-kaart bevindt( en dus is de rand van de LedBorg gelijk met de randen van de Pi-kaart met deoverhangende deel van de LedBorg opknoping over de Pi-board en niet van de rand).Zie de foto hierboven.
Terwijl je de Pi-kaart open hebt, zou dit nu een uitstekende tijd zijn om de ingebouwde LED-indicatoren( naast de USB-poorten) te dekken, vooral als je een duidelijke hoes gebruikt. U wilt niet dat het verwarrend is om uw LedBorg-indicator te lezen, omdat de stroom- en netwerkindicatielampjes zo helder zijn.
We hebben de onze bedekt met een laag witte tape. Dit heeft ze zo gedimd dat we er nog steeds naar konden verwijzen, maar ze waren zoveel dommer dan de LedBorg dat het niet langer storend was.
Zodra u de LedBorg hebt geïnstalleerd en optioneel de LED-indicatoren van de Pi hebt afgedekt met isolatietape, wordt het tijd om de behuizing weer te sluiten. Start uw Pi op voordat u naar de volgende fase van de zelfstudie gaat.
De LedBorg-software installeren
PiBorg biedt een geweldig softwarepakket voor de LedBorg dat zowel een GUI-controller als stuurprogramma's voor toegang tot de LedBorg vanaf de opdrachtregel bevat.
Voordat we aan de slag gaan, moet je ervoor zorgen dat je het juiste pakket voor je Rasbian-versie en de versie # van je Raspberry Pi-bord pakt.
Als je Raspberry Pi-kaart geen bevestigingsgaten heeft, is dit Revisie 1. Als je Raspberry Pi bevestigingsgaten heeft( die zich bevinden op de USB-poorten en tussen de stroom- en HDMI-poort), dan is het Revisie 2. Je moet ook de kernel kennenversie van uw Rasbian-installatie. Open de terminal en voer de volgende opdracht in om te controleren:
uname -r
Als u eenmaal het Revision-nummer en het kernelnummer hebt, kunt u de sectie Pakketten hier bezoeken om de link voor uw pakket te pakken. In ons geval gebruiken we een Revision 1-bord met de 3.6.11-kernel, dus we zouden het raspbian-2013-02-09-rev1.zip-bestand pakken.
Om alle goodies te installeren, moeten we de terminal op de Pi openen.en voer vervolgens de volgende opdrachten in om het LedBorg-pakket te installeren.
Opmerking: U moet de URL in de derde opdracht vervangen door de URL van het pakket voor uw bord- / kernelcombinatie.
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
Op dit moment hebt u nu de GUI-wrapper voor de LedBorg-stuurprogramma's en de stuurprogramma's zelf geïnstalleerd. Op uw Raspbian-bureaublad ziet u een pictogram voor de GUI-wrapper:
Ga door en klik op het LedBorg-pictogram om de GUI-wrapper te starten. U wordt getrakteerd op de interface van de kleurenkiezer zoals:
Dit is het perfecte moment om ervoor te zorgen dat uw module functioneel is. Kies een kleur, behalve zwart, om het uit te proberen. We gaan het testen door een paar kleuren te kiezen:
Ziet er goed uit! Het is helder en het gematteerde plastic van de case die we hebben besteld voor het project biedt een gemiddelde diffusie. Als u meer wilt spelen met de LED-module voordat u verder gaat, klikt u op Demo-modus:
In demomodus kunt u alle kleuren met verschillende snelheden doorlopen, de hoge / lage uitvoer bekijken en de LED-module anders aan de gang houden.
Het is hier in de sectie Demomodus dat u uw LedBorg ook als eerste van vele indicatoren kunt gebruiken. Door CPU in het gedeelte Kleuren te selecteren, zal de LED beginnen te veranderen van groen naar geel naar rood om de belasting op de ARM-processor van de Raspberry Pi aan te geven. We raden aan de snelheid te wijzigen in langzaam, terwijl u bezig bent: snel wordt de led te snel bijgewerkt en wordt de CPU-indicator storend in plaats van nuttig.
Naast het gebruik van de GUI-interface om kleuren te selecteren, kunt u met RGB-waarden kleuren uit de terminal kiezen. Open de terminal en voer de volgende opdracht in om de LED uit te schakelen:
echo "000" & gt;/dev/ ledborg
De manier waarop de LedBorg RGB-waarden afhandelt, is dat 0 betekent dat het kanaal uit staat, 1 betekent dat het kanaal half macht heeft en 2 betekent dat het kanaal vol vermogen is. Dus bijvoorbeeld 001 stelt het rode kanaal in op 0%, het groene kanaal op 0% en het blauwe kanaal op 50% vermogen.
Wijzig de waarde in 002 en de LED-uitgang blijft blauw maar wordt helderder omdat het blauwe kanaal nu op 100% is uitgevoerd. Verander de waarde in 202 en de rood en blauw bij volledig vermogen combineren om een magenta kleur te maken.
Nu we weten hoe we de LED handmatig kunnen manipuleren, laten we kijken naar het gebruik van scripts om onze LED te veranderen van een eenvoudig licht naar een echte indicator.
Uw LedBorg configureren als een regenindicator
Voor dit deel van de zelfstudie zullen we verschillende dingen combineren om onze LEDBorg LED-module in een regenindicator te veranderen op basis van de weersvoorspelling voor onze locatie. We zullen een Python-script gebruiken om een weer-API te bellen die op zijn beurt de kans op regen voor de dag zal aflezen en vervolgens de LED van uit naar helder blauw om de voorspelde regen weer te geven.
Eerst moeten we een API-toegangssleutel voor Weather Underground verkrijgen. Voor persoonlijk gebruik en kleine ontwikkelingsprojecten is de API gratis. Ga naar de aanmeldingspagina van de weer-API en meld u aan voor een API-sleutel.
Als u eenmaal uw API-sleutel hebt, bezoekt u de Weather Underground en zoekt u naar de stad die u wilt volgen. In ons geval gaan we San Fransisco, CA.De URL voor de voorspellingspagina van San Fransisco is:
http: //www.wunderground.com/US/CA/ San_Francisco.html
Het belangrijkste onderdeel voor onze doeleinden is het laatste deel van de URL: /CA/ San_Francisco.html. We gaan dit gebruiken om de prognose-URL voor de API-tool te bewerken. De basis-URL is:
http: //api.wunderground.com/api/ UW API-SLEUTEL /forecast/q/STATE/ CITY.json
U kunt de prognose voor elke Amerikaanse stad genereren door uw API-sleutel, de tweeletterige staatscode en de plaatsnaam in te voeren uit de URL die u uit uw weer hebt gehaaldOndergrondse zoekresultaten.
Als u eenmaal de API-URL hebt met uw API-sleutel en staat / stad ingevoegd, kunt u het volgende Python-script bewerken door een nieuw tekstdocument op uw Pi te maken met behulp van Leafpad en de volgende code erin te plakken:
van urllib2 import urlopen
import json
req = urlopen( 'http: //api.wunderground.com/api/ UW API-SLEUTEL /forecast/q/STATE/ CITY.json')
parsed_json = json.load( req)
pop = int( parsed_json ['forecast'] ['txt_forecast'] ['forecastday'][0] ['pop'])
# Het volgende is een foutopsporingswaarde.
# Bewerk de hash en verander
# het gehele getal in een 0-100 om
# het LED-antwoord te testen.
# pop = 0
print 'Huidige kans op neerslag is{ }.' Formaat( pop)
# De standaardinstelling is om de LED
# in te schakelen voor een kans op regen boven 20%.U kunt
# de waarde in "indien pop & gt; 20:" naar wens aanpassen.
als pop & gt;20:
LedBorg = open( '/dev/ ledborg', 'w')
LedBorg.write( '002')
del LedBorg
print( 'Rain!')
anders:
LedBorg = open( '/dev/ ledborg', 'w ')
LedBorg.write( ' 000 ')
del LedBorg
print( ' No rain! ')
Sla het bestand op als wunderground.py in de /home/pi/-directory. Open de terminal en typ de volgende opdracht:
python wunderground.py
Als u uw API-sleutel en uw staat / stadscodes correct hebt ingevoerd, moet deze een reactie terugschroeven die er als volgt uitziet:
Als er precipitatie is voorspeld voor uw regioje LedBorg-uitvoer zou er zo uit moeten zien:
Nu wachten tot een regenachtige dag om het script goed te testen, zou vervelend zijn. Als er vandaag geen kans op regen in uw gebied is en u de LED-lamp wilt zien branden, bewerkt u het script wunderground.py en vervangt u de "pop = pop" -passthrough-waarde in regel 13 door een waarde groter dan 20, zoals de 60dat onze voorspelling terugkeerde. Vergeet niet om de regel terug te veranderen naar "pop = pop" als je klaar bent.
De laatste stap is om een cron-taak in te stellen om het script dat we net met een regelmatig interval hebben opgeslagen, automatisch uit te voeren om de LED-indicator actueel te houden. Aangezien deze taak zowel voor dit script als voor de e-mailindicator nodig is, gaan we in op het instellen van een cron-taak nadat we u hebben getoond hoe u het andere script kunt instellen.
Uw LedBorg configureren als een Gmail-indicator
Wie houdt er niet van de dopamine-fix die hoort bij het zien van nieuwe e-mail in hun inbox? In dit gedeelte van de zelfstudie laten we u zien hoe u de LedBorg als een nieuwe Gmail-indicator kunt gebruiken. Net als de vorige keer gaan we een externe invoer combineren( in dit geval een Atom-feed in plaats van een API) en een eenvoudig script om onze LED aan te sturen.
We moeten de functionaliteit van onze Python-installatie een beetje uitbreiden door FeedParser te installeren, een Python RSS / Atom-feedleesinstrument. Open de terminal en voer de volgende opdracht in:
sudo easy_install feedparser
Zodra de installatie is voltooid, kunnen we aan de slag gaan door ons Gmail-controlescript te maken. Nogmaals, gebruik Leafpad en plak de volgende tekst in de editor. Wijzig de gebruikersnaam en het wachtwoord om overeen te komen met de gebruikersnaam en het wachtwoord van het Gmail-account dat u wilt controleren.
import feedparser
# Voer uw Gmail-gebruikersnaam
# en wachtwoord in. Neem geen
# het @ gmail.com-gedeelte van
# uw gebruikersnaam op.
gebruikersnaam = "gebruikersnaam"
wachtwoord = "wachtwoord"
mail = int( feedparser.parse( "https: //" + gebruikersnaam + ":" + wachtwoord + "@ mail.google.com /gmail/feed/-atoom") ["feed"] [" fullcount "])
# Het volgende is een foutopsporingswaarde.
# Bewerk de hash en verander
# het gehele getal in een 0 of 1 om
# het LED-antwoord te testen.
# mail = 0
als e-mail & gt;0:
LedBorg = open( '/dev/ ledborg', 'w')
LedBorg.write( '020')
del LedBorg
print( 'Mail!')
anders:
LedBorg = open( '/dev/ ledborg', 'w ')
LedBorg.write( ' 000 ')
del LedBorg
print( ' Geen e-mail! ')
Sla het script op als gmailcheck.py. Open de terminal en typ de volgende opdracht:
python gmailcheck.py
Als je een e-mail hebt in je Gmail-inbox, wordt de LED groen en krijg je een antwoord als zodanig:
Als je e-mail in je Gmail-inbox hebt, is je LedBorgziet er zo uit:
Net als het regencontrolescript hebben we een foutopsporingswaarde opgenomen. Als u geen nieuwe e-mail heeft, kunt u uzelf een e-mail sturen om uw inbox-telling te verhogen tot 1 of u kunt de hash van opmerkingen verwijderen en de foutopsporingsregel wijzigen in 'mail = 1' om het script te testen. Vergeet niet om de regel terug te draaien als u klaar bent met testen.
Ga naar het volgende gedeelte van de zelfstudie om uw Gmail-script volgens een schema in te stellen.
Een Cron-taak instellen om uw script uit te voeren
Nu we twee scripts hebben om mee te spelen, moeten we een cron-taak instellen om ze gedurende de dag uit te voeren om de LED-indicator actueel te houden.
Het eerste wat we willen doen is de LED uit te doen als deze momenteel aan staat tijdens onze vorige experimenten. Bij het terminaltype:
echo "000" & gt;/dev/ ledborg
Terwijl u nog steeds op de opdrachtregel staat, kunt u de cron-editor openen. Als u nog nooit eerder een cron-job hebt opgezet, raden we u ten zeerste aan om onze gids voor het gebruik hier te bekijken. Dat gezegd hebbende, zullen we je helpen bij het opstellen van een basisschema hier.
Bij het terminaltype:
sudo crontab -e
Dit opent de Raspbian cron-tabel in de Nano-teksteditor. Gebruik de pijltjestoetsen om helemaal naar beneden te scrollen. Dit is waar we de terugkerende cron-taak voor onze Python-scripts gaan instellen.
Als u het regenscript wilt instellen, voert u de volgende regel in de cron-tabel in:
* / 5 * * * * python /home/pi/ wunderground.py
Druk op CTRL + X om af te sluiten;selecteer ja om de bestaande cron-tabel op te slaan en te overschrijven. De waarde die we in de cron-tabel "* / 5 * * * *" hebben ingevoerd, zorgt ervoor dat het script om de 5 minuten voor altijd wordt uitgevoerd.
Elke 5 minuten is een prima tijdspanne voor een script dat op voorspelde regen controleert - je zou zelfs kunnen beweren dat het een beetje te agressief is - maar als je probeert je e-mail bij te houden, is het een beetje te lang omkennisgeving. Als u de planning voor het Gmail-meldingencript instelt, voert u de volgende regel in de cron-tabel in:
* / 1 * * * * python /home/pi/ wunderground.py
Dit item voert het gmailcheck.py-script elke minuut uit voor een veel snellere uitvoeringupdate melding.
Dat is alles wat er is! Je kunt met je eigen Python-scripts experimenteren door de if / else-statements uit de onze te halen en ze uit te proberen met geheel nieuwe variabelen. Als je een invoerbron voor de gegevens kunt vinden, kun je er een variabele van maken in je Python-script-aandelenmarktgemiddelden, pollenaantallen, Twitter-vermeldingen en als er een API voor is, kun je dit veranderen in een omgevingslicht-LED-indicator.
Ten slotte wil ik alle geweldige middelen bedanken die ik heb gebruikt om aan dit project te werken. Het is iets meer dan een decennium geleden dat ik actief programma's aan het schrijven was en het kostte me een paar klappen om het stof en de roest eruit te krijgen. De medewerkers van /r/ LearnPython hebben me geholpen met het verwerken van de API-uitvoer voor Weather Underground, en bestudeerden hoe Michael bij Mitch Tech de Gmail Atom-feed behandelde die het voor de LedBorg easy had geparseerd en het bestuderen van de Python-leermodules op Code Academy was geweldigmanier om de basissyntaxis en structuur van een taal op te pakken die ik nog nooit eerder had gebruikt.