Πίνακας περιεχομένων:
- Βήμα 1: Χρονόμετρο
- Βήμα 2: Βελτιστοποίηση κουμπιών
- Βήμα 3: LED
- Βήμα 4: Κορυφαίο αρχείο
- Βήμα 5: Αρχείο περιορισμών
- Βήμα 6: Καλωδίωση του αισθητήρα κίνησης PIR
- Βήμα 7: Καλωδίωση της λυχνίας LED στο Breadboard
- Βήμα 8: Συνδέσεις του πίνακα Basys
Βίντεο: LED με αισθητήρα κίνησης: 8 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:37
Ιστορικό:
Ξεχνάτε ποτέ να σβήσετε ένα φως πριν ξεκινήσετε για το μάθημα ή τη δουλειά ή πριν πάτε για ύπνο; Αυτές οι ώρες με τα φώτα αναμμένα όταν δεν τα χρησιμοποιείτε μπορεί πραγματικά να προσθέσουν κόστος και απώλεια ενέργειας. Για παράδειγμα, σύμφωνα με το solarcity.com, αν αφήσετε τα φώτα ανοιχτά όλη τη νύχτα για μια εβδομάδα, μπορείτε να προσθέσετε 25 $ στον λογαριασμό ηλεκτρικού ρεύματος! Για το έργο μας CPE133, σχεδιάζουμε ένα φως αισθητήρα κίνησης για να βοηθήσουμε τους ανθρώπους να εξοικονομήσουν ενέργεια στα σπίτια τους και να χρησιμοποιήσουν τα φώτα τους αποτελεσματικά.
Το σύστημά μας στην πράξη:
Στην πράξη, τα φώτα θα ανάβουν μόνο όταν ένας αισθητήρας ανιχνεύσει κίνηση στο δωμάτιο. Στη συνέχεια, τα φώτα θα παραμείνουν αναμμένα για ένα ορισμένο χρονικό διάστημα, περίπου 30 λεπτά, και στη συνέχεια θα σβήσουν αυτόματα. Αλλά ας πούμε ότι μόλις περνούσατε ή θέλατε να φύγετε από το δωμάτιο νωρίς πριν τελειώσει το καθορισμένο χρονικό διάστημα. Για αυτές τις περιπτώσεις, εγκαταστήσαμε ένα κουμπί όπου μπορείτε να ανάψετε ή να σβήσετε τα φώτα χειροκίνητα. Σημειώστε ότι τα φώτα θα παραμείνουν αναμμένα για 30 λεπτά ακόμη και όταν τα φώτα ανάβουν χειροκίνητα ή αυτόματα (εκτός εάν τα φώτα σβήσουν χειροκίνητα).
Προσομοίωση επί του σκάφους:
Για να δούμε ότι λειτουργεί το χρονόμετρο αλλάξαμε το χρονόμετρο σε 1 λεπτό.
Υλικά:
- 1 πίνακας Basys (μπορείτε να βρείτε εδώ από το Digilent)
- 1 αισθητήρας κίνησης PIR (μπορείτε να βρείτε έναν εδώ στο Amazon)
- 1 breadboard και κιτ (προτείνουμε να χρησιμοποιήσετε αυτό από το Amazon)
-
Από το κιτ παραπάνω
- 1 LED
- 3 καλώδια από jumper έως αρσενικά
- 6 καλώδια από jumper για άνδρες έως άνδρες
Βήμα 1: Χρονόμετρο
Για να παραμείνει αναμμένη η λυχνία LED για 1 λεπτό, πρέπει πρώτα να δημιουργήσουμε ένα χρονόμετρο. Ο πίνακας Basys 3 έχει εσωτερική συχνότητα 100MHz κάνοντας έτσι 100 εκατομμύρια κύκλους ίσους με 1 δευτερόλεπτο. Στη συνέχεια χρησιμοποιείται ως μεταβλητή που λειτουργεί ως μέγιστος αριθμός για το "t_cnt". Το t_cnt αυξάνεται κατά 1 καθώς ο πίνακας Basys 3 ολοκληρώνει έναν κύκλο. Μόλις φτάσει τα 100 εκατομμύρια, θα επαναρυθμιστεί και μια άλλη μεταβλητή, "sec", θα αυξηθεί κατά 1. Αυτή η μεταβλητή "sec" αντιπροσωπεύει τον αριθμό των δευτερολέπτων που έχουν περάσει και μόλις αυτή η μεταβλητή είναι ίση με 60, έχει περάσει ένα πλήρες λεπτό.
Αντιγράψτε τον παρακάτω κώδικα σε ένα αρχείο προέλευσης vhdl με όνομα Χρονόμετρο.
οντότητα COUNT_8B είναι
θύρα (ΕΠΑΝΑΦΟΡΑ: σε std_logic;
CLK: στο std_logic; T: out std_logic: = '0');
τέλος COUNT_8B.
αρχιτεκτονική my_count των COUNT_8B είναι
σταθερή max_count: ακέραιος: = (100000000); --signal t_cnt: std_logic_vector (7 κάτω στο 0): = "00000000"; σήμα t_cnt: ακέραιος: = (0); έναρξη διαδικασίας (CLK, RESET, t_cnt) μεταβλητή sec: ακέραιος: = 0; ξεκινήστε εάν (αυξανόμενη άκρη (CLK)) στη συνέχεια εάν (RESET = '1') στη συνέχεια t_cnt <= (0); - διαγραφή elsif (t_cnt = max_count) τότε- max_count είναι 100 εκατομμύρια που είναι ίσο με 1 δευτερόλεπτο t_cnt <= (0)? - Επαναφέρει το εσωτερικό ρολόι στα 0 sec: = sec + 1. - Αυξάνει το 'αργό ρολόι' μας κατά 1 εάν (sec = 60) τότε- Μόλις φτάσει τα 60 δευτερόλεπτα τότε έχει φτάσει στο μέγιστο χρόνο sec: = 0; - Επαναφέρει το "αργό ρολόι" σε 0 T <= '1'. τέλος εαν; αλλιώς t_cnt <= t_cnt + 1; - αυξάνει το εσωτερικό ρολόι T <= '0'. τέλος εαν; τέλος εαν; τελική διαδικασία? τέλος my_count?
Βήμα 2: Βελτιστοποίηση κουμπιών
Δεδομένου ότι η συχνότητα στους πίνακες του Basys είναι τόσο υψηλή (περίπου 100 MHz) όταν πατάτε για αυτό που νομίζετε ότι είναι σύντομο χρονικό διάστημα στον πίνακα Basys, θα το πιέζατε 100.000 φορές. Αυτό προκαλεί το φως να τρεμοπαίζει γρήγορα μεταξύ της κατάστασης ενεργοποίησης και απενεργοποίησης. Προσπαθήσαμε να βελτιστοποιήσουμε το κουμπί δημιουργώντας ένα διάγραμμα κατάστασης για να μειώσουμε το τρεμόπαιγμα.
Τα d-flip-flops θα συγκρατούν κάθε κατάσταση και στη συνέχεια θα καθορίσουμε τις μεταβάσεις κατάστασης στη δήλωση διεργασίας.
Αντιγράψτε τον παρακάτω κώδικα σε ένα αρχείο προέλευσης vhdl που ονομάζεται Κουμπί.
βιβλιοθήκη IEEE; χρήση IEEE. STD_LOGIC_1164. ALL;
κουμπί οντότητας είναι
Θύρα (btn: σε STD_LOGIC; clk: σε STD_LOGIC; E: εκτός STD_LOGIC); κουμπί λήξης?
αρχιτεκτονική Συμπεριφορά του κουμπιού είναι
τύπου state_type είναι (PRESSED, NP)? σήμα PS, NS: state_type: = NP;
να αρχίσει
seq_proc: η διαδικασία (NS, clk) ξεκινά εάν (αυξανόμενη άκρη (clk)) τότε PS <= NS; τέλος εαν; τερματισμός διαδικασίας seq_proc;
ns_proc: διαδικασία (btn, PS)
αρχική περίπτωση PS είναι όταν NP => if (btn = '1') τότε NS <= PRESSED? Ε <= '1'; αλλιώς NS <= NP; E εάν (btn = '0') τότε NS <= NP; Ε <= '0'; else NS <= ΤΥΠΩΜΕΝΟ? Ε <= '0'; τέλος εαν; τελική περίπτωση? τερματισμός διαδικασίας ns_proc;
τέλος Συμπεριφορική?
Βήμα 3: LED
Το LED έχει δύο καταστάσεις: OFF (ή IDLE) και ON. Όπως προαναφέρθηκε, οι καταστάσεις αποθηκεύονται σε d-flip-flop. Η λυχνία θα ανάψει εάν ο αισθητήρας ανιχνεύσει κίνηση (S = 1) ή όταν πατηθεί ένα κουμπί (E = 1). Η λυχνία LED θα σβήσει αυτόματα εάν ο χρονοδιακόπτης φτάσει το 1 λεπτό (T = 1) ή χειροκίνητα όταν πατήσετε ένα κουμπί (E = 1).
Αντιγράψτε τον παρακάτω κώδικα σε ένα αρχείο προέλευσης vhdl με το όνομα LED.
η κίνηση: εκτός STD_LOGIC; - φως TRST: εκτός STD_LOGIC; - επαναφέρει το χρονόμετρο clk: σε STD_LOGIC); - clk για flip flop που συγκρατούν τις καταστάσεις τέλους motion_sensored_light.
αρχιτεκτονική Συμπεριφορά της κίνησης_αίσθησης_φως είναι
τύπος state_type είναι (ST0, ST1). --ST0 = IDLE, ST1 = LED HIGH
σήμα PS, NS: state_type: = ST0; - ΠΑΡΟΥΣΑ ΚΡΑΤΟΣ ΚΑΙ ΕΠΟΜΕΝΟ ΚΡΑΤΟΣ, ξεκινά στο ST0 IDLE
να αρχίσει
- μπλοκ διεργασίας του flip flop- ενημερώνει την κατάσταση στην ανερχόμενη άκρη του ρολογιού seq_proc: ξεκινά η διαδικασία (NS, clk)- d flip flop που κρατά καταστάσεις if (იზრდება_edge (clk)) τότε PS <= NS; τέλος εαν; τερματισμός διαδικασίας seq_proc;
ns_proc: διαδικασία (S, E, T, PS)
αρχική περίπτωση PS είναι όταν ST0 => LED <= '0'? - έξοδοι για κατάσταση αδράνειας TRST <= '1', εάν (S = '0' E E = '1') τότε - εισόδους για μετάβαση από st0 σε st1 NS <= ST1; αλλιώς NS LED <= '1'; - έξοδοι για κατάσταση TRST <= '0', εάν (E = '1' T T = '1') τότε - εισάγει στη μετάβαση από st1 σε st0 NS <= ST0; αλλιώς NS <= ST1; τέλος εαν; τελική περίπτωση? τερματισμός διαδικασίας ns_proc;
τέλος Συμπεριφορική?
Βήμα 4: Κορυφαίο αρχείο
Τώρα θα μεταφέρουμε το χάρτη όλων των άλλων αρχείων σε ένα.
Αντιγράψτε τον παρακάτω κώδικα σε ένα αρχείο προέλευσης vhdl με το όνομα Top_File.
βιβλιοθήκη IEEE; χρήση IEEE. STD_LOGIC_1164. ALL;
οντότητα Top_File είναι
Θύρα (S: σε STD_LOGIC: = '1'; - sesnor; Θύρα JA10/Pin G3 btn: σε STD_LOGIC: = '0'; - εξωτερικό κουμπί για χειροκίνητη λειτουργία. Κεντρικό κουμπί LED: εκτός STD_LOGIC; - φως clk: σε STD_LOGIC); - clk για flip flop που συγκρατούν τις καταστάσεις στο τέλος Top_File.
αρχιτεκτονική Συμπεριφορική του Top_File είναι
στοιχείο COUNT_8B είναι
θύρα (RESET: in std_logic: = '0'; CLK: in std_logic; T: out std_logic: = '0'); τελικό στοιχείο? component motion_sensored_light είναι Port (S: σε STD_LOGIC; - sesnor; Port JA10/Pin G3 E: σε STD_LOGIC; - εξωτερικό κουμπί για χειροκίνητη λειτουργία. Κεντρικό κουμπί T: σε STD_LOGIC; - όταν ο χρονοδιακόπτης φτάσει στο μέγιστο χρόνο. Από το χρονόμετρο LED: εκτός STD_LOGIC; - φως TRST: εκτός STD_LOGIC; - επαναφέρει το χρονόμετρο clk: σε STD_LOGIC); - clk για σαγιονάρες που συγκρατούν το τελικό συστατικό καταστάσεων. Το κουμπί συστατικού είναι Port (btn: σε STD_LOGIC; clk: σε STD_LOGIC; E: out STD_LOGIC); τελικό στοιχείο? σήμα t_reached_c: std_logic; - σήμα r_time_c: std_logic; - σήμα button_c: std_logic;
να αρχίσει
χρονόμετρο: COUNT_8B χάρτης θύρας (RESET => r_time_c, CLK => CLK, T => t_reached_c); motion_sensor: map_sensored_light map map (S => S, E => button_c, T => t_reached_c, LED => LED, TRST => r_time_c, clk => clk); button_controller: κουμπί θύρας χάρτη (btn => btn, clk => clk, E => button_c); τέλος Συμπεριφορική?
Βήμα 5: Αρχείο περιορισμών
Τώρα πρέπει να καθορίσουμε πού θα είναι οι εισόδους και οι έξοδοι μας στον πίνακα.
Αντιγράψτε τον παρακάτω κώδικα σε ένα αρχείο περιορισμών vhdl που ονομάζεται Περιορισμοί.
## Αυτό το αρχείο είναι ένα γενικό.xdc για τον πίνακα Basys3 rev B ## Για να το χρησιμοποιήσετε σε ένα έργο: ## - σχολιάστε τις γραμμές που αντιστοιχούν στις χρησιμοποιούμενες ακίδες ## - μετονομάστε τις χρησιμοποιημένες θύρες (σε κάθε γραμμή, μετά το get_ports) σύμφωνα στα ονόματα σήματος ανώτερου επιπέδου στο έργο
## Σήμα ρολογιού
set_property PACKAGE_PIN W5 [get_ports clk] set_property IOSTANDARD LVCMOS33 [get_ports clk] create_clock -add -name sys_clk_pin -period 10.00 -waveform {0 5} [get_ports clk] ## Switches #set_property PACKAGE set_property IOSTANDARD LVCMOS33 [get_ports {sw [0]}] #set_property PACKAGE_PIN V16 [get_ports {sw [1]}] #set_property IOSTANDARD LVCMOS33 [get_ports {sw [1]}] #set_property PACKAGE_PIN sw16 [get] #set_property IOSTANDARD LVCMOS33 [get_ports {sw [2]}] #set_property PACKAGE_PIN W17 [get_ports {sw [3]}] #set_property IOSTANDARD LVCMOS33 [get_ports {sw [3]}] #set_property PACKAGE_PIN W15 [get_ports]}] #set_property IOSTANDARD LVCMOS33 [get_ports {sw [4]}] #set_property PACKAGE_PIN V15 [get_ports {sw [5]}] #set_property IOSTANDARD LVCMOS33 [get_ports {sw [5]}] #set_property PACKAGE_PIN W14 [6]}] #set_property IOSTANDARD LVCMOS33 [get_ports {sw [6]}] #set_property PACKAGE_PIN W13 [get_ports {sw [7]}] #set_property IOSTANDARD LVCMOS33 [get_ports {sw [7]}] #set_property PACKAGE_PIN V2 [get_ports {sw [8]}] #set_property IOSTANDARD LVCMOS33 [get_ports {sw [8]}] #set_property PACKAGE_PIN T3 [get_ports {sw [9]}] #set_property IOST LVCMOS33 [get_ports {sw [9]}] #set_property PACKAGE_PIN T2 [get_ports {sw [10]}] #set_property IOSTANDARD LVCMOS33 [get_ports {sw [10]}] #set_property PACKAGE_PIN R3 [get_ports {sw [11]}] # set_property IOSTANDARD LVCMOS33 [get_ports {sw [11]}] #set_property PACKAGE_PIN W2 [get_ports {sw [12]}] #set_property IOSTANDARD LVCMOS33 [get_ports {sw [12]}] #set_property PACKAGE_PIN U1 [get] 13] #set_property IOSTANDARD LVCMOS33 [get_ports {sw [13]}] #set_property PACKAGE_PIN T1 [get_ports {sw [14]}] #set_property IOSTANDARD LVCMOS33 [get_ports {sw [14]}] #set_property PACKAGE_PIN R2 [get]}] #set_property IOSTANDARD LVCMOS33 [get_ports {sw [15]}]
## LED
#set_property PACKAGE_PIN U16 [get_ports {led [0]}] #set_property IOSTANDARD LVCMOS33 [get_ports {led [0]}] #set_property PACKAGE_PIN E19 [get_ports {led [1]}] #set_property IOSTANDARD LVCMOS33 [get }] #set_property PACKAGE_PIN U19 [get_ports {led [2]}] #set_property IOSTANDARD LVCMOS33 [get_ports {led [2]}] #set_property PACKAGE_PIN V19 [get_ports {led [3]}] #set_property IOSTANDARD LVCMOS 3]}] #set_property PACKAGE_PIN W18 [get_ports {led [4]}] #set_property IOSTANDARD LVCMOS33 [get_ports {led [4]}] #set_property PACKAGE_PIN U15 [get_ports {led [5]}] #set_property IOSTANDARD LVCM led [5]}] #set_property PACKAGE_PIN U14 [get_ports {led [6]}] #set_property IOSTANDARD LVCMOS33 [get_ports {led [6]}] #set_property PACKAGE_PIN V14 [get_ports {led [7]}] #set_property IOSTANDARD LV get_ports {led [7]}] #set_property PACKAGE_PIN V13 [get_ports {led [8]}] #set_property IOSTANDARD LVCMOS33 [get_ports {led [8]}] #set_property PACKAGE_PIN V3 [get_ports {led [9]}] #set_property IOSTANDARD LVCMOS33 [get_ports {led [9]}] #set_property PACKAGE_PIN W3 [get_ports {led [10]}] #set_property IOSTANDARD LVCMOS33 [get_ports {led [10]}] #set_property PACKAGE_PIN [11]}] #set_property IOSTANDARD LVCMOS33 [get_ports {led [11]}] #set_property PACKAGE_PIN P3 [get_ports {led [12]}] #set_property IOSTANDARD LVCMOS33 [get_ports {led [12]}] #set_property PACKAGE_P {led [13]}] #set_property IOSTANDARD LVCMOS33 [get_ports {led [13]}] #set_property PACKAGE_PIN P1 [get_ports {led [14]}] #set_property IOSTANDARD LVCMOS33 [get_ports {led [14]}] #set_propertin PACKAGE [get_ports {led [15]}] #set_property IOSTANDARD LVCMOS33 [get_ports {led [15]}] ## display 7 segment #set_property PACKAGE_PIN W7 [get_ports {seg [0]}] #set_property IOSTANDARD LVCMOS33 [get_ports {seg [0]}] #set_property PACKAGE_PIN W6 [get_ports {seg [1]}] #set_property IOSTANDARD LVCMOS33 [get_ports {seg [1]}] #set_property PACKAGE_PIN U8 [get_ports {seg [2]}] #set_property IOSTA NDARD LVCMOS33 [get_ports {seg [2]}] #set_property PACKAGE_PIN V8 [get_ports {seg [3]}] #set_property IOSTANDARD LVCMOS33 [get_ports {seg [3]}] #set_property PACKAGE_PIN U5 [get]ports} #set_property IOSTANDARD LVCMOS33 [get_ports {seg [4]}] #set_property PACKAGE_PIN V5 [get_ports {seg [5]}] #set_property IOSTANDARD LVCMOS33 [get_ports {seg [5]}] #set_property PACKAGE_PIN }] #set_property IOSTANDARD LVCMOS33 [get_ports {seg [6]}]
#set_property PACKAGE_PIN V7 [get_ports dp]
#set_property IOSTANDARD LVCMOS33 [get_ports dp]
#set_property PACKAGE_PIN U2 [get_ports {an [0]}]
#set_property IOSTANDARD LVCMOS33 [get_ports {an [0]}] #set_property PACKAGE_PIN U4 [get_ports {an [1]}] #set_property IOSTANDARD LVCMOS33 [get_ports {an [1]}] #set_property PACKAGE_PIN V4 [get] }] #set_property IOSTANDARD LVCMOS33 [get_ports {an [2]}] #set_property PACKAGE_PIN W4 [get_ports {an [3]}] #set_property IOSTANDARD LVCMOS33 [get_ports {an [3]}]
## Κουμπιά
set_property PACKAGE_PIN U18 [συμβάν ρυθμίστηκε btn] set_property IOSTANDARD LVCMOS33 [συμβάν ρυθμίστηκε btn] #set_property PACKAGE_PIN T18 [συμβάν ρυθμίστηκε btnU] #set_property IOSTANDARD LVCMOS33 [συμβάν ρυθμίστηκε btnU] #set_property PACKAGE_PIN W19 [συμβάν ρυθμίστηκε btnL] #set_property IOSTANDARD LVCMOS33 [συμβάν ρυθμίστηκε btnL] #set_property PACKAGE_PIN T17 [get_ports btnR] #set_property IOSTANDARD LVCMOS33 [get_ports btnR] #set_property PACKAGE_PIN U17 [get_ports btnD] #set_property IOSTANDARD LVCMOS33 [get_ports btnD]
## Pmod Header JA
## Sch name = JA1 #set_property PACKAGE_PIN J1 [get_ports {JA [0]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JA [0]}] ## Sch name = JA2 #set_property PACKAGE_PIN L2 [get_ports {JA [1] #set_property IOSTANDARD LVCMOS33 [get_ports {JA [1]}] ## Sch name = JA3 #set_property PACKAGE_PIN J2 [get_ports {JA [2]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JA [2]}] ## Sch = JA4 #set_property PACKAGE_PIN G2 [get_ports {JA [3]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JA [3]}] ## Sch name = JA7 #set_property PACKAGE_PIN H1 [get_ports {JA [4]}] #set_pro LVCMOS33 [get_ports {JA [4]}] ## Sch name = JA8 set_property PACKAGE_PIN K2 [get_ports LED] set_property IOSTANDARD LVCMOS33 [get_ports LED] ## Sch name = JA9 #set_property PACKAGE_PIN H2 [6]} {JA] set_property IOSTANDARD LVCMOS33 [get_ports {JA [6]}] ## Sch name = JA10 set_property PACKAGE_PIN G3 [get_ports S] set_property IOSTANDARD LVCMOS33 [get_ports S]
## Pmod Header JB
## Sch name = JB1 #set_property PACKAGE_PIN A14 [get_ports {JB [0]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JB [0]}] ## Sch name = JB2 #set_property PACKAGE_PIN A16 [get_ports {JB [1] #set_property IOSTANDARD LVCMOS33 [get_ports {JB [1]}] ## Sch name = JB3 #set_property PACKAGE_PIN B15 [get_ports {JB [2]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JB [2]}] ## Sch = JB4 #set_property PACKAGE_PIN B16 [get_ports {JB [3]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JB [3]}] ## Sch name = JB7 #set_property PACKAGE_PIN A15 [get_ports {JB [4]}] #AND_pro LVCMOS33 [get_ports {JB [4]}] ## Sch name = JB8 #set_property PACKAGE_PIN A17 [get_ports {JB [5]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JB [5]}] ## Sch name = JB9 #set_property PACKAGE_PIN C15 [get_ports {JB [6]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JB [6]}] ## Sch name = JB10 #set_property PACKAGE_PIN C16 [get_ports {JB [7]}] #set_property IOSTANDARD LV JB [7]}]
## Pmod Header JC
## Sch name = JC1 #set_property PACKAGE_PIN K17 [get_ports {JC [0]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JC [0]}] ## Sch name = JC2 #set_property PACKAGE_PIN M18 [get_ports {JC [1] #set_property IOSTANDARD LVCMOS33 [get_ports {JC [1]}] ## Sch name = JC3 #set_property PACKAGE_PIN N17 [get_ports {JC [2]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JC [2]}] ## Sch = JC4 #set_property PACKAGE_PIN P18 [get_ports {JC [3]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JC [3]}] ## Sch name = JC7 #set_property PACKAGE_PIN L17 [get_ports {JC [4]}] #set LVCMOS33 [get_ports {JC [4]}] ## Sch name = JC8 #set_property PACKAGE_PIN M19 [get_ports {JC [5]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JC [5]}] ## Sch name = JC9 #set_property PACKAGE_PIN P17 [get_ports {JC [6]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JC [6]}] ## Sch name = JC10 #set_property PACKAGE_PIN R18 [get_ports {JC [7]}] #set_property IOSTANDARD LV JC [7]}]
## Κεφαλίδα Pmod JXADC
## Sch name = XA1_P #set_property PACKAGE_PIN J3 [get_ports {JXADC [0]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JXADC [0]}] ## Sch name = XA2_P #set_property PACKAGE_PIN J3 [get] #set_property IOSTANDARD LVCMOS33 [get_ports {JXADC [1]}] ## Sch name = XA3_P #set_property PACKAGE_PIN M2 [get_ports {JXADC [2]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JXADC# 2] = XA4_P #set_property PACKAGE_PIN N2 [get_ports {JXADC [3]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JXADC [3]}] ## Sch name = XA1_N #set_property PACKAGE_PIN K3 [get_ports] Jpert_pro} LVCMOS33 [get_ports {JXADC [4]}] ## Sch name = XA2_N #set_property PACKAGE_PIN M3 [get_ports {JXADC [5]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JXADC [5]}] # #Sch όνομα = XA3_N PACKAGE_PIN M1 [get_ports {JXADC [6]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JXADC [6]}] ## Sch name = XA4_N #set_property PACKAGE_PIN N1 [get_ports {JXADC [7]}] IOS_ARDpert [get_ports {JXADC [7]}]
## Συνδετήρας VGA
#set_property PACKAGE_PIN G19 [get_ports {vgaRed [0]}] #set_property IOSTANDARD LVCMOS33 [get_ports {vgaRed [0]}] #set_property PACKAGE_PIN H19 [get_ports {vgaRed [1]}] #set_property IOST }] #set_property PACKAGE_PIN J19 [get_ports {vgaRed [2]}] #set_property IOSTANDARD LVCMOS33 [get_ports {vgaRed [2]}] #set_property PACKAGE_PIN N19 [get_ports {vgaRed [3]}] #set_property 4] vgaBlue [1]}] #set_property PACKAGE_PIN K18 [get_ports {vgaBlue [2]}] #set_property IOSTANDARD LVCMOS33 [get_ports {vgaBlue [2]}] #set_property PACKAGE_PIN J18 [get_ports {vgaBlue [3] get_ports {vgaBlue [3]}] #set_property PACKAGE_PIN J17 [get_ports {vgaGreen [0]}] #set_property IOSTANDARD LVCMOS33 [get_p orts {vgaGreen [0]}] #set_property PACKAGE_PIN H17 [get_ports {vgaGreen [1]}] #set_property IOSTANDARD LVCMOS33 [get_ports {vgaGreen [1]}] #set_property PACKAGE_PIN G17 [get_ports] vpertyGARD [2] LVCMOS33 [get_ports {vgaGreen [2]}] #set_property PACKAGE_PIN D17 [get_ports {vgaGreen [3]}] #set_property IOSTANDARD LVCMOS33 [get_ports {vgaGreen [3]}] #set_property PACKAGE_PIN PARDCP_33PART_PARD Hsync] #set_property PACKAGE_PIN R19 [get_ports Vsync] #set_property IOSTANDARD LVCMOS33 [get_ports Vsync]
## Διασύνδεση USB-RS232
#set_property PACKAGE_PIN B18 [get_ports RsRx] #set_property IOSTANDARD LVCMOS33 [get_ports RsRx] #set_property PACKAGE_PIN A18 [get_ports RsTx] #set_property IOSTANDARD LVCMOS33 [get_ports RsTx]
## USB HID (PS/2)
#set_property PACKAGE_PIN C17 [get_ports PS2Clk] #set_property IOSTANDARD LVCMOS33 [get_ports PS2Clk] #set_property PULLUP true [get_ports PS2Clk] #set_property PACKAGE_PIN B17 [get_ports PS2Data_Pata2Pata_Pata
## Quad SPI Flash
## Σημειώστε ότι το CCLK_0 δεν μπορεί να τοποθετηθεί σε συσκευές 7 σειρών. Μπορείτε να έχετε πρόσβαση χρησιμοποιώντας το ## STARTUPE2 πρωτόγονο. #set_property PACKAGE_PIN D18 [get_ports {QspiDB [0]}] #set_property IOSTANDARD LVCMOS33 [get_ports {QspiDB [0]}] #set_property PACKAGE_PIN D19 [get_ports {QspiDB [1]}] set_property }] #set_property PACKAGE_PIN G18 [get_ports {QspiDB [2]}] #set_property IOSTANDARD LVCMOS33 [get_ports {QspiDB [2]}] #set_property PACKAGE_PIN F18 [get_ports {QspiDB [3]} [G] 3]}] #set_property PACKAGE_PIN K19 [get_ports QspiCSn] #set_property IOSTANDARD LVCMOS33 [get_ports QspiCSn]
Βήμα 6: Καλωδίωση του αισθητήρα κίνησης PIR
Ο αισθητήρας κίνησης PIR έχει τρεις ακίδες: ισχύ, gnd και συναγερμό αντίστοιχα (δείτε την πρώτη εικόνα). Ο αισθητήρας κίνησης που προτείνεται σε αυτό το εγχειρίδιο μπορεί να συνδεθεί απευθείας στο breadboard. Αλλά για τον αισθητήρα που χρησιμοποιήσαμε έπρεπε να κόψουμε και να απογυμνώσουμε τα καλώδια και στη συνέχεια να κολλήσουμε τα εκτεθειμένα άκρα για να μην ξεφτίσουν. Στον πίνακα ψωμιού εισάγετε ένα σύρμα από άντρα σε θηλυκό βραχυκυκλωτήρα σε σειρά με τους πείρους ισχύος και γείωσης και στη συνέχεια ένα καλώδιο άλματος από αρσενικό σε αρσενικό σε σειρά με τον πείρο συναγερμού (δείτε τη δεύτερη εικόνα).
Βήμα 7: Καλωδίωση της λυχνίας LED στο Breadboard
Συνδέστε το LED στη σανίδα ψωμιού. Τοποθετήστε ένα μαύρο αρσενικό προς αρσενικό καλώδιο βραχυκυκλωτήρα σε σειρά με το κοντό καλώδιο της λυχνίας LED. Στη συνέχεια, συνδέστε το καλώδιο άλματος διαφορετικού χρώματος αρσενικό σε αρσενικό σε σειρά με το μακρύ καλώδιο του LED.
Βήμα 8: Συνδέσεις του πίνακα Basys
Συνδέστε τα θηλυκά άκρα του αισθητήρα κίνησης PIR στην πηγή τάσης 5 volt στον πίνακα βάσης. Στη συνέχεια, συνδέστε το αρσενικό καλώδιο γείωσης LED στη γείωση της πλευρικής θύρας, μετά το καλώδιο συναγερμού από τον αισθητήρα κίνησης PIR και στη συνέχεια το καλώδιο εισόδου LED (όπως φαίνεται στην εικόνα).
Συνιστάται:
Συναγερμός αισθητήρα κίνησης: 5 βήματα
Ο συναγερμός αισθητήρα κίνησης: Ελέγχετε πάντα για να δείτε ποιος είναι στην πόρτα σας; Αυτό είναι το τέλειο στοιχείο για εσάς. Πάντα ήμουν περίεργος να μάθω αν υπάρχουν άνθρωποι έξω από την πόρτα μου χωρίς να το γνωρίζω. Δημιούργησα αυτόν τον συναγερμό αισθητήρα κίνησης με φώτα led που θα δείχνουν
Βρύση νερού με αισθητήρα κίνησης χρησιμοποιώντας Arduino και ηλεκτρομαγνητική βαλβίδα - DIY: 6 βήματα
Βρύση νερού αισθητήρα κίνησης χρησιμοποιώντας Arduino και ηλεκτρομαγνητική βαλβίδα - DIY: Σε αυτό το έργο, θα σας δείξω πώς να φτιάξετε έναν βρύση νερού αισθητήρα κίνησης χρησιμοποιώντας μια ηλεκτρομαγνητική βαλβίδα. Αυτό το έργο μπορεί να σας βοηθήσει να μετατρέψετε την υπάρχουσα χειροκίνητη βρύση νερού σε βρύση που μπορεί να ελεγχθεί με βάση την ανίχνευση κίνησης. Χρήση διεπαφής αισθητήρα IR
DIY: Μίνι κιβώτιο αισθητήρα οροφής με αισθητήρα κίνησης με δυνατότητα εστίασης: 4 βήματα
DIY: Μίνι κιβώτιο αισθητήρων οροφής με αισθητήρα κίνησης με δυνατότητα εστίασης: Γεια σας. Πριν από λίγο καιρό βοηθούσα τον φίλο μου με την έννοια του έξυπνου σπιτιού και δημιούργησα ένα μίνι κιβώτιο αισθητήρων με προσαρμοσμένο σχέδιο που θα μπορούσε να τοποθετηθεί στην οροφή στην οπή 40x65mm. Αυτό το κουτί βοηθάει: • στη μέτρηση της έντασης του φωτός • στη μέτρηση του υγρού
Λωρίδα LED με αισθητήρα κίνησης με χρονοδιακόπτη: 6 βήματα (με εικόνες)
Λωρίδα LED με αισθητήρα κίνησης με χρονοδιακόπτη: Γεια σε όλους! Είμαι πολύ χαρούμενος που γράφω ένα άλλο διδακτικό τώρα. Αυτό το έργο προέκυψε όταν ήρθα σε επαφή με έναν συνάδελφο εκπαιδευτικό (?!) (David @dducic) πριν από αρκετούς μήνες ζητώντας βοήθεια σχεδιασμού. Λοιπόν εδώ ήταν η αρχική προδιαγραφή: & q
Έξοδος ελεγχόμενης κίνησης - Από φωτεινή ένδειξη κίνησης: 6 βήματα
Έξοδος ελεγχόμενης κίνησης - Από ένα φως ανίχνευσης κίνησης: Φανταστείτε ότι είστε ένας κόλπος ή θεραπευτής που πηγαίνει στο πιο τρομακτικό σπίτι του μπλοκ. Αφού περάσετε από όλα τα γκούλια, τα φαντάσματα και τα νεκροταφεία, φτάνετε τελικά στο τελευταίο μονοπάτι. Μπορείτε να δείτε την καραμέλα σε ένα μπολ μπροστά σας! Αλλά ξαφνικά ένας γκο