Startpagina » hoe » Bouw een LED-indicator met een Raspberry Pi (voor e-mail, weer of iets)

    Bouw een LED-indicator met een Raspberry Pi (voor e-mail, weer of iets)

    De Raspberry Pi vormt een mooi compact platform om een ​​indicatielampje aan te bevestigen voor allerlei projecten - weerbericht, nieuwe e-mails, etc. Lees verder, want we laten je zien hoe je een LED-module aansluit op je Pi en enkele basismeldingen instellen.

    Waarom wil ik dit doen??

    Omdat het leuk is. In tegenstelling tot veel van onze tutorials waar we een kleine blurb aan de bovenkant opnemen, precies aangeven welk voordeel je uit het project haalt, is de blurb in dit geval vrij kort omdat het voordeel is gewoon plezier hebben.

    De Raspberry Pi is een perfect apparaat om mee te spelen, te experimenteren met elektronica en een beetje programmeren te leren. Niemand behoefte aan bijvoorbeeld een regenindicator in hun keuken, maar het maken van een is een leuke oefening en een goede herinnering om je paraplu mee te nemen op potentieel stormachtige dagen.

    Wat heb ik nodig?

    Volg de handleiding en je hebt een paar dingen nodig. Ten eerste gaan we ervan uit dat je onze vorige tutorial al hebt gevolgd: de HTG-gids om met Raspberry Pi aan de slag te gaan (en dus een basis heeft voor het installeren van Rasbian op onze Raspberry Pi).

    Als je dit project met een beperkt budget wilt doen, kunnen we je met vol vertrouwen vertellen dat het nieuwste model Raspberry Pi een aanzienlijke overkill is voor de klus en we raden je aan het stof van een oude Raspberry Pi af te blazen die je hebt geschoven in de kast of pak een goedkope gebruikte op 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 in de aankoop van een gloednieuwe $ 35 huidige generatie Pi.

    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 Helder Raspberry Pi-etui, compatibel met jouw specifieke Pi-model, zoals deze Raspberry Pi 1 Model B-behuizing.

    Notitie: 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. Terwijl het gebruik van de breakout-kabel ongeveer $ 8 aan de kosten van het project toevoegt, biedt het wel meer mogelijkheden om het eindproduct aan te passen, omdat je de LED gemakkelijker in dingen kunt plaatsen of onder iets dat je wilt verlichten..

    De LedBorg installeren

    Hoewel je 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, die we niet konden gebruiken. Het is niet toegestaan ​​om het te gebruiken als basis voor ons Raspberry Pi LED-indicatorproject.

    Het installeren van de module is in een handomdraai, omdat het ontworpen is om direct over de GPIO-pinnen op de Pi te passen. 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 ligt de rand van de LedBorg gelijk met de randen van de Pi-plaat met de overhangende deel van de LedBorg dat over het Pi-bord hangt en niet van de rand). Zie de foto hierboven.

    Terwijl je de Pi-kaart open hebt, zou dit nu een uitstekend moment 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 aan / uit- en netwerkindicatielampjes zo helder zijn.

    We hebben de onze bedekt met een laag witte tape. Dit heeft ze voldoende gedimd, zodat we er nog steeds naar kunnen 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 met zowel een GUI-controller als stuurprogramma's voor toegang tot de LedBorg vanaf de opdrachtregel.

    Voordat we van start 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-bord geen montagegaten heeft, is dit Revisie 1. Als je Raspberry Pi bevestigingsgaten heeft (bevindt zich bij de USB-poorten en tussen de stroom- en HDMI-poort), dan is het Revisie 2. Je moet ook de kernelversie kennen van je Rasbian-installatie. Open de terminal en voer de volgende opdracht in om te controleren:

    uname -r

    Zodra je het Revisie-nummer en het kernelnummer hebt, kun je hier het gedeelte Pakketten bezoeken om de link naar je 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.

    Notitie: 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 je gang 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 je meer wilt spelen met de LED-module voordat je verder gaat, klik dan op Demomodus:

    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 om de snelheid te wijzigen in langzaam, terwijl je 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"> / dev / ledborg

    De manier waarop de LedBorg RGB-waarden verwerkt, is dat 0 betekent dat het kanaal uit is, 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 Blue-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 gedeelte van de tutorial 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 schakelt om de voorspelde regen aan te geven.

    Ten eerste moeten we een API-toegangssleutel voor Weather Underground krijgen. 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.

    Zodra u 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/YOUR API KEY / 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 Weather Underground-zoekresultaten hebt gehaald.

    Nadat u de API-URL met uw API-sleutel en staat / stad hebt 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/YOUR API KEY / forecast / q / STATE / CITY.json')
    parsed_json = json.load (verplicht)
    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
    # het LED-antwoord.

    # pop = 0

    print 'Huidige kans op neerslag is .'. formaat (pop)

    # De standaardinstelling is om de LED in te schakelen
    # voor elke kans op regen boven 20%. Je kunt aanpassen
    # de waarde in "indien pop> 20:" zoals u wenst.

    als pop> 20:
    LedBorg = open ('/ dev / ledborg', 'w')
    LedBorg.write ( '002')
    del LedBorg
    print ('Regen!')
    anders:
    LedBorg = open ('/ dev / ledborg', 'w')
    LedBorg.write ( '000')
    del LedBorg
    print ('Geen regen!')

    Sla het bestand op als wunderground.py in de / home / pi / map. Open de terminal en typ de volgende opdracht:

    python wunderground.py

    Als u uw API-sleutel en uw staats- / stadscodes correct hebt ingevoerd, moet dit een reactie terugbrengen die er als volgt uitziet:

    Als er neerslag wordt voorspeld voor uw gebied, ziet uw LedBorg-uitgang er als volgt uit:

    Het wachten op een regenachtige dag om het script goed te testen zou vervelend zijn. Als er vandaag geen kans is op regen in uw gebied 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 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. Omdat deze taak zowel voor dit script als de e-mailindicator nodig is, gaan we in op het instellen van een cron-taak nadat we u hebben laten zien 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 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.

    voer feedparser in

    # Voer je Gmail-gebruikersnaam in
    # en wachtwoord. Niet opnemen
    # het gedeelte @ gmail.com van
    # je gebruikersnaam.

    gebruikersnaam = "gebruikersnaam"
    wachtwoord = "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 op een 0 of 1 om te testen
    # het LED-antwoord.

    # mail = 0

    als mail> 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 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, ziet je LedBorg 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 wanneer 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 dat we willen doen, is de LED uit te schakelen als deze momenteel aan staat bij onze vorige experimenten. Bij het terminaltype:

    echo "000"> / 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 u 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 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 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 om te melden . Als u de planning voor het Gmail-notificatiescript 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 updatemelding.


    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 u een invoerbron voor de gegevens kunt vinden, kunt u er een variabele van maken in uw Python-script - aandelenmarktgemiddelden, pollenaantallen, Twitter-vermeldingen en als er een API voor is, kunt u deze omzetten in een omgevingslicht-LED-indicator.

    Ten slotte wil ik dank zeggen voor alle geweldige middelen 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 bijdragers aan / r / LearnPython hebben me geholpen met het doorzoeken 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 bij Code Academy was een geweldige manier om de basissyntaxis en -structuur op te pikken van een taal die ik nog nooit eerder heb gebruikt.