DIY Pan og Tilt Network Security Cam med Raspberry Pi
Lær hvordan du lager et eksternt synlig pan- og tilt-sikkerhetskamera med en Raspberry Pi. Dette prosjektet kan fullføres om morgenen med bare de enkleste delene. Her er sluttresultatet:
Hva trenger du
- Raspberry Pi 2 eller 3 med Micro SD-kort
- Arduino UNO eller lignende
- 2 x mikro eller mini hobby servos
- USB-webkamera
- Mann til mannlig hookup ledninger
- Mann til kvinnelig hookup ledninger
- Assorterte zip-bånd
Bygg sikkerhetskameraet
Fest et servohorn (den lille plasten “figurer”) til hver servo ved hjelp av den medfølgende skruen. Den spesielle formen spiller ingen rolle, selv om jo større jo bedre. Ikke skru over skruen.
Bruk nå zip-bånd for å feste en servo til den andre i riktig vinkel. En av disse vil være pan (venstre til høyre), mens den andre vil vippe (opp og ned). Det spiller ingen rolle hvem som gjør hva, det kan justeres i koden.
Til slutt legger du til webkameraet ditt på en av servoene. Du kan bruke zip-bånd til dette, selv om webkameraet mitt kom med et klips skrudd til bunnen - jeg fjernet dette og brukte skruen til å holde den til hornet. For stabilitet kan det være lurt å montere hele riggen på en sak eller et eske. En enkel pappkasse gjør trikset ganske pent. Du kan klippe et pent kvadrat hull og montere en servo flush til overflaten, men en glidelås vil være tilstrekkelig.
Et ord om webkameraer
Ikke alle USB-webkameraer opprettes likt. Koble ditt webkamera til USB-porten til Pi og kjør denne kommandoen:
lsusb
Denne kommandoen viser informasjon om alle USB-enheter som er koblet til Pi. Hvis webkameraet ditt ikke er oppført her, kan det være lurt å prøve en drevet USB-hub og gjenta kommandoen. Hvis webkameraet fortsatt ikke er kjent, må du kanskje kjøpe et kompatibelt webkamera.
Servo Setup
Selv om servoer kan virke skummelt og komplekst, er de veldig ganske enkle å koble til. Servoer opererer på Pulse Width Modulation (PWM), som er en måte for digitale systemer å etterligne analoge signaler. PWM-signaler er i hovedsak et raskt ON-OFF-signal. Et signal som er ON eller HIGH er beskrevet ved bruk av driftssyklus. Tollsyklusen uttrykkes som prosent, og beskriver hvor lenge signalet er PÅ for. Et PWM-signal på 25% driftssyklus vil være PÅ for 25% av tiden, og OFF for de resterende 75%. Signalet er ikke PÅ i starten og deretter AV for alltid, det pulses regelmessig over en svært kort periode.
Servoer lytter etter disse pulser og opptrer tilsvarende. Å bruke en arbeids syklus på 100% ville være den samme som “regelmessig” 5v, og 0% ville være det samme som bakken. Ikke bekymre deg hvis du ikke forstår fullt ut hvordan PWM fungerer, du kan fortsatt kontrollere servos (Extreme Electronics er et godt sted å lære mer).
Det er to hovedmåter å bruke PWM - maskinvare eller programvare. Maskinvare PWM gir ofte lavere ventetid (hvor lenge mellom servo mottar kommandoen og beveger seg) enn programvare PWM, men Pi har bare en maskinvare PWM-stift. Eksterne kretser er tilgjengelige for å gi flere kanaler med maskinvare PWM, men en enkel Arduino kan også håndtere oppgaven, da de har flere maskinvare PWM-pinner.
Her er kretsen:
Dobbeltklikk pinout for Pi, de varierer litt mellom modeller. Du må finne ut hvordan serviene dine er koblet til. Servoer krever tre ledninger for å kontrollere dem, men fargene varierer litt:
- Rød er positiv, koble dette til Pi + 5v
- Brun eller svart er negativ, koble dette til GND på Pi
- Oransje eller hvitt er signal, koble dette til Arduino pins 9 og 10
Arduino Setup
Nytt på Arduino? Kom i gang her Komme i gang Med Arduino: En nybegynnersveiledning Komme i gang med Arduino: En nybegynnersguide Arduino er en open source elektronikk prototyping plattform basert på fleksibel, brukervennlig maskinvare og programvare. Det er ment for kunstnere, designere, hobbyister, og alle som er interessert i å lage interaktive objekter eller miljøer. Les mer .
Når servoene er tilkoblet, åpner du Arduino IDE på datamaskinen din og laster opp denne testkoden. Ikke glem å velge riktig bord og port fra Verktøy> Styret og Verktøy> Port menyer
#inkludere // Importer biblioteket Servo servoPan, servoTilt; // Lag servo objekter int servoMin = 20, servoMax = 160; // Definer grenser for servo tomt oppsett () // Oppsett servos på PWM kapabel pinner servoPan.attach (9); servoTilt.attach (10); tomromsløyfe () 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) // Flytt servoer fra maksimum til minimum servoPan.write (i); servoTilt.write (i); forsinkelse (100); // Vent 100ms
Alt er bra, du bør se begge servene sakte bevege seg frem og tilbake. Legg merke til hvordan “servoMin” og servoMax” er definert som 20 og 160 grader (i stedet for 0 og 180). Dette er delvis fordi disse billige servoene ikke klarer å bevege seg helt 180 grader, og også på grunn av den fysiske størrelsen på webkameraet forhindrer hele spekteret å bli brukt. Du må kanskje justere disse for oppsettet ditt.
Hvis de ikke jobber i det hele tatt, kontrolleres kretsen riktig. Brettbrett kan også variere i kvalitet, så vurder å investere i et multimeter for å verifisere.
Servoene er nesten for kraftig for Arduino til makten, så de vil bli drevet av Pi. 5v-skinnen på Pi er begrenset til 750mA til hele Pi, og Pi trekker ca. 500mA, og forlater 250mA for servoene. Disse micro servos tegner ca 80mA, noe som betyr at Pi skal kunne håndtere to av dem. Hvis du ønsker å bruke flere servoer eller større, høyere drevne modeller, må du kanskje bruke en ekstern strømforsyning.
Last opp følgende kode til Arduino. Dette vil lytte til innkommende serielle data (seriell som i Universal serie~~POS=TRUNC Buss eller USB). Pi vil sende disse dataene over USB til Arduino, fortelle det hvor du skal flytte servoene.
#inkludere // Importer biblioteket Servo servoPan, servoTilt; // Opprett servoobjekt String data = ""; // Lagre innkommende kommandoer (buffer) ugyldig oppsett () // Oppsett servos på PWM kapabel pinner servoPan.attach (9); servoTilt.attach (10); Serial.begin (9600); // Start seriell til 9600 bps (hastighet) tomgangsløype () mens (Serial.available ()> 0) // Hvis det er dataramme singleChar = Serial.read (); // Les hvert tegn hvis (singleChar == 'P') // Flyt pan servo servoPan.write (data.toInt ()); data = ""; // Clear buffer ellers hvis (singleChar == 'T') // Flytt tilt servo servoTilt.write (data.toInt ()); data = ""; // Clear buffer else data + = singleChar; // Legg til nye data
Du kan teste denne koden ved å åpne seriell skjerm (øverst til høyre> Seriell skjerm) og sende noen testdata:
- 90p
- 0P
- 20T
- 100T
Merk formatet på kommandoene - en verdi og deretter et brev. Verdien er posisjonen til servo, og bokstaven (i caps) angir pan- eller vippeservo. Siden disse dataene overføres fra Pi serielt, kommer hvert tegn gjennom en om gangen. Arduino må “butikk” Disse til hele kommandoen er overført. Endebrevet spesifiserer ikke bare servoen, det lar også Arduino vite at det ikke er flere data i denne kommandoen.
Til slutt, koble din Arduino fra datamaskinen, og Koble den til Raspberry Pi via den vanlige USB-porttilkoblingen.
Pi Setup
Nå er det på tide å sette opp Pi. Først installerer du et operativsystem Slik installerer du et operativsystem til din bringebær Pi Slik installerer du et operativsystem til din Raspberry Pi Slik får du et nytt OS installert og kjører på din Pi - og hvordan du kloner ditt perfekte oppsett for rask katastrofe gjenoppretting. Les mer . Koble webkameraet og Arduino til Pi USB.
Oppdater Pi:
sudo apt-get oppdatering sudo apt-get oppgradering
Installer bevegelse:
sudo apt-get installasjonsbevegelse
Motion er et program laget for å håndtere webkamera streaming. Den håndterer alle de tunge løftene, og kan til og med utføre opptak og bevegelsesdeteksjon (prøv å bygge et bevegelsesopptakssikkerhetssystem. Build a Motion Capture Security System ved hjelp av en Raspberry Pi. Build a Motion Capture Security System. Bruke en Raspberry Pi Av de mange prosjektene du kan Bygg med Raspberry Pi, en av de mest interessante og permanent nyttige er bevegelseskapt sikkerhetssystemet. Les mer). Åpne Motion-konfigurasjonsfilen:
sudo nano /etc/motion/motion.conf
Denne filen inneholder mange alternativer for å konfigurere Motion. Oppsett som følger:
- daemon på - Kjør programmet
- framerate: 100 - Hvor mange rammer eller bilder / sekunder å streame
- stream_localhost av - Tillat tilgang på tvers av nettverket
- bredde 640 - Bredde på video, juster for webkameraet ditt
- høyde 320 - Høyde på video, juster for ditt webkamera
- stream_port 8081 - Porten for å utføre video til
- output_picture av - Ikke lag noen bilder
Dette er ganske stor fil, så du vil kanskje bruke CTRL + W å søke etter linjer. Når du er ferdig, trykker du på CTRL + X og bekreft deretter for å lagre og avslutte.
Rediger nå en fil:
sudo nano / etc / default / motion
Sett “start_motion_daemon = yes”. Dette er nødvendig for å sikre bevegelseshastigheter.
Finn ut din IP-adresse:
ifconfig
Denne kommandoen viser nettverksforbindelsesdetaljer for Pi. Se på den andre linjen, inet addr. Du vil kanskje angi en statisk IP-adresse (hva er en statisk IP-adresse? Hva er en statisk IP-adresse, hvordan får jeg en og dens fordeler / ulemper Hva er en statisk IP-adresse, hvordan får jeg en og dens fordeler / ulemper I hjemmenettverk er IP-adresser vanligvis ikke faste, men de faller innenfor bestemte områder. En statisk IP-adresse endres ikke. Hva er fordelene med dette, og hvorfor vil du ha en? Les mer), men for nå noter dette nummeret.
Start nå Motion:
sudo service bevegelse start
Du kan stoppe eller starte Motion ved å endre “start” til “Stoppe” eller “omstart”.
Bytt til datamaskinen din og naviger til Pi fra en nettleser:
http: //xxx.xxx.x.xx: 8081
Hvor xxx.xxx.x.xx er Pi IP-adressen. Tykktarmen etterfulgt av et tall er porten som ble satt opp tidligere. Alt er bra, du bør se strømmen fra webkameraet ditt! Prøv å flytte rundt og se hvordan ting ser ut. Du må kanskje justere lysstyrke og kontrastinnstillinger i config-filen. Du må kanskje fokusere på webkameraet - noen modeller har en liten fokusring rundt linsen. Vri dette til bildet er den skarpeste.
Tilbake på Pi, lag en mappe og naviger inn i den:
mkdir sikkerhet-cam cd sikkerhet-cam /
Installer nå Twisted:
sudo apt-get install python-vridd
Twisted er en webserver skrevet i Python, som vil lytte etter kommandoer og deretter handle tilsvarende.
Når du er installert, opprett et Python-skript for å utføre kommandoer (flytt servoene).
sudo nano servos.rpy
Legg merke til hvordan filtypen er “.rpy” i stedet for “py”. Her er koden:
# Import nødvendige filer importere seriell fra twisted.web.resource import Ressurs # Oppsett Arduino med riktig hastighetsforsøk: arduino = serial.Serial ('/ dev / ttyUSB0', 9600) unntatt: arduino = serial.Serial ('/ dev / ttyUSB1 '9600) klasse MoveServo (Resource): isLeaf = True def render_GET (selv, forespørsel): prøv: # Send verdi over seriell til Arduino arduino.write (request.args [' value '] [0]) returnere 'bortsett: retur' Feil 'ressurs = MoveServo ()
Start nå webserveren:
sudo twistd -n web-p 80 - path / home / pi / security-cam /
La oss bryte det ned - “-s. 80” Angir porten (80). Dette er standardporten for nettsider. “-sti / hjem / pi / sikkerhet-cam /” forteller Twisted å starte serveren i den angitte katalogen. Hvis du gjør noen endringer i skriptene inne i “sikkerhet-cam” mappe må du starte serveren på nytt (CTRL + X å lukke, kjør deretter kommandoen igjen).
Opprett nå nettsiden:
sudo nano index.html
Her er nettsidekoden:
Gjør bruk av DIY Security Camera
Endring “PI_IP_ADDRESS” (brukes to ganger) til din ekte IP-adresse (raspberrypi.local bør også fungere hvis du kjører den siste Raspian). Start webserveren på nytt og naviger deretter til Pi fra datamaskinen din, ikke å spesifisere porten. Du bør kunne panorere til venstre og høyre, og se videostrømmen:
Der har du det. Din egen Pan and Tilt Network Camera. Hvis du vil utsette webkameraet ditt på Internett, må du huske å vurdere farene. 5 Fare for å vurdere når du peker på hjemmekameraer. 5 Farer du bør vurdere når du peker på hjemmekameraer. Det er viktig å nøye vurdere hvor du plasserer kameraene dine og hva deler av ditt hjem du peker på på. Å holde ting trygt er viktig, men så opprettholder du ditt privatliv. Les mer - se deretter på port videresending Hva er port videresending og hvordan kan det hjelpe meg? [MakeUseOf Forklarer] Hva er port videresending og hvordan kan det hjelpe meg? [MakeUseOf Forklarer] Skriker du litt innvendig når noen forteller deg at det er et problem med portoverføring, og derfor vil din skinnende nye app ikke fungere? Din Xbox vil ikke la deg spille spill, dine torrentnedlastinger nekte ... Les mer, så ruteren din vet hvor du skal sende innkommende forespørsler. Kan du legge til en ekstern strømforsyning Pi til Go? 3 måter å drive en bringebær Pi til bærbare prosjekter Pi å gå? 3 måter å drive en bringebær Pi til bærbare prosjekter Ønsker du å få din Raspberry Pi ut av huset og involvert i noen mobile prosjekter? Du trenger et batteri av noe slag - men det finnes flere alternativer. Les mer og Wi-Fi-adapter for en virkelig bærbar rigg.
Har du gjort noe kult med et webkamera og en Pi? Gi meg beskjed i kommentarene, jeg vil gjerne se!
Utforsk mer om: Hjemmesikkerhet, Raspberry Pi, Webkamera.