Διαφήμιση

Μάθετε πώς μπορείτε να φτιάξετε μια κάμερα ασφαλείας με δυνατότητα προβολής και κλίσης από απόσταση με το Raspberry Pi. Αυτό το έργο μπορεί να ολοκληρωθεί ένα πρωί με μόνο τα πιο απλά μέρη. Εδώ είναι το τελικό αποτέλεσμα:

Ο, τι χρειάζεσαι

  • Raspberry Pi 2 ή 3 με κάρτα Micro SD
  • Arduino UNO ή παρόμοια
  • 2 x σέρβο micro ή mini hobby
  • Κάμερα web USB
  • Καλώδια σύνδεσης από αρσενικό σε αρσενικό
  • Καλώδια σύνδεσης για άνδρες έως γυναίκες
  • Διάφοροι δεσμοί με φερμουάρ

Δημιουργία της κάμερας ασφαλείας

Συνδέστε ένα σερβο κόρνα (τα μικρά πλαστικά "σχήματα") σε κάθε σερβο χρησιμοποιώντας τη βίδα που παρέχεται. Το συγκεκριμένο σχήμα δεν έχει σημασία, αν και όσο μεγαλύτερο είναι το καλύτερο. Μην σφίγγετε υπερβολικά τη βίδα.

Τώρα χρησιμοποιήστε φερμουάρ για να συνδέσετε το ένα σερβο στο άλλο σε ορθή γωνία. Ένα από αυτά θα είναι πανοραμικό (αριστερά προς τα δεξιά), ενώ το άλλο θα γείρει (πάνω και κάτω). Δεν έχει σημασία ποιος κάνει τι, μπορεί να προσαρμοστεί στον κώδικα.

Σερβο-υλικό

Τέλος, συνδέστε την κάμερα web σε έναν από τους διακομιστές. Θα μπορούσατε να χρησιμοποιήσετε φερμουάρ για αυτό, αν και η κάμερα web μου ήρθε με ένα κλιπ βιδωμένο στο κάτω μέρος - το αφαίρεσα και χρησιμοποίησα τη βίδα για να το κρατήσω στο κέρατο. Για σταθερότητα, μπορεί να θέλετε να τοποθετήσετε ολόκληρη την εξέδρα σε μια θήκη ή κουτί. Ένα απλό κουτί από χαρτόνι κάνει το τέχνασμα αρκετά ωραία. Θα μπορούσατε να κόψετε μια τακτοποιημένη τετράγωνη τρύπα και να τοποθετήσετε ένα σερβο επίπεδο στην επιφάνεια, ωστόσο θα είναι αρκετό ένα φερμουάρ.

instagram viewer

Pi-Pan-Tilt-Κάμερα

Ένα Word σχετικά με τις κάμερες Web

Δεν δημιουργούνται όλες οι κάμερες USB εξίσου. Συνδέστε την κάμερα web στη θύρα USB του Pi και εκτελέστε αυτήν την εντολή:

lsusb

Αυτή η εντολή εμφανίζει πληροφορίες σχετικά με όλες τις συσκευές USB που είναι συνδεδεμένες στο Pi. Εάν η κάμερα web σας δεν αναφέρεται εδώ, ίσως θελήσετε να δοκιμάσετε έναν τροφοδοτικό διανομέα USB και να επαναλάβετε την εντολή. Εάν η κάμερα web εξακολουθεί να μην αναγνωρίζεται, ίσως χρειαστεί να αγοράσετε ένα συμβατή κάμερα web.

Ρύθμιση σερβο

Ενώ τα σερβο μπορεί να φαίνονται τρομακτικά και περίπλοκα, είναι πραγματικά πολύ απλά να συνδεθούν. Τα Servos λειτουργούν με Pulse Width Modulation (PWM), που είναι ένας τρόπος για τα ψηφιακά συστήματα να μιμούνται αναλογικά σήματα. Τα σήματα PWM είναι ουσιαστικά ένα γρήγορο σήμα ON - OFF. Ένα σήμα που είναι ON ή HIGH περιγράφεται χρησιμοποιώντας τον κύκλο λειτουργίας. Ο κύκλος λειτουργίας εκφράζεται ως ποσοστό και περιγράφει για πόσο διάστημα είναι ενεργοποιημένο το σήμα. Ένα σήμα PWM του κύκλου λειτουργίας 25% θα είναι ON για το 25% του χρόνου και OFF για το υπόλοιπο 75%. Το σήμα δεν είναι ενεργοποιημένο στην αρχή και στη συνέχεια απενεργοποιείται για πάντα, αλλάζει τακτικά σε πολύ σύντομο χρονικό διάστημα.

Οι σερβοί ακούνε αυτούς τους παλμούς και ενεργούν ανάλογα. Η χρήση ενός κύκλου λειτουργίας 100% θα είναι η ίδια με το «κανονικό» 5v και το 0% θα είναι το ίδιο με το έδαφος. Μην ανησυχείτε εάν δεν καταλαβαίνετε πλήρως πώς λειτουργεί το PWM, μπορείτε ακόμα να ελέγξετε τους σερβο (η Extreme Electronics είναι ένα καλό μέρος για να μάθετε περισσότερα).

Υπάρχουν δύο κύριοι τρόποι χρήσης του PWM - υλικού ή λογισμικού. Το PWM υλικού παρέχει συχνά μικρότερο λανθάνοντα χρόνο (πόσο καιρό μεταξύ του σερβο λαμβάνει την εντολή και της μετακίνησης) από το λογισμικό PWM, ωστόσο το Pi έχει μόνο έναν πείρο με δυνατότητα PWM υλικού. Εξωτερικά κυκλώματα είναι διαθέσιμα για την παροχή πολλαπλών καναλιών υλικού PWM, ωστόσο ένα απλό Arduino μπορεί επίσης να χειριστεί την εργασία, καθώς έχουν πολλές καρφίτσες PWM υλικού.

Εδώ είναι το κύκλωμα:

Pi-Servo-Connection

Ελέγξτε ξανά το pinout για το Pi σας, διαφέρουν ελαφρώς μεταξύ των μοντέλων. Πρέπει να καταλάβετε πώς συνδέονται τα servos σας. Οι σερβοί απαιτούν τρία καλώδια για τον έλεγχο τους, ωστόσο τα χρώματα διαφέρουν ελαφρώς:

  • Το κόκκινο είναι θετικό, συνδέστε το με το Pi + 5v
  • Το καφέ ή το μαύρο είναι αρνητικό, συνδέστε το με το GND στο Pi
  • Το πορτοκαλί ή το λευκό είναι σήμα, συνδέστε το με τις καρφίτσες Arduino 9 και 10

Ρύθμιση Arduino

Είστε νέοι στο Arduino; Ξεκινήστε εδώ Ξεκινώντας με το Arduino: Ένας οδηγός για αρχάριουςΤο Arduino είναι μια πλατφόρμα πρωτοτύπων ηλεκτρονικής ανοικτής πηγής που βασίζεται σε ευέλικτο, εύχρηστο υλικό και λογισμικό. Προορίζεται για καλλιτέχνες, σχεδιαστές, χομπίστες και όσους ενδιαφέρονται να δημιουργήσουν διαδραστικά αντικείμενα ή περιβάλλοντα. Διαβάστε περισσότερα .

Μόλις συνδεθούν τα σερβο, ανοίξτε το Arduino IDE στον υπολογιστή σας και ανεβάστε αυτόν τον κωδικό δοκιμής. Μην ξεχάσετε να επιλέξετε τη σωστή πλακέτα και θύρα από το Εργαλεία> Διοικητικό Συμβούλιο και Εργαλεία> Θύρα μενού

#περιλαμβάνω // Εισαγάγετε τη βιβλιοθήκη Servo servoPan, servoTilt; // Δημιουργήστε σερβο αντικείμενα. int servoMin = 20, servoMax = 160; // Ορίστε τα όρια του servo void setup () {// Ρύθμιση servos σε PWM με δυνατότητα καρφίτσες servoPan.attach (9); servoTilt.attach (10); } κενός βρόχος () {για (int i = servoMin; εγώ  servoMin; --i) {// Μετακίνηση σερβο από το μέγιστο στο ελάχιστο servoPan.write (i); servoTilt.write (i); καθυστέρηση (100) // Περιμένετε 100ms} }

Όλο καλά, θα πρέπει να βλέπετε και τα δύο σερβικά να κινούνται αργά μπρος-πίσω. Παρατηρήστε πώς τα "servoMin" και servoMax "ορίζονται ως 20 και 160 μοίρες (αντί για 0 ​​και 180). Αυτό οφείλεται εν μέρει στο ότι αυτά τα φτηνά σερβο δεν μπορούν να μετακινήσουν με ακρίβεια τους 180 βαθμούς, και επίσης λόγω του φυσικού μεγέθους της κάμερας web αποτρέπει τη χρήση ολόκληρου του εύρους. Ίσως χρειαστεί να τα προσαρμόσετε για τη ρύθμισή σας.

Εάν δεν λειτουργούν καθόλου, ελέγξτε σωστά ότι το κύκλωμα έχει συνδεθεί σωστά. Ορισμένες φορές η ποιότητα των αρτοποιείων μπορεί επίσης να ποικίλλει σε ποιότητα, οπότε εξετάστε το ενδεχόμενο να επενδύσετε σε ένα πολύμετρο για επαλήθευση.

Οι σερβοί είναι σχεδόν πολύ ισχυρό για το Arduino για ισχύ, έτσι θα τροφοδοτούνται από το Pi. Η ράγα 5v στο Pi είναι περιορίζεται στα 750mA που παρέχονται σε ολόκληρο το Pi, και το Pi αντλεί περίπου 500mA, αφήνοντας 250mA για το σερβο. Αυτά τα micro servos αντλούν περίπου 80mA, που σημαίνει ότι το Pi πρέπει να μπορεί να χειριστεί δύο από αυτά. Εάν θέλετε να χρησιμοποιήσετε περισσότερα servos ή μεγαλύτερα μοντέλα με υψηλότερη ισχύ, ίσως χρειαστεί να χρησιμοποιήσετε εξωτερικό τροφοδοτικό.

Τώρα ανεβάστε τον ακόλουθο κωδικό στο Arduino. Αυτό θα ακούσει τα εισερχόμενα σειριακά δεδομένα (σειριακά όπως στο Universal Κατα συρροη Λεωφορείο ή USB). Το Pi θα στείλει αυτά τα δεδομένα μέσω USB στο Arduino, αναφέροντάς του πού να μετακινήσει τους διακομιστές.

#περιλαμβάνω // Εισαγάγετε τη βιβλιοθήκη Servo servoPan, servoTilt; // Δημιουργήστε ένα σερβο αντικείμενο. Δεδομένα συμβολοσειράς = ""; // Αποθηκεύστε τις εισερχόμενες εντολές (buffer) άκυρη ρύθμιση () {// Ρύθμιση σερβο σε καρφίτσες με δυνατότητα PWM servoPan.attach (9); servoTilt.attach (10); Serial.begin (9600); // Ξεκινήστε το σειριακό στα 9600 bps (ταχύτητα) } void loop () {while (Serial.available ()> 0) {// Εάν υπάρχουν δεδομένα char singleChar = Serial.read (); // Διαβάστε κάθε χαρακτήρα αν (singleChar == 'P') {// Μετακίνηση pan servo servoPan.write (data.toInt ()); δεδομένα = ""; // Εκκαθάριση buffer} αλλού εάν (singleChar == 'T') {// Μετακίνηση tilt servo servoTilt.write (data.toInt ()); δεδομένα = ""; // Εκκαθάριση buffer} other {data + = singleChar; // Προσθήκη νέων δεδομένων}} }

Μπορείτε να δοκιμάσετε αυτόν τον κωδικό ανοίγοντας τη σειριακή οθόνη (πάνω δεξιά> Σειριακή οθόνη) και αποστολή ορισμένων δεδομένων δοκιμής:

  • 90Ρ
  • 20Τ
  • 100Τ

Παρατηρήστε τη μορφή των εντολών - μια τιμή και μετά ένα γράμμα. Η τιμή είναι η θέση του σερβο, και το γράμμα (με κεφαλαία) καθορίζει το σερβο μετατόπισης ή κλίσης. Δεδομένου ότι αυτά τα δεδομένα μεταδίδονται από το Pi σειριακά, κάθε χαρακτήρας έρχεται μέσω ενός κάθε φορά. Το Arduino πρέπει να τα «αποθηκεύσει» μέχρι να μεταδοθεί ολόκληρη η εντολή. Το τελικό γράμμα δεν καθορίζει μόνο το σέρβο, αλλά επίσης ενημερώνει το Arduino ότι δεν υπάρχουν άλλα δεδομένα σε αυτήν την εντολή.

Τέλος, αποσυνδέστε το Arduino από τον υπολογιστή και συνδέστε το στο Raspberry Pi μέσω της συνηθισμένης σύνδεσης θύρας USB.

Ρύθμιση Pi

Τώρα ήρθε η ώρα να ρυθμίσετε το Pi. Πρώτα, εγκαταστήστε ένα λειτουργικό σύστημα Πώς να εγκαταστήσετε ένα λειτουργικό σύστημα σε ένα Raspberry PiΔείτε πώς μπορείτε να εγκαταστήσετε ένα λειτουργικό σύστημα στο Raspberry Pi και πώς να κλωνοποιήσετε την τέλεια εγκατάσταση για γρήγορη αποκατάσταση καταστροφών. Διαβάστε περισσότερα . Συνδέστε την κάμερα web και το Arduino στο Pi USB.

Ενημέρωση του Pi:

sudo apt-get ενημέρωση. sudo apt-get αναβάθμιση

Εγκατάσταση κίνησης:

sudo apt-get κίνηση εγκατάστασης

Το Motion είναι ένα πρόγραμμα που δημιουργήθηκε για τη διαχείριση της ροής της κάμερας web. Διαχειρίζεται όλα τα βαριά ανύψωσης και μπορεί ακόμη και να πραγματοποιήσει εγγραφή και ανίχνευση κίνησης (δοκιμάστε δημιουργία συστήματος ασφαλείας σύλληψης κίνησης Δημιουργήστε ένα σύστημα ασφαλείας Motion Capture χρησιμοποιώντας ένα Raspberry PiΑπό τα πολλά έργα που μπορείτε να δημιουργήσετε με το Raspberry Pi, ένα από τα πιο ενδιαφέροντα και μόνιμα χρήσιμα είναι το σύστημα ασφαλείας σύλληψης κίνησης. Διαβάστε περισσότερα ). Ανοίξτε το αρχείο διαμόρφωσης Motion:

sudo nano /etc/motion/motion.conf

Αυτό το αρχείο παρέχει πολλές επιλογές για τη διαμόρφωση του Motion. Ρύθμιση ως εξής:

  • daemon on - Εκτελέστε το πρόγραμμα
  • framerate: 100 - Πόσα καρέ ή εικόνες / δευτερόλεπτο για ροή
  • stream_localhost off - Επιτρέψτε την πρόσβαση σε όλο το δίκτυο
  • πλάτος 640 - Πλάτος βίντεο, προσαρμογή για την κάμερα web
  • ύψος 320 - Ύψος βίντεο, προσαρμογή για την κάμερα web
  • stream_port 8081 - Η θύρα για την έξοδο βίντεο
  • output_picture off - Μην αποθηκεύετε εικόνες

Αυτό είναι ένα πολύ μεγάλο αρχείο, οπότε μπορεί να θέλετε να το χρησιμοποιήσετε CTRL + W για αναζήτηση γραμμών. Μόλις τελειώσετε, πατήστε CTRL + X και στη συνέχεια επιβεβαιώστε για αποθήκευση και έξοδο.

Τώρα επεξεργαστείτε ένα ακόμη αρχείο:

sudo nano / etc / default / motion

Ορίστε "start_motion_daemon = yes". Αυτό είναι απαραίτητο για να διασφαλιστεί η λειτουργία του Motion.

Τώρα μάθετε τη διεύθυνση IP σας:

ifconfig

Αυτή η εντολή θα εμφανίσει τις λεπτομέρειες σύνδεσης δικτύου για το Pi. Κοιτάξτε τη δεύτερη γραμμή, inet addr. Ίσως θέλετε να ορίσετε μια στατική διεύθυνση IP (τι είναι μια στατική IP; Τι είναι μια στατική διεύθυνση IP; Εδώ είναι γιατί δεν χρειάζεστε έναΜια στατική διεύθυνση IP είναι αυτή που δεν αλλάζει ποτέ. Οι δυναμικές διευθύνσεις IP αλλάζουν. Εξηγούμε γιατί δεν χρειάζεστε μια στατική διεύθυνση IP. Διαβάστε περισσότερα ), αλλά προς το παρόν σημειώστε αυτόν τον αριθμό.

Τώρα ξεκινήστε το Motion:

έναρξη κίνησης υπηρεσίας sudo

Μπορείτε να σταματήσετε ή να επανεκκινήσετε το Motion αλλάζοντας το "start" σε "stop" ή "επανεκκίνηση".

Μεταβείτε στον υπολογιστή σας και μεταβείτε στο Pi από ένα πρόγραμμα περιήγησης ιστού:

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

Όπου xxx.xxx.x.xx είναι η διεύθυνση IP IP. Η τελεία που ακολουθείται από έναν αριθμό είναι η θύρα που είχε ρυθμιστεί νωρίτερα. Όλο καλά, θα πρέπει να δείτε τη ροή από την κάμερα web! Δοκιμάστε να μετακινηθείτε και δείτε πώς φαίνονται τα πράγματα. Ίσως χρειαστεί να προσαρμόσετε τις ρυθμίσεις φωτεινότητας και αντίθεσης στο αρχείο διαμόρφωσης. Ίσως χρειαστεί να εστιάσετε την κάμερα web - ορισμένα μοντέλα έχουν ένα μικρό δακτύλιο εστίασης γύρω από το φακό. Γυρίστε το μέχρι η εικόνα να είναι η πιο ευκρινή.

Επιστρέψτε στο Pi, δημιουργήστε ένα φάκελο και μεταβείτε σε αυτόν:

mkdir security-cam. cd ασφαλείας-κάμερα /

Τώρα εγκαταστήστε το Twisted:

sudo apt-get εγκατάσταση python-twisted

Το Twisted είναι ένας διακομιστής ιστού γραμμένος στην Python, ο οποίος θα ακούσει εντολές και θα ενεργήσει ανάλογα.

Μόλις εγκατασταθεί, δημιουργήστε ένα σενάριο Python για να εκτελέσετε εντολές (μετακινήστε τους διακομιστές).

sudo nano servos.rpy

Παρατηρήστε πώς η επέκταση αρχείου είναι ".rpy" αντί για "py". Εδώ είναι ο κωδικός:

# Εισαγάγετε απαραίτητα αρχεία. εισαγωγή σειράς. από twisted.web.resource import Resource # Setup Arduino με σωστή ταχύτητα. δοκιμάστε: arduino = σειριακό. Σειριακό ('/ dev / ttyUSB0', 9600) εκτός από: arduino = σειριακό. Serial ('/ dev / ttyUSB1', 9600) class MoveServo (Resource): isLeaf = True def render_GET (self, request): δοκιμάστε: # Αποστολή τιμής σειριακό στο Arduino arduino.write (request.args ['value'] [0]) επιστροφή 'Επιτυχία' εκτός: επιστροφή 'Failure' resource = MoveServo ()

Τώρα ξεκινήστε τον διακομιστή ιστού:

sudo twistd -n web -p 80 - διαδρομή / σπίτι / pi / ασφάλεια-κάμερα /

Ας το σπάσουμε - "-p 80" καθορίζει τη θύρα (80). Αυτή είναι η προεπιλεγμένη θύρα για ιστοσελίδες. Το "–path / home / pi / security-cam /" λέει στο Twisted να ξεκινήσει ο διακομιστής στον καθορισμένο κατάλογο. Εάν κάνετε οποιεσδήποτε αλλαγές στα σενάρια μέσα στο φάκελο "security-cam" θα χρειαστεί να κάνετε επανεκκίνηση του διακομιστή (CTRL + X για να κλείσετε και, στη συνέχεια, εκτελέστε ξανά την εντολή).

Τώρα δημιουργήστε την ιστοσελίδα:

sudo nano index.html

Ακολουθεί ο κωδικός της ιστοσελίδας:

Χρησιμοποιήστε την κάμερα ασφαλείας DIY


Αλλαγή "PI_IP_ADDRESS" (χρησιμοποιείται δύο φορές) στην πραγματική διεύθυνση IP του Pi (raspberrypi. τοπικό θα πρέπει επίσης να λειτουργεί αν χρησιμοποιείτε το πιο πρόσφατο Raspian). Επανεκκινήστε τον διακομιστή ιστού και, στη συνέχεια, μεταβείτε στο Pi από τον υπολογιστή σας, χωρίς να χρειάζεται να καθορίσετε τη θύρα. Θα πρέπει να μπορείτε να μετακινηθείτε αριστερά και δεξιά και να δείτε τη ροή βίντεο:

Pi-Pan-Tilt-Camera-Web-View

Εκεί το έχεις. Η δική σας κάμερα Pan και Tilt Network. Εάν θέλετε να εκθέσετε την κάμερα web σας στο Διαδίκτυο, θυμηθείτε σκεφτείτε τους κινδύνους 5 Κίνδυνοι που πρέπει να λάβετε υπόψη όταν δείχνετε τις κάμερες ασφαλείας στο σπίτι σαςΕίναι σημαντικό να εξετάσετε προσεκτικά πού τοποθετείτε τις κάμερές σας, και σε ποια μέρη του σπιτιού σας κατευθύνεστε. Το να διατηρείτε τα πράγματα ασφαλή είναι σημαντικό, αλλά έτσι διατηρείτε το απόρρητό σας. Διαβάστε περισσότερα - τότε κοιτάξτε προώθηση λιμένων Τι είναι το Port Forwarding & Πώς μπορεί να με βοηθήσει; [MakeUseOf Εξηγεί]Κλαίτε λίγο μέσα όταν κάποιος σας λέει ότι υπάρχει πρόβλημα προώθησης θύρας και γι 'αυτό η λαμπερή νέα σας εφαρμογή δεν θα λειτουργήσει; Το Xbox σας δεν θα σας αφήσει να παίξετε παιχνίδια, οι λήψεις torrent απορρίπτονται ... Διαβάστε περισσότερα , ώστε ο δρομολογητής σας να γνωρίζει πού να στέλνει εισερχόμενα αιτήματα. Θα μπορούσατε να προσθέσετε εξωτερική τροφοδοσία 3 πακέτα μπαταριών Raspberry Pi για φορητά έργαΜια μπαταρία Raspberry Pi μπορεί να κάνει ένα κανονικό Pi σε φορητό υπολογιστή. Για να ξεκινήσετε, θα χρειαστείτε μία από αυτές τις λύσεις μπαταρίας. Διαβάστε περισσότερα και προσαρμογέα Wi-Fi για μια πραγματικά φορητή εξέδρα.

Έχετε κάνει κάτι δροσερό με μια κάμερα web και ένα Pi; Επιτρέψτε μου να ξέρω στα σχόλια, θα ήθελα πολύ να δω!

Ο Joe είναι απόφοιτος της Επιστήμης Υπολογιστών από το Πανεπιστήμιο του Λίνκολν του Ηνωμένου Βασιλείου. Είναι επαγγελματίας προγραμματιστής λογισμικού και όταν δεν πετάει drone ή γράφει μουσική, μπορεί συχνά να βρεθεί να τραβά φωτογραφίες ή να δημιουργεί βίντεο.