Πίνακας περιεχομένων:
2025 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2025-01-13 06:57
Αυτό το Instructable θα σας δώσει έναν οδηγό βήμα προς βήμα για την κατασκευή του συστήματος πρόληψης σύγκρουσης. Για να ξεκινήσετε, πρέπει να λάβετε την ακόλουθη λίστα υλικών:
Raspberry PI 3 (με συγχορδίες ισχύος και Ethernet), 1 GPIO Extension Board and Ribbon Cable (GPIO), 1 Large Breadboard με διάγραμμα, 2 μικρές σανίδες ψαλιδιού με διάγραμμα, 14 καλώδια βραχυκυκλωτήρων, 3 αντίσταση 220 Ohms, 1 RGB LED, 3 διακόπτες κουμπιών, 1HB-SR04 Αισθητήρας υπερήχων
Βήμα 1: Επέκταση GPIO
Συνδέστε τον πίνακα επέκτασης GPIO στη μεγάλη σανίδα ψωμιού. Το GPIO θα πρέπει να βλέπει κάθετα ακριβώς όπως είναι το breadboard. Αντιστοιχίστε την αριστερή πλευρά του GPIO στις θύρες breadboard D1-D20 χρησιμοποιώντας το παρεχόμενο διάγραμμα. Στη συνέχεια, η δεξιά πλευρά θα συνδεθεί με το H1-H20. Συνδέστε το καλώδιο κορδέλας τόσο στο Raspberry Pi 3 όσο και στην πλακέτα επέκτασης GPIO. Ολόκληρο αυτό το συστατικό θα αναφέρεται τώρα ως πίνακας GPIO (GPIO)
Βήμα 2: Αισθητήρας υπερήχων
Χρησιμοποιώντας ένα άλλο μικρότερο breadboard, συνδέστε τον αισθητήρα υπερήχων HR-SR04 στις μικρότερες θύρες του breadboard A2-5 χρησιμοποιώντας το παρεχόμενο διάγραμμα. Συνδέστε ένα καλώδιο βραχυκυκλωτήρα στη μικρότερη πλάκα ψωμιού (BB) E2, τοποθετήστε το άλλο άκρο στη θύρα επέκτασης GP1 GP1. Με τον ίδιο τρόπο, συνδέστε άλλα τρία άλματα με τον ακόλουθο τρόπο. (BB E3, GPIO B17) (BB E4, GPIO B18) (BB E5, GPIO B20)
Βήμα 3: LED και αντιστάσεις
Στον ίδιο μικρό πίνακα που χρησιμοποιήθηκε στην προηγούμενη οδηγία, συνδέστε τρεις αντιστάσεις 220 ohm με τον ακόλουθο τρόπο. (E10, H10) (E12, H12) (E14, H14) Στη συνέχεια συνδέστε έναν βραχυκυκλωτήρα από τον ίδιο πίνακα E13 στη ράγα γείωσης ισχύος στην πλακέτα GPIO. Συνδέστε τις τέσσερις προεξοχές του LED στις μικρότερες θύρες ψωμιού (B13) (D14) (D12) (D10). Στη συνέχεια, συνδέστε τρεις βραχυκυκλωτήρες από το μικρότερο breadboard στον πίνακα GPIO με τον καθορισμένο τρόπο. (BB J10, GPIO J9) (BB J12, GPIO J8) (BB J14, GPIO J6). Αυτός ο πίνακας είναι τώρα πλήρης.
Βήμα 4: Έδαφος
Χρησιμοποιήστε άλλον βραχυκυκλωτήρα για να συνδέσετε την κάρτα GPIO J7 στη ράγα γείωσης.
Βήμα 5: Κουμπιά
Χρησιμοποιώντας τη δεύτερη πινακίδα, τοποθετήστε το πάνω μέρος ενός διακόπτη κουμπιού στη θύρα E1 και D1, τοποθετήστε ένα άλλο στο E5 και D5 και ένα τρίτο στο E9 και D9. Συνδέστε τρεις βραχυκυκλωτήρες από τη ράγα θετικής ισχύος στον πίνακα GPIO στις ακόλουθες θύρες ψωμιού (D3) (D7) (D11). Χρησιμοποιώντας άλλα τρία καλώδια βραχυκυκλωτήρων, συνδέστε το ψωμί στην πλακέτα επέκτασης GPIO στο ακόλουθο αρχοντικό: (BB D1, GPIO J16) (BB D5, GPIO J18) (BB D9, GPIO J20). Τέλος, χρησιμοποιώντας το τελευταίο καλώδιο άλτη, συνδέστε το GPIO A1 στη ράγα θετικής ισχύος. Η φυσική ρύθμιση έχει πλέον ολοκληρωθεί.
Βήμα 6: Κωδικός
Συνδέστε το καλώδιο Ethernet και το καλώδιο τροφοδοσίας στο Pi και στις αντίστοιχες θέσεις τους. Ανοίξτε το MATLAB και εκτελέστε το ακόλουθο σενάριο για να προετοιμάσετε το μικροελεγκτή:
rpi = raspi («169.254.0.2», «pi», «βατόμουρο»);
Στη συνέχεια, αντιγράψτε και επικολλήστε τα παρακάτω σε ένα νέο σενάριο, που ονομάζεται Ping, για να εκτελέσετε το σύστημα πρόληψης σύγκρουσης:
συνάρτηση dist = ping () trig = 19; ηχώ = 13; δοκιμή = 21; configurePin (rpi, trig, 'DigitalOutput'); configurePin (rpi, echo, 'DigitalInput'); configurePin (rpi, test, 'DigitalInput');
disp ("Μέτρηση απόστασης σε εξέλιξη");
ενώ true writeDigitalPin (rpi, trig, 0)? disp ("Αφήνοντας τον αισθητήρα να καθίσει"); παύση (2)?
writeDigitalPin (rpi, trig, 1); παύση (0,002); writeDigitalPin (rpi, trig, 0);
ενώ readDigitalPin (rpi, echo) == 0 τελικό τέλος
ενώ readDigitalPin (rpi, echo) == 1 T = toc? τέλος
pulse_duration = T; απόσταση = pulse_duration * 17150;
άνοιγμα = "Απόσταση ="; κλείσιμο = "cm"; string = [άνοιγμα, απόσταση, κλείσιμο]; disp (συμβολοσειρά)? dist = απόσταση? τέλος τέλος
Σε ένα νέο σενάριο, εκτελέστε τον ακόλουθο κωδικό με την κατάσταση:
configurePin (rpi, 21, 'DigitalInput'); configurePin (rpi, 16, 'DigitalInput'); configurePin (rpi, 12, 'DigitalInput');
κατάσταση = 2; d = 10; %Κατάσταση: 0-Κόκκινο/Διακοπή 1-Μπλε/Αργό 2-Πράσινο/Πηγαίνετε = true ενώ τρέχει %d = ping (); αν readDigitalPin (rpi, 21) == 1 κατάσταση = 0? elseif readDigitalPin (rpi, 16) == 1 κατάσταση = 1; elseif readDigitalPin (rpi, 12) == 1 κατάσταση = 2; elseif δ