Costruisci un indicatore LED con un Raspberry Pi (per e-mail, meteo o qualsiasi cosa)
Raspberry Pi è una bella piattaforma compatta per collegare una spia luminosa a 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 un piccolo blurb in alto che delinea esattamente quali benefici deriveranno dal progetto, il blurb è piuttosto breve in questo caso perché il vantaggio è semplicemente divertirsi.
Il Raspberry Pi è un dispositivo perfetto per giocare, sperimentare con l'elettronica e imparare un po 'di programmazione. Nessuno esigenze un indicatore di pioggia ambientale nella loro cucina, ad esempio, ma costruirne uno è un esercizio divertente e un ottimo promemoria per portare il tuo ombrello con te nei giorni potenzialmente di tempesta.
Di cosa ho bisogno?
Per seguire il tutorial, avrai bisogno di alcune cose. Innanzitutto, supponiamo di aver già seguito il nostro tutorial precedente: la Guida HTG per iniziare con Raspberry Pi (e quindi avere le nozioni di base sull'installazione di Rasbian sul nostro Raspberry Pi).
Se stai cercando di fare questo progetto con un budget, possiamo tranquillamente dirti che il nuovissimo modello Raspberry Pi è un overkill significativo per il lavoro e ti invitiamo a spazzare via la polvere da un vecchio Raspberry Pi che hai spinto nell'armadio o prendere uno usato a buon mercato su eBay o simili. Dal punto di vista economico, il modello Raspberry Pi 1 Model A o Model B impiccato a eBay per $ 10-15 è perfetto per questo progetto rispetto all'acquisto di un nuovissimo $ 35 di generazione attuale Pi.
Oltre ad avere una unità Pi funzionale con Raspbian installato su di essa avrai bisogno delle seguenti cose:
- 1 modulo LedBorg (~ $ 5,00 con spedizione $ 4 dal Regno Unito agli Stati Uniti, funziona con tutti i modelli Raspberry Pi).
- 1 Chiaro Custodia Raspberry Pi compatibile con il tuo modello Pi particolare come questa custodia modello B Raspberry Pi 1.
Nota: La custodia Pi trasparente / satinata è completamente opzionale, ma se stai utilizzando una custodia opaca, il tuo indicatore LED sarà nascosto all'interno. Avrai bisogno di tagliare un buco nel tuo caso per far uscire la luce o usare un cavo di estensione GPIO con un kit di sblocco, come quello di Adafruit Industries, per legare il LedBorg al tuo Raspberry Pi. Mentre utilizza il cavo breakout aggiunge circa $ 8 a 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 di LedBorg
Sebbene tu possa certamente costruirti un indicatore LED completamente nuovo (e un'inchiesta del motore di ricerca mostrerà un sacco di persone che lo hanno fatto) l'organizzazione Piborg produce un modulo LED così compatto e poco costoso, il LedBorg, che non potremmo t resistere all'uso come base per il nostro progetto di indicatori LED Raspberry Pi.
L'installazione del modulo è semplicissima poiché è progettata per adattarsi direttamente ai pin GPIO sul Pi. Per prima cosa, spegni il tuo Pi e apri il caso.
La parte più importante del processo di installazione è che orienta il modulo in modo che l'icona di LedBorg sia il più vicino al modulo RCA sulla scheda Raspberry Pi (e quindi il bordo di LedBorg è a filo con i bordi della scheda Pi con lo strapiombo parte del LedBorg che pende dal bordo del Pi e non dal bordo). Vedi la foto qui sopra.
Mentre hai la scheda Pi aperta, ora sarebbe un momento eccellente per coprire gli indicatori LED integrati (accanto alle porte USB), soprattutto se stai usando una custodia trasparente. Non vuoi che sia fonte di confusione leggere il tuo indicatore LedBorg perché le spie di alimentazione e di rete sono così luminose.
Abbiamo coperto il nostro con uno strato di nastro isolante bianco. Ciò li offuscava abbastanza da poterli fare riferimento a loro ma erano molto più fiochi di LedBorg e non li distraeva più.
Una volta installato LedBorg e, facoltativamente, coperto gli indicatori LED di Pi con del nastro isolante, è il momento di richiudere il case. Avvia il tuo Pi prima di passare alla fase successiva del tutorial.
Installazione del software LedBorg
PiBorg offre un ottimo pacchetto software per LedBorg che include sia un controller GUI che i driver per accedere a LedBorg dalla riga di comando.
Prima di iniziare devi assicurarti di aver preso 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, è Revisione 1. Se il tuo Raspberry Pi ha fori di montaggio (situati dalle porte USB e tra l'alimentazione e la porta HDMI) allora è Revision 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 ottenuto il numero di revisione e il numero del kernel, puoi visitare la sezione Pacchetti qui per prendere il link per il tuo pacchetto. Nel nostro caso stiamo usando una scheda Revision 1 con il kernel 3.6.11 in modo da prendere il file raspbian-2013-02-09-rev1.zip.
Per installare tutti i gadget abbiamo bisogno di aprire il terminale sul Pi. e quindi inserire i seguenti comandi per installare il pacchetto LedBorg.
Nota: È necessario sostituire l'URL nel terzo comando con l'URL del pacchetto per la combinazione scheda / 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 hai ora il wrapper GUI per i driver LedBorg e i driver stessi installati. Sul desktop Raspbian vedrai un'icona per il wrapper della GUI:
Vai avanti e fai clic sull'icona di LedBorg per avviare il wrapper della GUI. Sarai trattato nell'interfaccia del selettore del colore 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 selezionando alcuni colori:
Sembra buono! È luminoso e la plastica smerigliata del case che abbiamo ordinato per il progetto offre una diffusione moderata. Se vuoi giocare con il modulo LED ancora prima di andare avanti, fai clic su Modalità demo:
In modalità demo è possibile scorrere tutti i colori a varie velocità, controllare l'uscita alta / bassa e, in caso contrario, mettere il modulo LED in modo corretto.
È qui nella sezione Modalità demo che puoi anche trasformare il tuo LedBorg nel primo di molti indicatori. Selezionando la CPU nella sezione Colori, il LED inizierà a cambiare da verde a giallo a rosso per indicare il carico sul processore ARM di Raspberry Pi. Ti suggeriamo di cambiare la velocità al rallentatore mentre ci sei. Fast aggiorna il LED troppo velocemente e rende l'indicatore della CPU poco utile invece che utile.
Oltre a utilizzare l'interfaccia della 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 indica che il canale è pieno. Ad esempio, 001 imposterà il canale rosso allo 0%, il canale verde allo 0% e il canale blu al 50% della potenza.
Modificare il valore su 002 e l'uscita LED rimane blu ma diventa più luminosa perché il canale blu è ora al 100% dell'output. Cambia il valore in 202 e il Rosso e il Blu a piena potenza si uniscono per creare un colore magenta.
Ora che sappiamo come manipolare il LED manualmente, diamo un'occhiata agli script per trasformare il nostro LED da una luce semplice a un indicatore reale.
Configurazione di LedBorg come indicatore pioggia
Per questa parte del tutorial, combineremo diverse cose per trasformare il nostro modulo LED LedBorg in un indicatore di pioggia in base alle previsioni del tempo per la nostra posizione. Useremo uno script Python per chiamare un'API meteo che a sua volta leggerà la possibilità di pioggia per il giorno, e quindi passare il LED da spento a blu brillante per indicare la pioggia prevista.
Per prima cosa, abbiamo bisogno di 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 API meteo qui e registrati per una chiave API.
Una volta che hai la chiave API, visita la Weather Underground e cerca la città che vuoi monitorare. Nel nostro caso monitoreremo San Francisco, in California. L'URL della pagina di previsione 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/YOUR API KEY / forecast / q / STATE / CITY.json
Puoi generare la previsione per qualsiasi città degli Stati Uniti inserendo la chiave API, il codice a due lettere e il nome della città dall'URL che hai ottenuto dai risultati di ricerca Weather Weather.
Una volta ottenuto l'URL dell'API con la chiave API e lo stato / città inseriti, è possibile modificare il seguente script Python creando un nuovo documento di testo sul Pi usando Leafpad e incollandovi il seguente codice:
da urllib2 import urlopen
importazione 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']))# Quanto segue è un valore di debug.
# Modifica l'hash e cambia
# il numero intero a 0-100 da testare
# la risposta del LED.# pop = 0
stampa 'L'attuale possibilità di precipitazioni è .'. formato (pop)
# L'impostazione predefinita è di accendere il LED
# per ogni possibilità di pioggia superiore al 20%. È possibile regolare
# il valore in "se pop> 20:" come desideri.
se pop> 20:
LedBorg = open ('/ dev / ledborg', 'w')
LedBorg.write ( '002')
del LedBorg
stampa ('Pioggia!')
altro:
LedBorg = open ('/ dev / ledborg', 'w')
LedBorg.write ( '000')
del LedBorg
stampa ('No rain!')
Salva il file come wunderground.py nella directory / home / pi /. Apri il terminale e digita il seguente comando:
python wunderground.py
Se hai inserito correttamente la tua chiave API e i tuoi codici di stato / città, dovrebbe restituire una risposta che assomiglia a:
Se la precipitazione è prevista per la tua area, l'output di LedBorg dovrebbe essere simile al seguente:
Ora in attesa di una giornata di pioggia per testare correttamente la sceneggiatura sarebbe noioso. Se non ci sono possibilità di pioggia nella tua zona oggi e vuoi vedere il LED acceso, modifica lo script wunderground.py e sostituisci il valore passthrough "pop = pop" nella riga 13 con un valore maggiore di 20 come il 60 che la nostra previsione è tornata. Ricordati di cambiare 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 su un intervallo regolare al fine di mantenere l'indicatore LED corrente. Dato che questa attività è necessaria sia per questo script che per l'indicatore di posta elettronica che segue, vedremo come impostare un processo cron dopo che ti abbiamo mostrato come impostare l'altro script.
Configurazione di LedBorg come indicatore Gmail
A chi non piace la correzione della dopamina che viene fornita con la visualizzazione di nuove e-mail nella posta in arrivo? In questa parte del tutorial mostreremo come utilizzare LedBorg come un nuovo indicatore Gmail. Proprio come l'ultima volta, combineremo un input esterno (in questo caso un feed Atom anziché un'API) e uno script semplice per guidare il nostro LED.
Abbiamo bisogno di espandere un po 'la funzionalità della nostra installazione Python installando FeedParser, uno strumento di lettura dei feed RSS / Atom Python. Apri il terminale e inserisci il seguente comando:
sudo easy_install feedparser
Una volta completata l'installazione, possiamo iniziare a creare il nostro script di controllo di Gmail. Di nuovo, usando Leafpad, incolla il seguente testo nell'editor. Cambia nome utente e password per abbinare nome utente e password dell'account Gmail che desideri controllare.
importare feedparser
# Inserisci il tuo nome utente Gmail
# e password. Non includere
# la parte @ gmail.com di
# il tuo nome utente.
username = "username"
password = "password"
mail = int (feedparser.parse ("https: //" + username + ":" + password + "@ mail.google.com/gmail/feed/atom")["feed"]["fullcount"])
# Quanto segue è un valore di debug.
# Modifica l'hash e cambia
# il numero intero a 0 o 1 da testare
# la risposta del LED.# mail = 0
se mail> 0:
LedBorg = open ('/ dev / ledborg', 'w')
LedBorg.write ( '020')
del LedBorg
stampa ('Mail!')
altro:
LedBorg = open ('/ dev / ledborg', 'w')
LedBorg.write ( '000')
del LedBorg
stampa ('No mail!')
Salva lo script come gmailcheck.py. Apri il terminale e digita il seguente comando:
python gmailcheck.py
Se nella posta in arrivo di Gmail è presente un'e-mail, il LED diventerà verde e otterrai una risposta del tipo:
Se hai posta nella tua casella di posta Gmail, il tuo LedBorg sarà così:
Proprio come lo script di controllo pioggia, abbiamo incluso un valore di debug. Se non si dispone di una nuova e-mail, è possibile inviare una e-mail per aumentare il conteggio della posta in arrivo a 1 oppure modificare l'hash del commento e modificare la riga di debug su "mail = 1" per testare lo script. Ricordati di annullare la linea quando hai finito i test.
Accedi alla prossima sezione del tutorial per impostare lo script di Gmail in modo che venga eseguito su una pianificazione.
Impostazione di un processo cron per eseguire lo script
Ora che abbiamo due script con cui giocare, dobbiamo impostare un cron job per eseguirli durante il giorno per mantenere l'indicatore LED aggiornato.
La prima cosa che vogliamo fare è spegnere il LED se è attivo dai nostri precedenti esperimenti. Al tipo di terminale:
echo "000"> / dev / ledborg
Mentre sei ancora alla riga di comando, puoi aprire l'editor cron. Se non hai mai impostato prima un cron job, ti consigliamo vivamente di consultare la nostra guida per utilizzarlo qui. Detto questo, ti guideremo attraverso l'impostazione di un programma di base qui.
Al tipo di terminale:
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 installeremo il cron job ricorrente per i nostri script Python.
Se si desidera impostare lo script di pioggia, immettere la seguente riga nella tabella cron:
* / 5 * * * * python /home/pi/wunderground.py
Premi CTRL + X per uscire; selezionare Sì per salvare e sovrascrivere la tabella cron esistente. Il valore inserito nella tabella cron "* / 5 * * * *" imposta lo script per l'esecuzione ogni 5 minuti, per sempre.
Ogni 5 minuti è un bel lasso di tempo per una sceneggiatura che controlla la pioggia prevista - potresti anche obiettare che è un po 'troppo aggressivo - ma se stai cercando di mantenere la tua email è 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ù veloce.
Questo è tutto ciò che c'è da fare! Puoi sperimentare con i tuoi script Python sollevando le dichiarazioni if / else dalla nostra e provandole con nuove variabili. Se riesci a trovare una fonte di input per i dati, puoi trasformarla in una variabile nel tuo script di Python - medie del mercato azionario, conteggi di pollini, menzioni di Twitter, se c'è un'API per questo puoi trasformarla in un indicatore LED ambientale.
Infine, voglio ringraziare tutte le grandi risorse con cui ho lavorato a questo progetto. È passato poco più di un decennio da quando stavo attivamente scrivendo programmi e ci sono voluti alcuni colpi per togliere polvere e ruggine. I contributori di / r / LearnPython mi hanno aiutato a canticchiare nell'output dell'API per Weather Underground, studiando in che modo Michael a Mitch Tech si è occupato del feed Atom di Gmail, analizzandolo per LedBorg, e studiando i moduli di apprendimento di Python in Code Academy era un ottimo modo per raccogliere la sintassi e la struttura di base di un linguaggio che non avevo mai usato prima.