Πίνακας περιεχομένων:
- Βήμα 1: Διαμόρφωση του Vivado
- Βήμα 2: Συσκευασία IP προγράμματος οδήγησης VGA
- Βήμα 3: Zynq IP
- Βήμα 4: IP GPIO
- Βήμα 5: Αποκλεισμός μνήμης
- Βήμα 6: Άλλη IP
- Βήμα 7: SDK
- Βήμα 8: Συμπέρασμα
Βίντεο: Mirror Display: 8 Βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:36
Ο στόχος αυτού του έργου είναι να δημιουργήσει τη λειτουργία εμφάνισης εικόνας ενός Smart Mirror. Ο καθρέφτης μπορεί να εμφανίζει προβλέψεις (ηλιόλουστες, μερικώς ηλιόλουστες, νεφελώδεις, θυελλώδεις, βροχές, βροντές και χιόνι) και τιμές θερμοκρασίας από -9999 ° έως 9999 °. Οι τιμές πρόβλεψης και θερμοκρασίας είναι σκληρά κωδικοποιημένες σαν να μιμούνται αυτές που αναλύονται από ένα API καιρού.
Το έργο χρησιμοποιεί έναν πίνακα Zynq-Zybo-7000 που τρέχει το FreeRTOS και χρησιμοποιεί το Vivado 2018.2 για το σχεδιασμό και τον προγραμματισμό του υλικού.
Μέρη:
Zynq-Zybo-7000 (με FreeRTOS)
LCD 19 ιντσών (640x480)
Καλώδιο VGA
Ακρυλικός καθρέφτης 12 "x 18"
Βήμα 1: Διαμόρφωση του Vivado
Κατεβάστε το Vivado 2018.2 από το Xilinx και χρησιμοποιήστε την άδεια Webpack. Εκκινήστε το Vivado και "Δημιουργήστε νέο έργο" και δώστε του ένα όνομα. Στη συνέχεια, επιλέξτε "Έργο RTL" και επιλέξτε "Μην καθορίσετε πηγές αυτήν τη στιγμή." Όταν επιλέγετε ένα μέρος, επιλέξτε "xc7z010clg400-1" και πατήστε "Τέλος" στην επόμενη σελίδα.
Βήμα 2: Συσκευασία IP προγράμματος οδήγησης VGA
Προσθέστε το αρχείο vga_driver.sv στις Πηγές σχεδίασης. Στη συνέχεια, κάντε κλικ στην επιλογή "Εργαλεία" και επιλέξτε "Δημιουργία και συσκευασία νέας IP". Επιλέξτε "Συσκευάστε το τρέχον έργο σας". Στη συνέχεια, επιλέξτε μια τοποθεσία IP και "Συμπερίληψη αρχείων.xci". Κάντε κλικ στο "OK" στο αναδυόμενο παράθυρο και, στη συνέχεια, στο "Τέλος".
Στο "Βήματα συσκευασίας", μεταβείτε στην ενότητα "Έλεγχος και συσκευασία" και επιλέξτε "IP πακέτου".
Τώρα το vga_driver θα πρέπει να είναι διαθέσιμο ως μπλοκ IP.
Βήμα 3: Zynq IP
Στην ενότητα "IP Integrator", επιλέξτε "Δημιουργία σχεδίου μπλοκ". Προσθέστε το "Σύστημα επεξεργασίας ZYNQ7" και κάντε διπλό κλικ στο μπλοκ. Κάντε κλικ στην επιλογή "Εισαγωγή ρυθμίσεων XPS" και ανεβάστε το αρχείο ZYBO_zynq_def.xml.
Στη συνέχεια, στην ενότητα "PS-PL Configuration" ανοίξτε το αναπτυσσόμενο μενού για "AXI Non Secure Enablement" και ελέγξτε "M AXI GP0 interface."
Στη συνέχεια, στην ενότητα "Διαμόρφωση MIO" ανοίξτε το αναπτυσσόμενο μενού για "Μονάδα επεξεργαστή εφαρμογών" και επιλέξτε "Χρονόμετρο 0" και "Watchdog".
Τέλος, στην ενότητα "Διαμόρφωση ρολογιού" ανοίξτε το αναπτυσσόμενο μενού για "PL Fabric Clocks" και ελέγξτε το "FCLK_CLK0" και στα 100 MHz.
Βήμα 4: IP GPIO
Προσθέστε δύο μπλοκ GPIO στο Block Design. Τα GPIO θα χρησιμοποιηθούν για τον έλεγχο της διεύθυνσης εικονοστοιχείου και των στοιχείων RGB των εικονοστοιχείων. Διαμορφώστε τα μπλοκ όπως φαίνεται στις παραπάνω εικόνες. Μόλις προσθέσετε και διαμορφώσετε και τα δύο μπλοκ, κάντε κλικ στην επιλογή "Εκτέλεση αυτοματισμού σύνδεσης".
GPIO 0 - Το κανάλι 1 ελέγχει τη διεύθυνση pixel και το κανάλι 2 ελέγχει το κόκκινο χρώμα.
GPIO 1 - Το κανάλι 1 ελέγχει το πράσινο χρώμα και το κανάλι 2 ελέγχει το μπλε χρώμα.
Βήμα 5: Αποκλεισμός μνήμης
Προσθέστε μια IP Block Memory Generator στο Block Design και ρυθμίστε τις παραμέτρους όπως φαίνεται παραπάνω. Τα χρώματα των εικονοστοιχείων γράφονται σε διευθύνσεις μνήμης οι οποίες στη συνέχεια διαβάζονται από το πρόγραμμα οδήγησης VGA. Η γραμμή διευθύνσεων πρέπει να αντιστοιχεί στον αριθμό των εικονοστοιχείων που χρησιμοποιούνται, οπότε πρέπει να είναι 16 bit. Τα δεδομένα είναι επίσης 16 bit αφού υπάρχουν 16 bit χρώματος. Δεν μας ενδιαφέρει να διαβάσουμε τυχόν κομμάτια αναγνώρισης.
Βήμα 6: Άλλη IP
Το συνημμένο pdf δείχνει τον ολοκληρωμένο σχεδιασμό Block. Προσθέστε την IP που λείπει και ολοκληρώστε τις συνδέσεις. Επίσης, "Make Externals" για τις εξόδους χρώματος VGA και τις κατακόρυφες και οριζόντιες εξόδους συγχρονισμού.
xlconcat_0 - Συνδυάζει τα μεμονωμένα χρώματα για να σχηματίσει ένα σήμα RGB 16 bit που τροφοδοτείται στη μνήμη RAM Block.
xlconcat_1 - Συνενώνει τα σήματα της στήλης και της σειράς από το πρόγραμμα οδήγησης VGA και τροφοδοτείται στη θύρα Β της μνήμης RAM. Αυτό επιτρέπει στο πρόγραμμα οδήγησης VGA να διαβάζει τιμές χρωμάτων pixel.
VDD - Constant HIGH συνδεδεμένο με τη δυνατότητα εγγραφής της μνήμης RAM Block, έτσι ώστε να μπορούμε πάντα να την επιλέγουμε.
xlslice_0, 1, 2 - Οι φέτες χρησιμοποιούνται για να σπάσουν το σήμα RGB σε μεμονωμένα σήματα R, G και B που μπορούν να τροφοδοτηθούν στο πρόγραμμα οδήγησης VGA.
Μόλις ολοκληρωθεί το Block Design, δημιουργήστε ένα περιτύλιγμα HDL και προσθέστε το αρχείο περιορισμών.
*Το Block Design βασίζεται στο σεμινάριο που γράφτηκε από το benlin1994*
Βήμα 7: SDK
Ο κώδικας που εκτελεί αυτό το Block Design περιλαμβάνεται παρακάτω. Το Init.c περιέχει τις συναρτήσεις που χειρίζονται το σχέδιο (προβλέψεις, αριθμοί, σύμβολο βαθμού κ.λπ.). Ο κύριος βρόχος στο main.c είναι αυτό που τρέχει όταν προγραμματιστεί ο πίνακας. Αυτός ο βρόχος ορίζει τις τιμές πρόβλεψης και θερμοκρασίας και, στη συνέχεια, καλεί τις συναρτήσεις σχεδίασης στο init.c. Αυτή τη στιγμή περνάει και στις επτά προβλέψεις και εμφανίζεται η μία μετά την άλλη. Συνιστάται να προσθέσετε ένα σημείο διακοπής στη γραμμή 239, ώστε να μπορείτε να δείτε κάθε εικόνα. Ο κωδικός σχολιάζεται και θα σας δώσει περισσότερες πληροφορίες.
Βήμα 8: Συμπέρασμα
Για τη βελτίωση του τρέχοντος έργου, θα μπορούσαμε να ανεβάσουμε εικόνες πρόβλεψης προφόρτωσης με τη μορφή αρχείων COE στο Block Memory Generators. Έτσι, αντί να σχεδιάζουμε τις προβλέψεις χειροκίνητα όπως κάναμε στον κωδικό C, θα μπορούσαμε να διαβάσουμε τις εικόνες. Προσπαθήσαμε να το κάνουμε αυτό, αλλά δεν καταφέραμε να λειτουργήσει. Μασταν σε θέση να διαβάσουμε τιμές pixel και να τις βγάλουμε, αλλά δημιούργησε ακατάστατες εικόνες που δεν έμοιαζαν με αυτές που ανεβάσαμε στη μνήμη RAM. Το φύλλο δεδομένων Block Memory Generator είναι χρήσιμο για ανάγνωση.
Το έργο είναι ουσιαστικά το ήμισυ ενός Smart Mirror αφού του λείπει η πτυχή της συνδεσιμότητας στο Διαδίκτυο. Η προσθήκη αυτού θα δώσει έναν πλήρη Smart Mirror.
Συνιστάται:
Φτιάξτε έναν EASY Infinity Mirror Cube - ΟΧΙ Τρισδιάστατη εκτύπωση και ΟΧΙ προγραμματισμός: 15 βήματα (με εικόνες)
Φτιάξτε έναν EASY Infinity Mirror Cube | ΟΧΙ Τρισδιάστατη εκτύπωση και ΟΧΙ προγραμματισμός: Σε όλους αρέσει ένας καλός κύβος απείρου, αλλά μοιάζουν σαν να είναι δύσκολο να φτιαχτούν. Ο στόχος μου για αυτό το Instructable είναι να σας δείξω βήμα-βήμα πώς να το φτιάξετε. Όχι μόνο αυτό, αλλά με τις οδηγίες που σας δίνω, θα μπορείτε να κάνετε μία
Easy Infinity Mirror With Arduino Gemma & NeoPixels: 8 βήματα (με εικόνες)
Easy Infinity Mirror With Arduino Gemma & NeoPixels: Ιδού! Κοιτάξτε βαθιά στον μαγευτικό και απατηλά απλό καθρέφτη απείρου! Μια λωρίδα LED λάμπει προς τα μέσα σε ένα σάντουιτς καθρέφτη για να δημιουργήσει το αποτέλεσμα της ατελείωτης αντανάκλασης. Αυτό το έργο θα εφαρμόσει τις δεξιότητες και τις τεχνικές από το εισαγωγικό μου Arduin
DIY Vanity Mirror σε εύκολα βήματα (χρησιμοποιώντας φώτα λωρίδας LED): 4 βήματα
DIY Vanity Mirror σε εύκολα βήματα (χρησιμοποιώντας φώτα λωρίδας LED): Σε αυτήν την ανάρτηση, έφτιαξα ένα DIY Vanity Mirror με τη βοήθεια των λωρίδων LED. Είναι πραγματικά υπέροχο και πρέπει να τα δοκιμάσετε επίσης
Usare Un Display Grande a 4 Cifre 8886 Display Con Wemos ESP8266 Arduino NodeMCU: 6 Βήματα
Usare Un Display Grande a 4 Cifre 8886 Display Con Wemos ESP8266 Arduino NodeMCU: Questo progetto è un semplice esempio che mostra come kolegare un display del tipo 8886 -Display e, per comodità nostra, un Wemos D1 - ma potrebbe essere un Arduino o un N o qualsiasi altro microcontrollore che state usando per un progetto.Esi
Breadboard Voltage Regulator With Display / Regulador De Voltagem Com Display Para Placa De Ensaio: 8 Βήματα
Breadboard Voltage Regulator With Display / Regulador De Voltagem Com Display Para Placa De Ensaio: Αποκτήστε τα απαραίτητα εξαρτήματα που βρίσκονται στη συνημμένη λίστα (υπάρχουν σύνδεσμοι για να αγοράσετε ή να δείτε τα χαρακτηριστικά τους). Adquirir os συστατικά στοιχεία τα οποία είναι απαραίτητα για τη λίστα αναφοράς (estão lá os links para poderem comprar ou ver as caracteristicas d