DIY Pan och Tilt Network Security Cam med hallon Pi
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 (den lilla plasten “former”) 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.
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.
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 densamma som “regelbunden” 5v och 0% skulle vara samma 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:
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örjarhandbok 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
#inkludera // Importera biblioteket Servo servoPan, servoTilt; // Skapa servobjekt int servoMin = 20, servoMax = 160; // Definiera gränser för servos tomgångsinställning () // Inställnings servos på PWM-stifttappar servoPan.attach (9); servoTilt.attach (10); tomrumsling () för (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) // Flytta servos från max till minimum servoPan.write (i); servoTilt.write (i); fördröjning (100); // Vänta 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.
Servos är nästan för kraftfull 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 Serie Buss eller USB). Pi kommer att skicka dessa data via USB till Arduino, och berätta var de ska flytta servosna.
#inkludera // Importera biblioteket Servo servoPan, servoTilt; // Skapa servobjekt Stringdata = ""; // Spara inkommande kommandon (buffert) tomgångsinställning () // Inställnings servos på PWM-stifttappar servoPan.attach (9); servoTilt.attach (10); Serial.begin (9600); // Börja seriell vid 9600 bps (hastighet) tomrumsling () while Serial.available ()> 0) // Om det finns data char singleChar = Serial.read (); // Läs varje tecken om (singleChar == 'P') // Flytta pan servo servoPan.write (data.toInt ()); data = ""; // Clear buffer annars om (singleChar == 'T') // Flytta tilt servo servoTilt.write (data.toInt ()); data = ""; // Clear buffer else data + = singleChar; // Lägg till nya data
Du kan testa den här koden genom att öppna seriell bildskärm (högst upp till höger> Serial Monitor) 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-få uppdatering sudo apt-get uppgradering
Installera rörelse:
sudo apt-get installera rörelse
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 att söka efter linjer. När du är klar trycker du på CTRL + X och bekräfta sedan för att spara och avsluta.
Redigera nu en fil:
sudo nano / etc / default / motion
Uppsättning “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å den 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 om Motion genom att ändra “Start” till “sluta” eller “omstart”.
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 säkerhet-cam cd säkerhet-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 skapar du 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:
# Importera nödvändiga filer importera seriell från twisted.web.resource import Resurs # Setup Arduino med rätt hastighets försök: arduino = serial.Serial ('/ dev / ttyUSB0', 9600) förutom: arduino = serial.Serial ('/ dev / ttyUSB1 '9600) klass MoveServo (Resource): isLeaf = Sann def render_GET (själv, förfrågan): försök: # Skicka värde över seriell till Arduino arduino.write (request.args [' value '] [0]) returnera "utom: returnera" Failure "resurs = MoveServo ()
Starta nu webbserveren:
sudo twistd -n web-p 80 - path / home / pi / security-cam /
Låt oss bryta ner det - “-s. 80” anger porten (80). Detta är standardporten för webbsidor. “-sökväg / hem / pi / säkerhet-cam /” berättar Twisted för att starta servern i den angivna katalogen. Om du gör några ändringar i skriptna inuti “säkerhet-cam” mappen 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:
Använd av DIY Security Camera
Byta “PI_IP_ADDRESS” (används två gånger) till din reella IP-adress (raspberrypi.local bör också fungera om du kör den senaste Raspian). Starta om webservicen och navigera sedan till Pi från din dator, du behöver inte ange porten. Du ska kunna panorera åt vänster och höger och se videoströmmen:
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!
Utforska mer om: Hemsäkerhet, Raspberry Pi, Webkamera.