Reklame
Lær hvordan du laver en ekstern synlig panorering og vip sikkerhedskamera med en Raspberry Pi. Dette projekt kan afsluttes om morgenen med kun den enkleste del. Her er slutresultatet:
Hvad du har brug for
- Raspberry Pi 2 eller 3 med Micro SD-kort
- Arduino UNO eller lignende
- 2 x mikro- eller minihobbyservoer
- USB webcam
- Han-til-mand-tilslutningsledninger
- Han-til-kvindelige tilslutningsledninger
- Assorterede lynlåsebånd
Bygning af sikkerhedskamera
Fastgør et servohorn (de små plastiske "former") til hver servo ved hjælp af den medfølgende skrue. Den særlige form betyder ikke rigtig noget, selvom jo større jo bedre. Spænd ikke skruen for meget.
Brug nu lynlås til at fastgøre den ene servo til den anden i ret vinkel. Den ene af disse vil være panorering (venstre til højre), mens den anden vil vippe (op og ned). Det betyder ikke noget, hvem der gør hvad, det kan justeres i koden.
Tilslut til sidst dit webcam til en af servoerne. Du kunne bruge lynlås til dette, selvom mit webcam kom med et klips skruet ned til bunden - jeg fjernede dette og brugte skruen til at holde det til hornet. For stabilitet kan det være en god idé at montere hele riggen til en kasse eller kasse. En simpel papkasse gør tricket ganske pænt. Du kan skære et pænt kvadratisk hul og montere en servoskyl på overfladen, men et lynlås vil være tilstrækkeligt.
Et ord om webcams
Ikke alle USB-webkameraer oprettes ens. Tilslut dit webcam til USB-porten på din Pi og kør denne kommando:
så udfør lsusb
Denne kommando viser information om alle USB-enheder, der er tilsluttet Pi. Hvis dit webcam ikke er vist her, kan du prøve en USB-hub, der er drevet, og gentage kommandoen. Hvis webcam stadig ikke genkendes, skal du muligvis købe en kompatibelt webcam.
Servoopsætning
Selvom servoer kan virke skræmmende og komplekse, er de virkelig ganske enkle at forbinde. Servoer fungerer på PWM (Pulse Width Modulation), som er en måde for digitale systemer at efterligne analoge signaler. PWM-signaler er i det væsentlige et hurtigt ON - OFF signal. Et signal, der er ON eller HIGH, beskrives ved hjælp af driftscyklus. Driftscyklus udtrykkes som en procentdel og beskriver, hvor længe signalet er TIL. Et PWM-signal på 25% driftscyklus vil være TIL i 25% af tiden og OFF for de resterende 75%. Signalet er ikke TIL i starten og derefter FRA for altid, det pulseres regelmæssigt over en meget kort periode.
Servoer lytter efter disse impulser og handler i overensstemmelse hermed. Brug af en arbejdscyklus på 100% ville være det samme som "almindelig" 5v, og 0% ville være det samme som jord. Bare rolig, hvis du ikke fuldt ud forstår, hvordan PWM fungerer, kan du stadig kontrollere servoer (Extreme Electronics er et godt sted at lære mere).
Der er to hovedmåder til at bruge PWM - hardware eller software. Hardware PWM giver ofte lavere latenstid (hvor længe mellem servoen, der modtager kommandoen og flytter) end software PWM, men Pi har dog kun en hardware-PWM-stand, der er i stand. Eksterne kredsløb er tilgængelige til at levere flere kanaler med hardware-PWM, men en simpel Arduino kan også håndtere opgaven, da de har flere hardware-PWM-stifter.
Her er kredsløbet:
Dobbeltkontrol af pinout til din Pi, varierer de lidt mellem modeller. Du skal finde ud af, hvordan dine servoer er kablet. Servoer kræver tre ledninger for at kontrollere dem, men farverne varierer lidt:
- Rødt er positivt, tilslut dette til Pi + 5v
- Brun eller sort er negativ, tilslut dette til GND på Pi
- Orange eller hvidt er signal, tilslut dette til Arduino-pins 9 og 10
Arduino opsætning
Er du ny på Arduino? Kom i gang her Kom godt i gang med Arduino: En begynderguideArduino er en open source-elektronikprototypeplatform baseret på fleksibel, letanvendelig hardware og software. Det er beregnet til kunstnere, designere, hobbyister og enhver, der er interesseret i at skabe interaktive objekter eller miljøer. Læs mere .
Når servoerne er tilsluttet, skal du åbne Arduino IDE på din computer og uploade denne testkode. Glem ikke at vælge det rigtige bord og port fra Værktøjer> Tavle og Værktøjer> Port menuer
#omfatte // Importer biblioteket Servo servoPan, servoTilt; // Opret servobjekter. int servoMin = 20, servoMax = 160; // Definer grænser for opsætning af tomt for servoer () {// Opsætning af servoer på stifter, der er i stand til PWM-servoPan.attach (9) servoTilt.attach (10); } void loop () {for (int i = servoMin; i servoMin; --i) {// Flyt servoer fra maksimum til minimum servoPan.write (i); servoTilt.write (i); forsinkelse (100); // Vent 100ms} }
I det hele taget skal du se begge servoer langsomt bevæge sig frem og tilbage. Bemærk, hvordan “servoMin” og servoMax ”er defineret som 20 og 160 grader (i stedet for 0 og 180). Dette skyldes delvist, at disse billige servoer ikke er i stand til nøjagtigt at bevæge sig hele 180 grader, og også på grund af webcam's fysiske størrelse forhindrer, at det fulde interval bruges. Du skal muligvis justere disse til din opsætning.
Hvis de overhovedet ikke fungerer, skal du tjekke, at kredsløbet er korrekt tilsluttet. Breadboards kan undertiden også variere i kvalitet, så overvej at investere i et multimeter for at verificere.
Servoer er næsten for magtfulde til, at Arduino kan tænde, så de vil blive drevet af Pi. 5v-skinnen på Pi er begrænset til 750 mA leveret til hele Pi, og Pi trækker cirka 500 mA, hvilket efterlader 250 mA til servoer. Disse mikroservoer tegner ca. 80 mA, hvilket betyder, at Pi skal være i stand til at håndtere to af dem. Hvis du ønsker at bruge flere servoer eller større, højere drevne modeller, skal du muligvis bruge en ekstern strømforsyning.
Upload nu følgende kode til Arduino. Dette vil lytte til indgående seriedata (seriel som i Universal) Seriel Bus eller USB). Pi'en sender disse data over USB til Arduino og fortæller dem, hvor servoer skal flyttes.
#omfatte // Importer biblioteket Servo servoPan, servoTilt; // Opret servo-objekt. Streng data = ""; // Gem indkommende kommandoer (buffer) ugyldig opsætning () {// Opsætning af servoer på stifter, der er i stand til PWM-servoPan.attach (9); servoTilt.attach (10); Serial.begin (9600); // Start serie med 9600 bps (hastighed) } void loop () {while (Serial.available ()> 0) {// Hvis der er data char singleChar = Serial.read (); // Læs hvert tegn, hvis (singleChar == 'P') {// Flyt pan servo servoPan.write (data.toInt ()); data = ""; // Ryd buffer} ellers hvis (singleChar == 'T') {// Flyt vippeservo servoTilt.write (data.toInt ()); data = ""; // Ryd buffer} andet {data + = singleChar; // Tilføj nye data}} }
Du kan teste denne kode ved at åbne den serielle skærm (øverst til højre> Serial Monitor) og sende nogle testdata:
- 90P
- 0P
- 20T
- 100T
Bemærk formatet på kommandoerne - en værdi og derefter et bogstav. Værdien er servoens position, og bogstavet (i kasketter) angiver panoramations- eller vippeservo. Da disse data transmitteres fra Pi-serien, kommer hver karakter gennem én ad gangen. Arduinoen skal "gemme" disse, indtil hele kommandoen er blevet overført. Det sidste brev angiver ikke kun servoen, det lader også Arduinoen vide, at der ikke er flere data i denne kommando.
Til sidst skal du fjerne din Arduino fra computeren og Sæt det i Raspberry Pi via den sædvanlige USB-portforbindelse.
Pi-opsætning
Nu er det tid til at opsætte Pi'en. Først, installere et operativsystem Sådan installeres et operativsystem på en Raspberry PiHer er, hvordan du installerer et operativsystem på din Raspberry Pi, og hvordan du kloner din perfekte opsætning til hurtig gendannelse af katastrofer. Læs mere . Tilslut webcam og Arduino til Pi USB.
Opdater Pi:
sudo apt-get-opdatering. sudo apt-get-opgradering
Installer bevægelse:
sudo apt-get install motion
Motion er et program lavet til at håndtere streaming af webcam. Den håndterer al den tunge løft og kan endda udføre optagelse og bevægelsesdetektion (prøv opbygning af et bevægelsessikringssystem Byg et sikkerhedssystem til bevægelsesfangst ved hjælp af en Raspberry PiAf de mange projekter, som du kan bygge med Raspberry Pi, er et af de mest interessante og permanent nyttige bevægelsessystemet. Læs mere ). Åbn Motion-konfigurationsfilen:
sudo nano /etc/motion/motion.conf
Denne fil indeholder masser af muligheder for at konfigurere Motion. Opsætning som følger:
- daemon on - Kør programmet
- framerate: 100 - Hvor mange rammer eller billeder / sekund at streame
- stream_localhost off - Tillad adgang på tværs af netværket
- bredde 640 - Bredde på video, juster til dit webcam
- højde 320 - Højde på video, juster til dit webcam
- stream_port 8081 - Porten, der skal udsendes video til
- output_picture off - Gem ikke nogen billeder
Dette er en ganske stor fil, så du ønsker måske at bruge CTRL + W at søge efter linjer. Når du er færdig, skal du trykke på CTRL + X og bekræft derefter for at gemme og afslutte.
Rediger nu endnu en fil:
sudo nano / etc / default / motion
Indstil “start_motion_daemon = ja”. Dette er nødvendigt for at sikre, at Motion kører.
Find nu din IP-adresse:
ifconfig
Denne kommando viser netværksforbindelsesdetaljerne for Pi. Se på den anden linje inet addr. Du ønsker muligvis at indstille en statisk IP-adresse (hvad er en statisk IP? Hvad er en statisk IP-adresse? Her er hvorfor du ikke har brug for enEn statisk IP-adresse er en, der aldrig ændres. Dynamiske IP-adresser ændres. Vi forklarer, hvorfor du ikke har brug for en statisk IP-adresse. Læs mere ), men noter nu dette nummer.
Start nu Motion:
sudo service bevægelse start
Du kan stoppe eller genstarte bevægelse ved at ændre “start” til “stop” eller “genstart”.
Skift til din computer og naviger til Pi fra en webbrowser:
http://xxx.xxx.x.xx: 8081
Hvor xxx.xxx.x.xx er Pi IP-adressen. Kolon efterfulgt af et nummer er den port, der blev opsat tidligere. Alt i alt skal du se strømmen fra dit webcam! Prøv at bevæge dig rundt og se, hvordan tingene ser ud. Det kan være nødvendigt at justere lysstyrke og kontrastindstillinger i konfigurationsfilen. Det kan være nødvendigt at du fokuserer webcam - nogle modeller har en lille fokusring omkring linsen. Drej dette, indtil billedet er det skarpeste.
Tilbage på Pi, opret en mappe og naviger ind i den:
mkdir sikkerhedskamera. cd sikkerhedskamera /
Installer nu Twisted:
sudo apt-get install python-twisted
Twisted er en webserver skrevet i Python, som vil lytte til kommandoer og derefter handle i overensstemmelse hermed.
Når det er installeret, skal du oprette et Python-script for at udføre kommandoer (flytte servoer).
sudo nano servos.rpy
Bemærk, hvordan filtypenavnet er ".rpy" i stedet for "py". Her er koden:
# Importer nødvendige filer. import seriel. fra twisted.web.resource import Ressource # Opsætning Arduino med korrekt hastighed. try: arduino = seriel. Seriel ('/ dev / ttyUSB0', 9600) undtagen: arduino = seriel. Seriel ('/ dev / ttyUSB1', 9600) klasse MoveServo (ressource): isLeaf = True def render_GET (selv, anmodning): prøv: # Send værdi over seriel til Arduino arduino.write (request.args ['value'] [0]) returnerer 'Success' undtagen: return 'Failure' resource = MoveServo ()
Start nu webserveren:
sudo twistd -n web-p 80 - sti / hjem / pi / sikkerhed-cam /
Lader det nedbrydes - “-p 80” specificerer porten (80). Dette er standardporten til websider. “–Path / home / pi / security-cam /” fortæller Twisted at starte serveren i det angivne bibliotek. Hvis du foretager ændringer i scripts i mappen "sikkerhed-cam", skal du genstarte serveren (CTRL + X for at lukke, kør derefter kommandoen igen).
Opret nu webside:
sudo nano index.html
Her er webside-koden:
Gør brug af DIY-sikkerhedskamera
Skift "PI_IP_ADDRESS" (brugt to gange) til den rigtige IP-adresse på din Pi (raspberrypi.local skal også fungere, hvis du kører den nyeste Raspian). Genstart webserveren, og naviger derefter til Pi fra din computer, ikke nødvendigt at specificere porten. Du skal være i stand til at panorere til venstre og højre og se videostrømmen:
Der har du det. Dit helt eget Pan and Tilt Network Camera. Hvis du vil udsætte dit webcam for internettet, skal du huske at overvej farerne 5 farer at overveje, når du peger på dine hjemmets sikkerhedskameraerDet er vigtigt nøje at overveje, hvor du placerer dine kameraer, og hvilke dele af dit hjem, du peger dem mod. At holde tingene sikkert er vigtigt, men det er også at opretholde dit privatliv. Læs mere - så kig ind portvideresendelse Hvad er portvideresendelse & hvordan kan det hjælpe mig? [MakeUseOf Explains]Græder du lidt indeni, når nogen fortæller dig, at der er et problem til portvideresendelse, og det er grunden til, at din skinnende nye app ikke fungerer? Din Xbox lader dig ikke spille spil, dine torrent-downloads nægter ... Læs mere , så din router ved, hvor du skal sende indgående anmodninger. Du kan tilføje en ekstern strømforsyning 3 Raspberry Pi-batteripakker til bærbare projekterEt Raspberry Pi-batteri kan gøre en almindelig Pi til en bærbar computer. Du har brug for en af disse batteriløsninger for at komme i gang. Læs mere og Wi-Fi-adapter til en rigtig bærbar rig.
Har du lavet noget cool med et webcam og en Pi? Fortæl mig det i kommentarerne, jeg ville meget gerne se!
Joe er uddannet inden for datalogi fra University of Lincoln, UK. Han er en professionel softwareudvikler, og når han ikke flyver droner eller skriver musik, kan han ofte findes, når han tager billeder eller producerer videoer.