DIY Pan en Tilt Network Security Cam met Raspberry Pi

Leer hoe je een op afstand te bekijken beveiligingscamera met pan en tilt kunt maken met een Raspberry Pi. Dit project kan 's morgens worden voltooid met alleen de eenvoudigste onderdelen.

Leer hoe je een op afstand te bekijken beveiligingscamera met pan en tilt kunt maken met een Raspberry Pi.  Dit project kan 's morgens worden voltooid met alleen de eenvoudigste onderdelen.
Advertentie

Leer hoe u een op afstand te bezichtigen pan-tilt-beveiligingscamera met een Raspberry Pi kunt maken. Dit project kan 's morgens worden voltooid met alleen de eenvoudigste onderdelen. Dit is het eindresultaat:

Wat je nodig hebt

  • Raspberry Pi 2 of 3 met Micro SD-kaart
  • Arduino UNO of vergelijkbaar
  • 2 x micro- of minihobby-hobbyservo's
  • USB-webcam
  • Verbindingsdraden tussen man en vrouw
  • Verbindingsdraden tussen man en vrouw
  • Geassorteerde ritssluitingen

De beveiligingscamera bouwen

Bevestig een servohoorn (de kleine plastic "vormen") aan elke servo met behulp van de meegeleverde schroef. De specifieke vorm doet er niet echt toe, hoe groter hoe beter. Draai de schroef niet te vast aan.

Gebruik nu ritssluitingen om de ene servo in een rechte hoek aan de andere te bevestigen. Een daarvan is pan (van links naar rechts), terwijl de andere kanteling is (op en neer). Het doet er niet toe wat men doet wat, het kan in de code worden aangepast.

Servo-Hardware

Bevestig ten slotte je webcam aan een van de servo's. Je zou hiervoor zip-ties kunnen gebruiken, hoewel mijn webcam met een clip op de bodem werd geschroefd - ik verwijderde dit en gebruikte de schroef om het tegen de hoorn te houden. Voor stabiliteit, wil je misschien de hele rig monteren op een koffer of doos. Een eenvoudige kartonnen doos doet het heel goed. Je kunt een mooi vierkant gat knippen en een servospoeling op het oppervlak monteren, maar een ritssluiting is voldoende.

Pi-Pan-Tilt-camera

Een woord over webcams

Niet alle USB-webcams zijn gelijk gemaakt. Verbind je webcam met de USB-poort van je Pi en voer deze opdracht uit:

lsusb 

Deze opdracht geeft informatie weer over alle USB-apparaten die op de Pi zijn aangesloten. Als uw webcam hier niet wordt vermeld, kunt u een USB-hub met voeding proberen en de opdracht herhalen. Als de webcam nog steeds niet wordt herkend, moet u mogelijk een compatibele webcam aanschaffen.

Servo-instellingen

Hoewel servo's eng en ingewikkeld lijken, zijn ze echt vrij eenvoudig aan te sluiten. Servo's werken op Pulse Width Modulation (PWM), wat een manier is waarop digitale systemen analoge signalen kunnen imiteren. PWM-signalen zijn in wezen een snel AAN / UIT-signaal. Een signaal dat AAN of HOOG is, wordt beschreven met de duty cycle. De werkingscyclus wordt uitgedrukt als een percentage en beschrijft hoe lang het signaal AAN is. Een PWM-signaal van 25% inschakelduur is gedurende 25% van de tijd AAN, en UIT voor de resterende 75%. Het signaal is niet AAN bij het begin en dan voor altijd UIT, het wordt regelmatig gepulseerd gedurende een zeer korte tijdsperiode.

Servo's luisteren naar deze pulsen en handelen dienovereenkomstig. Het gebruik van een duty cycle van 100% zou hetzelfde zijn als "reguliere" 5v, en 0% zou hetzelfde zijn als ground. Maak je geen zorgen als je niet volledig begrijpt hoe PWM werkt, je kunt nog steeds servo's bedienen (Extreme Electronics is een goede plek om meer te leren).

Er zijn twee manieren om PWM te gebruiken: hardware of software. Hardware PWM biedt vaak een lagere latentie (hoelang tussen de servo die de opdracht ontvangt en verplaatst) dan de software PWM, maar de Pi heeft slechts één PWM-compatibele hardware-pin. Externe circuits zijn beschikbaar om meerdere kanalen met hardware-PWM te bieden, maar een eenvoudige Arduino kan deze taak ook aan, omdat deze meerdere hardware PWM-pinnen heeft.

Hier is het circuit:

Pi-Servo-verbinding

Controleer nogmaals de pinout voor uw Pi, deze varieert enigszins tussen modellen. Je moet uitzoeken hoe je servo's bedraad zijn. Servo's hebben drie draden nodig om ze te bedienen, maar de kleuren variëren enigszins:

  • Rood is positief, verbind dit met Pi + 5v
  • Bruin of zwart is negatief, verbind dit met GND op de Pi
  • Oranje of wit is signaal, verbind dit met Arduino pinnen 9 en 10

Arduino-installatie

Nieuw bij Arduino? Ga hier aan de slag Aan de slag met Arduino: een beginnershandleiding Aan de slag met Arduino: een beginnershandleiding Arduino is een prototype-platform met open source-elektronica op basis van flexibele, gebruiksvriendelijke hardware en software. Het is bedoeld voor kunstenaars, ontwerpers, hobbyisten en iedereen die geïnteresseerd is in het maken van interactieve objecten of omgevingen. Lees verder .

Zodra de servo's zijn verbonden, open je de Arduino IDE op je computer en upload je deze testcode. Vergeet niet om het juiste bord en de juiste poort te selecteren in het menu Hulpmiddelen> Bord en Extra> Poort

 #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 } } 

Als alles goed gaat zou je beide servo's langzaam heen en weer moeten zien bewegen. Merk op dat "servoMin" en servoMax "zijn gedefinieerd als 20 en 160 graden (in plaats van 0 en 180). Dit komt gedeeltelijk omdat deze goedkope servo's niet in staat zijn om de volledige 180 graden nauwkeurig te bewegen, en ook vanwege de fysieke grootte van de webcam voorkomt dat het volledige bereik wordt gebruikt. Mogelijk moet u deze aanpassen voor uw opstelling.

Als ze helemaal niet werken, controleer dan of het circuit goed is aangesloten. Breadboards kunnen soms ook in kwaliteit variëren, dus overweeg om te investeren in een multimeter om te verifiëren.

De servo's zijn bijna te krachtig om de Arduino aan te zetten, dus ze zullen worden aangedreven door de Pi. De 5v-rail op de Pi is beperkt tot 750mA voor de hele Pi en de Pi trekt ongeveer 500mA, waardoor 250mA overblijft voor de servo's. Deze micro-servo's trekken ongeveer 80mA, wat betekent dat de Pi er twee moet kunnen verwerken. Als u meer servo's of grotere, krachtigere modellen wilt gebruiken, moet u mogelijk een externe voeding gebruiken.

Upload nu de volgende code naar de Arduino. Hiermee wordt naar binnenkomende seriële gegevens geluisterd (serieel zoals in Universal Serial Bus of USB). De Pi stuurt deze gegevens via USB naar de Arduino en vertelt waar de servo's moeten worden verplaatst.

 #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 } } } 

U kunt deze code testen door de seriële monitor ( rechtsboven> Seriële monitor ) te openen en enkele testgegevens te verzenden:

  • 90P
  • 0P
  • 20T
  • 100T

Let op het formaat van de commando's - een waarde en dan een letter. De waarde is de positie van de servo en de letter (in hoofdletters) geeft de draai- of kantelservo aan. Omdat deze gegevens in serie worden overgedragen vanaf de Pi, komt elk personage één voor één door. De Arduino moet deze "opslaan" totdat het hele commando is verzonden. De laatste letter geeft niet alleen de servo aan, maar laat de Arduino ook weten dat er geen gegevens meer zijn in deze opdracht.

Maak tenslotte uw Arduino los van de computer en sluit hem aan op de Raspberry Pi via de gebruikelijke USB-poortverbinding .

Pi-instelling

Nu is het tijd om de Pi in te stellen. Installeer eerst een besturingssysteem Hoe installeer je een besturingssysteem op je Raspberry Pi Hoe installeer je een besturingssysteem op je Raspberry Pi Zo krijg je een nieuw besturingssysteem geïnstalleerd en draait het op je Pi - en hoe je je perfecte setup kunt klonen voor een snelle ramp herstel. Lees verder . Verbind de webcam en de Arduino met de Pi USB.

Update de Pi:

 sudo apt-get update sudo apt-get upgrade 

Installeer beweging:

 sudo apt-get install motion 

Motion is een programma dat is ontworpen voor het streamen van webcams. Het kan al het zware werk aan, en kan zelfs opname- en bewegingsdetectie uitvoeren (probeer een beveiligingssysteem voor bewegingsvastlegging te bouwen. Bouw een Motion Capture-beveiligingssysteem met behulp van een Raspberry Pi Bouw een Motion Capture-beveiligingssysteem met behulp van een Raspberry Pi Van de vele projecten die u kunt bouwen met de Raspberry Pi, een van de meest interessante en permanent bruikbare is het beveiligingssysteem voor bewegingsvastlegging Lees meer). Open het Motion-configuratiebestand:

 sudo nano /etc/motion/motion.conf 

Dit bestand biedt veel opties om Motion te configureren. Setup als volgt:

  • daemon on - Start het programma
  • framerate: 100 - Hoeveel frames of afbeeldingen / seconden om te streamen
  • stream_localhost off - Sta toegang toe over het netwerk
  • breedte 640 - Breedte van video, aanpassen voor uw webcam
  • hoogte 320 - hoogte van video, aan te passen voor uw webcam
  • stream_port 8081 - De poort voor het uitvoeren van video naar
  • output_picture off - Sla geen afbeeldingen op

Dit is een behoorlijk groot bestand, dus misschien wil je CTRL + W gebruiken om lijnen te zoeken. Als u klaar bent, drukt u op CTRL + X en bevestigt u om op te slaan en af ​​te sluiten.

Bewerk nu nog een bestand:

 sudo nano /etc/default/motion 

Stel "start_motion_daemon = yes" in. Dit is nodig om te zorgen dat Motion wordt uitgevoerd.

Ontdek nu uw IP-adres:

 ifconfig 

Met deze opdracht worden de details van de netwerkverbinding voor de Pi weergegeven. Kijk naar de tweede regel, inet addr . Misschien wilt u een statisch IP-adres instellen (wat is een statisch IP-adres? Wat is een statisch IP-adres, hoe krijg ik er één en wat zijn de voordelen / nadelen Wat is een statisch IP-adres, hoe krijg ik er één en de voordelen / nadelen ervan? In thuisnetwerken zijn IP-adressen meestal niet vast, maar ze vallen wel binnen specifieke bereiken. Een statisch IP-adres verandert niet. Wat zijn de voordelen hiervan, en waarom zou je er een willen? Lees meer), maar nu noteer dit nummer.

Start de beweging nu:

 sudo service motion start 

U kunt Motion stoppen of opnieuw starten door "start" te veranderen in "stop" of "herstart".

Schakel over naar uw computer en navigeer naar de Pi vanuit een webbrowser:

 http://xxx.xxx.x.xx:8081 

Waarbij xxx.xxx.x.xx het Pi IP-adres is. De dubbele punt gevolgd door een nummer is de poort die eerder was ingesteld. Alles goed, je zou de stream van je webcam moeten zien! Probeer te verplaatsen en zie hoe de dingen eruit zien. Mogelijk moet u de instellingen voor helderheid en contrast in het configuratiebestand aanpassen. Mogelijk moet u de webcam scherpstellen - sommige modellen hebben een kleine focusring rond de lens. Draai dit totdat het beeld het scherpst is.

Terug op de Pi, maak een map en navigeer erin:

 mkdir security-cam cd security-cam/ 

Installeer nu Twisted:

 sudo apt-get install python-twisted 

Twisted is een webserver geschreven in Python, die naar commando's zal luisteren en daarnaar zal handelen.

Maak na installatie een Python-script om opdrachten uit te voeren (verplaats de servo's).

 sudo nano servos.rpy 

Merk op hoe de extensie ".rpy" is in plaats van "py". Hier is de code:

 # 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() 

Start nu de webserver:

 sudo twistd -n web -p 80 --path /home/pi/security-cam/ 

Laten we het opsplitsen - "-p 80" specificeert de poort (80). Dit is de standaardpoort voor webpagina's. "-path / home / pi / security-cam /" vertelt Twisted om de server in de opgegeven map te starten. Als u wijzigingen aanbrengt in de scripts in de map "security-cam", moet u de server opnieuw opstarten ( CTRL + X om te sluiten en vervolgens de opdracht opnieuw uitvoeren).

Maak nu de webpagina:

 sudo nano index.html 

Hier is de webpagina-code:

 Make Use Of DIY Security Camera #container { /* center the content */ margin: 0 auto; text-align: center; } Pi-Pan-Tilt-Camera-Web-View

Daar heb je het. Je eigen Pan en Tilt-netwerkcamera. Als u uw webcam wilt blootstellen aan het internet, moet u rekening houden met de gevaren 5 Gevaren te overwegen bij het richten van uw thuisbeveiligingscamera's 5 gevaren om te overwegen bij het richten van uw thuisbeveiligingscamera's Het is belangrijk om zorgvuldig te overwegen waar u uw camera's plaatst, en wat delen van je huis waar je ze op richt. Dingen beveiligen is belangrijk, maar dat geldt ook voor het handhaven van uw privacy. Lees meer - kijk dan in Port Forwarding Wat is Port Forwarding en hoe kan het mij helpen? [MakeUseOf Explains] Wat is Port Forwarding en hoe kan het mij helpen? [MakeUseOf Explains] Huil je een beetje naar binnen als iemand je vertelt dat er een probleem is met de poortdoorsturing en daarom zal je glanzende nieuwe app niet werken? Je Xbox laat je geen games spelen, je torrent-downloads weigeren ... Lees meer, zodat je router weet waar inkomende verzoeken naartoe gestuurd moeten worden. U zou een externe voeding Pi to Go kunnen toevoegen? 3 manieren om een ​​Raspberry Pi van stroom te voorzien voor draagbare projecten Pi to Go? 3 manieren om een ​​Raspberry Pi in te zetten voor draagbare projecten Wilt u uw Raspberry Pi uit huis halen en bij sommige mobiele projecten zijn betrokken? Je hebt een soort batterij nodig, maar er zijn verschillende opties beschikbaar. Lees meer en Wi-Fi-adapter voor een echt draagbare rig.

Heb je iets cools gemaakt met een webcam en een Pi? Laat het me weten in de comments, ik zou het graag zien!

In this article