Byg en LED indikator med en Raspberry Pi (til Email, Weather eller noget)

Indholdsfortegnelse:

Video: Byg en LED indikator med en Raspberry Pi (til Email, Weather eller noget)

Video: Byg en LED indikator med en Raspberry Pi (til Email, Weather eller noget)
Video: How to Change the Default Search Engine on All Browsers and Devices 2024, Marts
Byg en LED indikator med en Raspberry Pi (til Email, Weather eller noget)
Byg en LED indikator med en Raspberry Pi (til Email, Weather eller noget)
Anonim
Raspberry Pi gør en god kompakt platform til at tilslutte en indikatorlampe til alle slags projekter-vejrmelding, nye e-mails osv. Læs videre, som vi viser dig, hvordan du tilslutter et LED-modul til din Pi og opretter nogle grundlæggende meddelelser.
Raspberry Pi gør en god kompakt platform til at tilslutte en indikatorlampe til alle slags projekter-vejrmelding, nye e-mails osv. Læs videre, som vi viser dig, hvordan du tilslutter et LED-modul til din Pi og opretter nogle grundlæggende meddelelser.

Hvorfor vil jeg gøre dette?

Fordi det er sjovt. I modsætning til mange af vores tutorials, hvor vi indeholder en lille blurb på toppen, der præciserer præcis, hvilken fordel du får af projektet, er blurb ganske kort i dette tilfælde, fordi fordelen simpelthen har det sjovt.

Raspberry Pi er en perfekt enhed til at lege med, eksperimentere med elektronik og lære nogle programmering. Ingen behov En omgivende regnindikator i deres køkken, for eksempel, men at bygge en er en sjov øvelse og en stor påmindelse om at bringe din paraply med dig på potentielle stormdage.

Hvad har jeg brug for?

For at følge med med selvstudiet skal du bruge et par ting. For det første antager vi, at du allerede har fulgt vores tidligere vejledning: HTG-vejledningen til at komme i gang med Raspberry Pi (og dermed få det grundlæggende til at installere Rasbian på vores Raspberry Pi).

Hvis du søger at gøre dette projekt på et budget, kan vi med sikkerhed fortælle dig, at den nyeste model Raspberry Pi er betydelig overkill for jobbet, og vi vil opfordre dig til at blæse støvet fra en gammel Raspberry Pi, du har skubbet i skabet eller afhente en billig brugt en fra eBay eller lignende. Budgettet er den længe i tanden en Raspberry Pi 1 Model A eller Model B snagged off eBay for $ 10-15, der passer perfekt til dette projekt, når man køber en helt ny $ 35 nuværende generation Pi.

Ud over at have en funktionel Pi enhed med Raspbian installeret på den skal du have følgende ting:

  • 1 LedBorg modul (~ $ 5,00 med $ 4 fragt fra Storbritannien til USA, fungerer med alle Raspberry Pi modeller).
  • 1 Clear Raspberry Pi Case kompatibel med din særlige Pi model som denne Raspberry Pi 1 Model B sag.

Bemærk: Det klare / frosted Pi-tilfælde er helt valgfrit, men hvis du bruger et uigennemtrængeligt tilfælde, vil din LED-indikator blive gemt inde. Du skal enten skære et hul i dit tilfælde for at slukke for lyset eller bruge et GPIO-forlængerkabel med et breakout-sæt som dette fra Adafruit Industries-for at binde LedBorg til din Raspberry Pi. Mens du bruger breakout-kablet, tilføjer ca. $ 8 til bekostning af projektet, giver det mere potentiale til at tilpasse slutproduktet, idet du lettere kan placere LED'en inde i ting eller under noget, du vil belyse.

Installation af LedBorg

Image
Image

Selvom du helt sikkert kunne opbygge dig selv en LED-indikator helt fra bunden (og en søgemaskineforespørgsel vil dukke op masser af mennesker, der har gjort det), producerer Piborg-organisationen et så kompakt og billigt LED-modul, LedBorg, at vi ikke kunne ' ikke modstå at bruge det som grundlag for vores Raspberry Pi LED indikatorprojekt.

Installering af modulet er et snap, da det er designet til at passe direkte over GPIO-benene på Pi. Først skal du slå din Pi ned og åbne sagen.

Den vigtigste del af installationsprocessen er, at du orienterer modulet, så LedBorg-ikonet er tættest på RCA-modulet på Raspberry Pi-pladen (og dermed er LedBorgs kant fladt med kanterne af Pi-pladen med det overhængende del af LedBorg hængende over Pi bordet og ikke af kanten). Se billedet ovenfor.

Mens du har Pi-kortet åbent, ville det nu være en god tid at dække LED-indikatorerne (ved siden af USB-portene), især hvis du bruger et klart tilfælde. Du vil ikke have det forvirrende at læse din LedBorg-indikator, fordi strøm- og netindikatorlamperne er så lyse.

Vi dækkede vores med et lag af hvidt elektrisk tape. Dette dæmpede dem nok, så vi stadig kunne henvise dem, men de var så meget svagere end LedBorg det var ikke længere distraherende.

Når først LedBorg er installeret og eventuelt har dækket Pi's LED-indikatorer med elektrisk tape, er det tid til at lukke sagen igen. Start din Pi op, før du går videre til næste fase af øvelsen.

Installation af LedBorg-softwaren

PiBorg leverer en fantastisk softwarepakke til LedBorg, der indeholder både en GUI-controller og drivere til adgang til LedBorg fra kommandolinjen.
PiBorg leverer en fantastisk softwarepakke til LedBorg, der indeholder både en GUI-controller og drivere til adgang til LedBorg fra kommandolinjen.

Før vi kommer i gang, skal du sørge for at få fat i den rigtige pakke til din version af Rasbian og revision # af din Raspberry Pi bord.

Hvis din Raspberry Pi bord ikke har monteringshuller, er det Revision 1. Hvis din Raspberry Pi har monteringshuller (placeret ved USB-portene og mellem strøm- og HDMI-porten), så er det Revision 2. Du skal også kende kerneversionen af din Rasbian-installation. Åbn terminalen og indtast følgende kommando for at tjekke:

uname -r

Når du har revisionsnummeret og kerne nummeret, kan du besøge pakken sektionen her for at hente linket til din pakke. I vores tilfælde bruger vi et Revision 1 bord med 3.6.11 kernen, så vi kunne få fat i filen raspbian-2013-02-09-rev1.zip.

For at installere alle godbidder skal vi åbne terminalen på Pi. og indtast derefter følgende kommandoer for at installere LedBorg-pakken.

Bemærk: Du skal erstatte URL'en i den tredje kommando med URL'en for pakken til din bord / kernekombination.

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

På dette tidspunkt har du nu GUI wrapper til LedBorg drivere og driverne selv installeret. På dit Raspbian skrivebord vises et ikon til GUI wrapper:

Gå videre og klik på LedBorg ikonet for at starte GUI wrapper. Du vil blive behandlet på farvevælgerinterfacet som sådan:
Gå videre og klik på LedBorg ikonet for at starte GUI wrapper. Du vil blive behandlet på farvevælgerinterfacet som sådan:
Nu er det den perfekte tid til at sikre, at dit modul er funktionelt. Vælg enhver farve, gem til sort, for at prøve den. Vi skal teste det ved at vælge et par farver:
Nu er det den perfekte tid til at sikre, at dit modul er funktionelt. Vælg enhver farve, gem til sort, for at prøve den. Vi skal teste det ved at vælge et par farver:
Ser godt ud! Det er lyst og den frostede plastik i den sag, vi bestilte til projektet, tilbyder moderat diffusion. Hvis du vil spille med LED-modulet mere, før du går videre, skal du klikke på Demo Mode:
Ser godt ud! Det er lyst og den frostede plastik i den sag, vi bestilte til projektet, tilbyder moderat diffusion. Hvis du vil spille med LED-modulet mere, før du går videre, skal du klikke på Demo Mode:
I demo-tilstand kan du cykle gennem alle farver med forskellige hastigheder, tjekke høj / lav udgang og ellers sætte LED-modulet gennem trinene.
I demo-tilstand kan du cykle gennem alle farver med forskellige hastigheder, tjekke høj / lav udgang og ellers sætte LED-modulet gennem trinene.

Det er her i Demo Mode sektionen, at du også kan slå din LedBorg til den første af mange indikatorer. Ved at vælge CPU i sektionen Farver begynder LED'en at skifte fra grønt til gul til rødt for at angive belastning på Raspberry Pi's ARM-processor. Vi foreslår, at du ændrer hastigheden til langsom, mens du er ved det. Hurtigt opdaterer LED'en for hurtigt og gør CPU-indikatoren distraherende i stedet for nyttig.

Ud over at bruge GUI-grænsefladen til at vælge farver kan du vælge farver fra terminalen ved hjælp af RGB-værdier. Åbn terminalen og indtast følgende kommando for at slukke for LED'en:

echo '000' > /dev/ledborg

Måden LedBorg håndterer RGB-værdier er, at 0 betyder, at kanalen er slukket, 1 betyder, at kanalen er halv strøm, og 2 betyder, at kanalen er fuld effekt. Så for eksempel vil 001 indstille den røde kanal ved 0%, den grønne kanal ved 0% og den blå kanal ved 50% effekt.

Skift værdien til 002, og LED-udgangen forbliver blå, men bliver lysere, fordi den blå kanal nu er 100% output. Skift værdien til 202, og den røde og blå ved fuld effekt kombinerer for at gøre en magenta farve.

Nu da vi ved, hvordan man manipulerer LED'en manuelt, lad os se på brug af scripts for at vende vores LED fra et simpelt lys til en faktisk indikator.

Konfiguration af din LedBorg som regnindikator

For denne del af tutorialen kæmper vi flere ting sammen for at gøre vores LedBorg LED-modul til en regnindikator baseret på vejrudsigten for vores placering. Vi bruger et Python-script til at kalde et vejr-API, der igen læser chancen for regn for dagen, og skift derefter lysdioden fra fra til lyseblå for at indikere det forventede regn.
For denne del af tutorialen kæmper vi flere ting sammen for at gøre vores LedBorg LED-modul til en regnindikator baseret på vejrudsigten for vores placering. Vi bruger et Python-script til at kalde et vejr-API, der igen læser chancen for regn for dagen, og skift derefter lysdioden fra fra til lyseblå for at indikere det forventede regn.

For det første skal vi få en API-adgangskode til Weather Underground. Til personlig brug og små udviklingsprojekter er API'en gratis. Besøg registreringssiden for vejledende API her og tilmelde dig en API-nøgle.

Når du har din API-nøgle, skal du besøge vejrundergrunden og søge efter den by, du vil overvåge. I vores tilfælde vil vi overvåge San Fransisco, CA. Webadressen til San Fransiscos prognose side er:

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

Den vigtige del til vores formål er den sidste del af webadressen: /CA/San_Francisco.html. Vi vil bruge det til at redigere prognose-URL'en for API-værktøjet. Basisadressen er:

https://api.wunderground.com/api/YOUR API KEY/forecast/q/STATE/CITY.json

Du kan generere prognosen for en hvilken som helst amerikansk by ved at indtaste din API-nøgle, tobogstaverens tilstandskode og byens navn fra den webadresse, du har trukket fra dine vejrundergrounds søgeresultater.

Når du har API-URL'en med din API-nøgle og stat / by indsat, kan du derefter redigere følgende Python-script ved at oprette et nyt tekstdokument på din Pi ved hjælp af Leafpad og indsætte følgende kode i den:

from urllib2 import urlopen import json

req = urlopen('https://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'])

# Følgende er en fejlfinding. # Rediger ud hash og ændre # heltalet til en 0-100 til test # LED-responsen.

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

Gem filen som wunderground.py i / home / pi / directory. Åbn terminalen og skriv følgende kommando:

python wunderground.py

Hvis du har indtastet din API-nøgle og dine stats- / bykoder ordentligt, skal det sparke et svar, der ligner:

Hvis nedbør forudses for dit område, skal din LedBorg-produktion se ud som sådan:
Hvis nedbør forudses for dit område, skal din LedBorg-produktion se ud som sådan:
Nu venter på en regnfuld dag til korrekt at teste scriptet ville være kedeligt. Hvis der ikke er nogen chance for regn i dit område i dag, og du vil se LED'en lyser, skal du redigere wunderground.py scriptet og erstatte "pop = pop" passthrough-værdien i linje 13 med en værdi større end 20 som 60 at vores prognose returneres. Bare husk at ændre linjen tilbage til "pop = pop", når du er færdig.
Nu venter på en regnfuld dag til korrekt at teste scriptet ville være kedeligt. Hvis der ikke er nogen chance for regn i dit område i dag, og du vil se LED'en lyser, skal du redigere wunderground.py scriptet og erstatte "pop = pop" passthrough-værdien i linje 13 med en værdi større end 20 som 60 at vores prognose returneres. Bare husk at ændre linjen tilbage til "pop = pop", når du er færdig.

Det sidste trin er at oprette et cron-job til automatisk at køre det script, vi netop har sparet med et regelmæssigt interval for at holde LED-indikatoren aktuelle. Da denne opgave er nødvendig for både dette script og den e-mail-indikator, der følger, skal vi dække opsætning af et cron-job, efter at vi har vist dig, hvordan du konfigurerer det andet script.

Konfiguration af din LedBorg som en Gmail-indikator

Hvem kan ikke lide dopamin-løsningen, der følger med at se ny email i deres indbakke? I denne del af vejledningen skal vi vise dig, hvordan du bruger LedBorg som en ny Gmail-indikator. Ligesom sidste gang skal vi kombinere en ekstern indgang (i dette tilfælde et Atom-feed i stedet for en API) og et simpelt script til at drive vores LED.
Hvem kan ikke lide dopamin-løsningen, der følger med at se ny email i deres indbakke? I denne del af vejledningen skal vi vise dig, hvordan du bruger LedBorg som en ny Gmail-indikator. Ligesom sidste gang skal vi kombinere en ekstern indgang (i dette tilfælde et Atom-feed i stedet for en API) og et simpelt script til at drive vores LED.

Vi skal udvide funktionaliteten i vores Python installation lidt ved at installere FeedParser, et Python RSS / Atom feed læsningsværktøj. Åbn terminalen og indtast følgende kommando:

sudo easy_install feedparser

Når installationen er færdig, kan vi indstille os til at oprette vores Gmail-kontrol script. Igen skal du bruge Leafpad til at indsætte følgende tekst i editoren. Skift brugernavn og kodeord for at matche brugernavnet og adgangskoden til den Gmail-konto, du vil kontrollere.

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

# Følgende er en fejlfinding. # Rediger ud hash og ændre # heltalet til en 0 eller 1 til test # LED-responsen.

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

Gem scriptet som gmailcheck.py. Åbn terminalen og skriv følgende kommando:

python gmailcheck.py

Hvis du har e-mail, der sidder i din Gmail-indbakke, bliver LED'en grøn, og du får svar som sådan:

Hvis du har mail i din Gmail-indbakke, vil din LedBorg se ud som sådan:
Hvis du har mail i din Gmail-indbakke, vil din LedBorg se ud som sådan:
Ligesom regntjekningsskriptet har vi inkluderet en debugging-værdi. Hvis du ikke har nogen ny e-mail, kan du enten sende dig en e-mail for at hæve din indbakke tæller til 1, eller du kan redigere kommentaren hash og ændre fejlretningslinjen til "mail = 1" for at teste scriptet. Husk at vende tilbage linjen, når du er færdig med at teste.
Ligesom regntjekningsskriptet har vi inkluderet en debugging-værdi. Hvis du ikke har nogen ny e-mail, kan du enten sende dig en e-mail for at hæve din indbakke tæller til 1, eller du kan redigere kommentaren hash og ændre fejlretningslinjen til "mail = 1" for at teste scriptet. Husk at vende tilbage linjen, når du er færdig med at teste.

Hop ind i næste afsnit af vejledningen for at indstille dit Gmail-script til at køre på en tidsplan.

Opsætning af en Cron-job til at køre dit script

Nu hvor vi har to scripts at lege med, skal vi oprette et cron job for at kunne køre dem hele dagen for at holde LED indikatoren nuværende.
Nu hvor vi har to scripts at lege med, skal vi oprette et cron job for at kunne køre dem hele dagen for at holde LED indikatoren nuværende.

Det første, vi vil gøre, er at slukke for LED'en, hvis den er på nuværende tidspunkt fra vores tidligere eksperimenter. Ved terminaltype:

echo “000” > /dev/ledborg

Mens du stadig er på kommandolinjen, kan du åbne cron editoren. Hvis du aldrig har oprettet et cron-job før, anbefaler vi stærkt, at du tjekker vores vejledning til at bruge det her. Når det er sagt, går vi igennem med at oprette en grundplan her.

Ved terminaltype:

sudo crontab –e

Dette åbner Raspbian cron tabellen i Nano tekst editor. Brug piletasterne til at rulle ned til bunden. Det er her, vi skal opsætte det tilbagevendende cron job til vores Python scripts.

Hvis du vil oprette regnescriptet, skal du indtaste følgende linje i cron-tabellen:

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

Tryk på CTRL + X for at afslutte; vælg ja for at gemme og overskrive det eksisterende cron-bord. Værdien vi indtastede i cron-tabellen "* / 5 * * * *" indstiller scriptet til at køre hvert 5. minut, for evigt.

Hvert femte minut er et fint tidsrum for et script, der kontrollerer forventet regn. Du kan endda argumentere for, at det er lidt for aggressivt. Men hvis du forsøger at holde dig oven på din email, er det lidt for lang tid for meddelelse. Hvis du konfigurerer tidsplanen for Gmail-notifikationsskriptet, skal du indtaste følgende linje i cron-tabellen:

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

Denne post kører gmailcheck.py script hvert minut for en meget hurtigere opdateringsmeddelelse.

Det er alt der er til det! Du kan eksperimentere med dine egne Python-scripts ved at løfte if / else-udsagnene ud af vores og prøve dem ud med helt nye variabler. Hvis du kan finde en input kilde til dataene, kan du konvertere den til en variabel i dine Python script-aktiemarkedsværdier, pollen tæller, Twitter nævner, hvis der er en API til det, kan du gøre det til en omgivende LED indikator.

Endelig vil jeg gerne takke alle de store ressourcer, jeg plejede at arbejde på med dette projekt. Det har været lidt over et årti siden jeg var aktivt ved at skrive programmer, og det tog et par banke at få støv og rust ud. Bidragerne på / r / LearnPython hjalp mig med at mumle om i API-udgangen til Weather Underground, og studerede, hvordan Michael over på Mitch Tech behandlede Gmail Atom-feedet, der gjorde det nemt at analysere det for LedBorg, og at studere Python-læringsmodulerne på Code Academy var en god måde at hente den grundlæggende syntaks og struktur af et sprog, jeg aldrig havde brugt før.

Anbefalede: