De Raspberry Pi is een mooi compact platform om een indicatielampje aan te bevestigen voor allerlei soorten projecten - weerberichten, nieuwe e-mails, enz. Lees verder, want we laten je zien hoe je een LED-module op je Pi aansluit en enkele basismeldingen instelt. .
Waarom wil ik dit doen?
Omdat het leuk is. In tegenstelling tot veel van onze tutorials, waarin we bovenaan een kleine blurb plaatsen waarin precies wordt uiteengezet welk voordeel je aan het project zult hebben, 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 programmeren te leren. Niemand behoeften een omgevingsregenindicator in hun keuken bijvoorbeeld, maar het bouwen ervan is een leuke oefening en een goede herinnering om je paraplu mee te nemen op mogelijk stormdagen.
Wat heb ik nodig?
Om onze tutorial te volgen, heb je een paar dingen nodig. Ten eerste gaan we ervan uit dat u onze vorige tutorial al heeft gevolgd: De HTG-gids om aan de slag te gaan met Raspberry Pi (en dus de basis hebben om Raspbian op onze Raspberry Pi te installeren).
Als je dit project met een beperkt budget wilt doen, kunnen we je vol vertrouwen 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 hebt geschoven in de kast of koop een goedkope tweedehands eBay of iets dergelijks. Qua budget past de lang-in-de-tand een Raspberry Pi 1 Model A of Model B die voor $ 10-15 van eBay is weggehaald, perfect voor dit project in plaats van een gloednieuwe $ 35 huidige generatie Pi te kopen.
Naast een functionele Pi-eenheid waarop Raspbian is geïnstalleerd, heb je de volgende dingen nodig:
- 1 LedBorg-module (~ $ 5,00 met $ 4 verzendkosten van het VK naar de VS, werkt met alle Raspberry Pi-modellen).
- 1 Doorzichtige Raspberry Pi-behuizing die compatibel is met uw specifieke Pi-model zoals deze Raspberry Pi 1 Model B-behuizing .
Notitie: De transparante / matte Pi-behuizing is volledig optioneel, maar als u momenteel een ondoorzichtige behuizing gebruikt, is uw LED-indicator binnenin verborgen. U moet ofwel een gat in uw hoes maken om het licht naar buiten te laten, of een GPIO-verlengkabel gebruiken met een breakout-kit, zoals deze van Adafruit Industries - om de LedBorg aan uw Raspberry Pi te bevestigen. Hoewel het gebruik van de breakout-kabel ongeveer $ 8 toevoegt aan de kosten van het project, biedt het meer mogelijkheden voor het aanpassen van het eindproduct doordat je de LED gemakkelijker in dingen kunt plaatsen of onder iets dat je wilt verlichten.
De LedBorg installeren
Hoewel je zeker een volledig nieuwe LED-indicator zou kunnen bouwen (en een onderzoek door een zoekmachine zal genoeg mensen opleveren die dat hebben gedaan), produceert de Piborg-organisatie zo'n compacte en goedkope LED-module, de LedBorg, dat we dat niet konden ' Weersta het niet als basis voor ons Raspberry Pi LED-indicatorproject.
Het installeren van de module is een fluitje van een cent, omdat hij is ontworpen om direct over de GPIO-pinnen op de Pi te passen. Schakel eerst uw Pi uit en open de behuizing.
Het belangrijkste onderdeel van het installatieproces is dat je de module zo oriënteert dat het LedBorg-pictogram zich het dichtst bij de RCA-module op het Raspberry Pi-bord bevindt (en dus de rand van de LedBorg gelijk ligt met de randen van het Pi-bord met de overhangende gedeelte van de LedBorg dat over het Pi-bord hangt en niet over de rand). Zie bovenstaande foto.
Terwijl je het Pi-bord open hebt staan, zou dit een uitstekend moment zijn om de ingebouwde LED-indicatoren (naast de USB-poorten) te bedekken, vooral als je een doorzichtige behuizing gebruikt. U wilt niet dat het verwarrend is om uw LedBorg-indicator te lezen, omdat de stroom- en netwerkindicatielampjes zo helder zijn.
We bedekten de onze met een laag witte elektrische tape. Hierdoor werden ze voldoende gedimd zodat we nog steeds naar ze konden verwijzen, maar ze waren zoveel dimmer dan de LedBorg dat het niet langer storend was.
Zodra je de LedBorg hebt geïnstalleerd en, optioneel, de LED-indicatoren van de Pi met isolatietape hebt bedekt, is het tijd om de behuizing weer te sluiten. Start je Pi op voordat je doorgaat naar de volgende fase van de tutorial.
De LedBorg-software installeren
PiBorg biedt een geweldig softwarepakket voor de LedBorg dat zowel een GUI-controller als stuurprogramma's bevat voor toegang tot de LedBorg vanaf de opdrachtregel.
Voordat we beginnen, moet u ervoor zorgen dat u het juiste pakket voor uw versie van Rasbian en de revisie # van uw Raspberry Pi-bord pakt.
Als je Raspberry Pi-bord geen montagegaten heeft, is het revisie 1. Als je Raspberry Pi montagegaten heeft (bij de USB-poorten en tussen de stroom- en HDMI-poort), dan is het revisie 2. Je moet ook de kernelversie kennen van uw Rasbian-installatie. Open de terminal en voer de volgende opdracht in om te controleren:
uname -r
Als je eenmaal het revisienummer en het kernelnummer hebt, kan dat bezoek hier de sectie Pakketten om de link voor uw pakket te pakken. In ons geval gebruiken we een Revisie 1-bord met de 3.6.11-kernel, dus we zouden het bestand raspbian-2013-02-09-rev1.zip pakken.
Om al het lekkers te installeren, moeten we de terminal op de Pi openen. en voer vervolgens de volgende opdrachten in om het LedBorg-pakket te installeren.
Notitie: Je moet de URL in het derde commando vervangen door de URL van het pakket voor je board / kernel-combinatie.
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 punt heb je 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 je gang en klik op het LedBorg-pictogram om de GUI-wrapper te starten. U wordt als volgt getrakteerd op de kleurenkiezer-interface:
Dit is het perfecte moment om ervoor te zorgen dat uw module functioneel is. Kies een willekeurige 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 matte plastic van de behuizing die we voor het project hebben besteld, biedt een matige diffusie. Als u meer met de LED-module wilt spelen voordat u verder gaat, klikt u op Demomodus:
In de demo-modus kun je met verschillende snelheden door alle kleuren bladeren, de hoge / lage output bekijken en anders de LED-module aan het werk zetten.
Hier in het gedeelte Demomodus kunt u uw LedBorg ook in de eerste van vele indicatoren veranderen. Door CPU te selecteren in het gedeelte Kleuren, begint de LED te veranderen van groen naar geel in rood om de belasting van de ARM-processor van de Raspberry Pi aan te geven. We raden aan om de snelheid te veranderen in Langzaam terwijl u bezig bent. Snel werkt de LED te snel bij en zorgt ervoor dat de CPU-indicator afleidt in plaats van nuttig.
Naast het gebruik van de GUI-interface om kleuren te selecteren, kunt u kleuren van de terminal kiezen met behulp van RGB-waarden. Open de terminal en voer de volgende opdracht in om de LED uit te schakelen:
echo "000" > /dev/ledborg
De manier waarop de LedBorg omgaat met RGB-waarden is dat 0 betekent dat het kanaal is uitgeschakeld, 1 betekent dat het kanaal half vermogen is en 2 dat het kanaal vol vermogen is. Dus bijvoorbeeld 001 zou het rode kanaal op 0% zetten, het groene kanaal op 0% en het blauwe kanaal op 50% vermogen.
Verander de waarde naar 002 en de LED-output blijft blauw maar wordt helderder omdat het blauwe kanaal nu 100% output heeft. Verander de waarde in 202 en de rood en blauw op volle kracht combineren om een magenta kleur te maken.
Nu we weten hoe we de LED handmatig moeten manipuleren, gaan we kijken naar het gebruik van scripts om onze LED van een eenvoudig licht naar een echte indicator te veranderen.
Uw LedBorg configureren als regenindicator
Voor dit deel van de tutorial gaan we verschillende dingen samen kammen om van onze LedBorg LED-module een regenindicator te maken op basis van de weersvoorspelling voor onze locatie. We gebruiken een Python-script om een weer-API aan te roepen, die op zijn beurt de kans op regen voor de dag leest, en vervolgens de LED van uit naar helderblauw schakelen om de voorspelde regen aan te geven.
Ten eerste hebben we een API-toegangssleutel nodig voor Weather Underground. Voor persoonlijk gebruik en kleine ontwikkelingsprojecten is de API gratis. Bezoek de Weather API-aanmeldingspagina hier en meld u aan voor een API-sleutel.
Zodra u uw API-sleutel heeft, gaat u naar de Weather Underground en zoekt u naar de stad die u wilt controleren. In ons geval gaan we San Fransisco, CA controleren. De URL voor de voorspellingspagina van San Fransisco is:
http://www.wunderground.com/US/CA/San_Francisco.html
Het belangrijkste deel voor onze doeleinden is het laatste deel van de URL: /CA/San_Francisco.html. We gaan die gebruiken om de prognose-URL voor de API-tool te bewerken. De basis-URL is:
http://api.wunderground.com/api/YOUR API KEY / forecast / q / STATE / CITY.json
U kunt de weersvoorspelling voor elke Amerikaanse stad genereren door uw API-sleutel, de tweeletterige staatscode en de stadsnaam in te voeren via de URL die u uit uw zoekresultaten van Weather Underground hebt gehaald.
Zodra je de API-URL met je API-sleutel en staat / stad hebt ingevoegd, kun je het volgende Python-script bewerken door een nieuw tekstdocument op je Pi te maken met Leafpad en de volgende code erin te plakken:
uit urllib2 importeer urlopen
importeer 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'])# Het volgende is een foutopsporingswaarde.
# Bewerk de hash en verander
# het gehele getal naar een 0-100 om te testen
# de LED-reactie.# pop = 0
print 'Huidige kans op neerslag is {}.'. format (pop)
# De standaardinstelling is om de LED in te schakelen
# voor elke kans op regen van meer dan 20%. U kunt aanpassen
# de waarde in "if pop> 20:" zoals je wilt.
als pop> 20:
LedBorg = open('/dev/ledborg', 'w')
LedBorg.write ('002')
door LedBorg
print ('Regen!')
anders:
LedBorg = open('/dev/ledborg', 'w')
LedBorg.write ('000')
door LedBorg
print ('Geen regen!')
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 staats- / stadscodes correct hebt ingevoerd, zou dit een reactie moeten terugslaan die eruitziet als:
Als er neerslag wordt voorspeld voor uw gebied, zou uw LedBorg-output er als volgt uit moeten zien:
Nu wachten op een regenachtige dag om het script goed te testen zou vervelend zijn. Als er vandaag geen kans op regen in uw omgeving is en u wilt dat de LED oplicht, bewerk dan het wunderground.py-script en vervang de "pop = pop" passthrough-waarde in regel 13 door een waarde groter dan 20, zoals de 60 dat onze voorspelling terugkeerde. Vergeet niet om de regel terug te veranderen naar "pop = pop" als u klaar bent.
De laatste stap is het opzetten van een cron-taak om het zojuist opgeslagen script automatisch regelmatig uit te voeren om de LED-indicator actueel te houden. Aangezien deze taak nodig is voor zowel dit script als de e-mailindicator die volgt, gaan we het instellen van een cron-taak behandelen nadat we u hebben laten zien hoe u het andere script instelt.
Uw LedBorg configureren als een Gmail-indicator
Wie houdt er niet van de dopamine-oplossing die gepaard gaat met het zien van nieuwe e-mail in hun inbox? In dit deel van de tutorial laten we je zien hoe je de LedBorg kunt gebruiken als een nieuwe Gmail-indicator. Net als de vorige keer gaan we een externe input (in dit geval een Atom-feed in plaats van een API) combineren met een eenvoudig script om onze LED aan te sturen.
We moeten de functionaliteit van onze Python-installatie een beetje uitbreiden door te installeren FeedParser , een Python RSS / Atom-feedleestool. Open de terminal en voer de volgende opdracht in:
sudo easy_install feedparser
Zodra de installatie is voltooid, kunnen we aan de slag met het maken van ons Gmail-controlescript. Nogmaals, gebruik Leafpad en plak de volgende tekst in de editor. Wijzig de gebruikersnaam en het wachtwoord zodat deze overeenkomen met de gebruikersnaam en het wachtwoord van het Gmail-account dat u wilt controleren.
importeer feedparser
# Voer uw Gmail-gebruikersnaam in
# en wachtwoord. Niet opnemen
# het @ gmail.com-gedeelte van
# je gebruikersnaam.
gebruikersnaam = "gebruikersnaam"
password = "wachtwoord"
mail = int (feedparser.parse ("https: //" + gebruikersnaam + ":" + wachtwoord + "@ mail.google.com/gmail/feed/atom")["feed"]["fullcount"])# Het volgende is een foutopsporingswaarde.
# Bewerk de hash en verander
# het gehele getal naar een 0 of 1 om te testen
# de LED-reactie.# mail = 0
als mail> 0:
LedBorg = open('/dev/ledborg', 'w')
LedBorg.write ('020')
door LedBorg
print ('Mail!')
anders:
LedBorg = open('/dev/ledborg', 'w')
LedBorg.write ('000')
door LedBorg
print ('No mail!')
Sla het script op als gmailcheck.py. Open de terminal en typ de volgende opdracht:
python gmailcheck.py
Als je e-mail in je Gmail-inbox hebt staan, wordt de LED groen en krijg je een reactie als volgt:
Als je mail in je Gmail-inbox hebt, ziet je LedBorg er als volgt uit:
Net als het regencontrolescript hebben we een foutopsporingswaarde toegevoegd. Als je geen nieuwe e-mail hebt, kun je jezelf een e-mail sturen om het aantal inboxen naar 1 te verhogen, of je kunt de hash van de opmerking bewerken 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 te laten werken.
Een cron-taak instellen om uw script uit te voeren
Nu we twee scripts hebben om mee te spelen, moeten we een cron-taak opzetten om ze de hele dag uit te voeren om de LED-indicator actueel te houden.
Het eerste dat we willen doen, is de LED uitschakelen als deze momenteel aan staat van onze eerdere experimenten. Op het terminal type:
echo “000” > /dev/ledborg
Terwijl u zich nog op de opdrachtregel bevindt, kunt u de cron-editor openen. Als u nog nooit een cron-taak heeft opgezet, raden we u ten zeerste aan bekijk hier onze handleiding om het te gebruiken . Dat gezegd hebbende, helpen we u hier bij het opstellen van een basisschema.
Op het terminal type:
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 rain-script 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 elke 5 minuten voor altijd wordt uitgevoerd.
Elke 5 minuten is een prima tijdspanne voor een script dat controleert op voorspelde regen - je zou zelfs kunnen zeggen dat het een beetje te agressief is - maar als je probeert je e-mail bij te houden, is het een beetje te lang voor een melding . Als je het schema instelt voor het Gmail-meldingsscript, voer je 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 updatemelding.
Dat is alles wat er is! Je kunt experimenteren met je eigen Python-scripts door de if / else-statements uit de onze te halen en ze uit te proberen met gloednieuwe variabelen. Als u een invoerbron voor de gegevens kunt vinden, kunt u deze in uw Python-script omzetten in een variabele - beursgemiddelden, pollenaantallen, vermeldt Twitter, als er een API voor is, kunt u deze in een sfeervolle LED-indicator veranderen.
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 bezig was met het schrijven van programma's en het kostte een paar stoten om het stof en de roest eruit te krijgen. De bijdragers van / r / LearnPython hielp me wat te doen in de API-uitvoer voor Weather Underground en bestudeerde hoe Michael bij Mitch Tech was behandeld met de Gmail Atom-feed maakte het ontleden voor de LedBorg gemakkelijk, en het bestuderen van de Python-leermodules bij Code Academy was een geweldige manier om de basissyntaxis en structuur te leren van een taal die ik nog nooit eerder had gebruikt.