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 che ti serve
- 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 (le piccole "forme" di plastica) a ciascun servo usando 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 "normale" 5v, e lo 0% sarebbe lo stesso del terreno. 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é dispone di 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 dal menu Strumenti> Schede e Strumenti> Porta
#include // Import the library Servo servoPan, servoTilt; // Create servo objects int servoMin = 20, servoMax = 160; // Define limits of servos void setup() { // Setup servos on PWM capable pins servoPan.attach(9); servoTilt.attach(10); } void loop() { for(int i = servoMin; i servoMin; --i) { // Move servos from maximum to minimum servoPan.write(i); servoTilt.write(i); delay(100); // Wait 100ms } }
#include // Import the library Servo servoPan, servoTilt; // Create servo objects int servoMin = 20, servoMax = 160; // Define limits of servos void setup() { // Setup servos on PWM capable pins servoPan.attach(9); servoTilt.attach(10); } void loop() { for(int i = servoMin; i servoMin; --i) { // Move servos from maximum to minimum servoPan.write(i); servoTilt.write(i); delay(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 in termini di qualità, quindi considera di investire in un multimetro per verificare.
I servo sono quasi troppo potenti per l'Arduino per 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 Serial Bus o USB). Il Pi invierà questi dati via USB ad Arduino, indicando dove spostare i servi.
#include // Import the library Servo servoPan, servoTilt; // Create servo object String data = ""; // Store incoming commands (buffer) void setup() { // Setup servos on PWM capable pins servoPan.attach(9); servoTilt.attach(10); Serial.begin(9600); // Start serial at 9600 bps (speed) } void loop() { while (Serial.available()>0) { // If there is data char singleChar = Serial.read(); // Read each character if (singleChar == 'P') { // Move pan servo servoPan.write(data.toInt()); data = ""; // Clear buffer } else if (singleChar == 'T') { // Move tilt servo servoTilt.write(data.toInt()); data = ""; // Clear buffer } else { data += singleChar; // Append new data } } }
È 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 "memorizzarli" finché non è stato trasmesso l'intero comando. 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 voler 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
Imposta "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:
sudo service motion start
È possibile interrompere o riavviare Motion cambiando "start" su "stop" o "restart".
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
Si noti come l'estensione del file sia ".rpy" anziché "py". Ecco il codice:
# Import necessary files import serial from twisted.web.resource import Resource # Setup Arduino at correct speed try: arduino = serial.Serial('/dev/ttyUSB0', 9600) except: arduino = serial.Serial('/dev/ttyUSB1', 9600) class MoveServo(Resource): isLeaf = True def render_GET(self, request): try: # Send value over serial to the 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/
Consente di scomporlo: "-p 80" specifica la porta (80). Questa è la porta predefinita per le pagine Web. "-path / home / pi / security-cam /" indica a Twisted di avviare il server nella directory specificata. Se si apportano modifiche agli script all'interno della cartella "security-cam", sarà necessario riavviare il server ( CTRL + X per chiudere, quindi eseguire nuovamente il comando).
Ora crea la pagina web:
sudo nano index.html
Ecco il codice della pagina web:
Make Use Of DIY Security Camera #container { /* center the content */ margin: 0 auto; text-align: center; } 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!