Sommario:
- Passaggio 1: configurare l'hardware
- Passaggio 2: configura Dropbox
- Passaggio 3: preparazione della cartella dell'app Dropbox
- Passaggio 4: iniziare con il codice
- Passaggio 5: approfondire il codice
- Passaggio 6: utilizzo dei file dei parametri di Dropbox
- Passaggio 7: conclusione
Video: Monitoraggio domestico Raspberry Pi con Dropbox: 7 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:04
Questo tutorial ti mostrerà come creare un sistema di monitoraggio domestico semplice ed espandibile utilizzando un Raspberry Pi, una webcam, alcuni componenti elettrici e il tuo account Dropbox. Il sistema finito ti consentirà di richiedere e visualizzare in remoto le immagini dalla tua webcam utilizzando anche un sensore di temperatura digitale standard per monitorare la temperatura della tua casa su Internet, il tutto utilizzando Dropbox.
Questo è stato il primo progetto a cui ho pensato dopo aver ricevuto un Raspberry Pi 2 modello B. Il mio obiettivo era creare un sistema di monitoraggio basato su Python che potessi controllare e ricevere dati da Internet. Sebbene ci siano molti modi diversi per farlo, ho deciso di utilizzare Dropbox come interfaccia tra il Pi e Internet in quanto hanno una semplice API Python che ti consente di caricare, modificare e cercare file in cartelle specifiche utilizzando poche righe di codice.
Volevo anche che la mia soluzione fosse leggera e semplice e che evitasse di ingombrare il mio Pi con librerie e programmi non necessari. Il componente software di questo progetto è costituito da un singolo script Python, il che significa che puoi continuare a utilizzare il tuo Pi normalmente, anche quando il sistema di monitoraggio è in esecuzione.
Per questo progetto avrai bisogno di:
Un lampone Pi. Qualsiasi modello dovrebbe funzionare, ho usato uno starter kit all-in-one, ma forse ti serve solo l'unità centrale
Una webcam USB. Ho comprato un ADVENT AWC72015 economico, che ha funzionato bene. Potrebbe essere una buona idea consultare questo elenco di webcam che sono confermate per funzionare con il Pi. Nota che alcuni richiedono un hub USB alimentato (il mio funziona bene senza)
Un account Dropbox. Uso il mio account gratuito standard poiché questo progetto non richiede molto spazio di archiviazione
Un sensore di temperatura digitale DS18B20 e un resistore da 4,7k. Puoi acquistare il sensore qui e potrebbe valere la pena prendere anche un pacchetto di vari resistori
Alcuni accessori per la costruzione di circuiti. Consiglierei di utilizzare una breadboard e alcuni cavi jumper per rendere il processo di creazione del circuito il più semplice possibile
[Se decidi di acquistare uno di questi prodotti, ti sarei molto grato se accedi agli elenchi utilizzando i link sopra - in questo modo, ottengo una piccola quota dei profitti senza costi aggiuntivi per te!]
Passaggio 1: configurare l'hardware
Il primo passo è assicurarti che il tuo Pi e le periferiche associate siano configurati.
Innanzitutto, collega il tuo Pi a Internet. Ciò è necessario per garantire che il programma di monitoraggio possa ricevere le tue richieste e caricare i dati su Dropbox. Uso una connessione ethernet per garantire l'affidabilità, ma anche una connessione Wi-Fi dovrebbe funzionare bene, avendo anche il vantaggio di una migliore portabilità. Se scegli il Wi-Fi, consiglierei questo dongle USB per il Pi.
Quindi, collega la tua webcam al Pi collegandola a una delle porte USB. Sebbene le istruzioni della mia webcam Advent non dicessero esplicitamente che avrebbe funzionato con Linux, tutto ciò che dovevo fare era collegarlo e avviare il Pi. Non è stata necessaria alcuna ulteriore installazione. Altre webcam possono variare. Puoi verificare se la tua webcam è stata rilevata da Linux usando il seguente comando:
lsusb
Nell'immagine sopra, la mia webcam è elencata come "0c45:6340 Microdia"
Infine, puoi collegare il tuo sensore di temperatura DS18B20 all'intestazione GPIO del Pi. Uso la mia breadboard per semplificare il processo di creazione dei circuiti e ti consiglio di fare lo stesso, soprattutto perché il DS18B20 richiede un resistore da 4,7k da posizionare tra due dei suoi tre pin. Questo collegamento fornisce un buon diagramma di cablaggio che mostra come utilizzare una breadboard per connettersi a questo sensore di temperatura.
La pagina successiva del tutorial di cui sopra copre anche i passaggi necessari per leggere i dati dal DS18B20 e mostra come verificare che funzioni. È importante eseguire questi passaggi di configurazione prima di poter utilizzare il DS18B20 per questo progetto. Integreremo anche lo script Python di esempio dal tutorial nel nostro programma di monitoraggio, quindi potresti voler dare una rapida occhiata a questo codice.
Si prega di prendere nota anche del numero univoco del DS18B20. È il numero che inizia con '28-' che incontri durante il tutorial di installazione. Dovrai inserirlo nel prossimo programma Python per consentirgli di leggere la temperatura.
Passaggio 2: configura Dropbox
Affinché il tuo Pi si interfaccia con Dropbox, devi configurare una nuova app Dropbox. Questo ti fornirà i dettagli necessari affinché il tuo Pi esegua la gestione dei file online utilizzando Python. Supponendo che tu abbia creato un account Dropbox e effettuato l'accesso, puoi creare una nuova app utilizzando l'opzione di menu "Sviluppatori". Vedere l'immagine sopra per un riepilogo dei passaggi importanti.
Nel menu "Sviluppatori", seleziona "Le mie app", quindi premi il pulsante "Crea app". Per compilare il modulo risultante, seleziona " API Dropbox " seguito da " Cartella app ". Infine, puoi scegliere un nome univoco per la tua app all'interno di Dropbox. Fai clic su "Crea app".
Verrai quindi indirizzato alla pagina delle impostazioni della tua app all'interno di Dropbox. C'è solo un'altra cosa che devi fare qui: generare un token di accesso. Per fare ciò, scorrere verso il basso fino alla sezione "OAuth 2" e sotto "Token di accesso generato", fare clic sul pulsante "Genera".
Questo ti presenterà una lunga stringa di caratteri necessari per accedere al tuo account Dropbox utilizzando Python. Prendi nota di questo token di accesso poiché dovrai specificarlo in seguito nel codice. Se perdi il token, puoi tornare alle impostazioni della tua app facendo clic su "Le mie app" nella sezione "Sviluppatori" di Dropbox e generare un nuovo token.
Puoi lasciare le altre impostazioni così come sono. Per confermare che la tua app ha creato le cartelle necessarie sul tuo account Dropbox, vai alla home page dello spazio di archiviazione e cerca la cartella "App". All'interno di questa cartella dovrebbe esserci una sottocartella con il nome che hai scelto per la tua nuova app. Qui è dove verranno inseriti tutti i file per il tuo sistema di monitoraggio.
Passaggio 3: preparazione della cartella dell'app Dropbox
Dopo aver configurato la tua app Dropbox, è il momento di pensare a come utilizzerai la cartella risultante nel tuo account Dropbox per interagire con il tuo Pi. Questo si ottiene semplicemente. Lo script Python che verrà eseguito sul Pi utilizzerà un sottoinsieme di comandi dall'API Dropbox per cercare e modificare i nomi di alcuni file vuoti senza estensione nella cartella dell'app. Chiameremo questi file "file di parametri" poiché ognuno di essi consentirà di controllare un aspetto diverso del comportamento del sistema di monitoraggio. L'immagine sopra mostra i quattro file di parametri che devono essere presenti nella cartella dell'app Dropbox per questo progetto. Crearli è semplice:
Iniziando con la cartella dell'app completamente vuota, apri un programma di editor di testo sul tuo computer. Sebbene ciò possa essere fatto utilizzando il Pi, ho trovato più semplice utilizzare il mio laptop Windows per questa fase di configurazione. Una volta aperto l'editor di testo (ho usato Blocco note su Windows 7), tutto ciò che devi fare è salvare un file di testo completamente vuoto ovunque sul tuo computer. Come primo esempio, creeremo il primo parametro nell'immagine dell'intestazione. Chiama il file 'delay=10' quando lo salvi.
Per ricapitolare, ora dovresti avere un file di testo vuoto memorizzato sul tuo computer con il nome 'delay=10'. Il file avrà anche un'estensione '.txt' che può essere o non essere visibile.
Il passaggio successivo consiste nel caricare questo file nella cartella dell'app Dropbox. Questo è proprio come qualsiasi altro caricamento di Dropbox. Vai semplicemente alla cartella della tua app e fai clic su "Carica" e scegli il tuo file "delay=10".
Quando questo file è stato caricato, devi rimuovere l'estensione '.txt' che ora dovrebbe essere visibile nel nome del file. Per fare ciò, fai semplicemente clic con il pulsante destro del mouse sul file e seleziona "Rinomina". Rimuovi la parte ".txt" del nome del file. Ora dovresti essere lasciato con un file chiamato 'delay=10' senza estensione di file, come mostrato nell'immagine dell'intestazione.
Il file dei parametri 'ritardo' è uno dei quattro che verranno utilizzati dal programma di monitoraggio. Per creare gli altri, puoi semplicemente copiare e rinominare il tuo file "ritardo" facendo clic con il pulsante destro del mouse. Dopo aver creato tre copie, assegna loro un nome come mostrato nell'immagine dell'intestazione in modo che la cartella dell'app sia identica a quella mostrata all'inizio di questo passaggio.
Passaggio 4: iniziare con il codice
Come discusso, il nucleo del nostro sistema di monitoraggio sarà costituito da un singolo script Python che si interfaccerà con Dropbox. Affinché il programma di monitoraggio sia attivo, questo script dovrà essere eseguito in background sul tuo Pi. Immagino che sia descritto più accuratamente come uno script "daemon", il che significa che puoi semplicemente impostarlo in esecuzione e dimenticartene. Lo script è allegato a questo passaggio, quindi non ha senso ripetere il codice qui. Ora potrebbe essere un buon momento per scaricarlo e familiarizzare con esso.
Prima di poter eseguire lo script, è importante assicurarsi di aver installato le librerie Python pertinenti. Quelli di cui hai bisogno sono elencati nella parte superiore dello script allegato. Loro sono:
importa casella personale
import pygame.camera import os import time
L'installazione di Python sul mio Pi includeva già pygame, os e time, quindi l'unico che dovevo installare era Dropbox. L'ho fatto usando le loro semplicissime istruzioni di installazione con pip.
Una volta configurate le tue librerie, dovrai modificare le prime due righe dello script allegato in modo che corrispondano al tuo token di accesso Dropbox e all'identificatore univoco del sensore di temperatura DS18B20. Queste sono le due righe che devono essere modificate:
APP_ACCESS_TOKEN = '**********'
THERMOMETER_FILE = '/sys/bus/w1/devices/28-**********/w1_slave'
Basta sostituire le **** con i valori corretti. A questo punto, sei effettivamente pronto per iniziare a utilizzare il programma di monitoraggio! Invece di limitarti a saltare, ti consiglio di continuare con il passaggio successivo per una panoramica generale del codice.
IMPORTANTE: quando esegui questo script, desideri che venga eseguito in background in modo che a) puoi continuare a utilizzare il Pi e b) quando chiudi la sessione SSH, lo script continuerà a essere eseguito. Questo è il comando che uso quando eseguo lo script:
nohup python DropCamTherm.py &
Ciò realizza tre cose: eseguirà lo script ("python DropCamTherm.py"), restituirà immediatamente il controllo alla riga di comando in modo da poter continuare a utilizzare il Pi ("&") e invierà output Python che normalmente essere visualizzato sulla riga di comando in un file chiamato 'nohup.out'. Questo può essere letto utilizzando un editor di testo Linux (il mio preferito è nano) e verrà creato automaticamente nella directory da cui viene eseguito lo script.
Passaggio 5: approfondire il codice
Quando apri lo script, noterai che consiste di tre funzioni insieme a un blocco di codice che implementa queste funzioni quando viene eseguito lo script. Le funzioni utilizzano l'API Dropbox e accedono al file di registro della temperatura del DS18B20 per ascoltare i comandi da Dropbox e caricare l'ultima lettura della temperatura. Di seguito è riportata una panoramica di cosa fanno le funzioni e come vengono utilizzate per far funzionare il sistema di monitoraggio:
- parametro_sondaggio():
Questa funzione mostra lo scopo dei file di parametri Dropbox che abbiamo creato nel passaggio 3. Cerca nella cartella dell'app Dropbox un file contenente il testo 'param='. Quindi estrae il testo dopo '=' e prova a convertirlo in un numero intero. Puoi vedere che questo ci consente di controllare il programma aggiungendo manualmente i numeri rilevanti alla fine dei file dei parametri. Il passaggio successivo conterrà un breve manuale di istruzioni che mostra come utilizzare ciascuno dei file di parametri per controllare un aspetto del programma.
- set_parametro():
Questa funzione consente al programma di rinominare un file di parametri dall'interno di Python. Lo fa in alcune occasioni, principalmente per ridurre la necessità di un'eccessiva ridenominazione manuale dei file.
- set_latest_temp():
Questa funzione utilizza set_parameter() per caricare l'ultima temperatura nella cartella dell'app Dropbox aggiungendola al file dei parametri "temperatura". La funzione legge l'ultima temperatura dal file di registro del DS18B20 (disponibile su Linux nel percorso indicato dalla variabile THERMOMETER_FILE).
La parte finale del programma contiene il codice che verrà eseguito all'esecuzione dello script. Dopo alcuni passaggi di configurazione richiesti per il sensore DS18B20, apre una sessione Dropbox utilizzando il tuo token di accesso e utilizza pygame per cercare la tua webcam. Se viene trovata una webcam, entrerà in un ciclo in cui utilizza poll_parameter() per estrarre informazioni da Dropbox e agire su di essa.
IMPORTANTE: noterai la seguente riga di codice:
cam = pygame.camera. Camera(cam_list[0], (864, 480))
…questo tenta di creare un'interfaccia della fotocamera utilizzabile dalla prima webcam rilevata da pygame. Potrebbe essere necessario modificare la risoluzione in modo che corrisponda alla tua webcam. Sperimenta con una serie di valori per trovare quello che funziona meglio.
Passaggio 6: utilizzo dei file dei parametri di Dropbox
Quindi ora dovresti avere uno script funzionante che, se eseguito utilizzando le istruzioni del passaggio 4, consentirà al tuo Pi di iniziare a monitorare la cartella dell'app per i tuoi input. Alla prima esecuzione, la cartella dell'app dovrebbe contenere i seguenti file di parametri:
ritardo=10
exitprogram=0 imagerequest=0 temperatura=0
L'interazione con il programma si ottiene rinominando manualmente i file dei parametri tramite Dropbox. Per fare ciò, fai clic con il pulsante destro del mouse su uno dei file e seleziona "rinomina". Ogni file di parametri ha una funzione diversa:
- ritardo:
Questo file indica al programma di monitoraggio quanti secondi attendere tra ogni iterazione del ciclo di monitoraggio. Quando so che non interagirò molto con il programma, lo imposto su 60 o 120. Quando so che voglio richiedere spesso dati al Pi, lo imposto su 10.
- uscita dal programma:
Dovrebbe essere impostato su 1 o 0. Se il programma rileva che è impostato su 1, terminerà lo script. Se lo imposti su 1 e lo script esce, dovrai accedere nuovamente al Pi per riavviarlo. Questo parametro esiste in modo da poter terminare con garbo il programma di monitoraggio quando non è più necessario che sia in esecuzione (ad esempio, se sei tornato a casa e non desideri più monitorare la webcam da remoto).
- richiesta immagine:
Questo è forse il parametro più importante. Dovrebbe essere impostato su 1 o 0. Se il programma rileva che è impostato su 1, richiederà un'immagine dalla webcam e la caricherà nella cartella dell'app (con il titolo 'image.jpg'). Se esiste un altro "image.jpg", lo sovrascriverà.
- temperatura:
Questa è la lettura della temperatura del DS18B20 impostata dalla funzione set_latest_temp(). Non dovresti mai aver bisogno di modificare questo file di parametri: viene impostato automaticamente dal programma.
Nota che se imposti 'exitprogram' o 'imagerequest' su 1, il programma li riporterà automaticamente a 0 prima di eseguire il relativo codice. Questo è per comodità. Potresti anche notare che il codice contiene molti blocchi "prova" ed "eccetto" che circondano molte delle funzioni critiche. Questo per garantire che lo script non generi eccezioni (e quindi smetta di funzionare) se qualcosa va storto (come un problema di connettività Internet che impedisce l'accesso a Dropbox).
Passaggio 7: conclusione
Questo progetto ha presentato un modo per controllare un Raspberry Pi usando Python e Dropbox. Sebbene l'hardware utilizzato in questo progetto sia un sensore di temperatura e una webcam USB, esistono molte altre applicazioni per questo metodo di controllo del Pi. In effetti, qualsiasi componente hardware accessibile tramite GPIO può essere controllato utilizzando una struttura di programma simile, rendendo il sistema molto facile da espandere.
Come passaggio successivo, potresti anche utilizzare una libreria GUI come Tkinter insieme all'API Dropbox per creare un programma client che ti consenta di modificare i file dei parametri senza nemmeno dover accedere a Dropbox.
Spero che questo tutorial sia stato chiaro e se hai domande o vuoi chiarire qualcosa, per favore pubblica un commento!
Consigliato:
Monitoraggio del livello dell'acqua con display Oled con Raspberry Pi: 4 passaggi
Monitoraggio del livello dell'acqua con display Oled con Raspberry Pi: Ciao a tutti, sono Shafin, un membro di Aiversity. Condividerò su come costruire un sensore di livello dell'acqua con un display Oled per serbatoi d'acqua con un Raspberry pi. Il display oled mostrerà la percentuale del secchio pieno d'acqua
Kit per auto di monitoraggio robot intelligente fai-da-te Monitoraggio fotosensibile dell'auto: 7 passaggi
Fai da te Smart Robot Tracking Car Kit Tracking Car Photosensitive: Design by SINONING ROBOTÈ possibile acquistare da tracking robot carTheoryLM393 chip confrontare i due fotoresistori, quando c'è un LED fotoresistore laterale su BIANCO il lato del motore si fermerà immediatamente, l'altro lato del motore girare, in modo che
Monitoraggio della temperatura e dell'umidità con Raspberry Pi: 6 passaggi (con immagini)
Monitoraggio della temperatura e dell'umidità tramite Raspberry Pi: l'estate sta arrivando e chi non ha un condizionatore d'aria dovrebbe essere pronto a controllare manualmente l'atmosfera all'interno. In questo post descrivo il modo moderno di misurare i parametri più importanti per il comfort umano: temperatura e umidità. T
Nuovo strato di sensori IOT wireless per il sistema di monitoraggio ambientale domestico: 5 passaggi (con immagini)
Nuovo livello di sensori IOT wireless per il sistema di monitoraggio ambientale domestico: questo Instructable descrive uno strato di sensori IOT wireless a basso costo alimentato a batteria per il mio precedente Instructable: LoRa IOT Home Environmental Monitoring System. Se non hai già visto questo Instructable precedente, ti consiglio di leggere l'introduzione
Sistema di monitoraggio meteo domestico IoT con supporto per applicazioni Android (Mercury Droid): 11 passaggi
Sistema di monitoraggio meteo domestico IoT con supporto per applicazioni Android (Mercury Droid): IntroduzioneMercury Droid è un tipo di sistema integrato IoT (Internet delle cose) basato sull'applicazione mobile Android Mercury Droid. Che è in grado di misurare & monitorare l'attività meteorologica domestica. è un sistema di monitoraggio del tempo domestico molto economico