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 basso costo da 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 installata 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 case 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 al momento utilizzi 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 utilizzare 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 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
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 la sporgenza porzione 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 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 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
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 la porta di alimentazione e 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 https://www.piborg.org/downloads/ledborg/raspbian-2013-02-09-rev1.zip unzip 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:
È 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 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. 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 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 pioggia
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 controlleremo San Francisco, in California. L'URL della pagina di previsione di San Francisco è:
https://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 è:
https://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 estratto 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:
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'])
# 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
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!')
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 stato / città, dovresti dare una risposta che assomiglia a:
Il passo finale è quello di 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
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.
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'])
# Quanto segue è un valore di debug. # Modifica l'hash e cambia # il numero intero a 0 o 1 per testare # la risposta del LED.
# 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!')
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:
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
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; 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 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 dai nostri 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 di Weather Underground, studiando come Michael a Mitch Tech si è occupato del feed Atom di Gmail, analizzandolo per LedBorg, e studiando i moduli di apprendimento Python presso la Code Academy era un ottimo modo per raccogliere la sintassi e la struttura di base di un linguaggio che non avevo mai usato prima.