Advertentie

Leer hoe u een op afstand zichtbare pan- en tilt-beveiligingscamera maakt met een Raspberry Pi. Dit project kan in een ochtend 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 gelijkaardig
  • 2 x micro of mini hobby servo's
  • USB-webcam
  • Man-naar-man aansluitdraden
  • Man-vrouw aansluitdraden
  • Geassorteerde kabelbinders

De beveiligingscamera bouwen

Bevestig een servohoorn (de kleine plastic “vormen”) aan elke servo met de meegeleverde schroef. De specifieke vorm doet er niet echt toe, hoewel 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 kantelt (op en neer). Het maakt niet uit welke wat doet, het kan in de code worden aangepast.

Servo-hardware

Bevestig tot slot je webcam op een van de servo's. Je zou hiervoor kabelbinders kunnen gebruiken, hoewel mijn webcam werd geleverd met een clip die aan de onderkant was vastgeschroefd - ik verwijderde deze en gebruikte de schroef om hem aan de hoorn te houden. Voor stabiliteit wilt u misschien de hele rig op een koffer of doos monteren. Een eenvoudige kartonnen doos doet het heel goed. U kunt een net vierkant gat maken en één servo vlak op het oppervlak monteren, maar een kabelbinder is voldoende.

Pi-Pan-Tilt-Camera

Een woord over webcams

Niet alle USB-webcams zijn gelijk gemaakt. Sluit je webcam aan op 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, wilt u misschien een actieve USB-hub proberen en de opdracht herhalen. Als de webcam nog steeds niet wordt herkend, moet u mogelijk een compatibele webcam.

Servo-instellingen

Hoewel servo's misschien eng en complex lijken, zijn ze eigenlijk vrij eenvoudig aan te sluiten. Servo's werken op Pulse Width Modulation (PWM), een manier 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 gebruikscyclus. De inschakelduur wordt uitgedrukt als een percentage en beschrijft hoe lang het signaal AAN is. Een PWM-signaal met een inschakelduur van 25% blijft 25% van de tijd AAN en de resterende 75% UIT. Het signaal is bij aanvang niet AAN en dan voor altijd UIT, het wordt regelmatig gedurende een zeer korte periode gepulseerd.

Servo's luisteren naar deze pulsen en handelen dienovereenkomstig. Een inschakelduur van 100% zou hetzelfde zijn als "gewone" 5v en 0% zou hetzelfde zijn als op de grond. Maak je geen zorgen als je niet volledig begrijpt hoe PWM werkt, je kunt nog steeds servo's besturen (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 (hoe lang tussen de servo die de opdracht ontvangt en beweegt) dan software PWM, maar de Pi heeft maar één hardware PWM-compatibele pin. Externe circuits zijn beschikbaar om meerdere kanalen met hardware PWM te bieden, maar een eenvoudige Arduino kan de taak ook aan, omdat ze meerdere hardware PWM-pinnen hebben.

Hier is het circuit:

Pi-Servo-verbinding

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

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

Arduino-installatie

Nieuw bij Arduino? Begin hier Aan de slag met Arduino: een beginnershandleidingArduino is een open-source prototypeplatform voor elektronica, gebaseerd op 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 aangesloten, opent u de Arduino IDE op uw computer en uploadt u deze testcode. Vergeet niet om de juiste kaart en poort te selecteren uit de Extra> Bord en Extra> Poort menu's

#include // Importeer de bibliotheek Servo servoPan, servoTilt; // Maak servo-objecten. int servoMin = 20, servoMax = 160; // Definieer limieten van servo ongeldige setup () {// Setup servo's op PWM-compatibele pins servoPan.attach (9); servoTilt.attach (10); } void loop () {for (int i = servoMin; i  servoMin; --i) {// Verplaats servo's van maximum naar minimum servoPan.write (i); servoTilt.write (i); vertraging (100); // Wacht 100ms} }

Als alles goed is, zou je beide servo's langzaam heen en weer moeten zien bewegen. Merk op hoe "servoMin" en servoMax "worden 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 verhindert het gebruik van het volledige bereik. Mogelijk moet u deze aanpassen voor uw configuratie.

Als ze helemaal niet werken, controleer dan of het circuit correct is bedraad. 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 van stroom te voorzien, dus ze zullen worden aangedreven door de Pi. De 5v-rail op de Pi is beperkt tot 750mA geleverd aan de hele Pi, en de Pi trekt ongeveer 500mA, waardoor er 250mA overblijft voor de servo's. Deze microservo's trekken ongeveer 80mA, wat betekent dat de Pi er twee moet kunnen verwerken. Als u meer servo's of grotere modellen met een hoger vermogen wilt gebruiken, moet u mogelijk een externe voeding gebruiken.

Upload nu de volgende code naar de Arduino. Dit luistert naar inkomende seriële gegevens (serieel zoals in Universal Serieel Bus of USB). De Pi stuurt deze gegevens via USB naar de Arduino en vertelt hem waar de servo's moeten worden verplaatst.

#include // Importeer de bibliotheek Servo servoPan, servoTilt; // Maak een servo-object. String data = ""; // Bewaar inkomende commando's (buffer) ongeldige setup () {// Stel servo's in op PWM-compatibele pinnen servoPan.attach (9); servoTilt.attach (10); Serial.begin (9600); // Start serieel 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} anders if (singleChar == 'T') {// Verplaats tilt servo servoTilt.write (data.toInt ()); data = ""; // Wis buffer} anders {data + = singleChar; // Voeg nieuwe gegevens toe}} }

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 pan- of tilt-servo aan. Aangezien deze gegevens serieel worden verzonden vanaf de Pi, komt elk personage één voor één door. De Arduino moet deze 'opslaan' totdat het hele commando is verzonden. De laatste letter specificeert niet alleen de servo, maar laat de Arduino ook weten dat er geen gegevens meer zijn in deze opdracht.

Koppel ten slotte uw Arduino los van de computer en sluit hem aan op de Raspberry Pi via de gebruikelijke USB-poortverbinding.

Pi-instellingen

Nu is het tijd om de Pi in te stellen. Eerste, installeer een besturingssysteem Hoe een besturingssysteem op een Raspberry Pi te installerenHier leest u hoe u een besturingssysteem op uw Raspberry Pi installeert en hoe u uw perfecte setup kunt klonen voor snel noodherstel. Lees verder . Verbind de webcam en de Arduino met de Pi USB.

Update de Pi:

sudo apt-get update. sudo apt-get upgrade

Motion installeren:

sudo apt-get installatiebeweging

Motion is een programma dat is gemaakt om webcam-streaming af te handelen. Het kan al het zware werk aan en kan zelfs opnemen en bewegingsdetectie uitvoeren (probeer het bouwen van een motion capture-beveiligingssysteem Bouw een Motion Capture-beveiligingssysteem met een Raspberry PiVan de vele projecten die u met de Raspberry Pi kunt bouwen, is een van de meest interessante en permanent bruikbare het motion capture-beveiligingssysteem. Lees verder ). Open het Motion-configuratiebestand:

sudo nano /etc/motion/motion.conf

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

  • daemon on - Voer het programma uit
  • framerate: 100 - Hoeveel frames of afbeeldingen / seconde om te streamen
  • stream_localhost uit - Sta toegang via het netwerk toe
  • breedte 640 - Breedte van video, aan te passen voor uw webcam
  • hoogte 320 - Hoogte van video, aan te passen voor uw webcam
  • stream_port 8081 - De poort waarnaar video moet worden uitgevoerd
  • output_picture off - Sla geen afbeeldingen op

Dit is een vrij groot bestand, dus misschien wil je het gebruiken CTRL + W om naar lijnen te zoeken. Druk als u klaar bent op CTRL + X en bevestig vervolgens om op te slaan en af ​​te sluiten.

Bewerk nu nog een bestand:

sudo nano / etc / default / motion

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

Zoek nu uw IP-adres uit:

ifconfig

Deze opdracht toont de netwerkverbindingsdetails voor de Pi. Kijk naar de tweede regel, inet addr. Mogelijk wilt u een statisch IP-adres instellen (wat is een statisch IP? Wat is een statisch IP-adres? Hier is waarom je er geen nodig hebtEen statisch IP-adres verandert nooit. Dynamische IP-adressen veranderen. We leggen uit waarom je geen statisch IP-adres nodig hebt. Lees verder ), maar noteer voorlopig dit nummer.

Start nu Motion:

sudo service motion start

U kunt Motion stoppen of herstarten door "start" te wijzigen in "stop" of "herstarten".

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

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

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

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

mkdir bewakingscamera. cd beveiliging-cam /

Installeer nu Twisted:

sudo apt-get installeer python-twisted

Twisted is een webserver geschreven in Python, die luistert naar opdrachten en vervolgens handelt.

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

sudo nano servos.rpy

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

# Importeer noodzakelijke bestanden. serie importeren. van twisted.web.resource import Resource # Stel Arduino in op de juiste snelheid. probeer: arduino = serieel. Serieel ('/ dev / ttyUSB0', 9600) behalve: arduino = serieel. Serial ('/ dev / ttyUSB1', 9600) klasse MoveServo (Resource): isLeaf = True def render_GET (self, request): try: # Send value over serieel naar de Arduino arduino.write (request.args ['value'] [0]) retourneert 'Success' behalve: 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 directory 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 voer de opdracht opnieuw uit).

Maak nu de webpagina:

sudo nano index.html

Dit is de webpagina-code:

Maak gebruik van DIY-beveiligingscamera


Verander "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 op en navigeer vervolgens vanaf uw computer naar de Pi, u hoeft de poort niet op te geven. U zou naar links en rechts moeten kunnen pannen en de videostream moeten zien:

Pi-Pan-Tilt-Camera-Web-View

Daar heb je het. Uw eigen pan- en tilt-netwerkcamera. Als u uw webcam op internet wilt zetten, vergeet dan niet om dit te doen overweeg de gevaren 5 gevaren om te overwegen bij het richten van uw huisbeveiligingscamera'sHet is belangrijk om zorgvuldig na te gaan waar u uw camera's plaatst en op welke delen van uw huis u ze richt. Het is belangrijk om dingen veilig te houden, maar dat geldt ook voor uw privacy. Lees verder - kijk dan in Port forwarding Wat is Port Forwarding en hoe kan het mij helpen? [MakeUseOf Explains]Huil je een beetje van binnen als iemand je vertelt dat er een probleem met het doorsturen van poorten is en dat daarom je glanzende nieuwe app niet werkt? Je Xbox laat je geen games spelen, je torrent-downloads weigeren ... Lees verder , zodat uw router weet waar inkomende verzoeken naartoe moeten worden gestuurd. Je zou kunnen toevoegen een externe voeding 3 Raspberry Pi-batterijpakketten voor draagbare projectenEen Raspberry Pi-batterij kan van een gewone Pi een draagbare computer maken. U heeft een van deze batterijoplossingen nodig om aan de slag te gaan. Lees verder en Wi-Fi-adapter voor een echt draagbare rig.

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

Joe is afgestudeerd in computerwetenschappen aan de universiteit van Lincoln, VK. Hij is een professionele softwareontwikkelaar en als hij niet met drones vliegt of muziek schrijft, kan hij vaak foto's of video's maken.