1Aug

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

Il Raspberry Pi è una bella piattaforma compatta per collegare una luce di segnalazione 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 configurare alcune basinotifiche.

Perché voglio farlo?

Perché è 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 ha bisogno di 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 continuare con il tutorial ti serviranno 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 haispinto nell'armadio o prendere uno usato a buon mercato su eBay o simili. Per quanto riguarda il budget, 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 Pi $ 35 di nuova generazione.

Oltre ad avere una unità Pi funzionale con Raspbian installato su di essa, sono necessari i seguenti elementi:

  • 1 Modulo LedBorg( ~ $ 5,00 con spedizione $ 4 dal Regno Unito agli Stati Uniti, funziona con tutti i modelli Raspberry Pi).
  • 1 Custodia Clear Raspberry Pi compatibile con il tuo modello Pi particolare come la custodia Raspberry Pi 1 Model B.

Nota: Il caso Pi trasparente / satinato è del tutto opzionale, ma se al momento si utilizza una custodia opaca, l'indicatore LED verrà nascosto all'interno. Avrai bisogno di tagliare un buco nel tuo caso per far uscire la luce o utilizzare un cavo di prolunga 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 più 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

Mentre si potrebbe certamente costruire da soli 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 ed economico, il LedBorg, che non abbiamo potuto resistere a utilizzarlo 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 più vicina al modulo RCA sulla scheda Raspberry Pi( e quindi il bordo di LedBorg è a filo con i bordi della scheda Pi con ilporzione strapiombante del LedBorg che pende sulla tavola Pi e non sul bordo).Vedi la foto qui sopra.

Mentre hai la scheda Pi aperta, ora sarebbe un ottimo momento 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 ancora riferimento, 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 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 driver per accedere a LedBorg dalla riga di comando.

Prima di iniziare è necessario accertarsi di aver acquisito il pacchetto giusto per la versione di Rasbian e il numero di revisione della 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 la porta di alimentazione e HDMI), allora è Revision 2. Devi anche conoscere il kernelversione della tua installazione Rasbian. Aprire il terminale e immettere il seguente comando per verificare:

uname -r

Una volta ottenuto il numero di revisione e il numero del kernel, è possibile visitare la sezione Pacchetti qui per prendere il collegamento per il 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 tutte le funzionalità necessarie per 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 verrà visualizzata un'icona per il wrapper della GUI:

Andare avanti e fare clic sull'icona di LedBorg per avviare il wrapper della GUI.Sarai trattato all'interfaccia del selettore 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 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 Demo Mode:

In modalità demo puoi scorrere tutti i colori a varie velocità, controllare l'uscita alta / bassa e altrimenti 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 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 distratto invece che utile.

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

echo "000" & gt;/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 combinano 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 di pioggia

Per questa parte del tutorial, combineremo diverse cose insieme 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 il Weather Underground e cerca la città che vuoi monitorare. Nel nostro caso controlleremo 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 tua chiave API, il codice a due lettere e il nome della città dall'URL che hai estratto dalla tua MeteoRisultati di ricerca sotterranei.

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 utilizzando Leafpad e incollandovi il seguente codice:

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

# Quanto segue è un valore di debug.
# Modificare l'hash e modificare
# il numero intero su 0-100 per testare
# la risposta del LED.

# pop = 0

print 'L'attuale probabilità di precipitazioni è{ }.'. Format( pop)

# L'impostazione predefinita è di accendere il LED
# per qualsiasi probabilità di pioggia superiore al 20%.Puoi regolare
# il valore in "se pop & gt; 20:" come desideri.

se pop & gt;20:
LedBorg = open( '/dev/ ledborg', 'w')
LedBorg.write( '002')
del LedBorg
stampa( 'Rain!')
else:
LedBorg = open( '/dev/ ledborg', 'w ')
LedBorg.write( ' 000 ')
del LedBorg
stampa( ' No rain! ')

Salvare 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 stato / città, dovrebbe restituire una risposta che assomiglia a:

Se è prevista la precipitazione per la tua areail tuo output di LedBorg dovrebbe essere simile al seguente:

Ora in attesa di un giorno 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 60che 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. Poiché questa operazione è necessaria sia per questo script che per l'indicatore di posta elettronica che segue, verrà descritta la configurazione di 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 un semplice script per pilotare 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. Aprire il terminale e immettere il seguente comando:

sudo easy_install feedparser

Una volta completata l'installazione, è possibile impostare la creazione del nostro script di controllo 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.

import feedparser

# Immettere il nome utente Gmail
# e la 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.
# Modificare l'hash e modificare
# il numero intero su 0 o 1 per testare
# la risposta del LED.

# mail = 0

se mail & gt;0:
LedBorg = open( '/dev/ ledborg', 'w')
LedBorg.write( '020')
del LedBorg
stampa( 'Mail!')
altro:
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 nella posta in arrivo di Gmail hai posta elettronica, il LED diventerà verde e riceverai una risposta come questa:

Se hai posta nella tua casella di posta Gmail, il tuo LedBorgsembrerà 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.

Salta alla sezione successiva del tutorial per impostare lo script di Gmail in modo che venga eseguito su una pianificazione.

Impostazione di un processo Cron per l'esecuzione dello script

Ora che abbiamo due script con cui giocare, dobbiamo impostare un processo cron per poterli eseguire durante il giorno per mantenere l'indicatore LED corrente.

La prima cosa che vogliamo fare è spegnere il LED se è attivo dai nostri precedenti esperimenti. Al tipo di terminale:

echo "000" & gt;/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 pioggia, immettere la seguente riga nella tabella cron:

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

Premere CTRL + X per uscire;seleziona 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 uno script che controlla la pioggia prevista - potresti persino obiettare che è un po 'troppo aggressivo - ma se stai cercando di mantenere la tua email è un po' troppo lungo pernotifica. 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 un molto più velocenotifica di aggiornamento.

Questo è tutto quello 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 esso puoi trasformarlo 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 come Michael a Mitch Tech si è occupato del feed Atom di Gmail che l'ha analizzato per LedBorg facile, e studiare i moduli di apprendimento Python a Code Academy è stato un grandemodo di cogliere la sintassi e la struttura di base di un linguaggio che non avevo mai usato prima.