Πίνακας περιεχομένων:

Φτιάξτε τη δική σας κάμερα: 8 βήματα
Φτιάξτε τη δική σας κάμερα: 8 βήματα

Βίντεο: Φτιάξτε τη δική σας κάμερα: 8 βήματα

Βίντεο: Φτιάξτε τη δική σας κάμερα: 8 βήματα
Βίντεο: Πώς να κάνεις το πρώτο σου βίντεο σε 7 απλά βηματα 2024, Ιούλιος
Anonim
Image
Image
Φτιάξτε τη δική σας κάμερα
Φτιάξτε τη δική σας κάμερα

Αυτό το οδηγό εξηγεί πώς να φτιάξετε μια μονόχρωμη κάμερα χρησιμοποιώντας έναν αισθητήρα εικόνας Omnivision OV7670, έναν μικροελεγκτή Arduino, μερικά καλώδια βραχυκυκλωτήρων και λογισμικό επεξεργασίας 3.

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

Πατήστε το πλήκτρο "c" για να τραβήξετε μια εικόνα 640*480 pixel … πατήστε το πλήκτρο "s" για να αποθηκεύσετε την εικόνα στο αρχείο. Οι διαδοχικές εικόνες αριθμούνται διαδοχικά εάν επιθυμείτε να δημιουργήσετε μια σύντομη ταινία time-lapse.

Η κάμερα δεν είναι γρήγορη (κάθε σάρωση διαρκεί 6,4 δευτερόλεπτα) και είναι κατάλληλη μόνο για σταθερό φωτισμό.

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

Εικόνες

Τα εξαρτήματα, χωρίς καλωδίωση βραχυκυκλωτήρα, εμφανίζονται στην αρχική φωτογραφία.

Η δεύτερη φωτογραφία είναι ένα στιγμιότυπο οθόνης που δείχνει το λογισμικό κάμερας Arduino και την επεξεργασία καρέ από την επεξεργασία 3. Το ένθετο δείχνει πώς είναι συνδεδεμένη η κάμερα.

Το βίντεο δείχνει την κάμερα εν ενεργεία. Όταν πατηθεί το πλήκτρο σύλληψης "c" υπάρχει ένα σύντομο φλας που ακολουθείται από μια έκρηξη δραστηριότητας καθώς σαρώνεται η εικόνα. Η εικόνα εμφανίζεται αυτόματα στο παράθυρο οθόνης μόλις ολοκληρωθεί η σάρωση. Στη συνέχεια, φαίνεται ότι οι εικόνες εμφανίζονται στο φάκελο Επεξεργασία μετά από κάθε πάτημα του πλήκτρου "s". Το βίντεο ολοκληρώνεται με γρήγορη ποδηλασία σε κάθε μία από τις τρεις αποθηκευμένες εικόνες.

Βήμα 1: Διάγραμμα κυκλώματος

Διάγραμμα κυκλώματος
Διάγραμμα κυκλώματος
Διάγραμμα κυκλώματος
Διάγραμμα κυκλώματος
Διάγραμμα κυκλώματος
Διάγραμμα κυκλώματος

Το διάγραμμα κυκλώματος, για όλες τις εκδόσεις αυτής της κάμερας, εμφανίζεται στη φωτογραφία 1.

Οι φωτογραφίες 2, 3 δείχνουν πώς συνδέονται τα καλώδια και τα εξαρτήματα.

Χωρίς το στήριγμα αλουμινίου οι εικόνες βρίσκονται στο πλάι τους.

Προειδοποίηση

Προγραμματίστε το Arduino σας ΠΡΙΝ συνδέσετε τυχόν καλώδια βραχυκυκλωτήρων στο τσιπ κάμερας OV7670. Αυτό θα αποτρέψει τις ακίδες εξόδου 5 volt από προηγούμενο πρόγραμμα να καταστρέψουν το τσιπ κάμερας OV7670 3v3 volt.

Βήμα 2: Λίστα μερών

Λίστα μερών
Λίστα μερών

Τα παρακάτω μέρη προέρχονται από τη διεύθυνση

  • 1 μόνο OV7670 300KP VGA Camera Module για arduino DIY KIT
  • 1 μόνο βραχίονα κάμερας με παξιμάδια και μπουλόνια
  • 1 μόνο UNO R3 για arduino MEGA328P 100% γνήσιο ATMEGA16U2 με καλώδιο USB

Τα ακόλουθα μέρη ελήφθησαν τοπικά

  • 18 andu Arduino αρσενικά-θηλυκά καλώδια άλτη
  • 3 μόνο καλώδια jumper γυναικών-θηλυκών Arduinin
  • 1 μόνο μίνι σανίδα ψωμιού
  • 4 μόνο αντιστάσεις 4K7 ohm 1/2 watt
  • 1 μόνο θραύσματα αλουμινίου.

Θα χρειαστείτε επίσης τα ακόλουθα φύλλα δεδομένων:

  • https://web.mit.edu/6.111/www/f2016/tools/OV7670_20…
  • https://www.haoyuelectronics.com/Attachment/OV7670%…

Βήμα 3: Θεωρία

Θεωρία
Θεωρία

Τσιπ κάμερας OV7670

Η προεπιλεγμένη έξοδος από το τσιπ κάμερας OV7670 περιλαμβάνει σήμα βίντεο YUV (4: 2: 2) και 3 κυματομορφές χρονισμού. Άλλες μορφές εξόδου είναι δυνατές με τον προγραμματισμό των εσωτερικών καταχωρητών μέσω ενός διαύλου συμβατού με I2C.

Το σήμα βίντεο YUV (4: 2: 2) (φωτογραφία 1) είναι μια συνεχής ακολουθία μονόχρωμων (ασπρόμαυρων) εικονοστοιχείων που χωρίζονται με πληροφορίες χρώματος U (μπλε διαφορά χρώματος) και V (διαφορά κόκκινου χρώματος).

Αυτή η μορφή εξόδου είναι γνωστή ως YUV (4: 2: 2) αφού κάθε ομάδα των 4 byte περιέχει 2 μονόχρωμα byte και και 2 έγχρωμα byte.

Μονόχρωμος

Για να αποκτήσουμε μια μονόχρωμη εικόνα πρέπει να δοκιμάσουμε κάθε δεύτερο byte δεδομένων.

Ένα Arduino έχει μόνο 2K μνήμης τυχαίας πρόσβασης, αλλά κάθε πλαίσιο περιλαμβάνει 640*2*480 = 307, 200 byte δεδομένων. Εκτός και αν προσθέσουμε ένα grabber στο OV7670, όλα τα δεδομένα πρέπει να αποστέλλονται στον υπολογιστή γραμμή προς γραμμή για επεξεργασία.

Υπάρχουν δύο δυνατότητες:

Για καθένα από τα 480 διαδοχικά καρέ, μπορούμε να καταγράψουμε μία γραμμή στο Arduino με μεγάλη ταχύτητα πριν το στείλουμε στον υπολογιστή με ταχύτητα 1Mbps. Μια τέτοια προσέγγιση θα έβλεπε το OV7670 να λειτουργεί με πλήρη ταχύτητα, αλλά θα διαρκούσε πολύ (πολύ πάνω από ένα λεπτό).

Η προσέγγιση που έχω πάρει είναι να επιβραδύνω το PCLK σε 8uS και να στείλω κάθε δείγμα όπως έρχεται. Αυτή η προσέγγιση είναι σημαντικά ταχύτερη (6,4 δευτερόλεπτα).

Βήμα 4: Σημειώσεις σχεδίασης

Σημειώσεις σχεδιασμού
Σημειώσεις σχεδιασμού
Σημειώσεις σχεδιασμού
Σημειώσεις σχεδιασμού
Σημειώσεις σχεδιασμού
Σημειώσεις σχεδιασμού

Συμβατότητα

Το τσιπ κάμερας OV7670 είναι μια συσκευή 3v3 volt. Το φύλλο δεδομένων υποδεικνύει ότι τάσεις άνω των 3,5 βολτ θα βλάψουν το τσιπ.

Για να αποτρέψετε το Arduino 5 βολτ σας να καταστρέψει το τσιπ κάμερας OV7670:

  • Το σήμα εξωτερικού ρολογιού (XCLK) από το Arduino πρέπει να μειωθεί σε ασφαλές επίπεδο μέσω διαχωριστή τάσης.
  • Οι εσωτερικές αντιστάσεις έλξης Arduino I2C στα 5 βολτ πρέπει να απενεργοποιηθούν και να αντικατασταθούν με εξωτερικές αντιστάσεις έλξης στην τροφοδοσία 3v3 volt.
  • Προγραμματίστε το Arduino σας ΠΡΙΝ επισυνάψετε τυχόν καλώδια βραχυκυκλωτήρων, καθώς μερικές από τις ακίδες ενδέχεται να προγραμματιστούν ως έξοδο από προηγούμενο έργο !!! (Το έμαθα με τον δύσκολο τρόπο … ευτυχώς αγόρασα δύο καθώς ήταν τόσο φθηνά).

Εξωτερικό ρολόι

Το τσιπ κάμερας OV7670 απαιτεί εξωτερικό ρολόι στην περιοχή συχνοτήτων 10Mhz έως 24MHz.

Η υψηλότερη συχνότητα που μπορούμε να δημιουργήσουμε από ένα Arduino 16MHz είναι 8MHz, αλλά αυτό φαίνεται να λειτουργεί.

Σειριακός σύνδεσμος

Χρειάζονται τουλάχιστον 10 uS (μικροδευτερόλεπτα) για την αποστολή 1 byte δεδομένων σε έναν σειριακό σύνδεσμο 1Mbps (εκατομμύρια bits ανά δευτερόλεπτο). Ο χρόνος αυτός διαμορφώνεται ως εξής:

  • 8 bit δεδομένων (8us)
  • 1 αρχικό bit (1uS)
  • 1 stop-bit (1uS)

Εσωτερικό ρολόι

Η εσωτερική συχνότητα ρολογιού pixel (PCLK) εντός του OV7670 ορίζεται με bit [5: 0] εντός του καταχωρητή CLKRC (βλέπε φωτογραφία 1). [1]

Εάν ορίσουμε bits [5: 0] = B111111 = 63 και το εφαρμόσουμε στον παραπάνω τύπο, τότε:

  • F (εσωτερικό ρολόι) = F (ρολόι εισόδου)/(Bit [5: 0} +1)
  • = 8000000/(63+1)
  • = 125000 Hz ή
  • = 8uS

Δεδομένου ότι κάνουμε δειγματοληψία μόνο κάθε δεύτερο byte δεδομένων, ένα διάστημα PCLK 8uS έχει ως αποτέλεσμα ένα δείγμα 16uS που είναι επαρκής χρόνος για τη μετάδοση 1 byte δεδομένων (10uS) αφήνοντας 6uS για επεξεργασία.

Ρυθμός καρέ

Κάθε πλαίσιο βίντεο VGA περιλαμβάνει 784*510 εικονοστοιχεία (στοιχεία εικόνας) εκ των οποίων εμφανίζονται 640*480 εικονοστοιχεία. Δεδομένου ότι η μορφή εξόδου YUV (4: 2: 2) έχει κατά μέσο όρο 2 byte δεδομένων ανά εικονοστοιχείο, κάθε πλαίσιο θα διαρκέσει 784*2*510*8 uS = 6,4 δευτερόλεπτα.

Αυτή η κάμερα ΔΕΝ είναι γρήγορη !!!

Οριζόντια τοποθέτηση

Η εικόνα μπορεί να μετακινηθεί οριζόντια εάν αλλάξουμε τις τιμές HSTART και HSTOP διατηρώντας παράλληλα διαφορά 640 pixel.

Όταν μετακινείτε την εικόνα σας προς τα αριστερά, είναι πιθανό η τιμή HSTOP να είναι μικρότερη από την τιμή HSTART!

Μην ανησυχείτε… όλα έχουν να κάνουν με μετρητές υπερχείλισης όπως εξηγείται στη φωτογραφία 2.

Μητρώα

Το OV7670 διαθέτει 201 καταχωρητές οκτώ bit για τον έλεγχο πραγμάτων, όπως κέρδος, ισορροπία λευκού και έκθεση.

Ένα byte δεδομένων επιτρέπει μόνο 256 τιμές στο εύρος [0] έως [255]. Εάν απαιτούμε περισσότερο έλεγχο, τότε πρέπει να προσθέσουμε πολλούς καταχωρητές. Δύο byte μας δίνουν 65536 δυνατότητες … τρία bytes μας δίνουν 16, 777, 216.

Ο καταχωρητής AEC (Αυτόματος έλεγχος έκθεσης) 16 bit που εμφανίζεται στη φωτογραφία 3 είναι ένα τέτοιο παράδειγμα και δημιουργείται συνδυάζοντας τμήματα των τριών ακόλουθων καταχωρητών.

  • AECHH [5: 0] = AEC [15:10]
  • AECH [7: 2] = AEC [9: 2]
  • COM1 [1: 0] = AEC [1: 0]

Προσοχή… οι διευθύνσεις μητρώου δεν είναι ομαδοποιημένες!

Παρενέργειες

Ο αργός ρυθμός καρέ εισάγει μια σειρά ανεπιθύμητων παρενεργειών:

Για σωστή έκθεση, το OV7670 αναμένει να λειτουργήσει με ρυθμό καρέ 30 fps (καρέ ανά δευτερόλεπτο). Δεδομένου ότι κάθε καρέ διαρκεί 6,4 δευτερόλεπτα, το ηλεκτρονικό κλείστρο είναι ανοιχτό 180 φορές περισσότερο από το κανονικό, πράγμα που σημαίνει ότι όλες οι εικόνες θα είναι υπερβολικά εκτεθειμένες, εκτός εάν αλλάξουμε κάποιες τιμές καταχωρητή.

Για να αποτρέψω την υπερβολική έκθεση, έχω ορίσει όλα τα δυαδικά ψηφία AEC (έλεγχος αυτόματης έκθεσης) στο μηδέν. Ακόμα κι έτσι χρειάζεται ένα φίλτρο ουδέτερης πυκνότητας μπροστά από το φακό όταν ο φωτισμός είναι έντονος.

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

Σημείωση

[1]

Ο τύπος που εμφανίζεται στο φύλλο δεδομένων (φωτογραφία 1) είναι σωστός, αλλά το εύρος εμφανίζει μόνο bits [4: 0];

Βήμα 5: Χρονισμός κυματομορφών

Κυματομορφές χρονισμού
Κυματομορφές χρονισμού
Κυματομορφές χρονισμού
Κυματομορφές χρονισμού
Κυματομορφές χρονισμού
Κυματομορφές χρονισμού

Η σημείωση στην κάτω αριστερή γωνία του διαγράμματος "VGA Frame Timing" (φωτογραφία 1) γράφει:

Για YUV/RGB, tp = 2 x TPCLK

Τα σχήματα 1, 2 και 3 επαληθεύουν το φύλλο δεδομένων (ες) και επιβεβαιώνουν ότι το Omnivision αντιμετωπίζει κάθε 2 byte δεδομένων ως ισοδύναμο 1 εικονοστοιχείου.

Οι κυματομορφές του παλμογράφου επιβεβαιώνουν επίσης ότι το HREF παραμένει ΧΑΜΗΛΟ κατά τη διάρκεια των διαστημάτων κενών.

Το σχήμα 4 επιβεβαιώνει ότι η έξοδος XCLK από το Arduino είναι 8MHz. Ο λόγος που βλέπουμε ένα κύμα ημιτόνου, και όχι ένα τετραγωνικό κύμα, είναι ότι όλες οι περίεργες αρμονικές είναι αόρατες στον παλμογράφο δειγματοληψίας μου στα 20MHz.

Βήμα 6: Frame Grabber

Grabber πλαισίου
Grabber πλαισίου

Ο αισθητήρας εικόνας σε ένα τσιπ κάμερας OV7670 περιλαμβάνει μια σειρά 656*486 εικονοστοιχείων, εκ των οποίων ένα πλέγμα 640*480 εικονοστοιχείων χρησιμοποιείται για τη φωτογραφία.

Οι τιμές καταχώρισης HSTART, HSTOP, HREF και VSTRT, VSTOP, VREF χρησιμοποιούνται για τη θέση της εικόνας πάνω από τον αισθητήρα. Εάν η εικόνα δεν έχει τοποθετηθεί σωστά πάνω από τον αισθητήρα, θα δείτε μια μαύρη ζώνη σε μία ή περισσότερες άκρες, όπως εξηγείται στην ενότητα "Σημειώσεις σχεδίασης".

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

Η αποστολή των αρπαχτών πλαισίων είναι να συλλάβουν καθένα από αυτά τα 640*480 = 307200 εικονοστοιχεία και να εμφανίσει το περιεχόμενο σε ένα παράθυρο "εικόνας"

Η επεξεργασία 3 το επιτυγχάνει χρησιμοποιώντας τις ακόλουθες τέσσερις γραμμές κώδικα !!

Γραμμή κωδικού 1:

byte byteBuffer = νέο byte [maxBytes+1]; // όπου maxBytes = 307200

Ο υποκείμενος κώδικας σε αυτήν τη δήλωση δημιουργεί:

  • μια συστοιχία 307201 byte που ονομάζεται "byteBuffer [307201]"
  • Το επιπλέον byte προορίζεται για χαρακτήρα τερματισμού (τροφοδοσία γραμμής).

Γραμμή κωδικού 2:

μέγεθος (640, 480)

Ο υποκείμενος κώδικας σε αυτήν τη δήλωση δημιουργεί:

  • μια μεταβλητή που ονομάζεται "πλάτος = 640;"
  • μια μεταβλητή που ονομάζεται "ύψος = 480".
  • μια συστοιχία 307200 pixel που ονομάζεται "pixels [307200]"
  • ένα παράθυρο "εικόνας" 640*480 pixel στο οποίο εμφανίζονται τα περιεχόμενα του πίνακα pixels . Αυτό το παράθυρο "εικόνας" ανανεώνεται συνεχώς με ρυθμό καρέ 60 fps.

Κωδικός γραμμή 3:

byteCount = myPort.readBytesUntil (lf, byteBuffer);

Ο υποκείμενος κώδικας σε αυτήν τη δήλωση:

  • ρυθμίζει προσωρινά τα εισερχόμενα δεδομένα τοπικά μέχρι να εμφανιστεί ένας χαρακτήρας "lf" (linefeed).
  • μετά το οποίο ρίχνει τα πρώτα 307200 byte τοπικών δεδομένων στον πίνακα byteBuffer .
  • Επίσης, αποθηκεύει τον αριθμό των byte που έλαβε (307201) σε μια μεταβλητή που ονομάζεται "byteCount".

Γραμμή κωδικού 4:

εικονοστοιχεία = χρώμα (byteBuffer );

Όταν τοποθετείται σε έναν επόμενο βρόχο, ο υποκείμενος κώδικας σε αυτήν τη δήλωση:

  • αντιγράφει το περιεχόμενο του πίνακα "byteBuffer " στον πίνακα "pixels"
  • τα περιεχόμενα των οποίων εμφανίζονται στο παράθυρο της εικόνας.

Βασικά κτυπήματα:

Η αρπαγή πλαισίου αναγνωρίζει τα ακόλουθα πλήκτρα:

  • ‘C’ = καταγράψτε την εικόνα
  • ‘S’ = αποθηκεύστε την εικόνα στο αρχείο.

Βήμα 7: Λογισμικό

Κατεβάστε και εγκαταστήστε καθένα από τα παρακάτω πακέτα λογισμικού εάν δεν είναι ήδη εγκατεστημένα:

  • "Arduino" από
  • "Java 8" από https://java.com/en/download/ [1]
  • "Επεξεργασία 3" από

Εγκατάσταση του σκίτσου Arduino:

  • Αφαιρέστε όλα τα καλώδια βραχυκυκλωτήρα OV7670 [2]
  • Συνδέστε ένα καλώδιο USB στο Arduino σας
  • Αντιγράψτε τα περιεχόμενα του "OV7670_camera_mono_V2.ino" (επισυνάπτεται) σε ένα "σκίτσο" Arduino και αποθηκεύστε.
  • Ανεβάστε το σκίτσο στο Arduino σας.
  • Αποσυνδέστε το Arduino
  • Τώρα μπορείτε να επανασυνδέσετε με ασφάλεια τα καλώδια βραχυκυκλωτήρα OV7670
  • Επανασυνδέστε το καλώδιο USB.

Εγκατάσταση και εκτέλεση του σκίτσου επεξεργασίας

  • Αντιγράψτε τα περιεχόμενα του "OV7670_camera_mono_V2.pde" (επισυνάπτεται) σε "σκίτσο" επεξεργασίας και αποθηκεύστε.
  • Κάντε κλικ στο επάνω αριστερό κουμπί "εκτέλεση" … θα εμφανιστεί ένα μαύρο παράθυρο εικόνας
  • Κάντε κλικ στο "μαύρο" παράθυρο εικόνας
  • Πατήστε το πλήκτρο "c" για να τραβήξετε μια εικόνα. (περίπου 6,4 δευτερόλεπτα).
  • Πατήστε το πλήκτρο "s" για να αποθηκεύσετε την εικόνα στο φάκελο επεξεργασίας
  • Επαναλάβετε τα βήματα 4 και 5
  • Κάντε κλικ στο κουμπί "διακοπή" για έξοδο από το πρόγραμμα.

Σημειώσεις

[1]

Η επεξεργασία 3 απαιτεί Java 8

[2]

Αυτό είναι ένα "μόνο μία φορά" βήμα ασφαλείας για να αποφύγετε την καταστροφή του τσιπ κάμερας OV7670.

Μέχρι να μεταφορτωθεί το σκίτσο "OV7670_camera_mono.ini" στο Arduino σας, οι εσωτερικές αντιστάσεις έλξης είναι συνδεδεμένες στα 5 βολτ, καθώς υπάρχει η πιθανότητα ορισμένες από τις γραμμές δεδομένων Arduino να είναι έξοδοι 5 βολτ … όλα θανατηφόρα το τσιπ της κάμερας 3v3 volt OV7670.

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

Βήμα 8: Λήψη έγχρωμης εικόνας

Λήψη έγχρωμης εικόνας
Λήψη έγχρωμης εικόνας
Λήψη έγχρωμης εικόνας
Λήψη έγχρωμης εικόνας
Λήψη έγχρωμης εικόνας
Λήψη έγχρωμης εικόνας

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

Για να αποκτήσουμε μια έγχρωμη εικόνα, πρέπει να καταγραφούν όλα τα byte δεδομένων και να εφαρμοστούν οι ακόλουθοι τύποι.

Το OV7670 χρησιμοποιεί τους ακόλουθους τύπους για τη μετατροπή πληροφοριών χρώματος RGB (κόκκινο, πράσινο, μπλε) σε YUV (4: 2: 2): [1]

  • Υ = 0,31*R + 0,59*G + 0,11*Β
  • U = B - Y
  • V = R - Y
  • Cb = 0.563*(B-Y)
  • Cr = 0,713*(R-Y)

Οι ακόλουθοι τύποι μπορούν να χρησιμοποιηθούν για τη μετατροπή του YUV (4: 2: 2) σε χρώμα RGB: [2]

  • R = Y + 1,402* (Cr - 128)
  • G = Y -0.344136*(Cb -128) -0.714136*(Cr -128)
  • Β = Υ + 1,772*(Cb -128)

Το συνημμένο λογισμικό είναι απλώς μια επέκταση του μονόχρωμου λογισμικού:

  • Ένα αίτημα σύλληψης "c" αποστέλλεται στο Arduino
  • Το Arduino στέλνει τα ζυγαριθμημένα (μονόχρωμα) byte στον υπολογιστή
  • Ο υπολογιστής αποθηκεύει αυτά τα bytes σε έναν πίνακα
  • Το Arduino στη συνέχεια στέλνει τα μονά αριθμημένα (χρώματα) byte στον υπολογιστή.
  • Αυτά τα byte αποθηκεύονται σε έναν δεύτερο πίνακα … έχουμε τώρα ολόκληρη την εικόνα.
  • Οι παραπάνω τύποι εφαρμόζονται τώρα σε κάθε ομάδα τεσσάρων byte δεδομένων UYVY.
  • Τα εικονοστοιχεία που προκύπτουν έπειτα τοποθετούνται στον πίνακα "pixels"
  • Ο υπολογιστής σαρώνει τον πίνακα "pixels " και μια εικόνα εμφανίζεται στο παράθυρο "εικόνα".

Το λογισμικό Processing 3 εμφανίζει εν συντομία κάθε σάρωση και τα τελικά αποτελέσματα:

  • Η φωτογραφία 1 δείχνει τα δεδομένα χρώματος U & V από τη σάρωση 1
  • Η φωτογραφία 2 δείχνει τα δεδομένα φωτεινότητας Y1 & Y2 από τη σάρωση 2
  • Η φωτογραφία 3 δείχνει την έγχρωμη εικόνα… μόνο ένα πράγμα δεν πάει καλά… η τσάντα πρέπει να είναι πράσινη !!

Θα δημοσιεύσω νέο κώδικα μόλις λύσω αυτό το πρόγραμμα…

Βιβλιογραφικές αναφορές:

[1]

www.haoyuelectronics.com/Attachment/OV7670%… (σελίδα 33)

[2]

en.wikipedia.org/wiki/YCbCr (μετατροπή JPEG)

Κάντε κλικ εδώ για να δείτε τις άλλες οδηγίες μου.

Συνιστάται: