Σύνδεση αναλογικής κάμερας σε raspberry pi. Διακομιστής επιτήρησης βίντεο με χρήση Raspberry Pi. Δημιουργία timelapse βίντεο

Ας δούμε τις μεθόδους για τη σωστή σύνδεση της κάμερας με το Raspberry Pi και την εργασία μαζί του μέσω του παραθύρου του τερματικού και τη χρήση της γλώσσας προγραμματισμού Python.
Σχετικά υλικά:
Όταν συνδέετε την κάμερα στο Raspberry, θυμηθείτε τα εξής:
  • Η κάμερα φοβάται τον στατικό ηλεκτρισμό· συνιστάται να την αγγίζετε κατά τη λειτουργία μέσω αντιστατικού υλικού
  • η κάμερα καταναλώνει 250 mA - όταν χρησιμοποιείτε ένα μέτριο τροφοδοτικό Malina, η σύνδεση της κάμερας μπορεί να προκαλέσει έλλειψη ρεύματος όταν η κάμερα λειτουργεί ενεργά
  • δεν υπάρχει μικρόφωνο στην κάμερα
  • το επάνω μέρος της κάμερας βρίσκεται στην πλευρά απέναντι από την έξοδο του καλωδίου, αλλά υπάρχει μια ειδική εντολή για να αντανακλά την εικόνα κατακόρυφα - περισσότερα για αυτό παρακάτω.

Σύνδεση

Συνιστάται να συνδέσετε την κάμερα σε ένα απενεργοποιημένο Raspberry. Μπορείτε να απενεργοποιήσετε γρήγορα το Raspberry με την εντολή
τερματισμός λειτουργίας sudo τώρα
Ο συνδετήρας αλυσίδας CSI βρίσκεται δίπλα στο HDMI: Το πλεονέκτημα της σύνδεσης της κάμερας μέσω αυτής της υποδοχής, σε αντίθεση με το USB, είναι ότι ανακουφίζει τον επεξεργαστή κατά τη μεταφορά δεδομένων μέσω της διεπαφής CSI
Για ευκολία στερέωσης κάμερας υπάρχει έτοιμες λύσεις, για παράδειγμα - Ακρυλική βάση.
Η διεπαφή της κάμερας πρέπει να είναι ενεργοποιημένη στις ρυθμίσεις Raspberry:
Μετά την ενεργοποίηση της κάμερας (εάν απαιτείται), η Malina πρέπει να επανεκκινηθεί: επανεκκίνηση sudo τώρα
Για να εργαστείτε με την κάμερα, το Raspbian έχει ήδη προεγκατεστημένα τα απαραίτητα βοηθητικά προγράμματα και προγράμματα οδήγησης. Ας ενημερώσουμε τα πακέτα για να χρησιμοποιήσουμε τις πιο πρόσφατες εκδόσεις: sudo apt-get update -y sudo apt-get dist-upgrade -y Αν όλα γίνονται σωστά, ας προσπαθήσουμε να πάρουμε ένα δοκιμαστικό πλαίσιο από την κάμερα - δημιουργήστε ένα φάκελο για φωτογραφίες, πηγαίνετε σε αυτό και εκτελέστε την εντολή λήψης εικόνας: mkdir ~/pi_cam/ cd ~/pi_cam/ raspistill -v -o test.jpg
Σε περίπτωση αποτυχίας, θα πρέπει να ελέγξετε τα προηγούμενα βήματα ή να χτυπήσετε τις επαφές του συνδέσμου στην κάμερα και στο Malina.
Τα ακόλουθα πακέτα για εργασία με την κάμερα είναι προεγκατεστημένα στο Raspbian OS:
  • raspivid, raspvidyuv - λήψη βίντεο
  • raspistill, raspiyuv - λήψη φωτογραφιών
Ένας πλήρης οδηγός για τα αναφερόμενα βοηθητικά προγράμματα είναι διαθέσιμος στη διεύθυνση αγγλική γλώσσαείναι απενεργοποιημένο. Ιστοσελίδα Raspberry Pi
Όλα τα βοηθητικά προγράμματα ξεκινούν από το τερματικό και είναι αρκετά εύχρηστα.
Τα πακέτα με ονόματα που τελειώνουν σε "yuv" δεν χρησιμοποιούν το στοιχείο κωδικοποίησης - αποθηκεύουν τις "ακατέργαστες" μη επεξεργασμένες πληροφορίες που λαμβάνονται από τον αισθητήρα της κάμερας. Ας δούμε πώς δουλεύουμε με κάθε πακέτο, αλλά πρώτα θα εξοικειωθούμε με τη λίστα των παραμέτρων της κάμερας που είναι κοινές σε όλα τα πακέτα και μετά θα δούμε συγκεκριμένα επιχειρήματα και συγκεκριμένα παραδείγματατις εφαρμογές τους.

Κοινές παράμετροι

Ας δούμε τις τιμές των παραμέτρων. Αξίζει να σημειωθεί ότι:
  • Εάν ένα όρισμα δεν καθορίζεται κατά την κλήση του βοηθητικού προγράμματος, χρησιμοποιείται η προεπιλεγμένη τιμή του.
  • ΕΑΝ Η ΣΤΗΛΗ «ΕΜΒΕΛΕΙΑ ΕΠΙΤΡΕΠΟΜΕΝΩΝ ΤΙΜΩΝ» ΕΙΝΑΙ ΚΕΝΗ, τότε δεν χρειάζεται να μεταβιβαστούν πρόσθετες τιμές - αρκεί απλώς να περάσετε το ίδιο το όρισμα.
  • Η προεπισκόπηση εμφανίζεται μόνο σε μια φυσική οθόνη που είναι συνδεδεμένη στο Raspberry. Εάν έχετε πρόσβαση στο Raspberry μέσω απομακρυσμένης επιφάνειας εργασίας (VNC), η προεπισκόπηση δεν θα εμφανίζεται σε καμία ρύθμιση, καθώς η εικόνα προεπισκόπησης αποστέλλεται απευθείας στην οθόνη πάνω από τις υπόλοιπες πληροφορίες
  • Παρόμοια με την παρακολούθηση βίντεο μέσω υπολογιστή
Διαφωνία
Περιγραφή
Έγκυρο εύρος
Προεπιλεγμένη τιμή

Επιλογές παραθύρου προεπισκόπησης
πλάτος, ύψος, συντεταγμένη x, συντεταγμένη y
-φά
Προεπισκόπηση πλήρους οθόνης
όχι
-n
Καμιά προεπισκόπηση
-op
Προεπισκόπηση διαφάνειας παραθύρου
0...255
255
-SH
Οξύτητα
-100...100
0
-συν
Αντίθεση
-100...100
0
-br
Φωτισμός
0...100
50
-ΑΝΩΝΥΜΗ ΕΤΑΙΡΙΑ
Κορεσμός
-100...100
0
-ISO
Ευαισθησία αισθητήρα κάμερας
-100...100
0
- εναντίον
Σταθεροποίηση βίντεο
(μόνο βίντεο)
όχι
-ev
Αντιστάθμιση έκθεσης
-10...10
0
-πρώην
Εκθεση
  • Νύχτα
  • νυχτερινή προεπισκόπηση
  • οπίσθιος φωτισμός: οπίσθιος φωτισμός πίσω από το θέμα
  • σποτ: φωτισμός προβολέων
  • αθλητισμός: αντικείμενο σε κίνηση
  • χιόνι: χιονισμένο τοπίο
  • παραλία: τοπίο παραλίας
  • πολύ μακρά: μακρά έκθεση
  • fixedfps: περιορίστε τα FPS σε μια σταθερή τιμή
  • αντικούνημα: αντικούνημα
  • πυροτεχνήματα: τοπίο με πυροτεχνήματα
αυτο
-awb
ισορροπία λευκού
  • ήλιος: 5000K...6500K - ηλιόλουστος
  • σύννεφο:6500K ... 12000K συννεφιά
  • σκιά: στη σκιά
  • βολφράμιο: 2500K ... 3500K βολφράμιο
  • φθορισμού: 2500K...4500K
  • πυρακτώσεως: καυτό μέταλλο
  • φλας: με φλας
  • ορίζοντας
αυτο
-ifx
Διάφορα εφέ
κανένας, αρνητικός, solarise, posterise, whiteboard, μαυροπίνακας, σκίτσο, denoise, ανάγλυφο, λαδομπογιά, καταπακτή, gpen, παστέλ, ακουαρέλα, ταινία, θάμπωμα, κορεσμός, εναλλαγή χρωμάτων, washedout, colorpoint, colorbalance, κινούμενα σχέδια
κανένας
-cfx
Ισορροπία χρωμάτων
0...255:0...255
128:128
-mm
Μέτρηση έκθεσης
  • μέσος όρος: μέσος όρος
  • σημείο: σημείο
  • οπίσθιος φωτισμός: ανάγνωση εικόνας με οπίσθιο φωτισμό
  • matrix: matrix metering
μέση τιμή
-σαπίλα
Στροφή
0 ... 359
0
-hf
Οριζόντια αντανάκλαση
Οχι
-vf
Κάθετη αντανάκλαση
Οχι
-roi
Αισθητήρας ROI
συντεταγμένες από την επάνω αριστερή γωνία και το πλάτος και το ύψος της περιοχής
0 … 1,0 … 1,0 … 1,0 … 1
0,0,1,1
-σσ
Ταχύτητα κλείστρου
σε μικροδευτερόλεπτα
6000000
-drc
Συμπίεση δυναμικού εύρους
μακριά από
-αγ
εμφάνιση στατιστικών
Οχι
Στη συνέχεια, θα εξετάσουμε τα βοηθητικά προγράμματα χωριστά.


raspistill - λήψη φωτογραφιών

Αυτό το βοηθητικό πρόγραμμα παράγει μια κωδικοποιημένη συμπιεσμένη εικόνα και για την εκτέλεση αυτής της ενέργειας υπάρχουν αρκετές παράμετροι που μεταβιβάζονται ως ορίσματα κατά την εκτέλεση του raspistill.

Επιχειρήματα

Διαφωνία
Περιγραφή
Έγκυρο εύρος
Προεπιλεγμένη τιμή
-w
Πλάτος
0...μέγ
Μέγιστη

Υψος
0...μέγ
Μέγιστη
-q
Ποιότητα
0...100
75
-ο
Ονομα αρχείου
τη διαδρομή προς το αρχείο
-
-v
Έξοδος στο τερματικό
Πληροφορίες σχετικά με τη διαδικασία λήψης
όχι

Καθυστέρηση πριν από τη δράση
σε χιλιοστά του δευτερολέπτου
0
-tl
Χρονική πάροδος
παράδειγμα: -tl 2000 -o image%04d.jpg
2000 - διάστημα
%04d - 4ψήφιο αριθμητικό μοτίβο
-
-μι
Κωδικοποίηση σε μορφοποίηση
jpg, bmp, gif και png
jpg

Προσθήκη ετικετών EXIF
έως 32 ετικέτες
-
-r
Αποθήκευση συστοιχίας Bayer στα μεταδεδομένα μιας κωδικοποιημένης εικόνας
-

Παραδείγματα

Ας δούμε συγκεκριμένα παραδείγματα χρήσης raspistill:
Τραβήξτε μια τυπική εικόνα μετά από 2 δευτερόλεπτα και αποθηκεύστε την στο αρχείο image.jpg (στο φάκελο στον οποίο βρίσκεστε αυτήν τη στιγμή). Η ανάλυση θα είναι τυπική (μέγιστη) raspistill -t 2000 -o image.jpg Το ίδιο πράγμα, αλλά σε ανάλυση 640x480 raspistill -o image.jpg -w 640 -h 480 Λήψη εικόνας με μειωμένη ποιότητα 5% και αποθηκεύστε το σε ένα αρχείο image.jpg (στο φάκελο στον οποίο βρίσκεστε αυτήν τη στιγμή). Με αυτήν την ποιότητα, το μέγεθος της εικόνας θα είναι σημαντικά μικρότερο raspistill -o image.jpg -q 5 Λήψη εικόνας κωδικοποιημένης σε μορφή PNG και αποθήκευση στο αρχείο image.png raspistill -o image.png –e png Λήψη τυπικής εικόνας με δύο ενσωματωμένες ετικέτες EXIF σε διαστήματα 10 δευτερολέπτων σε 10 λεπτά (600.000 ms) και ονομάζονται image_num_001_today.jpg, image_num_002_today.jpg και ούτω καθεξής. Η τελική εικόνα θα ονομάζεται latest.jpg raspistill -t 600000 -tl 10000 -o image_num_%03d_today.jpg -l latest.jpg Λήψη εικόνων όταν πατήσετε Enter, τα αρχεία θα αποθηκευτούν δίπλα-δίπλα και θα ονομαστούν my_pics01.jpg my_pics02. jpg κλπ. raspistill -t 0 -k -o my_pics%02d.jpg

raspiyuv

Τα επιχειρήματα εκκίνησης είναι ακριβώς τα ίδια με αυτά του raspistill (βλ. παραπάνω), από τα οποία μόνο τα ακόλουθα ΔΕΝ ΔΙΑΘΕΣΙΜΑ:
-q - ποιότητα
-e - προσδιορίζοντας τη μορφή εικόνας στόχου
-x - Προσθήκη ετικετών EXIF
-r - Αποθηκεύστε έναν πίνακα Bayer στα μεταδεδομένα της κωδικοποιημένης εικόνας
Ωστόσο, υπάρχει ένα ΔΙΚΟ επιχείρημα
-rgb - αποθήκευση "ακατέργαστων" δεδομένων σε μορφή RGB888 (8 bit/κανάλι)

raspivid - λήψη βίντεο

Παράμετροι εκκίνησης

Διαφωνία
Περιγραφή
Έγκυρο εύρος
Προεπιλεγμένη τιμή
-w
Πλάτος
0...μέγ
1920

Υψος
0...μέγ
1080
-σι
Ρυθμός bit βίντεο
αριθμός bit ανά δευτερόλεπτο.
Τα 10 Mbit/s ορίζονται -b 10000000
-ο
Ονομα αρχείου
τη διαδρομή προς το αρχείο
-
-v
Έξοδος στο τερματικό
Πληροφορίες σχετικά με τη διαδικασία λήψης

Καθυστέρηση πριν από τη δράση
σε χιλιοστά του δευτερολέπτου
0
-fps
Framerate
Αριθμός καρέ ανά δευτερόλεπτο 2...30

Έναρξη/διακοπή εγγραφής πατώντας Enter
η διαδικασία διακόπτεται πατώντας το "X"
-σγ
Αποθήκευση τμημάτων βίντεο με σταθερή διάρκεια σε ξεχωριστά αρχεία
Ορίστε τη διάρκεια ενός τμήματος και μάσκας αρχείου
-sg 3000 -o βίντεο%04d.h264
-wr
Περιορισμός του μέγιστου αριθμού αρχείων κατά την τμηματοποίηση
Χρησιμοποιείται με το όρισμα -sg και ουσιαστικά υλοποιεί την κυκλική επανεγγραφή όπως στα DVR
Η προεπιλεγμένη ανάλυση είναι 1080p (1920x1080)
Ας δούμε συγκεκριμένα παραδείγματα:
Εγγραφή τυπικού βίντεο 5 δευτερολέπτων (1920x1080, 30 καρέ/δευτ.) και αποθήκευση σε αρχείο video.h264 raspivid -t 5000 -o video.h264 Εγγραφή βίντεο 5 δευτερολέπτων με ανάλυση 1080p και συγκεκριμένο ρυθμό μετάδοσης bit 3,5Mbit /s και αποθήκευση στο αρχείο video.h264 raspivid -t 5000 -o video.h264 -b 3500000 Εγγράψτε 5 δευτερόλεπτα βίντεο τυπικής ευκρίνειας με ρυθμό καρέ 5 fps και αποθηκεύστε στο αρχείο βίντεο.h264 raspivid -t 5000 -o video.h264 -f 5 Εάν μια οθόνη είναι συνδεδεμένη στο Raspberry μέσω HDMI, το εγγεγραμμένο βίντεο μπορεί να προβληθεί χρησιμοποιώντας το πρόγραμμα αναπαραγωγής omxplayer: sudo apt-get install omxplayer #εάν η συσκευή αναπαραγωγής δεν έχει εγκατασταθεί ακόμα omxplayer video.h264 Η προβολή βίντεο δεν είναι διαθέσιμη μέσω VNC

Κωδικοί σφαλμάτων

  • 0 - επιτυχής ολοκλήρωση
  • 64 - εστάλη μη έγκυρη εντολή (σφάλμα σύνταξης)
  • 70 - σφάλμα στο βοηθητικό πρόγραμμα ή κατά την επικοινωνία με την κάμερα
  • 130 - η εκτέλεση διακόπηκε από τον χρήστη (συνδυασμός πλήκτρων Ctrl + C)

Βιβλιοθήκη PiCamera

Αυτή είναι μια βιβλιοθήκη για τη γλώσσα προγραμματισμού Python που σας επιτρέπει να απλοποιήσετε και να αυτοματοποιήσετε την εργασία με την κάμερα Raspberry
Πλήρης περιγραφή της βιβλιοθήκης στα αγγλικά
Στις σύγχρονες εκδόσεις της διανομής Raspbian, η βιβλιοθήκη είναι ήδη προεγκατεστημένη, μπορείτε να το ελέγξετε μέσω της κονσόλας Python python3 import picamera Σε περίπτωση αποτυχίας, πρέπει να εγκαταλείψετε την κονσόλα εισάγοντας την εντολή exit() ή χρησιμοποιώντας το Ctrl + Συνδυάστε το πλήκτρο D και εγκαταστήστε τη βιβλιοθήκη με την εντολή sudo apt-get install python3-picamera Εργασία με την κάμερα από κώδικα Python παρόμοια με τις εντολές τερματικού που συζητήθηκαν παραπάνω. Μπορείτε εύκολα να λάβετε μια τυπική εικόνα από μια κάμερα απευθείας στην κονσόλα Python: import picamera #import the camera library camera = picamera.PiCamera() #create a camera object camera.capture("image.jpg") #call the camera image μέθοδος λήψης camera .close() #close the camera session Η εικόνα θα αποθηκευτεί στο αρχείο image.jpg στον τρέχοντα φάκελο.

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

Κατ 'αρχήν, το τηλεχειριστήριο αντιμετώπισε όλες τις εργασίες που του ανατέθηκαν με μεγάλη επιτυχία . Υπήρχαν όμως και σοβαρές ελλείψεις.

  1. Οι μπαταρίες δεν χωρούσαν στη θήκη, οπότε έπρεπε να τις κολλήσω στη θήκη με ηλεκτρική ταινία :)
  2. Οι παράμετροι ρυθμίστηκαν χρησιμοποιώντας τέσσερα ποτενσιόμετρα, τα οποία αποδείχθηκαν πολύ ευαίσθητα στη θερμοκρασία. Ορίζεις κάποιες τιμές σε εσωτερικούς χώρους, βγαίνεις έξω - και είναι ήδη διαφορετικές, έχουν φύγει.
  3. U Arduino Nano, που χρησιμοποίησα στο τηλεχειριστήριο, υπάρχουν μόνο 8 αναλογικές είσοδοι. Τέσσερα καταλαμβάνονταν από ποτενσιόμετρα συντονισμού. Ένα ποτενσιόμετρο χρησίμευε ως αέριο. Δύο είσοδοι συνδέθηκαν στο joystick. Μόνο μία έξοδος παρέμεινε ελεύθερη και υπήρχαν πολλές ακόμη παράμετροι για διαμόρφωση.
  4. Το μόνο joystick δεν ήταν καθόλου πιλοτικό. Ο έλεγχος του γκαζιού με ένα ποτενσιόμετρο ήταν επίσης αρκετά απογοητευτικό.
  5. Και το τηλεχειριστήριο δεν έβγαζε κανέναν ήχο, κάτι που μερικές φορές είναι εξαιρετικά χρήσιμο.

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

  • Φτιάξτε μια μεγάλη θήκη για να μπορείτε να γεμίζετε ό,τι θέλετε τώρα (συμπεριλαμβανομένων των μπαταριών) σε αυτήν και ό,τι θέλετε αργότερα.
  • Λύστε κάπως το πρόβλημα με τις ρυθμίσεις, όχι αυξάνοντας τον αριθμό των ποτενσιόμετρων. Επιπλέον, προσθέστε τη δυνατότητα αποθήκευσης παραμέτρων στο τηλεχειριστήριο.
  • Φτιάξτε δύο joystick, όπως στις κανονικές κονσόλες πιλότων. Λοιπόν, βάλτε τα ίδια τα joysticks Ορθόδοξα.

Νέο κτίριο

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

Χειριστήρια και μενού

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

Για πλοήγηση στο μενού και αλλαγή παραμέτρων, χρησιμοποιούνται συνήθως κουμπιά. Αριστερά, δεξιά, πάνω, κάτω. Αλλά ήθελα να χρησιμοποιήσω έναν κωδικοποιητή αντί για κουμπιά. Πήρα αυτή την ιδέα από έναν ελεγκτή 3D εκτυπωτή.


Φυσικά, λόγω της προσθήκης του μενού, ο κωδικός του τηλεχειριστηρίου έχει επεκταθεί αρκετές φορές. Αρχικά, πρόσθεσα μόνο τρία στοιχεία μενού: "Telemetry", "Parameters" και "Store params". Το πρώτο παράθυρο εμφανίζει έως και οκτώ διαφορετικές ενδείξεις. Μέχρι στιγμής χρησιμοποιώ μόνο τρία: ισχύ μπαταρίας, πυξίδα και υψόμετρο.

Στο δεύτερο παράθυρο, είναι διαθέσιμες έξι παράμετροι: συντελεστές ελεγκτή PID για τους άξονες X/Y, Z και γωνίες διόρθωσης επιταχυνσιόμετρου.

Το τρίτο στοιχείο σάς επιτρέπει να αποθηκεύσετε παραμέτρους στο EEPROM.

Joysticks

Δεν σκέφτηκα πολύ για την επιλογή των πιλοτικών χειριστηρίων. Έτυχε να πήρα το πρώτο joystick Turnigy 9XR από έναν συνάδελφο στην επιχείρηση τετρακοπτέρων - τον Alexander Vasiliev, τον ιδιοκτήτη του γνωστού ιστότοπου alex-exe.ru. Παρήγγειλα το δεύτερο απευθείας από το Hobbyking.


Το πρώτο joystick ήταν ελατήριο και στις δύο συντεταγμένες - για τον έλεγχο της εκτροπής και του τόνου. Το δεύτερο που πήρα ήταν το ίδιο, ώστε μετά να το μετατρέψω σε joystick για έλεγχο της πρόσφυσης και της περιστροφής.

Θρέψη

Στο παλιό τηλεχειριστήριο χρησιμοποίησα έναν απλό ρυθμιστή τάσης LM7805, ο οποίος τροφοδοτήθηκε με ένα σωρό 8 μπαταρίες ΑΑ. Μια τρομερά αναποτελεσματική επιλογή, στην οποία δαπανήθηκαν 7 βολτ για τη θέρμανση του ρυθμιστή. 8 μπαταρίες - επειδή υπήρχε μόνο μια τέτοια θήκη στο χέρι και LM7805 - επειδή εκείνη την εποχή αυτή η επιλογή μου φαινόταν η απλούστερη και το πιο σημαντικό, η ταχύτερη.

Τώρα αποφάσισα να ενεργήσω πιο σοφά και εγκατέστησα έναν αρκετά αποτελεσματικό ρυθμιστή στο LM2596S. Και αντί για 8 μπαταρίες AA, τοποθέτησα ένα διαμέρισμα για δύο μπαταρίες LiIon 18650.


Αποτέλεσμα

Συνδυάζοντας τα πάντα, αποκτήσαμε αυτή τη συσκευή. Εσωτερική άποψη.


Αλλά με κλειστό καπάκι.


Το καπάκι στο ένα ποτενσιόμετρο και τα καπάκια στα joystick λείπουν.

Τέλος, ένα βίντεο για το πώς διαμορφώνονται οι ρυθμίσεις μέσω του μενού.


Συμπέρασμα

Το τηλεχειριστήριο είναι φυσικά συναρμολογημένο. Τώρα εργάζομαι για την οριστικοποίηση του κωδικού για το τηλεχειριστήριο και το τετρακόπτερο προκειμένου να τα επιστρέψω στην παλιά τους δυνατή φιλία.

Κατά τη ρύθμιση του τηλεχειριστηρίου, εντοπίστηκαν ελλείψεις. Πρώτον, οι κάτω γωνίες του τηλεχειριστηρίου ακουμπούν στα χέρια σας: (Μάλλον θα επανασχεδιάζω λίγο τις πλάκες, θα εξομαλύνω τις γωνίες. Δεύτερον, ακόμη και μια οθόνη 16x4 δεν αρκεί για μια όμορφη οθόνη τηλεμετρίας - πρέπει να συντομεύσω το ονόματα παραμέτρων σε δύο γράμματα Στην επόμενη έκδοση της συσκευής θα εγκαταστήσω μια οθόνη κουκκίδων ή αμέσως μια μήτρα TFT.


Ο υπολογιστής μονής πλακέτας Raspberry Pi σάς επιτρέπει να δημιουργείτε πραγματικά ενδιαφέροντα και χρήσιμα πράγματα: από κέντρα πολυμέσων έως συστήματα οικιακού αυτοματισμού. Συνδέοντας διάφορες μονάδες στο Raspberry Pi, μπορείτε να επεκτείνετε σημαντικά τη λειτουργικότητα αυτού του μικροϋπολογιστή.



Ένα από αυτά τα πρόσθετα πρόσθετα είναι μια κάμερα, η οποία σας επιτρέπει να τραβάτε φωτογραφίες ή να τραβάτε βίντεο. Σήμερα υπάρχουν αρκετές κάμερες για το Raspberry Pi στην αγορά και σε αυτό το άρθρο θα κάνουμε μια σύντομη κριτική τους.


Ας δούμε έξι από τις πιο δημοφιλείς κάμερες: ZeroCam Noir, ZeroCam FishEye, Raspberry Pi Compatible Fisheye Camera, Raspberry Pi Camera V2, Raspberry Pi Camera V2 Noir και Raspberry Pi Camera 1.3.



Το ZeroCam Noir είναι μια μονάδα κάμερας για το Raspberry Pi Zero ή το Raspberry Pi Zero W, οπότε αν θέλετε να το χρησιμοποιήσετε στο Raspberry Pi 3 ή 2, θα χρειαστεί να χρησιμοποιήσετε ένα καλώδιο προσαρμογέα. Αυτή η φωτογραφική μηχανή δεν διαθέτει φίλτρο υπερύθρων στο φακό, καθιστώντας την ιδανική για φωτογραφίες σε χαμηλό φωτισμό. Εδώ είναι μερικά από τα κύρια χαρακτηριστικά του: αισθητήρας 5 megapixel, 2592 × 1944 pixel, 1080p στα 30 FPS (ή 60 FPS στα 720p, 90 FPS στα 480p), εστιακή απόσταση 3,60 mm, 53,50 μοίρες οριζόντια, 41,41 μοίρες περίπου. Διαστάσεις πλακέτας με κάμερα: 60 x 11,4 x 5,1 mm.



Αυτή είναι η έκδοση fisheye της ZeroCam, που σημαίνει ότι έχει ευρυγώνια εικόνα. Αυτή η κάμερα είναι επίσης κατασκευασμένη για Pi Zero ή Pi Zero W, επομένως για να τη χρησιμοποιήσετε με άλλο πίνακα Pi χρειάζεστε ένα καλώδιο προσαρμογέα.



Αυτή είναι μια κάμερα fisheye συμβατή με Raspberry Pi που μπορεί να βρεθεί εύκολα σε διάφορες διαδικτυακές πλατφόρμες συναλλαγών όπως AliExpress, TaoBao, eBay. Χαρακτηρίζεται από ευρυγώνια θέα 175º. Βασίζεται στον αισθητήρα Omnivision 5647 με ανάλυση 5 megapixel (2592 x 1944 pixels).



Αυτή η κάμερα είναι εξοπλισμένη με αισθητήρα εικόνας Sony IMX219 8 megapixel με σταθερό εστιακό φακό, ικανό να εμφανίζει στατικές εικόνες 3280×2464 pixel, υποστηρίζει βίντεο 1080p30, 720p60 και 640×480p90. Η κάμερα είναι συμβατή με όλες τις πλακέτες Raspberry Pi, αλλά αν θέλετε να τη χρησιμοποιήσετε με το Pi Zero, χρειάζεστε ένα καλώδιο προσαρμογέα.



Αυτή η κάμερα έχει όλα τα χαρακτηριστικά της μονάδας Raspberry Pi Camera V2, αλλά δεν διαθέτει φίλτρο υπερύθρων. Αυτό σημαίνει ότι είναι σχεδόν ιδανική κάμερα για λήψη στο σκοτάδι.



Το Raspberry Pi Camera 1.3 είναι ο προκάτοχος της μονάδας V2. Είναι εξοπλισμένο με αισθητήρα OmniVision OV5647 5 megapixel.

Σύγκριση οπτικού πεδίου και ποιότητας εικόνας καμερών για το Raspberry Pi

Σε αυτή τη δοκιμή, όλες οι κάμερες εγκαθίστανται σε απόσταση 1 μέτρου από την εικόνα δοκιμής. Τα αποτελέσματα έχουν ως εξής:











Σύγκριση ποιότητας εικόνας και χρωματικής απόδοσης καμερών Raspberry Pi κατά το ζουμ











Σύγκριση ποιότητας λήψης τη νύχτα

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







συμπεράσματα

Όλες οι κάμερες αποδίδουν λίγο καλύτερα από ό,τι αναμενόταν από τέτοιες φθηνές μονάδες. Δυστυχώς, δεν υπάρχει κάμερα all-in-one ανάμεσά τους και πρέπει να γίνει μια αντιστάθμιση καθώς δεν φαίνεται να υπάρχουν κάμερες ευρυγώνιας (fisheye) με αφαιρεμένο το φίλτρο κοπής υπερύθρων. Έτσι, αν θέλετε ευρυγώνια, θα χρειαστείτε κανονικό φωτισμό, και αντίστροφα, τη νύχτα είναι απίθανο να κάνετε ευρυγώνιες λήψεις.

Καλή μέρα!

Την παραμονή της Πρωτοχρονιάς, είχα την ιδέα να φτιάξω κάποιο είδος βιντεοεπιτήρησης. Είχα όλα όσα χρειαζόμουν στο χέρι:

  • Υπολογιστής μονής πλακέτας Raspberry Pi Model B
  • Κάμερα LOGITECH HD Webcam C270
Αφού διάβασα, αποφάσισα να αναπτύξω λίγο την ιδέα του συγγραφέα.
Γνωριμία
Λοιπόν, πρώτα, ας εξοικειωθούμε με το κύριο "συστατικό":
Εμφάνιση Raspberry Pi:

Χαρακτηριστικά:

  • Επεξεργαστής Broadcom BCM2835 700MHz ARM1176JZFS με FPU και Videocore 4 GPU
  • Η GPU παρέχει Open GL ES 2.0, OpenVG με επιτάχυνση υλικού και αποκωδικοποίηση υψηλού προφίλ 1080p30 H.264
  • Η GPU είναι ικανή για 1Gpixel/s, 1.5Gtexel/s ή 24GFLOPS με φιλτράρισμα υφής και υποδομή DMA
  • 512MB RAM
  • Μπότες από κάρτα SD, με έκδοση του λειτουργικού συστήματος Linux
  • Υποδοχή Ethernet 10/100 BaseT
  • Υποδοχή εξόδου βίντεο HDMI
  • 2 x υποδοχές USB 2.0
  • Υποδοχή εξόδου βίντεο RCA composite
  • Υποδοχή κάρτας SD
  • Τροφοδοτείται από υποδοχή microUSB
  • Υποδοχή εξόδου ήχου 3,5 mm
  • Υποδοχή βιντεοκάμερας Raspberry Pi HD
  • Μέγεθος: 85,6 x 53,98 x 17 mm"
pi@hall-pi ~ $ cat /proc/cpuinfo επεξεργαστής: 0 όνομα μοντέλου: ARMv6 συμβατός επεξεργαστής rev 7 (v6l) BogoMIPS: 2.00 Χαρακτηριστικά: swp half thumb fastmult vfp edsp java tls Εφαρμογή CPU: 0x41 CPU αρχιτεκτονική παραλλαγή: 7 : 0x0 τμήμα CPU: 0xb76 Αναθεώρηση CPU: 7 Υλικό: BCM2708 Αναθεώρηση: 000e Σειρά: 000000005a82c372

Μπορείτε να βρείτε μια λίστα με επίσημα υποστηριζόμενες διανομές. Επέλεξα το Raspbian χωρίς γραφικό κέλυφος.

Η διαδικασία εγκατάστασης είναι αρκετά απλή και δεν απαιτεί Λεπτομερής περιγραφή, οπότε θα απαριθμήσω τα κύρια γεγονότα που αξίζει να προσέξουμε:

  1. Ρύθμιση της ζώνης ώρας
  2. Ρύθμιση του ονόματος υπολογιστή
  3. Ενεργοποίηση πρόσβασης SSH
  4. Ενημέρωση συστήματος
Αφού ολοκληρώσετε όλες τις απαραίτητες ρυθμίσεις, μπορείτε να ξεκινήσετε.
Παρασκευή
Αρχικά, ας εγκαταστήσουμε όλα τα απαραίτητα πακέτα:
sudo apt-get install imagemagick libav-tools libjpeg8-dev subversion
Στη συνέχεια, πραγματοποιήστε λήψη και συναρμολόγηση του mjpg-streamer:
sudo svn co https://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer/ mjpg-streamer cd mjpg-streamer make
Επειδή Θα αποθηκεύσουμε όλα τα δεδομένα στο cloud, θα ρυθμίσουμε την εργασία με τηλεχειριστήριο σύστημα αρχείωνμέσω WebDAV:
sudo apt-get εγκατάσταση davfs2 sudo mkdir /mnt/dav sudo mount -t davfs https://webdav.yandex.ru /mnt/dav -o uid=pi,gid=pi
Για να μην εισάγετε το όνομα χρήστη και τον κωδικό πρόσβασής σας κάθε φορά, πρέπει να τα προσθέτετε στο αρχείο
/etc/davfs2/secrets
κωδικός χρήστη /mnt/dav
Η εργασιακή διαδικασία
Ας προσθέσουμε εντολές στο /etc/rc.local για να προσαρτήσουμε το WebDAV και να εκτελέσουμε το σενάριο για μετάδοση στο δίκτυο:
mount -t davfs https://webdav.yandex.ru /mnt/dav -o uid=pi,gid=pi cd /home/pi/mjpg-streamer && ./mjpg_streamer -i "./input_uvc.so" -o "./output_http.so -w ./www"
Τώρα, πηγαίνοντας στο http://:8080/ θα αποκτήσουμε πρόσβαση στην κάμερα. Το μόνο που μένει είναι να προωθήσετε τη θύρα στο δρομολογητή και να έχετε πρόσβαση στην κάμερα εκτός του τοπικού δικτύου.
Δημιουργία timelapse βίντεο
Πρώτα απ 'όλα, πρέπει να πάρουμε μια εικόνα από την κάμερα. Επειδή είναι ήδη κατειλημμένο (η εικόνα μεταδίδεται από τον διακομιστή web), τότε θα χρησιμοποιήσουμε την ευκαιρία να λάβουμε την τρέχουσα εικόνα από τον διακομιστή ιστού:
curl http://localhost:8080/?action=snapshot > out.jpg
Αν θέλουμε να σχεδιάσουμε την ημερομηνία της φωτογραφίας στην εικόνα, τότε μπορούμε να χρησιμοποιήσουμε την εντολή μετατροπής
timestamp=`stat -c %y out.jpg` convert out.jpg -fill black -fill white -pointsize 15 -draw "text 5.15 "$(timestamp:0:19)"" out_.jpg
Πλήρη έκδοσηγραφή:
#!/bin/bash filename=$(perl -e "ώρα εκτύπωσης") foldername=$(ημερομηνία --rfc-3339=date) curl http://localhost:8080/?action=snapshot > $filename timestamp=` stat -c %y $filename` mkdir /mnt/dav/out/$foldername μετατροπή $filename -fill black -fill white -pointsize 15 -draw "text 5.15 "$(timestamp:0:19)"" /mnt /dav /out/$foldername/$filename.jpg rm $filename
Το βίντεο συναρμολογείται χρησιμοποιώντας την εντολή avconv:
avconv -r 10 -i %06d.jpg -r 10 -vcodec mjpeg -qscale 1 out.avi
Η πλήρης έκδοση του σεναρίου συναρμολόγησης βίντεο:
#!/bin/bash filename=$(ημερομηνία --rfc-3339=ημερομηνία) i=0 για f σε `ls -tr /mnt/dav/out/$filename/*.jpg 2>/dev/null` newf=`printf %06d $i`.jpg echo $f "-->" $newf mv $f $newf i=$((i+1)) έγινε rmdir -R /mnt/dav/out/$filename/ avconv -r 10 -i %06d.jpg -r 10 -vcodec mjpeg -qscale 1 /mnt/dav/$filename.avi rm *.jpg
Τώρα το μόνο που μένει είναι να καταχωρήσετε την εκτέλεση των σεναρίων στον προγραμματιστή Cron:
* * * * * pi bash /home/pi/cam.sh 59 23 * * * pi bash /home/pi/build.sh
Παράδειγμα βίντεο
συμπέρασμα
Αυτή η προσέγγιση βοηθά στην εξάλειψη της ανάγκης να αφιερώνετε πολύ χρόνο παρακολουθώντας βίντεο και επίσης μειώνει το κόστος του τελικού προϊόντος. Χάρη στην παρουσία ενός πλήρους λειτουργικού συστήματος, καθίσταται δυνατή η επέκταση της λειτουργικότητας προς τη σωστή κατεύθυνση.

Επειδή Αυτός ο υπολογιστής έχει επαρκή απόδοση για λήψη, αποθήκευση, επεξεργασία και μετάδοση βίντεο από μια κάμερα (για παράδειγμα, από μια κάμερα USB) μέσω wifi σε άλλες συσκευές. Υπάρχουν ειδικές κάμερες για το Raspberry PI που συνδέονται σε μια ειδική υποδοχή σε αυτό και κάμερες USB που συνδέονται σε οποιοδήποτε θύρα USBστο Raspberry PI. Επειδή Οι κάμερες USB, κατά κανόνα, είναι πολύ φθηνότερες από τις ειδικές (αν και χειρότερες), οπότε στη συνέχεια θα εξετάσουμε το ενδεχόμενο χρήσης μιας κάμερας USB με Raspberry PI. Υπάρχουν πολλά προγράμματα για τη λήψη βίντεο από μια κάμερα USB ή μπορείτε να γράψετε τα δικά σας, αλλά για λόγους απλότητας, ας δούμε πρώτα τη λήψη και τη μετάδοση βίντεο χρησιμοποιώντας το πρόγραμμα κίνησης. Για να εγκαταστήσετε το πρόγραμμα κίνησης στο Raspberry PI, πρέπει πρώτα να συνδεθείτε σε αυτό μέσω του προγράμματος Putty (ή οποιουδήποτε άλλου τερματικού προγράμματος με δυνατότητα επικοινωνίας μέσω SSH) (για πληροφορίες σχετικά με το πώς να το κάνετε αυτό, δείτε το προηγούμενο άρθρο «Raspberry PI 3 ρύθμιση και διαχείριση του GPIO μέσω WIFI»). Αφού συνδεθείτε στο Raspberry PI, πρέπει να ενημερώσετε το σύστημα χρησιμοποιώντας τις εντολές

Ενημέρωση Sudo apt-get

Αναβάθμιση Sudo apt-get

Μετά από μια επιτυχημένη ενημέρωση συστήματος, πρέπει να εγκαταστήσετε το πρόγραμμα κίνησης με την εντολή

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

Κατά την εγκατάσταση μπορεί να σας τεθεί η ερώτηση "Θέλετε να συνεχίσετε;" μετά από αυτό θα χρειαστεί να εισαγάγετε το γράμμα "Y". Μετά την εγκατάσταση του προγράμματος κίνησης, θα χρειαστεί να κάνετε κάποιες αλλαγές στα αρχεία διαμόρφωσης. Ανοίξτε το αρχείο motion.conf στο nano editor με την εντολή

Sudo nano /etc/motion/motion.conf

Επειτα

Αντικαταστάθηκε από

Στη συνέχεια, θα βρούμε άλλες γραμμές για αλλαγή, για να το κάνετε αυτό, πατήστε το συνδυασμό πλήκτρων CTRL+W, πληκτρολογήστε «stream_localhost» και πατήστε enter, μετά θα πρέπει να βρεθεί η απαιτούμενη γραμμή, εάν δεν βρεθεί, τότε η μεταβλητή «stream_localhost " ονομάζεται κάτι άλλο, για παράδειγμα "webcam_localhost" ή κάτι τέτοιο. Αφού βρεθεί η γραμμή με αυτήν τη μεταβλητή, πρέπει να το κάνετε

Η ροή_localhost είναι ενεργοποιημένη

αντικαταστάθηκε από

Stream_maxrate 1

Και αντικαταστήστε με

Stream_maxrate 100

Αντικαταστάθηκε από

Επειτα

Ελάχιστος_χρόνος_πλαισίου 0

Αντικαταστάθηκε από

Ελάχιστος_χρόνος_πλαισίου 1

Το τελευταίο γίνεται έτσι ώστε τα καρέ να βγαίνουν μία φορά το δευτερόλεπτο - αυτό δεν φαίνεται πολύ καλό, αλλά το βίντεο δεν θα εξαφανιστεί εάν η εικόνα αλλάξει ξαφνικά. Ο σκοπός κάθε μεταβλητής μπορεί να διαβαστεί στα σχόλια.
Τώρα αποθηκεύστε τις αλλαγές πατώντας CTRL+O και enter, μετά πατήστε CTRL+X και βγείτε nano editor. Τώρα ας επεξεργαστούμε ένα άλλο αρχείο, για να το κάνουμε αυτό εισάγουμε την εντολή

Sudo nano /etc/default/motion

Και αντικαταστήστε τη γραμμή

Start_motion_daemon=όχι

Start_motion_daemon=ναι

Στη συνέχεια αποθηκεύστε τις αλλαγές πατώντας CTRL+O και enter και μετά πατήστε CTRL+X και βγείτε από το nano editor. Τώρα μπορείτε να ξεκινήσετε τη μεταφορά βίντεο (η κάμερα USB πρέπει να είναι συνδεδεμένη σε μία από τις θύρες) με την εντολή

Έναρξη κίνησης υπηρεσίας Sudo

Σταματήστε με εντολή

Διακοπή κίνησης υπηρεσίας Sudo

Για να δείτε το βίντεο, πρέπει να ανοίξετε το πρόγραμμα περιήγησης και να εισαγάγετε τη διεύθυνση IP του Raspberry PI στη γραμμή διευθύνσεων, στη συνέχεια να βάλετε άνω και κάτω τελεία και 8081 (διεύθυνση IP του Raspberry PI: 8081) και πατήστε enter, μετά το οποίο το βίντεο από την κάμερα USB θα πρέπει να εμφανίζεται στο πρόγραμμα περιήγησης. Μπορείτε να δείτε πώς γίνεται όλο αυτό, δείτε το αποτέλεσμα και κάτι άλλο στο βίντεο:

Σαν αυτό με απλό τρόποΜπορείτε να λάβετε βίντεο από μια κάμερα USB συνδεδεμένη στο Raspberry PI. Εάν είναι Raspberry PI 3 με ενσωματωμένο wifi και τροφοδοτείται από powerbank (ή κάποια άλλη φορητή πηγή ηλεκτρικής ενέργειας) (για παράδειγμα, αυτή ή φθηνότερη, αν και δεν συνιστάται η χρήση φθηνού, Raspberry PI χρειάζεται μια κανονική πηγή τροφοδοσίας για να χρησιμοποιήσει όλες τις δυνατότητές της, είναι επίσης πολύ σκόπιμο να εγκαταστήσετε μια ψύκτρα για τον επεξεργαστή και άλλα μικροκυκλώματα που αναπτύσσονται κατά τη λειτουργία Raspberry, ιδανικά η ψύκτρα θα πρέπει να είναι χάλκινη και επικαλυμμένη με ειδική μαύρη βαφή), στη συνέχεια με βάση όλα τα αυτό μπορείτε να φτιάξετε κάποιο σύστημα παρακολούθησης βίντεο, βιντεοκάμερα ή κάτι παρόμοιο.




Μπλουζα