Πίνακας περιεχομένων:

Ρομπότ Arduino Sumo: 5 βήματα
Ρομπότ Arduino Sumo: 5 βήματα

Βίντεο: Ρομπότ Arduino Sumo: 5 βήματα

Βίντεο: Ρομπότ Arduino Sumo: 5 βήματα
Βίντεο: Molecubes - Open Source Modular Robotics [molecubes.org] 2024, Νοέμβριος
Anonim
Ρομπότ Arduino Sumo
Ρομπότ Arduino Sumo

Πριν ξεκινήσουμε

Τι είναι το ρομπότ sumo;

Είναι ένα αυτο-ελεγχόμενο ρομπότ με συγκεκριμένες διαστάσεις και χαρακτηριστικά, έχει επίσης σχεδιαστεί σε εχθρικά σχήματα που του επιτρέπουν να συμμετέχει σε διαγωνισμούς και διαγωνισμούς με άλλα ρομπότ.

Το όνομα "σούμο" προήλθε από ένα παλιό ιαπωνικό άθλημα, το οποίο είναι δύο αντίπαλοι που παλεύουν σε ένα ρινγκ, ο καθένας από αυτούς προσπαθεί να σπρώξει τον άλλο αντίπαλο έξω από αυτό, και αυτό πρέπει να κάνουν τα ρομπότ και στους αγώνες ρομποτικής σούμο, όπου δύο ρομπότ τοποθετημένα στο ρινγκ και το ένα το άλλο προσπαθώντας να σπρώξει τον αντίπαλό του.

Η ιδέα:

Κατασκευάστε ένα ρομπότ με ορισμένες προδιαγραφές και ανάλογο με τους νόμους εκείνου του διαγωνισμού (Sumo), αυτό το ρομπότ πρέπει να έχει ακριβείς διαστάσεις για να πολεμήσει και να επιβιώσει για να μην ξεπεραστεί με κανένα τρόπο.

Ας ρίξουμε μια ματιά στους νόμους περί ανταγωνισμού των ρομπότ Sumo:

Θα εξηγήσω μερικούς σημαντικούς ρόλους που πρέπει να λάβετε υπόψη κατά τη δημιουργία του δικού σας SUMO, επίσης μπορεί να σας βοηθήσει να φανταστείτε και να καινοτομήσετε τη δική σας Ιδέα χωρίς να μπείτε σε βαθιές λεπτομέρειες.

1. Διαστάσεις: Μέγιστο Πλάτος 20 cm, Μέγιστο Μήκος 20 cm, Heψος δεν καθορίζεται.

2. Σχήμα: το σχήμα του ρομπότ μπορεί να αλλάξει μετά την εκκίνηση του αγώνα, αλλά χωρίς τα αδιαχώριστα μέρη να διατηρηθούν ως ένα κεντρικό αντικείμενο.

3. Βάρος: δεν υπερβαίνει τα 3 κιλά.

4. Το ρομπότ πρέπει να είναι αυτοέλεγχο.

Βήμα 1: Στοιχεία

Image
Image
Χρήσεις για κάθε συστατικό
Χρήσεις για κάθε συστατικό

1 Arduino Ano3

2 μοτέρ DC

1 L298N Dual H Bridge για το Arduino

1 Αισθητήρας υπερήχων

2 IR TCRT5000

1 μπαταρία 9v

Μπαταρία AA 4 * 1,5 v τεμάχια + Μπαταρία

4 ροδοί ρομπότ

καλώδια βραχυκυκλωτήρων

Βήμα 2: Χρήσεις για κάθε στοιχείο

Χρήσεις για κάθε συστατικό
Χρήσεις για κάθε συστατικό
Χρήσεις για κάθε συστατικό
Χρήσεις για κάθε συστατικό

Τώρα έχουμε τα απαιτούμενα στοιχεία, οπότε ας πάμε λεπτομερώς για να μάθουμε σε τι χρησιμεύει..

1- Arduino Ano3

Είναι ένας κύριος πίνακας που ελέγχει όλα τα μέρη και τα συνδέει μεταξύ τους

2- DC Motor

Τα οποία βοηθούν το ρομπότ να ελιχθεί και να κινηθεί μέσα στο δαχτυλίδι του ΑΝΤΑΓΩΝΙΣΜΟΥ

4- L298N Dual H Bridge για το Arduino

Είναι ένα μικρό πάνελ που παρέχει σταθερή τάση στους κινητήρες, καθώς και τη στήριξη της πλάκας Arduino με καλό έλεγχο της κίνησης και της τάσης.

5- Αισθητήρας υπερήχων

Ο αισθητήρας υπερήχων χρησιμοποιείται για τον εντοπισμό του ρομπότ του αντιπάλου και συνήθως τοποθετείται στην κορυφή του ρομπότ.

6- IR TCRT5000

Όπως έχουμε ήδη αναφέρει, το δαχτυλίδι του διαγωνισμού σχεδιάστηκε σε ένα συγκεκριμένο μέγεθος και είχε δύο χρώματα, το γέμισμα είναι μαύρο και το πλαίσιο λευκό. Ο διαγωνιζόμενος δεν πρέπει να βγει. Επομένως, χρησιμοποιούμε τον αισθητήρα IR για να βεβαιωθούμε ότι το ρομπότ δεν θα είναι έξω από το δαχτυλίδι. Αυτός ο αισθητήρας έχει τη δυνατότητα να διακρίνει τα χρώματα του δακτυλίου).

7- Μπαταρία 9v

Υποστηρίζει την κεντρική πλακέτα (Arduino) με τη σημαντική τάση.

8- Μπαταρία AA 4 * 1,5 v τεμάχια + Μπαταρία

Υποστηρίζει τους δύο κινητήρες (DC Motor) με τη σημαντική τάση και πρέπει να διαχωριστεί για να δώσει την πλήρη δύναμη στους τροχούς.

9- Καλώδια βραχυκυκλωτήρων

Βήμα 3: Σχεδιασμός

Σχέδιο
Σχέδιο
Σχέδιο
Σχέδιο

Έχω κάνει δύο σχέδια ρομπότ sumo χρησιμοποιώντας το Google 3D sketch-up επειδή μου αρέσει να δημιουργώ μοντέλα χαρτιού των ρομπότ μου πριν κόψω μέρη από ακρυλικό στον κόφτη λέιζερ. Για να επαληθεύσετε ότι όλα τα μέρη θα ταιριάζουν σωστά, είναι σημαντικό τα μοντέλα χαρτιού να εκτυπώνονται στο ακριβές μέγεθος των σχεδίων.

Και λαμβάνω υπόψη ότι είμαι σε συγκεκριμένη μέτρηση με τους νόμους του ανταγωνισμού, οπότε προσπαθήστε να σκεφτείτε με πιο δημιουργικά σχέδια και να κάνετε το δικό σας μοντέλο.

Για να είστε πιο ευαίσθητοι στο βάρος του ρομπότ που υποβάλλεται ή στη συνέχεια τοποθετήστε τις μπαταρίες στο μπροστινό μέρος του ρομπότ με την μπροστινή ασπίδα σε γωνία 45 μοιρών ως τη μορφή του ρομπότ.

Κατεβάστε το σχέδιο 1 από εδώ

Κατεβάστε το σχέδιο 2 από εδώ

Μπορείτε επίσης να κάνετε λήψη προτύπου μοντέλου χαρτιού

Ανοίξτε το αρχείο PDF με το Adobe Acrobat Reader (προτεινόμενο λογισμικό)

Βήμα 4: Παίξτε στρατηγική

Image
Image
Στρατηγική παιχνιδιού
Στρατηγική παιχνιδιού

Όπως αναφέραμε προηγουμένως ότι το ρομπότ πρέπει να έχει τη δική του ικανότητα να το ελέγχει μόνος του, έτσι μας δίνει τη δυνατότητα να το προγραμματίσουμε με περισσότερους από έναν τρόπους, ανάλογα με το πώς θέλετε το ρομπότ να παίζει στο δαχτυλίδι όπως κάθε αντίπαλος πραγματικά θέλω να κερδίσω το παιχνίδι.

Στρατηγική παιχνιδιού (1):

· Θα κάνουμε το ρομπότ γύρω του συνεχώς.

· Το ρομπότ μετράει συνεχώς την απόσταση κατά τη διάρκεια της περιστροφής.

· Εάν η απόσταση του αντιπάλου που μετρήθηκε είναι μικρότερη από (για παράδειγμα, 10 εκατοστά), αυτό σημαίνει ότι ο αντίπαλος βρίσκεται μπροστά μας απευθείας από το ρομπότ.

· Το ρομπότ πρέπει να σταματήσει να περιστρέφεται και μετά ξεκινά την επίθεση (προχωρήστε γρήγορα με όλη τη δύναμη γρήγορα).

· Το ρομπότ πρέπει να λαμβάνει τις ενδείξεις από τους αισθητήρες IR για να είναι σίγουρος ότι δεν περάσαμε το περίγραμμα του δακτυλίου.

· Εάν διαβάσει την παρουσία IR λευκού χρώματος, πρέπει να μετακινήσει το ρομπότ προς την αντίθετη κατεύθυνση του αισθητήρα (για παράδειγμα: Εάν ο μπροστινός αισθητήρας, ο οποίος έδειξε το λευκό χρώμα του ρομπότ, κινείται προς τα πίσω)!

Στρατηγική παιχνιδιού (2):

· Στην αρχή το ρομπότ μετρά την απόσταση μπροστά.

· Το ρομπότ μετακινείται πίσω με την ίδια μετρημένη απόσταση.

· Το ρομπότ σταματά να περιστρέφεται και μετά ξεκινά ξαφνικά την επίθεση (προχωρήστε μπροστά με όλη τη δύναμη).

· Σε περίπτωση αντίπαλου, το ρομπότ πρέπει να περιστρέφεται 45 μοίρες, ενώ για να επιβιώσει αν πέσει έξω από το δαχτυλίδι.

· Το ρομπότ πρέπει να λαμβάνει τις ενδείξεις από τους αισθητήρες IR για να είναι σίγουρος ότι δεν περάσαμε το περίγραμμα του δακτυλίου.

· Εάν διαβάσει την παρουσία IR λευκού χρώματος, πρέπει να μετακινήσει το ρομπότ προς την αντίθετη κατεύθυνση του αισθητήρα (για παράδειγμα: Εάν ο μπροστινός αισθητήρας, ο οποίος έδειξε το λευκό χρώμα του ρομπότ, κινείται προς τα πίσω)!

Βήμα 5: Προγραμματισμός

Προγραμματισμός
Προγραμματισμός

ελέγξτε το κύκλωμα και τον κωδικό

* Ενημέρωση 2019-03-26

Κατεβάστε πρώτα τη βιβλιοθήκη υπερήχων από εδώ και εγκαταστήστε την:

github.com/ErickSimoes/Ultrasonic/blob/mas…

/*

από τον Αχμέτ Αζούζ

www.instructables.com/id/How-to-Make-Ardu…

Κατεβάστε πρώτα το lib από εδώ

github.com/ErickSimoes/Ultrasonic/blob/ma…

*/

#include Ultrasonic.h

Υπερήχων υπερήχων (4, 3)?

const int IN1 = 5;

const int IN2 = 6; const int IN3 = 9; const int IN4 = 10; #define IR_sensor_front A0 // front sensor #define IR_sensor_back A1 // rear senson int distance?

void setup ()

{Serial.begin (9600); καθυστέρηση (5000)? // σύμφωνα με τους συνολικούς ρόλους sumo} void loop () {int IR_front = analogRead (IR_sensor_front); int IR_back = analogRead (IR_sensor_back); απόσταση = ultrasonic.read (); ROTATE (200); // εκκίνηση rotete if (απόσταση <20) {Stop (); while (απόσταση 650 || IR_back> 650) {διάλειμμα;} καθυστέρηση (10); } if (IR_front <650) // <650 σημαίνει λευκή γραμμή {Stop (); καθυστέρηση (50)? BACKWARD (255); καθυστέρηση (500)? } if (IR_back <650) // {Stop (); καθυστέρηση (50)? ΜΠΡΟΣΤΑ (255); καθυστέρηση (500)? } /* ----------- εντοπισμός σφαλμάτων ---------------- Serial.print (υπερηχητικός. Βαθμός (CM)); Serial.println ("cm"); Serial.println ("IR front:"); Serial.println (IR_front); Serial.println ("IR πίσω:"); Serial.println (IR_back); */

} //--------------------------------------------

void FORWARD (int Speed) {// Όταν θέλουμε να αφήσουμε το Motor To να προχωρήσει, // απλώς ακυρώστε αυτό το τμήμα στην ενότητα βρόχου. analogWrite (IN1, Ταχύτητα); analogWrite (IN2, 0); analogWrite (IN3, 0); analogWrite (IN4, Ταχύτητα); } // ------------------------------------------------ άκυρο BACKWARD (int Speed) {// Όταν θέλουμε να αφήσουμε το Motor To να προχωρήσει, // απλώς ακυρώστε αυτό το τμήμα στην ενότητα βρόχου. analogWrite (IN1, 0); analogWrite (IN2, Ταχύτητα); analogWrite (IN3, Ταχύτητα); analogWrite (IN4, 0); } // ------------------------------------------------ void ROTATE (int Speed) {// Όταν θέλουμε να αφήσει το Motor To Περιστροφή, // απλά ακυρώστε αυτό το τμήμα στην ενότητα βρόχου. analogWrite (IN1, Ταχύτητα); analogWrite (IN2, 0); analogWrite (IN3, Ταχύτητα); analogWrite (IN4, 0); } // ------------------------------------------------ void Stop () {// Όταν θέλουμε να σταματήσει η μηχανή, // απλώς ακυρώστε αυτό το τμήμα στην ενότητα βρόχου. analogWrite (IN1, 0); analogWrite (IN2, 0); analogWrite (IN3, 0); analogWrite (IN4, 0); }

Συνιστάται: