Lær hvordan du laver et fjernsyns pan-og vippekamera med en Raspberry Pi. Dette projekt kan afsluttes om morgenen med kun de enkleste dele. Her er slutresultatet:
Hvad du har brug for
- Hindbær Pi 2 eller 3 med Micro SD-kort
- Arduino UNO eller lignende
- 2 x mikro eller mini hobby servos
- USB webcam
- Mand til mandlige hookup ledninger
- Mand til kvindelig hookup ledninger
- Assorterede lynlås
Opbygning af sikkerhedskameraet
Fastgør et servohorn (de små plastiske "former") til hver servo ved hjælp af den medfølgende skrue. Den særlige form gør ikke noget, selvom jo større jo bedre. Stram ikke skruen over.
Brug nu lynlister til at fastgøre en servo til den anden i en ret vinkel. En af disse vil være pan (venstre mod højre), mens den anden vil vippe (op og ned). Det er ligegyldigt, hvem der gør hvad, det kan justeres i koden.
Tilslut din webcam til en af servoerne. Du kunne bruge zip-bånd til dette, selv om mit webcam kom med et klip skruet til bunden - jeg fjernede dette og brugte skruen til at holde den til hornet. For stabilitet vil du måske montere hele riggen på en sag eller et kasse. En simpel papkasse gør tricket ret pænt. Du kan skære et pænt firkantet hul og montere en servo flush til overfladen, men en lynlås vil være tilstrækkelig.
Et ord om webkameraer
Ikke alle USB-webkameraer oprettes ens. Slut dit webcam til USB-porten på din Pi og kør denne kommando:
lsusb
Denne kommando viser oplysninger om alle USB-enheder, der er forbundet til Pi. Hvis dit webcam ikke er angivet her, kan du prøve et powered USB hub og gentage kommandoen. Hvis webkameraet stadig ikke er genkendt, skal du muligvis købe et kompatibelt webcam.
Servo Setup
Mens servoer kan virke skræmmende og komplekse, er de virkelig ganske enkle at forbinde. Servoer opererer på Pulse Width Modulation (PWM), som er en måde for digitale systemer til 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 brug af arbejdscyklus. Taskcyklus udtrykkes som procent, og beskriver, hvor længe signalet er tændt. Et PWM signal på 25% arbejdscyklus vil være ON for 25% af tiden og OFF for de resterende 75%. Signalet er ikke TIL i starten og derefter OFF for evigt, det pulses regelmæssigt i meget kort tid.
Servoer lytter til disse impulser og handler i overensstemmelse hermed. Brug af en arbejdscyklus på 100% ville være den samme som "regulær" 5v, og 0% ville være den samme som jorden. Bare rolig, hvis du ikke forstår fuldt ud, hvordan PWM fungerer, kan du stadig styre servos (Extreme Electronics er et godt sted at lære mere).
Der er to hovedmåder at bruge PWM - hardware eller software. Hardware PWM giver ofte lavere latency (hvor længe mellem servo modtager kommandoen og bevæger sig) end software PWM, men Pi har kun en hardware PWM-stift. Eksterne kredsløb er tilgængelige for at levere flere kanaler af hardware PWM, men en enkel Arduino kan også håndtere opgaven, da de har flere hardware PWM pins.
Her er kredsløbet:
Dobbeltkig pinout til din Pi, de varierer lidt mellem modeller. Du skal finde ud af, hvordan dine servoer er tilsluttet. Servoer kræver tre ledninger til at styre dem, men farverne varierer lidt:
- Rød er positiv, forbind dette til Pi + 5v
- Brun eller sort er negativ, forbind dette til GND på Pi
- Orange eller hvid er signal, forbind dette til Arduino pins 9 og 10
Arduino Setup
Ny til Arduino? Kom i gang her Kom i gang med Arduino: En nybegyndervejledning Kom godt i gang med Arduino: En nybegyndervejledning Arduino er en open source elektronik prototypeplanlægning baseret på fleksibel, brugervenlig hardware og software. Det er beregnet til kunstnere, designere, hobbyister og alle interesserede 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 korrekte bord og porten fra Værktøjer> Bestyr og Værktøjer> Portmenuer
#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 } }
Alt er godt, du bør 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, fordi disse billige servoer ikke er i stand til at bevæge sig helt 180 grader, og også på grund af den fysiske størrelse af webkameraet forhindres det fulde interval at blive brugt. Det kan være nødvendigt at justere disse til din opsætning.
Hvis de slet ikke fungerer, kontrolleres kredsløbet korrekt. Breadboards kan sommetider også variere i kvalitet, så overveje at investere i et multimeter for at verificere.
Servoerne er næsten for kraftige til Arduino til magt, så de bliver drevet af Pi. 5v-skinnen på Pi er begrænset til 750mA til hele Pi, og Pi trækker ca. 500mA, hvilket efterlader 250mA for servoerne. Disse mikro servoer tegner ca. 80mA, hvilket betyder at Pi skal kunne håndtere to af dem. Hvis du ønsker at bruge flere servoer eller større modeller med højere strøm, skal du muligvis bruge en ekstern strømforsyning.
Upload nu følgende kode til Arduino. Dette vil lytte til indgående serielle data (seriel som i Universal Serial Bus eller USB). Pi'en sender disse data over USB til Arduino og fortæller hvor de skal bevæge servoerne.
#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 } } }
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 af kommandoerne - en værdi og derefter et bogstav. Værdien er servoens position, og brevet (i hætter) angiver pan- eller vippeservo. Da disse data overføres fra Pi serielt, kommer hvert tegn gennem en ad gangen. Arduino er nødt til at "gemme" disse, indtil hele kommandoen er blevet overført. Det endelige brev angiver ikke kun servoen, det lader også Arduino vide, at der ikke er flere data i denne kommando.
Tilslut derefter din Arduino fra computeren, og sæt den i Raspberry Pi via den sædvanlige USB-portforbindelse .
Pi Setup
Nu er det tid til at konfigurere Pi. Først skal du installere et operativsystem Sådan installeres et operativsystem til din Raspberry Pi Sådan installeres et operativsystem til din Raspberry Pi Sådan får du et nyt OS installeret og kører på din Pi - og hvordan man kloner dit perfekte setup til hurtig katastrofe genopretning. Læs mere . Slut webcam og Arduino til Pi USB.
Opdater Pi:
sudo apt-get update sudo apt-get upgrade
Installer motion:
sudo apt-get install motion
Motion er et program til håndtering af streaming af webcam. Det håndterer hele den tunge løftning og kan endda udføre optagelses- og bevægelsesdetektering (prøv at opbygge et bevægelsesopsamlingssikkerhedssystem Byg et Motion Capture Security System ved hjælp af en Raspberry Pi Byg et Motion Capture Security System Brug en Raspberry Pi Af de mange projekter, du kan Bygg med Raspberry Pi, en af de mest interessante og permanent nyttige er motion capture sikkerhedssystemet. Læs mere). Åbn Motion-konfigurationsfilen:
sudo nano /etc/motion/motion.conf
Denne fil giver mange muligheder for at konfigurere Motion. Opsætning som følger:
- daemon på - Kør programmet
- framerate: 100 - Hvor mange rammer eller billeder / sekunder at streame
- stream_localhost off - Tillad adgang på tværs af netværket
- bredde 640 - Bredde af video, juster til dit webcam
- højde 320 - Højde på video, juster til dit webcam
- stream_port 8081 - Porten til output video til
- output_picture off - Gem ikke billeder
Dette er en ganske stor fil, så du vil måske bruge CTRL + W til at søge efter linjer. Når du er færdig, tryk CTRL + X og bekræft derefter for at gemme og afslutte.
Rediger nu en fil:
sudo nano /etc/default/motion
Indstil "start_motion_daemon = yes". Dette er nødvendigt for at sikre Motion kører.
Find ud af din IP-adresse:
ifconfig
Denne kommando viser netværksforbindelsesoplysningerne for Pi. Se på den anden linje, inet addr . Du kan muligvis indstille en statisk IP-adresse (hvad er en statisk IP? Hvad er en statisk IP-adresse, hvordan får jeg en og dens fordele / ulemper Hvad er en statisk IP-adresse, hvordan får jeg en og dens fordele / ulemper I hjemmenetværk er IP-adresser normalt ikke faste, men de falder inden for bestemte områder. En statisk IP-adresse ændres ikke. Hvad er fordelene ved dette, og hvorfor vil du have en? Læs mere), men for nu noter dette nummer.
Start nu Motion:
sudo service motion start
Du kan stoppe eller genstarte Motion 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. Kolonet efterfulgt af et tal er porten, der blev installeret tidligere. Alt er godt, du skal se strømmen fra dit webcam! Prøv at flytte rundt og se, hvordan tingene ser ud. Det kan være nødvendigt at justere lysstyrke og kontrastindstillinger i config-filen. Du skal muligvis fokusere på webkameraet - nogle modeller har en lille fokusring rundt om objektivet. Drej dette, indtil billedet er den skarpeste.
Tilbage på Pi'en, lav en mappe og navigere ind i den:
mkdir security-cam cd security-cam/
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 du er installeret, skal du oprette et Python-script til at udføre kommandoer (flyt servoerne).
sudo nano servos.rpy
Bemærk, hvordan filtypen er ".rpy" i stedet for "py". Her er koden:
# 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 webserveren:
sudo twistd -n web -p 80 --path /home/pi/security-cam/
Lad os bryde det ned - "-p 80" angiver porten (80). Dette er standardporten for websider. "-path / home / pi / security-cam /" fortæller Twisted for at starte serveren i den angivne mappe. Hvis du foretager ændringer i scriptsne i mappen "sikkerhedskamera", skal du genstarte serveren ( CTRL + X for at lukke, så køre kommandoen igen).
Opret nu websiden:
sudo nano index.html
Her er websiden kode:
Make Use Of DIY Security Camera #container { /* center the content */ margin: 0 auto; text-align: center; } Der har du det. Din helt egen Pan and Tilt Network Camera. Hvis du vil udsætte dit webcam på internettet, skal du huske at overveje farerne 5 Farer, der skal overvejes, når du peger på dit hjem sikkerhedskameraer 5 Farer, der skal overvejes, når du peger på dit hjemmekamera. Det er vigtigt at overveje, hvor du placerer kameraerne, og hvad dele af dit hjem du peger på dem på. At holde tingene sikre er vigtigt, men det er også at bevare dit privatliv. Læs mere - så kig i port forwarding Hvad er port videresending og hvordan kan det hjælpe mig? [MakeUseOf Forklarer] Hvad er port videresending & Hvordan kan det hjælpe mig? [MakeUseOf Forklarer] græder du lidt inde, når nogen fortæller dig, at der er et port forwarding problem, og derfor vil din skinnende nye app ikke virke? Din Xbox vil ikke lade dig spille spil, dine torrent downloads nægter ... Læs mere, så din router ved, hvor du skal sende indgående anmodninger. Kan du tilføje en ekstern strømforsyning Pi til Go? 3 måder at drive en hindbær pi til bærbare projekter Pi at gå? 3 måder at drive en Raspberry Pi til bærbare projekter Vil du få din Raspberry Pi ud af huset og involveret i nogle mobile projekter? Du skal bruge et batteri af en slags - men der er flere muligheder til rådighed. Læs mere og Wi-Fi adapter til en rigtig bærbar rig.
Har du lavet noget cool med et webcam og en Pi? Lad mig vide i kommentarerne, jeg vil gerne se!