- Απαιτούμενα υλικά:
- Έννοιες του Line Follower
- Διάγραμμα και επεξήγηση κυκλώματος ρομπότ ρολογιού Raspberry Pi Line:
- Προγραμματισμός του Raspberry PI σας:
- Το Follower του Line Raspberry Pi
Όπως όλοι γνωρίζουμε, το Raspberry Pi είναι μια υπέροχη πλατφόρμα ανάπτυξης που βασίζεται στον μικροεπεξεργαστή ARM. Με την υψηλή υπολογιστική ισχύ και επιλογές ανάπτυξης, μπορεί να κάνει θαύματα στα χόμπι ηλεκτρονικών ή μαθητές. Για να μάθετε περισσότερα σχετικά με ένα Raspberry Pi και πώς λειτουργεί, ας προσπαθήσουμε να δημιουργήσουμε ένα ρομπότ Line Follower χρησιμοποιώντας το Raspberry Pi.
Αν σας ενδιαφέρει η ρομποτική, τότε θα πρέπει να είστε πολύ εξοικειωμένοι με το όνομα " Line Follower Robot ". Αυτό το ρομπότ μπορεί να ακολουθήσει μια γραμμή, χρησιμοποιώντας ζεύγος αισθητήρων και κινητήρων. Μπορεί να μην ακούγεται αποτελεσματικό να χρησιμοποιείτε έναν ισχυρό μικροεπεξεργαστή όπως το Raspberry Pi για να δημιουργήσετε ένα απλό ρομπότ. Όμως, αυτό το ρομπότ σας δίνει χώρο για απεριόριστη ανάπτυξη και ρομπότ όπως το Kiva (ρομπότ αποθήκης Amazon) είναι ένα παράδειγμα για αυτό. Μπορείτε επίσης να ελέγξετε τα άλλα ρομπότ Line Follower:
- Line Follower Robot με χρήση μικροελεγκτή 8051
- Line Follower Robot χρησιμοποιώντας το Arduino
Απαιτούμενα υλικά:
- Raspberry Pi 3 (οποιοδήποτε μοντέλο πρέπει να λειτουργεί)
- Αισθητήρας υπερύθρων (2Nos)
- DC Gear Motor (2Nos)
- Οδηγός κινητήρα L293D
- Chaises (Μπορείτε επίσης να δημιουργήσετε τα δικά σας χρησιμοποιώντας χαρτόνια)
- Τράπεζα ισχύος (Οποιαδήποτε διαθέσιμη πηγή ενέργειας)
Έννοιες του Line Follower
Το Line Follower Robot είναι σε θέση να παρακολουθεί μια γραμμή με τη βοήθεια ενός αισθητήρα IR. Αυτός ο αισθητήρας διαθέτει πομπό IR και δέκτη υπερύθρων. Ο πομπός IR (IR LED) μεταδίδει το φως και ο δέκτης (φωτοδίοδος) περιμένει να επιστρέψει το εκπεμπόμενο φως. Ένα φως υπερύθρων θα επιστρέψει μόνο εάν ανακλάται από μια επιφάνεια. Ενώ, όλες οι επιφάνειες δεν αντανακλούν ένα υπεριώδες φως, μόνο η λευκή επιφάνεια μπορεί να τις αντανακλά εντελώς και η μαύρη επιφάνεια θα τις παρατηρήσει πλήρως όπως φαίνεται στο παρακάτω σχήμα. Μάθετε περισσότερα για τη μονάδα αισθητήρα υπερύθρων εδώ.
Τώρα θα χρησιμοποιήσουμε δύο αισθητήρες υπερύθρων για να ελέγξουμε εάν το ρομπότ βρίσκεται σε τροχιά με τη γραμμή και δύο κινητήρες για να διορθώσουμε το ρομπότ εάν κινείται έξω από την πίστα. Αυτοί οι κινητήρες απαιτούν υψηλό ρεύμα και πρέπει να είναι αμφίδρομοι. Ως εκ τούτου, χρησιμοποιούμε μια μονάδα οδήγησης κινητήρα όπως το L293D. Θα χρειαστούμε επίσης μια υπολογιστική συσκευή όπως το Raspberry Pi για να καθοδηγήσουμε τους κινητήρες με βάση τις τιμές του αισθητήρα IR. Ένα απλοποιημένο μπλοκ διάγραμμα του ίδιου φαίνεται παρακάτω.
Αυτοί οι δύο αισθητήρες υπερύθρων θα τοποθετηθούν ένας σε κάθε πλευρά της γραμμής. Εάν κανένας από τους αισθητήρες δεν ανιχνεύει μια μαύρη γραμμή, ο PI δίνει εντολή στους κινητήρες να κινηθούν προς τα εμπρός όπως φαίνεται παρακάτω
Εάν ο αριστερός αισθητήρας έρθει σε μαύρη γραμμή, τότε το PI δίνει εντολή στο ρομπότ να στρίψει αριστερά περιστρέφοντας μόνο τον δεξιό τροχό.
Εάν ο σωστός αισθητήρας έρθει σε μαύρη γραμμή, τότε το PI δίνει εντολή στο ρομπότ να στρίψει δεξιά περιστρέφοντας μόνο τον αριστερό τροχό.
Εάν και οι δύο αισθητήρες έρχονται σε μαύρη γραμμή, το ρομπότ σταματά.
Με αυτόν τον τρόπο, το ρομπότ θα μπορεί να ακολουθεί τη γραμμή χωρίς να βγαίνει έξω από την πίστα. Τώρα ας δούμε πώς μοιάζουν το κύκλωμα και ο Κώδικας.
Διάγραμμα και επεξήγηση κυκλώματος ρομπότ ρολογιού Raspberry Pi Line:
Το πλήρες διάγραμμα κυκλώματος για αυτό το ρομπότ Follower Raspberry Pi Line φαίνεται παρακάτω
Όπως μπορείτε να δείτε, το κύκλωμα περιλαμβάνει δύο αισθητήρες υπερύθρων και ένα ζευγάρι κινητήρων που συνδέονται με το Raspberry pi. Το πλήρες κύκλωμα τροφοδοτείται από μια κινητή τράπεζα ισχύος (αντιπροσωπεύεται από μπαταρία AAA στο παραπάνω κύκλωμα).
Δεδομένου ότι οι λεπτομέρειες των ακίδων δεν αναφέρονται στο Raspberry Pi, πρέπει να επαληθεύσουμε τις ακίδες χρησιμοποιώντας την παρακάτω εικόνα
Όπως φαίνεται στην εικόνα, ο πάνω αριστερός γωνιακός πείρος του PI είναι ο πείρος + 5V, χρησιμοποιούμε αυτόν τον πείρο + 5V για να τροφοδοτήσουμε τους αισθητήρες IR όπως φαίνεται στο διάγραμμα κυκλώματος (κόκκινο ενσύρματο). Στη συνέχεια συνδέουμε τους πείρους γείωσης με τη γείωση του αισθητήρα IR και της μονάδας Motor Driver χρησιμοποιώντας μαύρο καλώδιο. Το κίτρινο καλώδιο χρησιμοποιείται για τη σύνδεση του πείρου εξόδου του αισθητήρα 1 και 2 με τους ακροδέκτες GPIO και 3 αντίστοιχα.
Για να οδηγήσουμε τους κινητήρες, χρειαζόμαστε τέσσερις καρφίτσες (A, B, A, B). Αυτές οι τέσσερις ακίδες συνδέονται από GPIO14,4,17 και 18 αντίστοιχα. Το πορτοκαλί και το λευκό σύρμα σχηματίζουν μαζί τη σύνδεση για έναν κινητήρα. Έχουμε λοιπόν δύο τέτοια ζεύγη για δύο κινητήρες.
Οι κινητήρες συνδέονται στη μονάδα οδηγού κινητήρα L293D όπως φαίνεται στην εικόνα και η μονάδα οδήγησης τροφοδοτείται από μια τράπεζα τροφοδοσίας. Βεβαιωθείτε ότι η γείωση της τράπεζας τροφοδοσίας είναι συνδεδεμένη στο έδαφος του Raspberry Pi, μόνο τότε η σύνδεσή σας θα λειτουργήσει.
Προγραμματισμός του Raspberry PI σας:
Μόλις τελειώσετε με τη συναρμολόγηση και τις συνδέσεις σας, το ρομπότ σας θα μοιάζει με αυτό.
Τώρα, είναι καιρός να προγραμματίσετε το bot μας και να το ξεκινήσετε. Ο πλήρης κώδικας για αυτό το bot βρίσκεται στο κάτω μέρος αυτού του σεμιναρίου. Μάθετε περισσότερα για το Πρόγραμμα και τον κώδικα εκτέλεσης στο Raspberry Pi εδώ. Οι σημαντικές γραμμές εξηγούνται παρακάτω
Πρόκειται να εισαγάγουμε αρχείο GPIO από τη βιβλιοθήκη, η παρακάτω λειτουργία μας επιτρέπει να προγραμματίζουμε τις καρφίτσες GPIO του PI. Μετονομάζουμε επίσης "GPIO" σε "IO", οπότε στο πρόγραμμα όποτε θέλουμε να αναφερθούμε στις καρφίτσες GPIO θα χρησιμοποιήσουμε τη λέξη "IO".
εισαγάγετε RPi.GPIO ως IO
Μερικές φορές, όταν οι ακίδες GPIO, τις οποίες προσπαθούμε να χρησιμοποιήσουμε, μπορεί να κάνουν κάποιες άλλες λειτουργίες. Σε αυτήν την περίπτωση, θα λάβουμε προειδοποιήσεις κατά την εκτέλεση του προγράμματος. Η παρακάτω εντολή λέει στο PI να αγνοήσει τις προειδοποιήσεις και να συνεχίσει το πρόγραμμα.
IO.setwarnings (Λάθος)
Μπορούμε να παραπέμψουμε τους ακροδέκτες GPIO του PI, είτε με τον αριθμό καρφίτσας επί του σκάφους είτε με τον αριθμό λειτουργίας τους. Όπως το «PIN 29» στον πίνακα είναι «GPIO5». Λοιπόν, λέμε εδώ ότι θα αντιπροσωπεύσουμε το pin εδώ με «29» ή «5».
IO.setmode (IO.BCM)
Ορίζουμε 6 ακίδες ως καρφίτσες εισόδου / εξόδου. Οι δύο πρώτοι ακροδέκτες είναι οι ακίδες εισόδου για να διαβάσετε τον αισθητήρα υπερύθρων. Οι επόμενες τέσσερις είναι οι ακίδες εξόδου από τις οποίες οι δύο πρώτες χρησιμοποιούνται για τον έλεγχο του δεξιού κινητήρα και οι επόμενες δύο για τον αριστερό κινητήρα.
IO.setup (2, IO.IN) #GPIO 2 -> Left IR out IO.setup (3, IO.IN) #GPIO 3 -> Right IR out IO.setup (4, IO.OUT) #GPIO 4 - > Τερματικό κινητήρα 1 IO.setup (14, IO.OUT) #GPIO 14 -> Τερματικό κινητήρα 1 I I.setup (17, IO.OUT) #GPIO 17 -> Αριστερό αριστερό τερματικό A IO.setup (18, IO.OUT) #GPIO 18 -> Αριστερός ακροδέκτης B κινητήρα
Ο αισθητήρας IR εξάγει "True" εάν είναι πάνω από μια λευκή επιφάνεια. Όσο και οι δύο αισθητήρες λένε True, μπορούμε να προχωρήσουμε μπροστά.
if (IO.input (2) == True και IO.input (3) == True): # και τα δύο λευκά προχωρήστε IO.output (4, True) # 1A + IO.output (14, False) # 1B- IO.output (17, True) # 2A + IO. έξοδος (18, False) # 2B-
Πρέπει να στρίψουμε δεξιά αν ο πρώτος αισθητήρας υπερύθρων έρθει πάνω από μια μαύρη γραμμή. Αυτό γίνεται διαβάζοντας τον αισθητήρα υπερύθρων και εάν ικανοποιηθεί η κατάσταση σταματάμε τον δεξιό κινητήρα και περιστρέφουμε τον αριστερό κινητήρα μόνο όπως φαίνεται στον παρακάτω κώδικα
elif (IO.input (2) == False and IO.input (3) == True): # turn turn IO.output (4, True) # 1A + IO.output (14, True) # 1B- IO.output (17, True) # 2A + IO. Έξοδος (18, False) # 2B-
Πρέπει να στρίψουμε αριστερά εάν ο δεύτερος αισθητήρας υπερύθρων βρεθεί πάνω από μια μαύρη γραμμή. Αυτό γίνεται διαβάζοντας τον αισθητήρα υπερύθρων και εάν ικανοποιηθεί η κατάσταση σταματάμε τον αριστερό κινητήρα και περιστρέφουμε τον δεξιό κινητήρα μόνος, όπως φαίνεται στον παρακάτω κώδικα
elif (IO.input (2) == True και IO.input (3) == False): # στρίψτε αριστερά IO.output (4, True) # 1A + IO.output (14, False) # 1B- IO.output (17, True) # 2A + IO. Έξοδος (18, True) # 2B-
Εάν και οι δύο αισθητήρες έρχονται πάνω από μια μαύρη γραμμή, αυτό σημαίνει ότι το ρομπότ πρέπει να σταματήσει. Αυτό μπορεί να γίνει κάνοντας και τους δύο ακροδέκτες του κινητήρα να είναι αληθινοί, όπως φαίνεται στον παρακάτω κώδικα
αλλιώς: #stay still IO.output (4, True) # 1A + IO.output (14, True) # 1B- IO.output (17, True) # 2A + IO.output (18, True) # 2B-
Το Follower του Line Raspberry Pi
Ανεβάστε τον κωδικό python για το ακόλουθο γραμμής στο Raspberry Pi και εκτελέστε τον. Χρειαζόμαστε ένα φορητό τροφοδοτικό, μια τράπεζα τροφοδοσίας σε αυτήν την περίπτωση γίνεται πρακτική και ως εκ τούτου έχω χρησιμοποιήσει το ίδιο. Αυτό που χρησιμοποιώ έρχεται με δύο θύρες USB, οπότε έχω χρησιμοποιήσει για να τροφοδοτήσω το PI και άλλο για το Power Motor Driver, όπως φαίνεται στην παρακάτω εικόνα.
Τώρα το μόνο που έχετε να κάνετε είναι να δημιουργήσετε το δικό σας μαύρο κομμάτι χρώματος και να απελευθερώσετε το bot σας πάνω από αυτό. Έχω χρησιμοποιήσει μια ταινία μόνωσης μαύρου χρώματος για να δημιουργήσω το κομμάτι που μπορείτε να χρησιμοποιήσετε οποιοδήποτε υλικό μαύρου χρώματος, αλλά βεβαιωθείτε ότι το χρώμα του εδάφους σας δεν είναι σκοτεινό.
Η πλήρης λειτουργία του bot μπορεί να βρεθεί στο παρακάτω βίντεο. Ελπίζω να καταλάβατε το έργο και να απολαύσατε την κατασκευή του. Εάν έχετε οποιεσδήποτε ερωτήσεις, δημοσιεύστε τις στην παρακάτω ενότητα σχολίων.