Costruisci un indicatore LED con un Raspberry Pi (per e-mail, meteo o qualsiasi altra cosa)



Il Raspberry Pi è una bella piattaforma compatta a cui collegare un indicatore luminoso per tutti i tipi di progetti: notifiche meteo, nuove e-mail, ecc. Continua a leggere mentre ti mostriamo come collegare un modulo LED al tuo Pi e impostare alcune notifiche di base .

Perché voglio farlo?

Perche è divertente. A differenza di molti dei nostri tutorial in cui includiamo una piccola descrizione in alto che delinea esattamente quale beneficio otterrai dal progetto, la descrizione è piuttosto breve in questo caso perché il vantaggio è semplicemente divertirsi.





Il Raspberry Pi è un dispositivo perfetto con cui giocare, sperimentare con l'elettronica e imparare un po' di programmazione. Nessuno necessità un indicatore di pioggia ambientale nella loro cucina, ad esempio, ma costruirne uno è un esercizio divertente e un ottimo promemoria per portare con te l'ombrello nei giorni di potenziale tempesta.

Di cosa ho bisogno?

Per seguire il nostro tutorial avrai bisogno di alcune cose. Innanzitutto, supponiamo che tu abbia già seguito il nostro tutorial precedente: La guida HTG per iniziare con Raspberry Pi (e quindi avere le basi per l'installazione di Rasbian sul nostro Raspberry Pi).



Se stai cercando di realizzare questo progetto con un budget limitato, possiamo dirti con sicurezza che il modello più recente Raspberry Pi è significativamente eccessivo per il lavoro e ti incoraggiamo a soffiare via la polvere da un vecchio Raspberry Pi che hai spinto nell'armadio o prendine uno usato a buon mercato su eBay o simili. Dal punto di vista del budget, il lungo in-the-dente un Raspberry Pi 1 Modello A o Modello B strappato da eBay per $ 10-15 è perfetto per questo progetto rispetto all'acquisto di un nuovissimo Pi $ 35 di generazione attuale.

Annuncio pubblicitario

Oltre ad avere un'unità Pi funzionale con Raspbian installato su di essa, avrai bisogno delle seguenti cose:

Nota: La custodia Pi trasparente / smerigliata è del tutto opzionale, ma se stai attualmente utilizzando una custodia opaca, il tuo indicatore LED sarà nascosto all'interno. Dovrai praticare un foro nella custodia per far uscire la luce o utilizzare una prolunga GPIO con un kit di breakout, come questo da Adafruit Industries —per collegare il LedBorg al tuo Raspberry Pi. Mentre l'utilizzo del cavo breakout aggiunge circa $ 8 alle spese del progetto, offre un maggiore potenziale per la personalizzazione del prodotto finale in quanto è possibile posizionare più facilmente il LED all'interno delle cose o sotto qualcosa che si desidera illuminare.

Installazione del LedBorg

Sebbene tu possa certamente costruire da solo un indicatore LED completamente da zero (e una ricerca sul motore di ricerca mostrerà molte persone che lo hanno fatto), l'organizzazione Piborg produce un modulo LED così compatto ed economico, il LedBorg, che potremmo t resistere all'utilizzo come base per il nostro progetto di indicatori LED Raspberry Pi.

L'installazione del modulo è un gioco da ragazzi poiché è progettato per adattarsi direttamente ai pin GPIO sul Pi. Innanzitutto, spegni il tuo Pi e apri la custodia.

La parte più importante del processo di installazione è che orienti il ​​modulo in modo che l'icona LedBorg sia più vicina al modulo RCA sulla scheda Raspberry Pi (e quindi il bordo del LedBorg è a filo con i bordi della scheda Pi con la sporgenza porzione del LedBorg che pende sopra la scheda Pi e non fuori dal bordo). Vedi la fotografia sopra.

Mentre hai la scheda Pi aperta, ora sarebbe un ottimo momento per coprire gli indicatori LED di bordo (accanto alle porte USB), specialmente se stai usando una custodia trasparente. Non vuoi che sia confuso leggere il tuo indicatore LedBorg perché le spie di alimentazione e di rete sono così luminose.

Annuncio pubblicitario

Abbiamo coperto il nostro con uno strato di nastro isolante bianco. Questo li ha oscurati abbastanza da poterli ancora fare riferimento, ma erano molto più deboli del LedBorg che non distraevano più.

Una volta installato LedBorg e, facoltativamente, coperto gli indicatori LED del Pi con del nastro isolante, è ora di chiudere il case. Avvia il tuo Pi prima di passare alla fase successiva del tutorial.

Installazione del software LedBorg

PiBorg fornisce un ottimo pacchetto software per LedBorg che include sia un controller GUI che driver per accedere a LedBorg dalla riga di comando.

Prima di iniziare, devi assicurarti di ottenere il pacchetto giusto per la tua versione di Rasbian e il numero di revisione della tua scheda Raspberry Pi.

Se la tua scheda Raspberry Pi non ha fori di montaggio, è la revisione 1. Se il tuo Raspberry Pi ha fori di montaggio (localizzati dalle porte USB e tra l'alimentazione e la porta HDMI), allora è la revisione 2. Devi anche conoscere la versione del kernel della tua installazione Rasbian. Apri il terminale e inserisci il seguente comando per verificare:

uname -r

Una volta che hai il numero di revisione e il numero del kernel, puoi visita la sezione Pacchetti qui per prendere il link per il tuo pacchetto. Nel nostro caso stiamo usando una scheda Revisione 1 con il kernel 3.6.11, quindi prenderemo il file raspbian-2013-02-09-rev1.zip.

Annuncio pubblicitario

Per installare tutte le chicche dobbiamo aprire il terminale sul Pi. e quindi inserisci i seguenti comandi per installare il pacchetto LedBorg.

Nota: Devi sostituire l'URL nel terzo comando con l'URL del pacchetto per la tua combinazione board/kernel.

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

A questo punto ora hai il wrapper della GUI per i driver LedBorg e i driver stessi installati. Sul tuo desktop Raspbian vedrai un'icona per il wrapper della GUI:

Vai avanti e fai clic sull'icona LedBorg per avviare il wrapper della GUI. Sarai trattato con l'interfaccia di selezione dei colori in questo modo:

Ora è il momento perfetto per assicurarti che il tuo modulo sia funzionante. Scegli qualsiasi colore, tranne il nero, per provarlo. Lo testeremo scegliendo alcuni colori:

Sembra buono! È luminoso e la plastica smerigliata della custodia che abbiamo ordinato per il progetto offre una diffusione moderata. Se vuoi giocare ancora con il modulo LED prima di andare avanti, fai clic su Modalità demo:

Annuncio pubblicitario

In modalità demo puoi scorrere tutti i colori a varie velocità, controllare l'uscita alta/bassa e altrimenti mettere alla prova il modulo LED.

È qui nella sezione Modalità Demo che puoi anche trasformare il tuo LedBorg nel primo di molti indicatori. Selezionando CPU nella sezione Colori, il LED inizierà a cambiare da verde a giallo a rosso per indicare il carico sul processore ARM del Raspberry Pi. Ti suggeriamo di cambiare la velocità in lenta mentre ci sei: Fast aggiorna il LED troppo rapidamente e rende l'indicatore della CPU distratto invece che utile.

Oltre a utilizzare l'interfaccia GUI per selezionare i colori, è possibile selezionare i colori dal terminale utilizzando i valori RGB. Apri il terminale e inserisci il seguente comando per spegnere il LED:

echo '000' > /dev/ledborg

Il modo in cui LedBorg gestisce i valori RGB è che 0 significa che il canale è spento, 1 significa che il canale è a metà potenza e 2 significa che il canale è a piena potenza. Quindi, ad esempio, 001 imposterà il canale rosso allo 0%, il canale verde allo 0% e il canale blu al 50% di potenza.

Modificare il valore in 002 e l'uscita del LED rimane blu ma diventa più luminosa perché il canale blu è ora al 100% di uscita. Cambia il valore in 202 e il rosso e il blu a piena potenza si combinano per creare un colore magenta.

Ora che sappiamo come manipolare manualmente il LED, diamo un'occhiata all'utilizzo di script per trasformare il nostro LED da una semplice luce a un vero e proprio indicatore.

Configurare il tuo LedBorg come indicatore di pioggia

Per questa parte del tutorial uniremo diverse cose insieme per trasformare il nostro modulo LED LedBorg in un indicatore di pioggia basato sulle previsioni del tempo per la nostra posizione. Utilizzeremo uno script Python per chiamare un'API meteo che a sua volta leggerà la possibilità di pioggia per il giorno, quindi commuterà il LED da spento a blu brillante per indicare la pioggia prevista.

Annuncio pubblicitario

Per prima cosa, dobbiamo ottenere una chiave di accesso API per Weather Underground. Per uso personale e piccoli progetti di sviluppo l'API è gratuita. Visita la pagina di registrazione dell'API meteo qui e registrati per una chiave API.

Una volta che hai la tua chiave API, visita Weather Underground e cerca la città che vuoi monitorare. Nel nostro caso andremo a monitorare San Francisco, CA. L'URL per la pagina delle previsioni di San Francisco è:

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

La parte importante per i nostri scopi è l'ultima parte dell'URL: /CA/San_Francisco.html. Lo useremo per modificare l'URL di previsione per lo strumento API. L'URL di base è:

http://api.wunderground.com/api/LA TUA API KEY/forecast/q/STATE/CITY.json

Puoi generare la previsione per qualsiasi città degli Stati Uniti inserendo la tua chiave API, il codice di stato a due lettere e il nome della città dall'URL che hai estratto dai risultati di ricerca di Weather Underground.

Una volta inserito l'URL API con la chiave API e lo stato/città, puoi modificare il seguente script Python creando un nuovo documento di testo sul tuo Pi utilizzando Leafpad e incollandoci il codice seguente:

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

# Il seguente è un valore di debug.
# Modifica l'hash e cambia
# l'intero a 0-100 da testare
# la risposta del LED.

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

Annuncio pubblicitario

Salva il file come wunderground.py nella directory /home/pi/. Apri il terminale e digita il seguente comando:

pitone wunderground.py

Se hai inserito correttamente la tua chiave API e i codici di stato/città, dovrebbe restituire una risposta simile a:

Se sono previste precipitazioni per la tua zona, il tuo output di LedBorg dovrebbe apparire così:

Ora aspettare un giorno di pioggia per testare correttamente lo script sarebbe noioso. Se non c'è possibilità di pioggia nella tua zona oggi e vuoi vedere il LED accendersi, modifica lo script wunderground.py e sostituisci il valore pop = pop passthrough nella riga 13 con un valore maggiore di 20 come il 60 che il nostro previsione restituita. Ricorda solo di riportare la linea in pop = pop quando hai finito.

Il passaggio finale consiste nell'impostare un cron job per eseguire automaticamente lo script che abbiamo appena salvato a intervalli regolari per mantenere aggiornato l'indicatore LED. Poiché questa attività è necessaria sia per questo script che per l'indicatore e-mail che segue, tratteremo l'impostazione di un cron job dopo averti mostrato come impostare l'altro script.

Configurare il tuo LedBorg come indicatore di Gmail

A chi non piace la correzione della dopamina che viene fornita con la visualizzazione di nuove email nella propria casella di posta? In questa parte del tutorial ti mostreremo come utilizzare il LedBorg come nuovo indicatore di Gmail. Proprio come l'ultima volta, combineremo un input esterno (in questo caso un feed Atom invece di un'API) e un semplice script per pilotare il nostro LED.

Annuncio pubblicitario

Abbiamo bisogno di espandere un po' la funzionalità della nostra installazione di Python installando FeedParser , uno strumento di lettura di feed RSS/Atom di Python. Apri il terminale e inserisci il seguente comando:

sudo easy_install feedparser

Una volta completata l'installazione, possiamo metterci al lavoro creando il nostro script di controllo di Gmail. Ancora una volta, usando Leafpad, incolla il seguente testo nell'editor. Modifica il nome utente e la password in modo che corrispondano al nome utente e alla password dell'account Gmail che desideri controllare.

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

# Il seguente è un valore di debug.
# Modifica l'hash e cambia
# l'intero a 0 o 1 da testare
# la risposta del LED.

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

Salva lo script come gmailcheck.py. Apri il terminale e digita il seguente comando:

python gmailcheck.py

Se hai e-mail nella tua casella di posta Gmail, il LED diventa verde e riceverai una risposta come questa:

Se hai posta nella tua casella di posta Gmail, il tuo LedBorg apparirà così:

Proprio come lo script di controllo della pioggia, abbiamo incluso un valore di debug. Se non hai nessuna nuova email, puoi inviarti un'email per aumentare il conteggio della posta in arrivo a 1 oppure puoi modificare l'hash del commento e cambiare la riga di debug in mail = 1 per testare lo script. Ricorda di ripristinare la linea quando hai finito di testare.

Annuncio pubblicitario

Passa alla sezione successiva del tutorial per impostare lo script Gmail in modo che venga eseguito in base a una pianificazione.

Configurazione di un cron job per eseguire il tuo script

Ora che abbiamo due script con cui giocare, dobbiamo impostare un cron job per eseguirli durante il giorno per mantenere aggiornato l'indicatore LED.

La prima cosa che vogliamo fare è spegnere il LED se è attualmente acceso dai nostri esperimenti precedenti. Al terminale digitare:

echo 000 > /dev/ledborg

Mentre sei ancora alla riga di comando, puoi aprire l'editor cron. Se non hai mai impostato un cron job prima, ti consigliamo vivamente dai un'occhiata alla nostra guida per usarlo qui . Detto questo, ti guideremo attraverso l'impostazione di un programma di base proprio qui.

Al terminale digitare:

sudo crontab -e

Questo aprirà la tabella cron di Raspbian nell'editor di testo Nano. Usa i tasti freccia per scorrere fino in fondo. Qui è dove configureremo il cron job ricorrente per i nostri script Python.

Se vuoi impostare lo script della pioggia, inserisci la seguente riga nella tabella cron:

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

Annuncio pubblicitario

Premi CTRL+X per uscire; selezionare sì per salvare e sovrascrivere la tabella cron esistente. Il valore che abbiamo inserito nella tabella cron */5 * * * * imposta lo script in modo che venga eseguito ogni 5 minuti, per sempre.

Ogni 5 minuti è un bel lasso di tempo per uno script che controlla la pioggia prevista - potresti persino obiettare che è un po' troppo aggressivo - ma se stai cercando di tenere sotto controllo la tua email è un intervallo un po' troppo lungo per la notifica . Se stai impostando la pianificazione per lo script di notifica di Gmail, inserisci la seguente riga nella tabella cron:

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

Questa voce esegue lo script gmailcheck.py ogni minuto per una notifica di aggiornamento molto più rapida.


Questo è tutto quello che c'è da fare! Puoi sperimentare con i tuoi script Python rimuovendo le istruzioni if/else dalle nostre e provandole con nuove variabili. Se riesci a trovare una fonte di input per i dati, puoi trasformarla in una variabile nel tuo script Python: medie del mercato azionario, conteggio dei pollini, Twitter menziona, se esiste un'API per esso, puoi trasformarlo in un indicatore LED ambientale.

Infine, voglio ringraziare tutte le grandi risorse che ho utilizzato per lavorare a questo progetto. È passato poco più di un decennio da quando scrivevo attivamente programmi e ci sono voluti alcuni colpi per togliere la polvere e la ruggine. I contributori di /r/LearnPython mi ha aiutato a smanettare nell'output dell'API per Weather Underground, studiando come Michael alla Mitch Tech si è occupato del feed Atom di Gmail reso facile l'analisi per il LedBorg e studiare i moduli di apprendimento Python presso Code Academy è stato un ottimo modo per acquisire la sintassi e la struttura di base di un linguaggio che non avevo mai usato prima.

LEGGI SUCCESSIVO Foto del profilo di Jason Fitzpatrick Jason Fitzpatrick
Jason Fitzpatrick è l'editore capo di LifeSavvy, il sito gemello di How-To Geek incentrato su trucchi, suggerimenti e trucchi per la vita. Ha oltre un decennio di esperienza nella pubblicazione e ha scritto migliaia di articoli su Review Geek, How-To Geek e Lifehacker. Jason è stato l'editor del weekend di Lifehacker prima di entrare a far parte di How-To Geek.
Leggi la biografia completa

Articoli Interessanti