- Απαιτούμενα στοιχεία:
- Μονάδα υπερήχων αισθητήρα:
- Επεξήγηση κυκλώματος:
- Πως δουλεύει:
- Επεξήγηση προγραμματισμού:
Τα ρομπότ είναι μηχανήματα που μειώνουν τις ανθρώπινες προσπάθειες σε βαριά έργα αυτοματοποιώντας τις εργασίες σε βιομηχανίες, εργοστάσια, νοσοκομεία κ.λπ. εκτελώντας κάποια εντολή χρησιμοποιώντας ελεγκτή ή επεξεργαστή. Αλλά σήμερα είμαστε εδώ με ένα Αυτόματο Ρομπότ που κινείται αυτόνομα χωρίς εξωτερικά γεγονότα αποφεύγοντας όλα τα εμπόδια στη διαδρομή του, ναι μιλάμε για το Ρομπότ Αποφυγής Εμποδίων. Σε αυτό το έργο, χρησιμοποιήσαμε το πρόγραμμα οδήγησης Raspberry Pi και Motor για να οδηγήσουμε το ρομπότ και τον αισθητήρα υπερήχων για την ανίχνευση αντικειμένων στη διαδρομή του ρομπότ.
Προηγουμένως έχουμε καλύψει πολλά χρήσιμα ρομπότ, μπορείτε να τα βρείτε στην ενότητα των έργων ρομποτικής μας.
Απαιτούμενα στοιχεία:
- Raspberry Pi
- Μονάδα υπερήχων αισθητήρα HC-SR04
- ROBOT Πλαίσιο με βίδα
- DC Motors
- L293D IC
- Τροχοί
- Πίνακας ψωμιού
- Αντίσταση (1k)
- Πυκνωτής (100nF)
- Σύνδεση καλωδίων
- Τροφοδοσία ή τράπεζα τροφοδοσίας
Μονάδα υπερήχων αισθητήρα:
Ένα ρομπότ Obstacle Avoider είναι ένα αυτοματοποιημένο ρομπότ και δεν χρειάζεται να ελέγχεται χρησιμοποιώντας οποιοδήποτε τηλεχειριστήριο. Αυτοί οι τύποι αυτοματοποιημένων ρομπότ έχουν μερικούς αισθητήρες «έκτης αίσθησης» όπως ανιχνευτές εμποδίων, ανιχνευτές ήχου, ανιχνευτές θερμότητας ή ανιχνευτές μετάλλων. Εδώ έχουμε κάνει ανίχνευση εμποδίων χρησιμοποιώντας σήματα υπερήχου. Για το σκοπό αυτό, χρησιμοποιήσαμε την υπερηχητική μονάδα αισθητήρα.
Οι υπερηχητικοί αισθητήρες χρησιμοποιούνται συνήθως για τον εντοπισμό αντικειμένων και τον προσδιορισμό της απόστασης του εμποδίου από τον αισθητήρα. Αυτό είναι ένα εξαιρετικό εργαλείο για τη μέτρηση της απόστασης χωρίς φυσική επαφή, όπως η μέτρηση στάθμης νερού στη δεξαμενή, η μέτρηση απόστασης, το ρομπότ αποτροπής εμποδίων κ.λπ. Εδώ, έχουμε εντοπίσει το αντικείμενο και μετρήσαμε την απόσταση χρησιμοποιώντας τον αισθητήρα υπερήχων και το Raspberry Pi.
Ο αισθητήρας υπερήχων HC-SR04 χρησιμοποιείται για τη μέτρηση της απόστασης μεταξύ 2cm-400cm με ακρίβεια 3mm. Η μονάδα αισθητήρα αποτελείται από πομπό υπερήχων, δέκτη και κύκλωμα ελέγχου. Ο υπερηχητικός αισθητήρας αποτελείται από δύο κυκλικά μάτια από τα οποία το ένα χρησιμοποιείται για τη μετάδοση του υπερηχητικού κύματος και το άλλο για τη λήψη του.
Μπορούμε να υπολογίσουμε την απόσταση του αντικειμένου με βάση το χρόνο που χρειάζεται το υπερηχητικό κύμα για να επιστρέψουμε στον αισθητήρα. Εφόσον είναι γνωστή η ώρα και η ταχύτητα του ήχου, μπορούμε να υπολογίσουμε την απόσταση με τους ακόλουθους τύπους.
- Απόσταση = (Χρόνος x Ταχύτητα ήχου στον αέρα (343 m / s)) / 2.
Η τιμή διαιρείται με δύο αφού το κύμα κινείται προς τα εμπρός και προς τα πίσω καλύπτοντας την ίδια απόσταση. Έτσι, ο χρόνος για να φτάσετε στο εμπόδιο είναι μόλις ο μισός συνολικός χρόνος που απαιτείται.
Έτσι, υπολογίσαμε την απόσταση (σε εκατοστό) από το εμπόδιο όπως παρακάτω:
pulse_start = time.time () ενώ GPIO.input (ECHO) == 1: # Ελέγξτε αν το ECHO είναι ΥΨΗΛΟ GPIO.output (led, False) pulse_end = time.time () pulse_duration = pulse_end - pulse_start απόσταση = pulse_duration * 17150 απόσταση = γύρος (απόσταση, 2) avgDistance = avgDistance + απόσταση
Όπου pulse_duration είναι ο χρόνος μεταξύ αποστολής και λήψης σήματος υπερήχων.
Επεξήγηση κυκλώματος:
Το κύκλωμα είναι πολύ απλό για αυτό το ρομπότ αποφυγής εμποδίων χρησιμοποιώντας το Raspberry Pi. Μια μονάδα υπερήχων αισθητήρα, που χρησιμοποιείται για την ανίχνευση αντικειμένων, συνδέεται στους ακροδέκτες GPIO 17 και 27 του Raspberry Pi. Ένας οδηγός κινητήρα IC L293D συνδέεται με το Raspberry Pi 3 για οδήγηση κινητήρων ρομπότ. Οι ακίδες εισόδου του οδηγού του κινητήρα 2, 7, 10 και 15 συνδέονται με τον αριθμό ακροδέκτη Raspberry Pi GPIO 12, 16, 20 και 21 αντίστοιχα. Εδώ έχουμε χρησιμοποιήσει δύο κινητήρες DC για να οδηγήσουμε το ρομπότ στο οποίο ένας κινητήρας είναι συνδεδεμένος στον ακροδέκτη εξόδου 3 & 6 του IC οδηγού κινητήρα και ένας άλλος κινητήρας συνδέεται στο Pin 11 & 14 του IC οδηγού κινητήρα.
Πως δουλεύει:
Η εργασία αυτού του αυτόνομου ρομπότ είναι πολύ εύκολη. Όταν το Ρομπότ είναι ενεργοποιημένο και αρχίζει να λειτουργεί, το Raspberry Pi μετρά τις αποστάσεις των αντικειμένων, μπροστά του, χρησιμοποιώντας το Ultrasonic Sensor Module και αποθηκεύει σε μια μεταβλητή. Στη συνέχεια, το RPi συγκρίνει αυτήν την τιμή με προκαθορισμένες τιμές και λαμβάνει αποφάσεις ανάλογα για να μετακινήσει το ρομπότ αριστερά, δεξιά, εμπρός ή πίσω.
Εδώ σε αυτό το έργο, έχουμε επιλέξει απόσταση 15 εκατοστών για να λάβουμε οποιαδήποτε απόφαση από το Raspberry Pi. Τώρα όποτε το Raspberry Pi παίρνει απόσταση μικρότερη των 15 εκατοστών από οποιοδήποτε αντικείμενο, τότε το Raspberry Pi σταματά το ρομπότ και το μετακινεί πίσω και στη συνέχεια το γυρίζει αριστερά ή δεξιά. Τώρα προτού το μετακινήσετε ξανά προς τα εμπρός, το Raspberry Pi ελέγχει ξανά εάν υπάρχει εμπόδιο εντός του εύρους των 15 cm, εάν ναι επαναλάβει ξανά την προηγούμενη διαδικασία, αλλιώς μετακινήστε το ρομπότ προς τα εμπρός μέχρι να εντοπίσει ξανά κανένα εμπόδιο ή αντικείμενο.
Επεξήγηση προγραμματισμού:
Χρησιμοποιούμε τη γλώσσα Python εδώ για το Πρόγραμμα. Πριν από την κωδικοποίηση, ο χρήστης πρέπει να διαμορφώσει το Raspberry Pi. Μπορείτε να δείτε τα προηγούμενα μαθήματά μας για να ξεκινήσετε με το Raspberry Pi και να εγκαταστήσετε και να ρυθμίσετε το Raspbian Jessie OS στο Pi.
Το μέρος προγραμματισμού αυτού του έργου παίζει πολύ σημαντικό ρόλο για την εκτέλεση όλων των λειτουργιών. Πρώτα απ 'όλα, συμπεριλαμβάνουμε τις απαιτούμενες βιβλιοθήκες, αρχικοποιούμε μεταβλητές και καθορίζουμε ακίδες για αισθητήρα υπερήχων, κινητήρα και εξαρτήματα.
εισαγωγή RPi.GPIO ως GPIO χρόνος εισαγωγής #Import time library GPIO.setwarnings (False) GPIO.setmode (GPIO.BCM) TRIG = 17 ECHO = 27…………….
Μετά από αυτό, έχουμε δημιουργήσει ορισμένες λειτουργίες def προς τα εμπρός (), def back (), def αριστερά (), def δεξιά () για να μετακινήσουμε το ρομπότ προς τα εμπρός, προς τα πίσω, αριστερά ή δεξιά κατεύθυνση αντίστοιχα και def stop () για να σταματήσει το ρομπότ ελέγξτε τις λειτουργίες στον κώδικα που δίνεται παρακάτω.
Στη συνέχεια, στο κύριο πρόγραμμα, ξεκινήσαμε τον αισθητήρα υπερήχων και διαβάσαμε το χρόνο μεταξύ μετάδοσης και λήψης του σήματος και υπολογίσαμε την απόσταση. Εδώ έχουμε επαναλάβει αυτήν τη διαδικασία για 5 φορές για καλύτερη ακρίβεια. Έχουμε ήδη εξηγήσει τη διαδικασία υπολογισμού της απόστασης χρησιμοποιώντας αισθητήρα υπερήχων.
i = 0 avgDistance = 0 for i in range (5): GPIO.output (TRIG, False) time.sleep (0.1) GPIO.output (TRIG, True) time.sleep (0.00001) GPIO.output (TRIG, False) ενώ GPIO.input (ECHO) == 0: GPIO.output (led, False) pulse_start = time.time () ενώ GPIO.input (ECHO) == 1: # Ελέγξτε εάν το ECHO είναι HIGH GPIO.output (led, False) pulse_end = time.time () pulse_duration = pulse_end - pulse_start απόσταση = pulse_duration * 17150 απόσταση = γύρος (απόσταση, 2) avgDistance = avgDistance + απόσταση
Τέλος, αν το Robot εντοπίσει κανένα εμπόδιο μπροστά του, τότε μετά την απόσταση από το εμπόδιο, έχουμε προγραμματίσει το ρομπότ να ακολουθήσει διαφορετική διαδρομή.
εάν avgDistance <15: count = count + 1 stop () time.sleep (1) back () time.sleep (1.5) if (count% 3 == 1) & (flag == 0): δεξιά () flag = 1 ακόμη: αριστερά () flag = 0 time.sleep (1.5) stop () time.sleep (1) other: forward () flag = 0
Ο πλήρης κώδικας για αυτό το ρομπότ αποφυγής εμποδίων Raspberry Pi δίνεται παρακάτω με ένα βίντεο επίδειξης.