DIY Pan en Tilt Network Security Cam met Raspberry Pi

DIY Pan en Tilt Network Security Cam met Raspberry Pi / DIY

Leer hoe u een op afstand zichtbare 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 servo-hoorn (het kleine plastic “vormen”) op 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.

Bevestig ten slotte je webcam aan een van de servo's. Je zou hiervoor zip-ties kunnen gebruiken, hoewel mijn webcam werd geleverd met een clip die op de bodem was geschroefd - ik verwijderde deze en gebruikte de schroef om de hoorn vast 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.

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 “regelmatig” 5v, en 0% zou hetzelfde zijn als grond. 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 ze meerdere PWM-pinnen voor hardware hebben.

Hier is het circuit:

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 voor 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 uit het Hulpmiddelen> Bord en Hulpmiddelen> Poort menus

#include  // Importeer de bibliotheek Servo servoPan, servoTilt; // Maak servo-objecten int servoMin = 20, servoMax = 160; // Definieer limieten van servos leegte setup () // Stel servo's in op PWM-compatibele pinnen 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) // Verplaats servo's van maximum naar minimum servoPan.write (i); servoTilt.write (i); vertraging (100); // Wacht 100 ms

Als alles goed gaat zou je beide servo's langzaam heen en weer moeten zien bewegen. Merk op hoe “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 voor de Arduino om aan te drijven, 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 als in Universal) serie- Bus of USB). De Pi stuurt deze gegevens via USB naar de Arduino en vertelt waar de servo's moeten worden verplaatst.

#include  // Importeer de bibliotheek Servo servoPan, servoTilt; // Servo-object maken String-gegevens = ""; // Sla inkomende opdrachten (buffer) op voor ongeldig instellen () // Stel servo's in op PWM-compatibele pinnen servoPan.attach (9); servoTilt.attach (10); Serial.begin (9600); // Start serie op 9600 bps (snelheid) void loop () while (Serial.available ()> 0) // Als er data char singleChar = Serial.read () is; // Lees elk teken als (singleChar == 'P') // Verplaats pan servo ServoPan.write (data.toInt ()); data = ""; // Wis buffer else if (singleChar == 'T') // Verplaats tilt servo servoTilt.write (data.toInt ()); data = ""; // Wis buffer else data + = singleChar; // Nieuwe gegevens toevoegen

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

  • 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 “op te slaan” deze 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 steek hem in 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 installeer beweging

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) Een Motion Capture-beveiligingssysteem bouwen met een Raspberry Pi Bouw een Motion Capture-beveiligingssysteem met behulp van een Raspberry Pi Van de vele projecten die u kunt uitvoeren 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 / seconde 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 wilt u het gebruiken CTRL + W om naar lijnen te zoeken. Als u klaar bent, drukt u op CTRL + X en bevestig om op te slaan en af ​​te sluiten.

Bewerk nu nog een bestand:

sudo nano / etc / default / motion

set “start_motion_daemon = yes”. Dit is nodig om ervoor 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 de beweging stoppen of opnieuw starten door deze te wijzigen “begin” naar “hou op” of “herstarten”.

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 beveiligings-cam cd beveiligings-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 is “.RPY” in plaats van “py”. Hier is de code:

# Importeer noodzakelijke bestanden importeer serie van twisted.web.bron import Resource # Stel Arduino in op juiste snelheid probeer: arduino = serial.Serial ('/ dev / ttyUSB0', 9600) behalve: arduino = serial.Serial ('/ dev / ttyUSB1 ', 9600) klasse MoveServo (Resource): isLeaf = True def render_GET (zelf, verzoek): probeer: # Verzend waarde over serieel naar de Arduino arduino.write (request.args [' waarde '] [0]) return' Succes 'behalve: return' Failure'-resource = MoveServo ()

Start nu de webserver:

sudo twistd -n web -p 80 --pad / home / pi / beveiligingscamera /

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

Maak nu de webpagina:

sudo nano index.html

Hier is de webpagina-code:

   Maak gebruik van DIY-beveiligingscamera    

Verandering “PI_IP_ADDRESS” (tweemaal gebruikt) naar het echte IP-adres van uw Pi (raspberrypi.local zou ook moeten werken als je de nieuwste Raspian gebruikt). Start de webserver opnieuw en navigeer vervolgens naar de Pi vanaf uw computer, u hoeft de poort niet op te geven. Je zou links en rechts moeten kunnen pannen en de videostream kunnen bekijken:

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 willen zien!

Ontdek meer over: Home Security, Raspberry Pi, Webcam.