DIY Pan och Tilt Network Security Cam med hallon Pi

Lär dig hur du gör en fjärrkontrollbar pan-och tiltkamera med en Raspberry Pi. Projektet kan slutföras på morgonen med endast de enklaste delarna.

Lär dig hur du gör en fjärrkontrollbar pan-och tiltkamera med en Raspberry Pi.  Projektet kan slutföras på morgonen med endast de enklaste delarna.
Annons

Lär dig hur man gör en fjärrkontrollbar pan-och tiltkamera med en Raspberry Pi. Projektet kan slutföras på morgonen med endast de enklaste delarna. Här är slutresultatet:

Vad du behöver

  • Raspberry Pi 2 eller 3 med Micro SD-kort
  • Arduino UNO eller liknande
  • 2 x mikro eller mini hobby servos
  • USB-webbkamera
  • Manlig till manlig kopplingstråd
  • Hane till kvinnliga kopplingstrådar
  • Diverse zip-band

Bygga säkerhetskameran

Fäst ett servohorn (de lilla plastformerna) till varje servo med hjälp av den medföljande skruven. Den speciella formen spelar ingen roll, trots att ju större desto bättre. Dra inte åt skruven för hårt.

Använd nu slipsband för att fästa en servo mot den andra i rätt vinkel. En av dessa kommer att vara pan (vänster mot höger), medan den andra kommer att luta (upp och ner). Det spelar ingen roll vilken som gör vad, det kan justeras i koden.

Servo-maskinvara

Slutligen bifoga din webbkamera till en av servona. Du kan använda zip-band för detta, även om min webbkamera kom med ett klämskruv i botten - jag tog bort det här och använde skruven för att hålla den till hornet. För stabilitet, kanske du vill montera hela riggen till ett fodral eller en låda. En enkel kartong gör tricket ganska snyggt. Du kan klippa ett snyggt firkantigt hål och montera en servospolning på ytan, men en dragkedja är tillräcklig.

Pi-pan-tilt-kamera

Ett ord om webbkameror

Inte alla USB-webbkameror skapas lika. Anslut din webbkamera till USB-porten på din Pi och kör det här kommandot:

lsusb 

Detta kommando visar information om alla USB-enheter anslutna till Pi. Om din webbkamera inte är listad här kanske du vill försöka driva en USB-hubb och upprepa kommandot. Om webbkameran fortfarande inte är känd kan du behöva köpa en kompatibel webbkamera.

Servo Setup

Även servos kan verka skrämmande och komplexa, är de verkligen ganska enkla att ansluta. Servos fungerar på pulsbreddsmodulering (PWM), vilket är ett sätt för digitala system att imitera analoga signaler. PWM-signaler är i huvudsak en snabb ON-OFF-signal. En signal som är ON eller HIGH beskrivs med användning av arbetscykeln. Driftscykeln uttrycks i procent och beskriver hur länge signalen är PÅ för. En PWM-signal på 25% arbetscykel kommer att vara PÅ för 25% av tiden och OFF för resterande 75%. Signalen är inte PÅ i början och sedan AV för alltid, den pulseras regelbundet under en mycket kort tidsperiod.

Servos lyssnar på dessa pulser och agerar därefter. Att använda en arbetscykel på 100% skulle vara samma som "vanlig" 5v och 0% skulle vara densamma som marken. Oroa dig inte om du inte förstår helt hur PWM fungerar, kan du fortfarande kontrollera servos (Extreme Electronics är ett bra ställe att lära dig mer).

Det finns två huvudsakliga sätt att använda PWM - hårdvara eller programvara. Hårdvara PWM ger ofta lägre latens (hur länge servo tar emot kommandot och flyttar) än mjukvaru PWM, men Pi har bara en PWM-hård hårdvara. Externa kretsar är tillgängliga för att tillhandahålla flera kanaler av hårdvaru PWM, men en enkel Arduino kan också hantera uppgiften, eftersom de har flera hårdvaru PWM-stiften.

Här är kretsen:

Pi-Servo-anslutning

Dubbelkontrollera pinouten för din Pi, de varierar något mellan modeller. Du måste ta reda på hur din servo är ansluten. Servos kräver tre ledningar för att styra dem, men färgerna varierar något:

  • Röd är positiv, anslut den till Pi + 5v
  • Brun eller svart är negativ, anslut detta till GND på Pi
  • Orange eller vit är signal, anslut detta till Arduino stift 9 och 10

Arduino Setup

Nytt till Arduino? Kom igång här Komma igång med Arduino: En nybörjarguide Komma igång med Arduino: En nybörjarhandbok Arduino är en öppen prototypplattform för öppen källkod baserad på flexibel, lättanvänd maskinvara och programvara. Den är avsedd för artister, designers, hobbyister och alla som är intresserade av att skapa interaktiva objekt eller miljöer. Läs mer .

När servona är anslutna, öppna Arduino IDE på datorn och ladda upp testkoden. Glöm inte att välja rätt kartong och port från Verktyg> Styrelse och Verktyg> Port menyer

 #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 } } 

Allt är bra, du borde se båda servona långsamt röra sig fram och tillbaka. Lägg märke till hur "servoMin" och servoMax "definieras som 20 och 160 grader (istället för 0 och 180). Det beror delvis på att dessa billiga servos inte kan röra sig fullständigt 180 grader, och på grund av att webbkamerans fysiska storlek förhindrar att hela sortimentet används. Du kan behöva justera dessa för din inställning.

Om de inte fungerar alls kontrolleras kretsen korrekt. Breadboards kan ibland också variera i kvalitet, så överväg att investera i en multimeter för att verifiera.

Servosna är nästan för kraftfulla för Arduino till makten, så de kommer att drivas av Pi. 5v-skenan på Pi är begränsad till 750mA försedd med hela Pi, och Pi drar cirka 500mA och lämnar 250mA för servo. Dessa mikro servrar ritar ungefär 80mA, vilket betyder att Pi ska kunna hantera två av dem. Om du vill använda fler servos eller större, högre drivna modeller kan du behöva använda en extern strömförsörjning.

Ladda nu upp följande kod till Arduino. Detta lyssnar på inkommande seriell data (seriell som i Universal Serial Bus eller USB). Pi kommer att skicka dessa data via USB till Arduino, och berätta var de ska flytta servosna.

 #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 testa denna kod genom att öppna seriell bildskärm ( högra höger> Seriell bildskärm ) och skicka några testdata:

  • 90P
  • 0P
  • 20T
  • 100T

Notera formatet på kommandona - ett värde och sedan ett brev. Värdet är servoens läge, och bokstaven (i kepsar) anger panelen eller vippservotorn. Eftersom denna data sänds från Pi seriellt kommer varje tecken igenom en åt gången. Arduino måste "lagra" dessa tills hela kommandot har överförts. Slutboken anger inte bara servot, det låter även Arduino veta att det inte finns några data i det här kommandot.

Slutligen koppla din Arduino från datorn och anslut den till Raspberry Pi via den vanliga USB-portanslutningen .

Pi Setup

Nu är det dags att ställa in Pi. Installera först ett operativsystem Så här installerar du ett operativsystem till din Raspberry Pi Så här installerar du ett operativsystem till din Raspberry Pi Så här får du ett nytt operativsystem installerat och kört på din Pi - och hur man klonar din perfekta installation för snabb katastrof återhämtning. Läs mer . Anslut webbkameran och Arduino till Pi USB.

Uppdatera Pi:

 sudo apt-get update sudo apt-get upgrade 

Installera rörelse:

 sudo apt-get install motion 

Motion är ett program för att hantera webbkamerastreaming. Den hanterar all tung lyftning och kan även utföra inspelning och rörelsedetektering (försök att bygga ett säkerhetsupptagningssäkerhetssystem. Bygg ett rörelsegångssäkerhetssystem med hjälp av en Raspberry Pi Bygg ett rörelsegångssäkerhetssystem med hjälp av en Raspberry Pi Av de många projekt som du kan bygga med Raspberry Pi, en av de mest intressanta och varaktigt användbara är rörelsebildningssäkerhetssystemet. Läs mer). Öppna Motion-konfigurationsfilen:

 sudo nano /etc/motion/motion.conf 

Den här filen innehåller många alternativ för att konfigurera Motion. Konfigurera enligt följande:

  • daemon på - Kör programmet
  • framerate: 100 - Hur många bilder eller bilder / sekund att strömma
  • stream_localhost av - Tillåt åtkomst över hela nätverket
  • bredd 640 - Bredd av video, justera för din webbkamera
  • höjd 320 - Videohöjd, justera för din webbkamera
  • stream_port 8081 - Porten för att mata ut video till
  • output_picture av - Spara inga bilder

Det här är en ganska stor fil, så du kanske vill använda CTRL + W för att söka efter linjer. När du är klar trycker du på CTRL + X och bekräftar sedan för att spara och avsluta.

Redigera nu en fil:

 sudo nano /etc/default/motion 

Ange "start_motion_daemon = yes". Detta behövs för att säkerställa rörelsekörningar.

Ta reda på din IP-adress:

 ifconfig 

Detta kommando visar nätverksanslutningsinformationen för Pi. Titta på andra raden, inet addr . Du kanske vill ställa in en statisk IP-adress (vad är en statisk IP? Vad är en statisk IP-adress, hur får jag en och dess fördelar / nackdelar Vad är en statisk IP-adress, hur får jag en och dess fördelar / nackdelar I hemnätverk är IP-adresser vanligtvis inte fasta, men de faller inom specifika områden. En statisk IP-adress ändras inte. Vilka är fördelarna med detta och varför vill du ha en? Läs mer), men för nu notera detta nummer.

Starta nu Motion:

 sudo service motion start 

Du kan stoppa eller starta Motion genom att ändra "start" till "stop" eller "starta om".

Byt till din dator och navigera till Pi från en webbläsare:

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

Var xxx.xxx.x.xx är Pi IP-adressen. Kolonet följt av ett nummer är den port som installerades tidigare. Allt är bra, du borde se strömmen från din webbkamera! Försök flytta runt och se hur sakerna ser ut. Du kan behöva justera ljusstyrka och kontrastinställningar i config-filen. Du kan behöva fokusera på webbkameran - vissa modeller har en liten fokusring runt linsen. Vrid detta tills bilden är skarpast.

Tillbaka på Pi, skapa en mapp och navigera in i den:

 mkdir security-cam cd security-cam/ 

Installera nu Twisted:

 sudo apt-get install python-twisted 

Twisted är en webbserver skrivet i Python, som kommer att lyssna på kommandon och sedan agera i enlighet därmed.

När du har installerat, skapa ett Python-skript för att utföra kommandon (flytta servona).

 sudo nano servos.rpy 

Lägg märke till hur filtillägget är ".rpy" istället för "py". Här är 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() 

Starta nu webbserveren:

 sudo twistd -n web -p 80 --path /home/pi/security-cam/ 

Låt oss bryta ner det - "-p 80" anger porten (80). Detta är standardporten för webbsidor. "-väg / hem / pi / security-cam /" berättar Twisted för att starta servern i den angivna katalogen. Om du gör några ändringar i skriptna i mappen "säkerhetskamera" måste du starta om servern ( CTRL + X för att stänga, kör sedan kommandot igen).

Skapa nu webbsidan:

 sudo nano index.html 

Här är webbsidokoden:

 Make Use Of DIY Security Camera #container { /* center the content */ margin: 0 auto; text-align: center; } Pi-pan-tilt-kamera-Web-View

Där har du det. Din egen Pan and Tilt Network-kamera. Om du vill avslöja din webbkamera på internet, kom ihåg att ta itu med farorna 5 Faror att tänka på när du pekar på dina hemkamera 5 Risker att tänka på när du pekar på dina hemkamera Det är viktigt att noga överväga var du placerar kamerorna och vad delar av ditt hem du pekar på på. Att hålla saker säkra är viktigt, men det är också så att du behåller din integritet. Läs mer - kolla sedan på port vidarebefordran Vad är port vidarebefordran och hur kan det hjälpa mig? [MakeUseOf Explains] Vad är port vidarebefordran och hur kan det hjälpa mig? [MakeUseOf Explains] Skriker du lite inuti när någon säger att det finns ett portproblem och det är därför att din glänsande nya app inte fungerar? Din Xbox låter dig inte spela spel, dina torrentladdningar vägrar ... Läs mer, så din router vet var du ska skicka inkommande förfrågningar. Kan du lägga till en extern strömförsörjning Pi till Go? 3 sätt att driva en hallon Pi för bärbara projekt Pi att gå? 3 sätt att driva en Raspberry Pi för bärbara projekt Vill du få din Raspberry Pi ut ur huset och involverade i vissa mobila projekt? Du behöver ett batteri av något slag - men det finns flera alternativ tillgängliga. Läs mer och Wi-Fi-adapter för en riktigt bärbar rigg.

Har du gjort något coolt med en webbkamera och en Pi? Låt mig veta i kommentarerna, jag skulle gärna se!

In this article