Θέλετε να μάθετε πώς να φτιάχνετε το δικό σας ρομπότ; Υπάρχουν πολλοί διαφορετικοί τύποι ρομπότ που μπορείτε να φτιάξετε μόνοι σας. Οι περισσότεροι άνθρωποι θέλουν να δουν ένα ρομπότ να εκτελεί τις απλές εργασίες μετακίνησης από το σημείο Α στο σημείο Β. Μπορείτε να φτιάξετε ένα ρομπότ εντελώς από αναλογικά εξαρτήματα ή να αγοράσετε ένα κιτ εκκίνησης από την αρχή! Η κατασκευή του δικού σας ρομπότ είναι ένας πολύ καλός τρόπος για να μάθετε στον εαυτό σας τόσο ηλεκτρονικά όσο και προγραμματισμό υπολογιστών.
Βήματα
Μέρος 1 από 6: Συναρμολόγηση του ρομπότ
Βήμα 1. Συγκεντρώστε τα συστατικά σας
Για να δημιουργήσετε ένα βασικό ρομπότ, θα χρειαστείτε αρκετά απλά εξαρτήματα. Μπορείτε να βρείτε τα περισσότερα, αν όχι όλα, αυτά τα εξαρτήματα στο τοπικό σας κατάστημα ηλεκτρονικών ειδών ή σε αρκετούς διαδικτυακούς λιανοπωλητές. Ορισμένα βασικά κιτ μπορεί επίσης να περιλαμβάνουν όλα αυτά τα συστατικά. Αυτό το ρομπότ δεν απαιτεί καμία συγκόλληση:
- Arduino Uno (ή άλλος μικροελεγκτής)
- 2 σερβο συνεχούς περιστροφής
- 2 τροχοί που ταιριάζουν στα servos
- 1 ρολό τροχίσκου
- 1 μικρό ψωμί χωρίς κόλλα (ψάξτε για ένα σανίδι που έχει δύο θετικές και αρνητικές γραμμές σε κάθε πλευρά)
- 1 αισθητήρας απόστασης (με καλώδιο σύνδεσης τεσσάρων ακίδων)
- 1 μίνι διακόπτης με κουμπί
- 1 αντίσταση 10kΩ
- 1 καλώδιο USB A έως B
- 1 σετ απόσχισης κεφαλίδων
- 1 υποδοχή μπαταρίας 6 x AA με υποδοχή ισχύος 9V DC
- 1 πακέτο καλωδίων βραχυκυκλωτήρα ή σύρμα σύνδεσης 22 μετρητών
- Ισχυρή ταινία διπλής όψης ή ζεστή κόλλα
Βήμα 2. Αναποδογυρίστε την μπαταρία έτσι ώστε η επίπεδη πλάτη να κοιτάζει προς τα πάνω
Θα χτίσετε το σώμα του ρομπότ χρησιμοποιώντας τη μπαταρία ως βάση.
Βήμα 3. Ευθυγραμμίστε τα δύο servos στο τέλος της μπαταρίας
Αυτό θα πρέπει να είναι το τέλος που το καλώδιο της μπαταρίας βγαίνει από τα Servos θα πρέπει να αγγίζουν το κάτω μέρος και οι μηχανισμοί περιστροφής του καθενός θα πρέπει να βλέπουν προς τα έξω από τις πλευρές της μπαταρίας. Τα servos πρέπει να ευθυγραμμιστούν σωστά, έτσι ώστε οι τροχοί να πάνε ευθεία. Τα καλώδια για τα servos θα πρέπει να βγαίνουν από το πίσω μέρος της μπαταρίας.
Βήμα 4. Τοποθετήστε τα servos με την ταινία ή την κόλλα σας
Βεβαιωθείτε ότι έχουν στερεωθεί καλά στη μπαταρία. Οι πλάτες των σερβιτόρων πρέπει να ευθυγραμμιστούν στο ίδιο επίπεδο με το πίσω μέρος της μπαταρίας.
Τα servos θα πρέπει τώρα να καταλαμβάνουν το πίσω μισό της μπαταρίας
Βήμα 5. Τοποθετήστε το breadboard κάθετα στον ανοιχτό χώρο της μπαταρίας
Θα πρέπει να κρέμεται λίγο στο μπροστινό μέρος της μπαταρίας και θα εκτείνεται πέρα από κάθε πλευρά. Βεβαιωθείτε ότι έχει στερεωθεί καλά πριν προχωρήσετε. Η σειρά "A" πρέπει να είναι πιο κοντά στα servos.
Βήμα 6. Συνδέστε τον μικροελεγκτή Arduino στις κορυφές των servos
Εάν έχετε συνδέσει σωστά τα σερβίς, θα πρέπει να υπάρχει ένας επίπεδος χώρος που να τους αγγίζει. Κολλήστε την πλακέτα Arduino σε αυτόν τον επίπεδο χώρο, έτσι ώστε οι σύνδεσμοι USB και Power του Arduino να βλέπουν προς τα πίσω (μακριά από το ψωμί). Το μπροστινό μέρος του Arduino πρέπει να επικαλύπτεται ελάχιστα.
Βήμα 7. Βάλτε τους τροχούς στα servos
Πιέστε σταθερά τους τροχούς στον περιστρεφόμενο μηχανισμό του σερβο. Αυτό μπορεί να απαιτεί σημαντική δύναμη, καθώς οι τροχοί έχουν σχεδιαστεί για να εφαρμόζουν όσο το δυνατόν πιο σφιχτά για την καλύτερη πρόσφυση.
Βήμα 8. Συνδέστε το κάδο στο κάτω μέρος της σανίδας
Αν αναποδογυρίσετε το πλαίσιο, θα πρέπει να δείτε ένα κομμάτι ψωμιού που εκτείνεται πέρα από τη μπαταρία. Συνδέστε τον κάδο σε αυτό το εκτεταμένο κομμάτι, χρησιμοποιώντας ανυψωτικά αν είναι απαραίτητο. Ο τροχός λειτουργεί ως μπροστινός τροχός, επιτρέποντας στο ρομπότ να στρίψει εύκολα προς οποιαδήποτε κατεύθυνση.
Εάν αγοράσατε ένα κιτ, ο κάστερ μπορεί να έχει έρθει με μερικούς ανυψωτές που μπορείτε να χρησιμοποιήσετε για να διασφαλίσετε ότι ο τροχός φτάνει στο έδαφος. Εγώ
Μέρος 2 από 6: Καλωδίωση του ρομπότ
Βήμα 1. Σπάστε δύο κεφαλίδες 3 ακίδων
Θα τα χρησιμοποιήσετε για να συνδέσετε τα servos στο breadboard. Σπρώξτε τις καρφίτσες προς τα κάτω μέσα από την κεφαλίδα, έτσι ώστε οι καρφίτσες να βγαίνουν σε ίση απόσταση και από τις δύο πλευρές.
Βήμα 2. Εισάγετε τις δύο κεφαλίδες στις ακίδες 1-3 και 6-8 στη σειρά Ε του σανιδιού
Βεβαιωθείτε ότι έχουν τοποθετηθεί καλά.
Βήμα 3. Συνδέστε τα σερβο καλώδια στις κεφαλίδες, με το μαύρο καλώδιο στην αριστερή πλευρά (ακίδες 1 και 6)
Αυτό θα συνδέσει τα servos με το breadboard. Βεβαιωθείτε ότι το αριστερό σερβο είναι συνδεδεμένο με την αριστερή κεφαλίδα και το δεξί σερβο με τη δεξιά κεφαλίδα.
Βήμα 4. Συνδέστε κόκκινα καλώδια βραχυκυκλωτήρα από τις ακίδες C2 και C7 σε κόκκινες (θετικές) ακίδες ράγας
Βεβαιωθείτε ότι χρησιμοποιείτε την κόκκινη ράγα στο πίσω μέρος της σανίδας (πιο κοντά στο υπόλοιπο πλαίσιο).
Βήμα 5. Συνδέστε τα καλώδια μαύρου βραχυκυκλωτήρα από τις ακίδες Β1 και Β6 σε μπλε πείρους σιδηροτροχιάς (γείωσης)
Βεβαιωθείτε ότι χρησιμοποιείτε τη μπλε ράγα στο πίσω μέρος της σανίδας. Μην τα συνδέετε στις κόκκινες ακίδες ράγας.
Βήμα 6. Συνδέστε καλώδια λευκού βραχυκυκλωτήρα από τις ακίδες 12 και 13 του Arduino στο A3 και A8
Αυτό θα επιτρέψει στο Arduino να ελέγχει τα servos και να γυρίζει τους τροχούς.
Βήμα 7. Συνδέστε τον αισθητήρα στο μπροστινό μέρος της σανίδας
Δεν συνδέεται με τις εξωτερικές ράγες τροφοδοσίας στο breadboard, αλλά αντίθετα στην πρώτη σειρά με πινέζες (J). Βεβαιωθείτε ότι το έχετε τοποθετήσει στο ακριβές κέντρο, με ίσο αριθμό καρφιών διαθέσιμες σε κάθε πλευρά.
Βήμα 8. Συνδέστε ένα μαύρο καλώδιο βραχυκυκλωτήρα από τον πείρο I14 στον πρώτο διαθέσιμο μπλε πείρο ράγας στα αριστερά του αισθητήρα
Αυτό θα γειώσει τον αισθητήρα.
Βήμα 9. Συνδέστε ένα κόκκινο καλώδιο βραχυκυκλωτήρα από τον πείρο I17 στον πρώτο διαθέσιμο κόκκινο πείρο ράγας στα δεξιά του αισθητήρα
Αυτό θα τροφοδοτήσει τον αισθητήρα.
Βήμα 10. Συνδέστε καλώδια λευκού βραχυκυκλωτήρα από τον πείρο I15 στον πείρο 9 στο Arduino και από το I16 στον ακροδέκτη 8
Αυτό θα τροφοδοτήσει πληροφορίες από τον αισθητήρα στον μικροελεγκτή.
Μέρος 3 από 6: Καλωδίωση του ρεύματος
Βήμα 1. Γυρίστε το ρομπότ από την πλευρά του, έτσι ώστε να μπορείτε να δείτε τις μπαταρίες στη συσκευασία
Προσανατολίστε το έτσι ώστε το καλώδιο της μπαταρίας να βγαίνει αριστερά στο κάτω μέρος.
Βήμα 2. Συνδέστε ένα κόκκινο καλώδιο στο δεύτερο ελατήριο από αριστερά στο κάτω μέρος
Βεβαιωθείτε ότι η μπαταρία είναι σωστά προσανατολισμένη.
Βήμα 3. Συνδέστε ένα μαύρο καλώδιο στο τελευταίο ελατήριο κάτω δεξιά
Αυτά τα δύο καλώδια θα βοηθήσουν στην παροχή της σωστής τάσης στο Arduino.
Βήμα 4. Συνδέστε τα κόκκινα και μαύρα καλώδια στις ακροδεξιές κόκκινες και μπλε ακίδες στο πίσω μέρος της σανίδας
Το μαύρο καλώδιο πρέπει να συνδεθεί στον μπλε πείρο ράγας στον πείρο 30. Το κόκκινο καλώδιο πρέπει να συνδεθεί στον κόκκινο πείρο ράγας στον πείρο 30.
Βήμα 5. Συνδέστε ένα μαύρο καλώδιο από τον πείρο GND στο Arduino στην πίσω μπλε ράγα
Συνδέστε το στον πείρο 28 στη μπλε ράγα.
Βήμα 6. Συνδέστε ένα μαύρο καλώδιο από την πίσω μπλε ράγα στην μπροστινή μπλε ράγα στον πείρο 29 για το καθένα
Μην συνδέετε τις κόκκινες ράγες, καθώς πιθανότατα θα καταστρέψετε το Arduino.
Βήμα 7. Συνδέστε ένα κόκκινο καλώδιο από την μπροστινή κόκκινη ράγα στον πείρο 30 στον πείρο 5V στο Arduino
Αυτό θα παρέχει δύναμη στο Arduino.
Βήμα 8. Τοποθετήστε το διακόπτη του κουμπιού στο κενό μεταξύ των γραμμών στις ακίδες 24-26
Αυτός ο διακόπτης θα σας επιτρέψει να απενεργοποιήσετε το ρομπότ χωρίς να χρειαστεί να αποσυνδέσετε το ρεύμα.
Βήμα 9. Συνδέστε ένα κόκκινο καλώδιο από το H24 στην κόκκινη ράγα στον επόμενο διαθέσιμο πείρο στα δεξιά του αισθητήρα
Αυτό θα ενεργοποιήσει το κουμπί.
Βήμα 10. Χρησιμοποιήστε την αντίσταση για να συνδέσετε το H26 στη μπλε ράγα
Συνδέστε το με τον πείρο ακριβώς δίπλα στο μαύρο καλώδιο που συνδέσατε πριν από μερικά βήματα.
Βήμα 11. Συνδέστε ένα λευκό καλώδιο από το G26 στο pin 2 στο Arduino
Αυτό θα επιτρέψει στο Arduino να καταχωρήσει το κουμπί.
Μέρος 4 από 6: Εγκατάσταση του λογισμικού Arduino
Βήμα 1. Λήψη και εξαγωγή του Arduino IDE
Αυτό είναι το περιβάλλον ανάπτυξης Arduino και σας επιτρέπει να προγραμματίζετε οδηγίες που μπορείτε στη συνέχεια να τις ανεβάσετε στον μικροελεγκτή Arduino. Μπορείτε να το κατεβάσετε δωρεάν από το arduino.cc/en/main/software. Αποσυμπιέστε το ληφθέν αρχείο κάνοντας διπλό κλικ σε αυτό και μετακινήστε το φάκελο μέσα σε μια εύκολη πρόσβαση. Στην πραγματικότητα δεν θα εγκαταστήσετε το πρόγραμμα. Αντ 'αυτού, θα τον εκτελέσετε απλώς από τον εξαγόμενο φάκελο κάνοντας διπλό κλικ στο arduino.exe.
Βήμα 2. Συνδέστε τη μπαταρία στο Arduino
Συνδέστε την υποδοχή πίσω μπαταρίας στην υποδοχή του Arduino για να του δώσετε ισχύ.
Βήμα 3. Συνδέστε το Arduino στον υπολογιστή σας μέσω USB
Τα Windows πιθανότατα δεν θα αναγνωρίσουν τη συσκευή.
Βήμα 4. Πατήστε
⊞ Win+R και πληκτρολογήστε devmgmt.msc.
Αυτό θα ξεκινήσει τη Διαχείριση συσκευών.
Βήμα 5. Κάντε δεξί κλικ στην "Άγνωστη συσκευή" στην ενότητα "Άλλες συσκευές" και επιλέξτε "Ενημέρωση λογισμικού προγράμματος οδήγησης
" Εάν δεν βλέπετε αυτήν την επιλογή, κάντε κλικ στην επιλογή "Ιδιότητες", επιλέξτε την καρτέλα "Πρόγραμμα οδήγησης" και, στη συνέχεια, κάντε κλικ στην επιλογή "Ενημέρωση προγράμματος οδήγησης".
Βήμα 6. Επιλέξτε "Περιήγηση στον υπολογιστή μου για λογισμικό προγραμμάτων οδήγησης
" Αυτό θα σας επιτρέψει να επιλέξετε το πρόγραμμα οδήγησης που συνοδεύει το Arduino IDE.
Βήμα 7. Κάντε κλικ στην επιλογή "Περιήγηση" και, στη συνέχεια, μεταβείτε στο φάκελο που εξαγάγατε νωρίτερα
Θα βρείτε έναν φάκελο "drivers" μέσα.
Βήμα 8. Επιλέξτε το φάκελο "drivers" και κάντε κλικ στο "OK"
" Επιβεβαιώστε ότι θέλετε να προχωρήσετε εάν έχετε προειδοποιήσει για άγνωστο λογισμικό.
Μέρος 5 από 6: Προγραμματισμός του ρομπότ
Βήμα 1. Ξεκινήστε το Arduino IDE κάνοντας διπλό κλικ στο αρχείο arduino.exe στο φάκελο IDE
Θα σας υποδεχτούν με ένα κενό έργο.
Βήμα 2. Επικολλήστε τον ακόλουθο κώδικα για να κάνετε το ρομπότ σας ευθεία
Ο παρακάτω κώδικας θα κάνει το Arduino σας να προχωρά συνεχώς μπροστά.
#include // αυτό προσθέτει τη βιβλιοθήκη "Servo" στο πρόγραμμα // τα ακόλουθα δημιουργούν δύο servo αντικείμενα Servo leftMotor. Servo rightMotor; void setup () {leftMotor.attach (12); // εάν ενεργοποιήσατε κατά λάθος τους αριθμούς pin για τα servos σας, μπορείτε να αλλάξετε τους αριθμούς εδώ rightMotor.attach (13). } void loop () {leftMotor.write (180); // με συνεχή περιστροφή, το 180 λέει στο σερβο να κινηθεί με πλήρη ταχύτητα "προς τα εμπρός". rightMotor. γράψτε (0)? // αν και τα δύο αυτά είναι στο 180, το ρομπότ θα κάνει κύκλο επειδή τα servos είναι αναποδογυρισμένα. "0", του λέει να κινείται με πλήρη ταχύτητα "προς τα πίσω". }
Βήμα 3. Δημιουργήστε και ανεβάστε το πρόγραμμα
Κάντε κλικ στο κουμπί δεξιού βέλους στην επάνω αριστερή γωνία για να δημιουργήσετε και να ανεβάσετε το πρόγραμμα στο συνδεδεμένο Arduino.
Μπορεί να θέλετε να σηκώσετε το ρομπότ από την επιφάνεια, καθώς θα συνεχίσει να προχωράει μόλις μεταφορτωθεί το πρόγραμμα
Βήμα 4. Προσθέστε τη λειτουργικότητα του διακόπτη kill
Προσθέστε τον ακόλουθο κώδικα στην ενότητα "void loop ()" του κώδικα για να ενεργοποιήσετε το διακόπτη kill, πάνω από τις λειτουργίες "εγγραφής ()".
εάν (digitalRead (2) == HIGH) // αυτό εγγράφεται όταν πατηθεί το κουμπί στο pin 2 του Arduino {while (1) {leftMotor.write (90); // "90" είναι ουδέτερη θέση για τα servos, η οποία τους λέει να σταματήσουν να στρίβουν δεξιάMotor.write (90). }}
Βήμα 5. Ανεβάστε και δοκιμάστε τον κωδικό σας
Με τον κωδικό kill switch που προστέθηκε, μπορείτε να ανεβάσετε και να δοκιμάσετε το ρομπότ. Θα πρέπει να συνεχίσει να κινείται προς τα εμπρός μέχρι να πατήσετε το διακόπτη, οπότε θα σταματήσει να κινείται. Ο πλήρης κωδικός πρέπει να μοιάζει με αυτόν:
#include // τα παρακάτω δημιουργούν δύο servo αντικείμενα Servo leftMotor. Servo rightMotor; void setup () {leftMotor.attach (12); rightMotor.attach (13); } void loop () {if (digitalRead (2) == HIGH) {while (1) {leftMotor.write (90); rightMotor.write (90); }} leftMotor.write (180); rightMotor.write (0); }
Μέρος 6 από 6: Παράδειγμα
Βήμα 1. Ακολουθήστε ένα παράδειγμα
Ο παρακάτω κώδικας θα χρησιμοποιήσει τον αισθητήρα που είναι προσαρτημένος στο ρομπότ για να το κάνει να στρίβει προς τα αριστερά κάθε φορά που συναντά ένα εμπόδιο. Δείτε τα σχόλια στον κώδικα για λεπτομέρειες σχετικά με το τι κάνει το κάθε μέρος. Ο παρακάτω κώδικας είναι ολόκληρο το πρόγραμμα.
#include Servo leftMotor; Servo rightMotor; const int serialPeriod = 250; // αυτό περιορίζει την έξοδο στην κονσόλα μία φορά κάθε 1/4 δευτερόλεπτο χωρίς υπογραφή για μεγάλο χρονικό διάστημαSerialDelay = 0; const int loopPeriod = 20; // αυτό καθορίζει πόσο συχνά ο αισθητήρας ανεβάζει μια ένδειξη στα 20ms, η οποία είναι μια συχνότητα 50Hz ανυπόγραφη για μεγάλο χρονικό διάστημαLoopDelay = 0; // αυτό εκχωρεί τις συναρτήσεις TRIG και ECHO στις ακίδες του Arduino. Πραγματοποιήστε προσαρμογές στους αριθμούς εδώ, εάν συνδέσατε διαφορετικά const int ultrasonic2TrigPin = 8; const int ultrasonic2EchoPin = 9; int υπερηχητικό2Distance; int υπερηχητική2Διάρκεια; // αυτό ορίζει τις δύο πιθανές καταστάσεις για το ρομπότ: οδήγηση προς τα εμπρός ή στροφή αριστερά #define DRIVE_FORWARD 0 #define TURN_LEFT 1 int state = DRIVE_FORWARD; // 0 = οδήγηση προς τα εμπρός (DEFAULT), 1 = στροφή αριστερά void setup () {Serial.begin (9600); // αυτές οι διαμορφώσεις pinMode (υπερήχων2TrigPin, OUTPUT); pinMode (ultrasonic2EchoPin, INPUT); // αυτό εκχωρεί τους κινητήρες στις καρφίτσες Arduino leftMotor.attach (12). rightMotor.attach (13); } void loop () {if (digitalRead (2) == HIGH) // αυτό ανιχνεύει το διακόπτη kill {while (1) {leftMotor.write (90); rightMotor.write (90); }} debugOutput (); // αυτό εκτυπώνει μηνύματα εντοπισμού σφαλμάτων στη σειριακή κονσόλα εάν (millis () - timeLoopDelay> = loopPeriod) {readUltrasonicSensors (); // αυτό δίνει εντολή στον αισθητήρα να διαβάσει και να αποθηκεύσει τις μετρημένες αποστάσεις stateMachine (); timeLoopDelay = millis (); }} void stateMachine () {if (κατάσταση == DRIVE_FORWARD) // αν δεν εντοπίστηκαν εμπόδια {if (ultrasonic2Distance> 6 || ultrasonic2Distance <0) // αν δεν υπάρχει τίποτα μπροστά από το ρομπότ υπερηχητική Απόσταση θα είναι αρνητική για ορισμένους υπερηχητικούς αν δεν υπάρχει εμπόδιο {// οδηγείτε προς τα εμπρός rightMotor.write (180). leftMotor.write (0); } else // εάν υπάρχει ένα αντικείμενο μπροστά μας {state = TURN_LEFT; }} else if (κατάσταση == TURN_LEFT) // εάν εντοπιστεί κάποιο εμπόδιο, στρίψτε αριστερά {unsigned long timeToTurnLeft = 500; // χρειάζονται περίπου 0,5 δευτερόλεπτα για να στρίψετε 90 μοίρες. Mayσως χρειαστεί να το προσαρμόσετε εάν οι τροχοί σας έχουν διαφορετικό μέγεθος από το παράδειγμα χωρίς υπογραφή μακρύ turnStartTime = millis (); // εξοικονομήστε χρόνο που αρχίσαμε να στρέφουμε ενώ ((millis ()-turnStartTime) <timeToTurnLeft) // μείνετε σε αυτόν τον βρόχο έως ότου παρέλθει η ώραToTurnLeft {// στρίψτε αριστερά, θυμηθείτε ότι και τα δύο έχουν οριστεί σε "180" θα γυρίσει Το rightMotor.write (180); leftMotor.write (180); } κατάσταση = DRIVE_FORWARD; }} void readUltrasonicSensors () {// αυτό είναι για υπερήχους 2. mayσως χρειαστεί να αλλάξετε αυτές τις εντολές εάν χρησιμοποιείτε διαφορετικό αισθητήρα. digitalWrite (ultrasonic2TrigPin, HIGH); καθυστέρηση Μικροδευτερόλεπτα (10); // διατηρεί τον ακροδέκτη τριγώνης ψηλά για τουλάχιστον 10 μικροδευτερόλεπτα digitalWrite (ultrasonic2TrigPin, LOW). υπερηχητική2Διαρκείας = παλμόςIn (υπερηχητικός2EchoPin, HIGH); υπερηχητικός2Distance = (υπερηχητικός2Διάρκεια/2)/29; } // το ακόλουθο είναι για σφάλματα εντοπισμού σφαλμάτων στην κονσόλα. void debugOutput () {if ((millis () - timeSerialDelay)> serialPeriod) {Serial.print ("ultrasonic2Distance:"); Serial.print (υπερηχητικός2Distance); Serial.print ("cm"); Serial.println (); timeSerialDelay = millis (); }}