Videocamera di sicurezza di rete Pan e Tilt fai-da-te con Raspberry Pi
Scopri come realizzare una videocamera di sicurezza panoramica e inclinabile da remoto con un Raspberry Pi. Questo progetto può essere completato in una mattinata con solo le parti più semplici. Ecco il risultato finale:
Quello di cui hai bisogno
- Raspberry Pi 2 o 3 con scheda Micro SD
- Arduino UNO o simile
- 2 x micro o mini servi per hobby
- Webcam USB
- Cavi di collegamento da maschio a maschio
- Cavi di collegamento da maschio a femmina
- Cravatte assortite
Costruire la telecamera di sicurezza
Attacca un corno servo (la piccola plastica “forme”) a ciascun servo utilizzando la vite fornita. La particolare forma non ha molta importanza, anche se più grande è il migliore. Non stringere eccessivamente la vite.
Ora usa le fascette per attaccare un servo all'altro ad angolo retto. Uno di questi sarà pan (da sinistra a destra), mentre l'altro sarà inclinato (su e giù). Non importa quale fa cosa, può essere regolato nel codice.
Infine, collega la tua webcam a uno dei servi. Potresti usare le fascette per la cerniera, anche se la mia webcam è arrivata con una clip avvitata sul fondo: l'ho rimosso e ho usato la vite per tenerlo al corno. Per stabilità, potresti voler montare l'intero rig su una cassa o una scatola. Una semplice scatola di cartone fa il trucco abbastanza bene. Potresti tagliare un buco quadrato pulito e montare un servo a filo sulla superficie, tuttavia una cravatta a zip sarà sufficiente.
Una parola sulle webcam
Non tutte le webcam USB sono uguali. Collega la tua webcam alla porta USB del tuo Pi ed esegui questo comando:
lsusb
Questo comando visualizza le informazioni su tutti i dispositivi USB collegati al Pi. Se la tua webcam non è elencata qui, potresti provare un hub USB alimentato e ripetere il comando. Se la webcam non viene ancora riconosciuta, potrebbe essere necessario acquistare una webcam compatibile.
Impostazione servo
Mentre i servo possono sembrare spaventosi e complessi, sono davvero molto semplici da connettere. I servi funzionano con la Pulse Width Modulation (PWM), che è un modo per i sistemi digitali di imitare i segnali analogici. I segnali PWM sono essenzialmente un segnale rapido ON - OFF. Un segnale che è ON o HIGH è descritto usando il duty cycle. Il ciclo di lavoro è espresso in percentuale e descrive per quanto tempo il segnale è attivo. Un segnale PWM con duty cycle del 25% sarà ON per il 25% delle volte e OFF per il restante 75%. Il segnale non è ON all'inizio e poi OFF per sempre, viene pulsato regolarmente per un periodo di tempo molto breve.
I servi ascoltano questi impulsi e agiscono di conseguenza. Usare un ciclo di lavoro del 100% sarebbe lo stesso di “regolare” 5v e 0% sarebbero uguali a terra. Non preoccuparti se non comprendi pienamente come funziona PWM, puoi comunque controllare i servi (Extreme Electronics è un buon posto per saperne di più).
Esistono due modi principali per utilizzare PWM: hardware o software. Hardware PWM offre spesso una minore latenza (la distanza tra il servo che riceve il comando e lo spostamento) rispetto al software PWM, tuttavia il Pi ha solo un pin PWM hardware abilitato. Sono disponibili circuiti esterni per fornire più canali di hardware PWM, tuttavia un semplice Arduino può anche gestire l'attività, poiché hanno più pin PWM hardware.
Ecco il circuito:
Controlla la piedinatura per il tuo Pi, variano leggermente tra i modelli. Devi capire come sono cablati i tuoi servi. I servi richiedono tre fili per controllarli, tuttavia i colori variano leggermente:
- Il rosso è positivo, collegalo a Pi + 5v
- Marrone o nero è negativo, collegarlo a GND sul Pi
- Arancione o bianco è il segnale, collegalo ai pin 9 e 10 di Arduino
Installazione di Arduino
Nuovo ad Arduino? Iniziare qui Per iniziare con Arduino: Guida per principianti Guida introduttiva ad Arduino: Guida per principianti Arduino è una piattaforma di prototipazione elettronica open source basata su hardware e software flessibili e facili da usare. È pensato per artisti, designer, hobbisti e chiunque sia interessato a creare oggetti o ambienti interattivi. Leggi di più .
Una volta collegati i servi, apri l'IDE Arduino sul tuo computer e carica questo codice di prova. Non dimenticare di selezionare la scheda e la porta corrette da Strumenti> Scheda e Strumenti> Porta menu
#includere // Importa la libreria Servo servoPan, servoTilt; // Crea oggetti servo int servoMin = 20, servoMax = 160; // Definisci i limiti di servos void setup () // I servi di installazione su pins PWM supportano servoPan.attach (9); servoTilt.attach (10); void loop () for (int i = servoMin; i < servoMax; ++i) 1 // Move servos from minimum to maximum servoPan.write(i); servoTilt.write(i); delay(100); // Wait 100ms for(int i = servoMax; i > servoMin; --i) // Sposta i servi dal massimo al minimo servoPan.write (i); servoTilt.write (i); ritardo (100); // Wait 100ms
Dovresti vedere tutti e due i servi muoversi lentamente avanti e indietro. Nota come “servoMin” e servoMax” sono definiti come 20 e 160 gradi (anziché 0 e 180). Ciò è parzialmente dovuto al fatto che questi servo economici non sono in grado di spostarsi con precisione di 180 gradi, e anche a causa delle dimensioni fisiche della webcam impedisce l'utilizzo dell'intera gamma. Potrebbe essere necessario regolarli per la configurazione.
Se non funzionano affatto, verifica che il circuito sia cablato correttamente. I breadboard possono a volte variare anche in termini di qualità, quindi considera di investire in un multimetro per verificare.
I servi sono quasi troppo potente per l'Arduino per il potere, quindi saranno alimentati dal Pi. Il binario 5v sul Pi è limitato a 750 mA fornito all'intero Pi, e il Pi attira circa 500mA, lasciando 250 mA per i servi. Questi micro servi disegnano circa 80 mA, il che significa che Pi dovrebbe essere in grado di gestirne due. Se si desidera utilizzare più servi o modelli più grandi e più potenti, potrebbe essere necessario utilizzare un alimentatore esterno.
Ora carica il seguente codice su Arduino. Questo ascolterà i dati seriali in entrata (seriale come in Universal Seriale Bus o USB). Il Pi invierà questi dati via USB ad Arduino, indicando dove spostare i servi.
#includere // Importa la libreria Servo servoPan, servoTilt; // Crea oggetto servo String data = ""; // Archiviare i comandi in entrata (buffer) void setup () // I servi di installazione su pin PWM supportano servoPan.attach (9); servoTilt.attach (10); Serial.begin (9600); // Avvia seriale a 9600 bps (velocità) void loop () while (Serial.available ()> 0) // Se vi è data char singleChar = Serial.read (); // Legge ogni carattere if (singleChar == 'P') // Sposta pan servo servoPan.write (data.toInt ()); data = ""; // Cancella buffer else if (singleChar == 'T') // Sposta tilt servo servoTilt.write (data.toInt ()); data = ""; // Cancella buffer else data + = singleChar; // Aggiungi nuovi dati
È possibile testare questo codice aprendo il monitor seriale (in alto a destra> Monitor seriale) e inviando alcuni dati di test:
- 90P
- 0P
- 20T
- 100T
Si noti il formato dei comandi: un valore e quindi una lettera. Il valore è la posizione del servo e la lettera (in maiuscole) specifica il servo di panoramica o inclinazione. Dato che questi dati vengono trasmessi dal Pi in serie, ogni personaggio arriva uno alla volta. L'Arduino deve “memorizzare” questi fino a quando l'intero comando è stato trasmesso. La lettera finale non specifica solo il servo, ma consente anche all'arduino di sapere che non ci sono più dati in questo comando.
Infine, disconnetti il tuo Arduino dal computer, e collegalo al Raspberry Pi tramite la solita connessione USB.
Pi Setup
Ora è il momento di impostare il Pi. Innanzitutto, installa un sistema operativo Come installare un sistema operativo sul tuo Raspberry Pi Come installare un sistema operativo sul tuo Raspberry Pi Ecco come ottenere un nuovo sistema operativo installato e funzionante sul tuo Pi - e come clonare la tua configurazione perfetta per un disastro rapido recupero. Leggi di più . Collega la webcam e l'Arduino al Pi USB.
Aggiorna il Pi:
sudo apt-get update sudo apt-get upgrade
Installa movimento:
sudo apt-get install motion
Motion è un programma creato per gestire lo streaming della webcam. Gestisce tutto il sollevamento pesante e può persino eseguire la registrazione e il rilevamento del movimento (provare a costruire un sistema di sicurezza motion capture Costruire un sistema di sicurezza Motion Capture utilizzando un Raspberry Pi Costruire un sistema di sicurezza Motion Capture utilizzando un Raspberry Pi Di molti progetti che è possibile costruire con il Raspberry Pi, uno dei più interessanti e permanentemente utili è il sistema di sicurezza motion capture. Apri il file di configurazione di Motion:
sudo nano /etc/motion/motion.conf
Questo file offre molte opzioni per configurare Motion. Imposta come segue:
- daemon attivo - Esegui il programma
- framerate: 100 - Quanti fotogrammi o immagini / secondi per lo streaming
- stream_localhost off: consente l'accesso attraverso la rete
- larghezza 640 - Larghezza del video, regolare per la tua webcam
- altezza 320 - Altezza del video, regolare per la tua webcam
- stream_port 8081 - La porta a cui inviare il video
- output_picture off - Non salvare alcuna immagine
Questo è un file abbastanza grande, quindi potresti volerlo usare CTRL + W per cercare le linee. Una volta finito, premere CTRL + X e quindi confermare per salvare ed uscire.
Ora modifica un altro file:
sudo nano / etc / default / motion
Impostato “start_motion_daemon = yes”. Questo è necessario per garantire che Motion venga eseguito.
Ora scopri il tuo indirizzo IP:
ifconfig
Questo comando mostrerà i dettagli della connessione di rete per il Pi. Guarda la seconda riga, aggiunta. Potresti voler impostare un indirizzo IP statico (che cos'è un IP statico? Cos'è un indirizzo IP statico, Come ottenerne uno e i relativi vantaggi / svantaggi Cos'è un indirizzo IP statico? Come ottenerne uno? Vantaggi / Svantaggi Nelle reti domestiche, gli indirizzi IP non sono di solito fissi, ma rientrano in intervalli specifici: un indirizzo IP statico non cambia, quali sono i vantaggi e perché vorresti uno? Ulteriori informazioni), ma per ora prendere nota di questo numero.
Ora avvia il movimento:
inizio del servizio sudo
È possibile interrompere o riavviare Motion cambiando “inizio” a “Stop” o “ricomincia”.
Passa al tuo computer e vai al Pi da un browser web:
http: //xxx.xxx.x.xx: 8081
Dove xxx.xxx.x.xx è l'indirizzo IP Pi. I due punti seguiti da un numero è la porta che è stata impostata in precedenza. Tutto sta andando bene dovresti vedere il flusso dalla tua webcam! Prova a muoverti e guarda come stanno le cose. Potrebbe essere necessario regolare le impostazioni di luminosità e contrasto nel file di configurazione. Potrebbe essere necessario mettere a fuoco la webcam - alcuni modelli hanno un piccolo anello di messa a fuoco attorno all'obiettivo. Giralo fino a quando l'immagine è più nitida.
Torna sul Pi, crea una cartella e naviga in essa:
mkdir security-cam cd security-cam /
Ora installa Twisted:
sudo apt-get install python-twisted
Twisted è un server web scritto in Python, che ascolterà i comandi e quindi agirà di conseguenza.
Una volta installato, crea uno script Python per eseguire i comandi (sposta i servo).
sudo nano servos.rpy
Nota come è l'estensione del file “.RPY” invece di “py”. Ecco il codice:
# Importare i file necessari importare seriale da twisted.web.resource import Resource # Setup Arduino alla velocità corretta provare: arduino = serial.Serial ('/ dev / ttyUSB0', 9600) eccetto: arduino = serial.Serial ('/ dev / ttyUSB1 ', 9600) classe MoveServo (Resource): isLeaf = True def render_GET (self, request): prova: # Invia valore su seriale ad Arduino arduino.write (request.args [' value '] [0]) return' Success 'except: return' Failure 'resource = MoveServo ()
Ora avvia il webserver:
sudo twistd -n web -p 80 --path / home / pi / security-cam /
Scopriamolo - “-p 80” specifica la porta (80). Questa è la porta predefinita per le pagine Web. “-percorso / home / pi / security-cam /” indica a Twisted di avviare il server nella directory specificata. Se apporti modifiche agli script all'interno di “sicurezza-cam” cartella sarà necessario riavviare il server (CTRL + X chiudere, quindi eseguire di nuovo il comando).
Ora crea la pagina web:
sudo nano index.html
Ecco il codice della pagina web:
Fai uso della telecamera di sicurezza fai-da-te
Modificare “PI_IP_ADDRESS” (usato due volte) per l'indirizzo IP reale del tuo Pi (raspberrypi.local dovrebbe funzionare anche se stai eseguendo l'ultimo Raspian). Riavvia il webserver e poi vai al Pi dal tuo computer, non è necessario specificare la porta. Dovresti essere in grado di fare una panoramica a sinistra e a destra e vedere lo stream video:
Ecco qua. La tua videocamera di rete Pan and Tilt personale. Se si desidera esporre la propria webcam a Internet, ricordare di considerare i pericoli 5 Pericoli da considerare quando si puntano le telecamere di sicurezza domestiche 5 Pericoli da considerare quando si puntano le telecamere di sicurezza domestiche È importante considerare attentamente dove si posizionano le telecamere e cosa parti della tua casa a cui punti. Mantenere le cose sicure è importante, ma lo è anche il mantenimento della privacy. Per saperne di più - guarda poi sul port forwarding Che cos'è il port forwarding e come può aiutarmi? [MakeUseOf Explains] Che cos'è il port forwarding e come può aiutarmi? [MakeUseOf Explains] Piangi un po 'dentro quando qualcuno ti dice che c'è un problema di port forwarding ed è per questo che la tua nuova app non funzionerà? La tua Xbox non ti permetterà di giocare, i tuoi download torrent rifiutano ... Leggi altro, così il tuo router sa dove inviare le richieste in arrivo. È possibile aggiungere un alimentatore esterno Pi to Go? 3 modi di alimentare un Raspberry Pi per progetti portatili Pi a Go? 3 modi di alimentare un Raspberry Pi per progetti portatili Vuoi far uscire il tuo Raspberry Pi da casa e partecipare a progetti mobili? Avrai bisogno di una batteria di qualche tipo - ma ci sono diverse opzioni disponibili. Leggi altro e adattatore Wi-Fi per un rig davvero portatile.
Hai fatto qualcosa di bello con una webcam e un Pi? Fatemi sapere nei commenti, mi piacerebbe vedere!
Scopri di più su: Home Security, Raspberry Pi, Webcam.