(it will be available soon in English)
Εισαγωγή
|
Published date: 10/09/2016
|
Arduino ρομπότ υπάρχουν πολλά, τόμως αυτό που θα φιάξουμε μαζί εδώ στο ardumotive.com θα είναι ξεχωριστό! Γιατί; Γιατί θα το έχετε φτιάξει εσείς!
Το να φτιάξει κάποιος ένα ρομποτικό όχημα με την χρήση του Arduino είναι ίσως η πιο διασκεδαστική κατασκευή που μπορεί να κάνει κάποιος με αυτό. Το να βλέπεις κάτι που έφτιαξες εσύ να κινείται μόνο του στον χώρο, αποφεύγοντας τυχών εμπόδια, είναι κάτι που σε 'γεμίζει'. Είναι όμως και κάτι ξεπερασμένο θα έλεγα. Γι΄αυτό το δικό μας ρομπότ θα μπορεί να κάνει και μερικά πράγματα παραπάνω.
Στόχος μας λοιπόν είναι να κατασκευάσουμε βήμα βήμα ένα ρομποτικό όχημα το οποίο να μπορεί να
Αρκετοί από εσάς έχετε ως εργαστηριακή εργασία ή ακόμα και πτυχιακή την κατασκευή ενός τέτοιου ρομποτικού οχήματος. Αυτός ο οδηγός θα σας βοηθήσει ώστε να το φτιάξετε εύκολα και να καταλάβετε και πέντε βασικά πράγματα γύρω απ' το κομμάτι των μικρο-ελεγκτών, ηλεκτρονικών και του κώδικα-προγραμματισμού.
Τα υλικά που θα χρειαστούμε:
Το να φτιάξει κάποιος ένα ρομποτικό όχημα με την χρήση του Arduino είναι ίσως η πιο διασκεδαστική κατασκευή που μπορεί να κάνει κάποιος με αυτό. Το να βλέπεις κάτι που έφτιαξες εσύ να κινείται μόνο του στον χώρο, αποφεύγοντας τυχών εμπόδια, είναι κάτι που σε 'γεμίζει'. Είναι όμως και κάτι ξεπερασμένο θα έλεγα. Γι΄αυτό το δικό μας ρομπότ θα μπορεί να κάνει και μερικά πράγματα παραπάνω.
Στόχος μας λοιπόν είναι να κατασκευάσουμε βήμα βήμα ένα ρομποτικό όχημα το οποίο να μπορεί να
- κινείται μόνο του στον χώρο
- ελέγχεται μέσω Android εφαρμογής
- κινείται μέσω φωνητικών εντολών
Αρκετοί από εσάς έχετε ως εργαστηριακή εργασία ή ακόμα και πτυχιακή την κατασκευή ενός τέτοιου ρομποτικού οχήματος. Αυτός ο οδηγός θα σας βοηθήσει ώστε να το φτιάξετε εύκολα και να καταλάβετε και πέντε βασικά πράγματα γύρω απ' το κομμάτι των μικρο-ελεγκτών, ηλεκτρονικών και του κώδικα-προγραμματισμού.
Τα υλικά που θα χρειαστούμε:
- Arduino uno και το καλώδιο usb του
- Μικρό breadboard και καλώδια (male to male breadboard)
- Bluetooth module HC-06
- Ρομποτικό σασί με 2 ρόδες - μοτέρ (όπως αυτό)
- Αισθητήρας υπερήχων HC-SR04
- Μικρό servo-μοτέρ (180o) μαζί με την βάση για τον HC-SR04 (όπως αυτό)
- L298N Motor Driver Module (όπως αυτό)
- Θήκη-βάση για μπαταρίες AAx4 και για 9V
- Βύσμα για το DC Power Jack του Arduino uno
- 2 διακόπτες "επαφής" (όπως αυτό)
- Buzzer
- Αποστάτες - βίδες - παξιμάδια για να τοποθετήσουμε τα εξαρτήματα πάνω στο ρομποτικό σασί (όπως αυτά)
Εργαλεία:
- Δραπανοκατσάβιδο για να ανοίξετε επιπλέον τρύπες στο ρομποτικό σασί
- Κατσαβίδι
- Κολλητήρι και καλάι για να κολλήσετε τα καλώδια στα μοτέρ
- Πιστόλι θερμοσιλικόνης και ράβδους θερμοσιλικόνης
Συναρμολόγηση
Στο επόμενο βήμα θα δούμε πως να συναρμολογήσουμε το ρομποτικό μας όχημα. Στην ουσία θα δούμε που πρέπει να τοποθετήσουμε τα εξαρτήματα μας πάνω στο ρομποτικό σασί. Ρομποτικό σασί απ΄ εδώ και στο εξής θα θεωρούμε μόνο το κομμάτι plexiglass.
Τοποθέτηση μοτέρ και πίσω ρόδας
Το πρώτο που πρέπει να κάνουμε είναι να τοποθετήσουμε τα μοτέρ με τις ρόδες τους, καθώς και την πίσω ρόδα πάνω στο ρομποτικό σασί. Χρησιμοποιείστε ένα κατσαβίδι για να βιδώσετε τις βίδες που περιλαμβάνονται μαζί με το σασί. Δείτε τις παρακάτω φωτογραφίες απ' το δικό μου όχημα (το οποίο είναι ήδη συναρμολογημένο).
Τοποθέτηση μοτέρ και πίσω ρόδας
Το πρώτο που πρέπει να κάνουμε είναι να τοποθετήσουμε τα μοτέρ με τις ρόδες τους, καθώς και την πίσω ρόδα πάνω στο ρομποτικό σασί. Χρησιμοποιείστε ένα κατσαβίδι για να βιδώσετε τις βίδες που περιλαμβάνονται μαζί με το σασί. Δείτε τις παρακάτω φωτογραφίες απ' το δικό μου όχημα (το οποίο είναι ήδη συναρμολογημένο).
Στην παραπάνω εικόνα φαίνεται το πως είναι τοποθετημένο το μοτέρ. Παρατηρήστε πως οι ακροδέκτες του μοτέρ είναι απ' την έξω πλευρά! Αυτό ισχύει και για τα δυο μοτέρ. Δείτε επίσης, σε σχέση με την κάτω εικόνα - εσωτερική πλευρά, πως είναι τοποθετημένες οι βίδες πάνω στα πλαστικά άκρα που "κρατάνε" τα μοτέρ σταθερά στο ρομποτικό σασί. Αφού βιδώστε τα μοτέρ μπορείτε να "κουμπώσετε" τις δυο ρόδες πάνω σε αυτά. Χρησιμοποιείστε τους 4 αποστάτες για να το φέρετε στο σωστό ύψος.
Επόμενο βήμα είναι να κολλήσουμε καλώδια πάνω στους ακροδέκτες των μοτέρ. Πριν συνεχίσετε βεβαιωθείτε πως οι ακροδέκτες (και των δυο μοτέρ) κοιτάνε προς την εξωτερική πλευρά του σασί! ("προς τα έξω"). Εδώ θα πρέπει να κάνετε δύο κολλήσεις για κάθε μοτέρ. Όπως φαίνεται στην πρώτη εικόνα πιο πάνω, στον πάνω ακροδέκτη κολλήστε ένα κόκκινο καλώδιο και στον κάτω ένα μαύρο. Φροντίστε τα καλώδια να είναι αρκετά μεγάλα ώστε να μπορέσουμε να τα περάσουμε αργότερα στο πάνω μέρος του ρομποτικού σασί. Επαναλάβετε την διαδικασία και για το άλλο μοτέρ (το κόκκινο καλώδιο πάνω!).
Ήρθε η ώρα να ανοίξουμε μερικές τρύπες! Χρησιμοποιείστε ένα δραπανοκατσάβιδο με το κατάλληλο τρυπάνι ώστε να μπορέσουν να περάσουν οι αποστάτες μέσα απ' αυτές (στο ρομποτικό σασί). Που να ανοίξω τις τρύπες; Ο χώρος είναι περιορισμένος, προχωρήστε με προσοχή.
Τοποθέτηση L298
Αρχικά, στο πίσω μέρος τοποθετήστε πρόχειρα το L298, και με ένα μαρκαδόρο αφήστε κάποια σημαδάκια μέσα απ' τις τρύπες του ώστε να ανοίξετε τις τρύπες στην σωστή θέση. Ανοίξτε τις τρύπες και περάστε τους αποστάτες - στο κάτω μέρος παξιμάδια, στο πάνω βίδες. Τοποθετήστε το L298 πάνω στους αποστάτες και βιδώστε καλά.
Ήρθε η ώρα να ανοίξουμε μερικές τρύπες! Χρησιμοποιείστε ένα δραπανοκατσάβιδο με το κατάλληλο τρυπάνι ώστε να μπορέσουν να περάσουν οι αποστάτες μέσα απ' αυτές (στο ρομποτικό σασί). Που να ανοίξω τις τρύπες; Ο χώρος είναι περιορισμένος, προχωρήστε με προσοχή.
Τοποθέτηση L298
Αρχικά, στο πίσω μέρος τοποθετήστε πρόχειρα το L298, και με ένα μαρκαδόρο αφήστε κάποια σημαδάκια μέσα απ' τις τρύπες του ώστε να ανοίξετε τις τρύπες στην σωστή θέση. Ανοίξτε τις τρύπες και περάστε τους αποστάτες - στο κάτω μέρος παξιμάδια, στο πάνω βίδες. Τοποθετήστε το L298 πάνω στους αποστάτες και βιδώστε καλά.
Η παραπάνω εικόνα δείχνει πως πρέπει να έχετε τοποθετήσει το L298 πάνω στο ρομποτικό σασί. Αριστερά και δεξιά θα δείτε πως έχει τις θέσης - κλέμες - που πρέπει να μπουν τα καλώδια απ' τα μοτέρ. Στην θέση OUT1 βάζετε το κόκκινο καλώδιο απ' το δεξί μοτέρ (όπως το κοιτάμε απο πίσω) ενώ στην θέση OUT2 το μαύρο καλώδιο. Στην θέση OUT3 το κόκκινο καλώδιο του άλλου μοτέρ (αριστερού) και στην θέση OUT4 το μαύρο καλώδιο. Θα ασχοληθούμε στην συνέχεια με τα υπόλοιπα καλώδια που πρέπει να συνδέσουμε στο L298 για να λειτουργήσει.
Τοποθέτηση Arduino και breadboard
Ακριβώς δίπλα στο L298 πρέπει να τοποθετηθεί το Arduino uno. Ακολουθήστε την ίδια διαδικασία όπως παραπάνω για να ανοίξετε τις 4 τρύπες για τους αποστάτες. Βιδώστε το arduino πάνω σε αυτούς. Λίγο πιο δίπλα κολλήστε το breadboard πάνω στο ρομποτικό σασί (διαθέτει ταινία διπλής όψεως στο κάτω μέρος του). Δείτε την εικόνα παρακάτω απ' το δικό μου όχημα - αγνοείστε τα καλώδια, θα σας σώσω οδηγίες στην συνέχεια.
Τοποθέτηση Arduino και breadboard
Ακριβώς δίπλα στο L298 πρέπει να τοποθετηθεί το Arduino uno. Ακολουθήστε την ίδια διαδικασία όπως παραπάνω για να ανοίξετε τις 4 τρύπες για τους αποστάτες. Βιδώστε το arduino πάνω σε αυτούς. Λίγο πιο δίπλα κολλήστε το breadboard πάνω στο ρομποτικό σασί (διαθέτει ταινία διπλής όψεως στο κάτω μέρος του). Δείτε την εικόνα παρακάτω απ' το δικό μου όχημα - αγνοείστε τα καλώδια, θα σας σώσω οδηγίες στην συνέχεια.
Τοποθέτηση διακοπτών επαφής
Τοποθετήστε τους διακόπτες όπως στην εικόνα παρακάτω. Θα πρέπει το σίδερο να προεξέχει αριστερά και δεξιά. Γιατί να βάλω διακόπτες επαφής; Ο λόγος είναι αρκετά απλός. Ο αισθητήρας υπερήχων που θα χρησιμοποιήσουμε για την αποφυγή εμποδίων δεν έχει πολύ μεγάλη οπτική γωνία και έτσι μερικές φορές το όχημα μας κτυπάει πάνω σε τοίχους ή αντικείμενα που βρίσκονται κοντά στις ρόδες, δηλαδή στα άκρα του. Αυτό μπορούμε να το αντιμετωπίσουμε με αυτούς τους διακόπτες.
Τοποθετήστε τους διακόπτες όπως στην εικόνα παρακάτω. Θα πρέπει το σίδερο να προεξέχει αριστερά και δεξιά. Γιατί να βάλω διακόπτες επαφής; Ο λόγος είναι αρκετά απλός. Ο αισθητήρας υπερήχων που θα χρησιμοποιήσουμε για την αποφυγή εμποδίων δεν έχει πολύ μεγάλη οπτική γωνία και έτσι μερικές φορές το όχημα μας κτυπάει πάνω σε τοίχους ή αντικείμενα που βρίσκονται κοντά στις ρόδες, δηλαδή στα άκρα του. Αυτό μπορούμε να το αντιμετωπίσουμε με αυτούς τους διακόπτες.
Τοποθέτηση servo και HC-SR04
Στο σημείο αυτό θα πρέπει να συναρμολογήσετε την βάση με τον servo κινητήρα και τον αισθητήρα υπερήχων HC-SR04. Δεν μπορώ να σας δώσω περισσότερες λεπτομέρειες εδώ, αν έχετε αγοράσει το ίδιο εξάρτημα με αυτό που σας είπα στο πρώτο άρθρο, τότε η παρακάτω εικόνα μιλάει από μόνη της.
Στο σημείο αυτό θα πρέπει να συναρμολογήσετε την βάση με τον servo κινητήρα και τον αισθητήρα υπερήχων HC-SR04. Δεν μπορώ να σας δώσω περισσότερες λεπτομέρειες εδώ, αν έχετε αγοράσει το ίδιο εξάρτημα με αυτό που σας είπα στο πρώτο άρθρο, τότε η παρακάτω εικόνα μιλάει από μόνη της.
Τοποθέτηση βάσεις μπαταριών
Στο κάτω μέρος του και με την χρήση θερμοσιλικόνης κολλήστε-στερεώστε τις δυο βάσεις μπαταριών. Πίσω η βάση για τις 4 ΑΑ και λίγο πιο μπροστά η βάση για την 9V.
Η 9V μπαταρία θα τροφοδοτεί το Arduino μας. Περάστε το καλώδιο απο μια τρύπα στο πάνω μέρος του σασί, κοντά στο Arduino. Κάντε μια τομή στο κόκκινο καλώδιο και συνδέστε εκεί τον διακόπτη on/off (αν έχετε πάρει το ίδιο σασί με το δικό μου είχε μαζί έναν τέτοιο διακόπτη, καθώς και την βάση για τις 4 ΑΑ μπαταρίες). Στο τέλος του καλωδίου συνδέστε το DC jack και τέλος συνδέστε το με το Arduino. (μην βάλετε ακόμα την μπαταρία επάνω!) - Δείτε την εικόνα 5.
Στο κάτω μέρος του και με την χρήση θερμοσιλικόνης κολλήστε-στερεώστε τις δυο βάσεις μπαταριών. Πίσω η βάση για τις 4 ΑΑ και λίγο πιο μπροστά η βάση για την 9V.
Η 9V μπαταρία θα τροφοδοτεί το Arduino μας. Περάστε το καλώδιο απο μια τρύπα στο πάνω μέρος του σασί, κοντά στο Arduino. Κάντε μια τομή στο κόκκινο καλώδιο και συνδέστε εκεί τον διακόπτη on/off (αν έχετε πάρει το ίδιο σασί με το δικό μου είχε μαζί έναν τέτοιο διακόπτη, καθώς και την βάση για τις 4 ΑΑ μπαταρίες). Στο τέλος του καλωδίου συνδέστε το DC jack και τέλος συνδέστε το με το Arduino. (μην βάλετε ακόμα την μπαταρία επάνω!) - Δείτε την εικόνα 5.
Το καλώδιο απ' την βάση των 4xAA (4x1.5V=6V) θα πάει στο L298. To L298 για την τροφοδοσία του έχει 3 κλέμες (συνήθως Vbat ή 12V, GND, 5V). Το κόκκινο καλώδιο θα πάει στο Vbat και το μαύρο στο GND. Βρείτε ένα άλλο ζεύγος κόκκινου-μαύρου καλωδίου και συνδέστε το στο GND και 5V (δε χρειάζεται φαντάζομαι να αναφέρω ότι στο 5V θα βάλετε το κόκκινο, αλλά θα το κάνω). Την άλλη άκρη συνδέστε την με το Arduino uno στα pins 5V και GND αντίστοιχα (που αλλού;)
Τέλος συναρμολόγησης
Έχοντας ολοκληρώσει όλα τα παραπάνω, το ρομποτικό σας όχημα πρέπει να δείχνει κάπως έτσι...
Κίνηση
Στο επόμενο βήμα θα συνδέσουμε το L298 module με το Arduino uno και θα το προγραμματίσουμε έτσι ώστε να μπορεί να εκτελέσει κίνηση προς όλες τις κατευθύνσεις.
Δεν χρειάζεται προς το παρόν να συνδέσετε την μπαταρία των 9 Volt. Θα χρειαστεί όμως να τοποθετήσετε τις 4 ΑΑ.
Στο προηγούμενο βήμα συνδέσαμε τα δύο dc μοτέρ με το L298 καθώς και την τροφοδοσία του με τις 4 ΑΑ και το Arduino uno. Εν συντομία τα επαναλαμβάνω και παρακάτω:
Για να προγραμματίσουμε το Arduino θα χρησιμοποιήσουμε το Codebender που είναι το online Arduino IDE. Μπείτε εδώ ώστε να φτιάξετε το προφίλ σας και να κατεβάσετε τα drivers καθώς και το browser plugin ακολουθώντας τον οδηγό. Το Codebender online Arduino IDE είναι συμβατό με όλα τα λειτουργικά συστήματα και με τους internet browsers Chrome και Firefox. Φυσικά μπορείτε να χρησιμοποιήσετε και το κλασικό Arduino IDE, αλλά δεν θα δώσω οδηγίες χρήσης γι' αυτό.
Διαβάστε τον κώδικα για να τον κατανοήσετε. Πατήστε το πράσινο κουμπί "Run on Arduino" για να προγραμματίσετε το Arduino uno. Μόλις ολοκληρωθεί ο προγραμματισμός του, το ρομποτικό όχημα ανα 2 δευτερόλεπτα και για μια μόνο φορά θα κινηθεί ευθεία, πίσω, αριστερά και δεξιά, έπειτα θα σταματήσει. Προσοχή με το usb καλώδιο, καλό θα ήταν κάπως να το κρατάτε για να μην σας "φύγει". Αν το όχημα δεν κινηθεί σωστά ελέγξτε την συνδεσμολογία σας.
Δεν χρειάζεται προς το παρόν να συνδέσετε την μπαταρία των 9 Volt. Θα χρειαστεί όμως να τοποθετήσετε τις 4 ΑΑ.
Στο προηγούμενο βήμα συνδέσαμε τα δύο dc μοτέρ με το L298 καθώς και την τροφοδοσία του με τις 4 ΑΑ και το Arduino uno. Εν συντομία τα επαναλαμβάνω και παρακάτω:
- 12V ή Vbat: Κόκκινο καλώδιο απ' τις 4 ΑΑ
- GND: Μαύρο καλώδιο απ' τις 4 ΑΑ και ένα επιπλέον προς το GND pin του Arduino uno
- 5V: Καλώδιο προς το 5V pin του Arduino uno
- Out1: Κόκκινο καλώδιο - Δεξί μοτέρ
- Out2: Μαύρο καλώδιο - Δεξί μοτέρ
- Out3: Κόκκινο καλώδιο - Αριστερό μοτέρ
- Out4: Μαύρο καλώδιο - Δεξί μοτέρ
- In1: Arduino PWM pin 6
- In2: Arduino PWM pin 5
- In3: Arduino PWM pin 11
- In4: Arduino PWM pin 10
Για να προγραμματίσουμε το Arduino θα χρησιμοποιήσουμε το Codebender που είναι το online Arduino IDE. Μπείτε εδώ ώστε να φτιάξετε το προφίλ σας και να κατεβάσετε τα drivers καθώς και το browser plugin ακολουθώντας τον οδηγό. Το Codebender online Arduino IDE είναι συμβατό με όλα τα λειτουργικά συστήματα και με τους internet browsers Chrome και Firefox. Φυσικά μπορείτε να χρησιμοποιήσετε και το κλασικό Arduino IDE, αλλά δεν θα δώσω οδηγίες χρήσης γι' αυτό.
Διαβάστε τον κώδικα για να τον κατανοήσετε. Πατήστε το πράσινο κουμπί "Run on Arduino" για να προγραμματίσετε το Arduino uno. Μόλις ολοκληρωθεί ο προγραμματισμός του, το ρομποτικό όχημα ανα 2 δευτερόλεπτα και για μια μόνο φορά θα κινηθεί ευθεία, πίσω, αριστερά και δεξιά, έπειτα θα σταματήσει. Προσοχή με το usb καλώδιο, καλό θα ήταν κάπως να το κρατάτε για να μην σας "φύγει". Αν το όχημα δεν κινηθεί σωστά ελέγξτε την συνδεσμολογία σας.
Αποφυγή εμποδίων
Στο τελευταίο βήμα θα κάνουμε το ρομπότ να κινείτε μόνο του στον χώρο, αποφεύγοντας τυχών εμπόδια που θα συναντήσει στον δρόμο του.
Για να το πετύχουμε αυτό θα χρησιμοποιήσουμε έναν αισθητήρα υπερήχων και για αποφύγουμε συγκρούσεις με αντικείμενα που βρίσκονται εκτός του πεδίου ανίχνευσης θα χρησιμοποιήσουμε και δυο διακόπτες "επαφής". Επιπλέον για την καλύτερη επιλογή του δρόμου διαφυγής, έχουμε τοποθετήσει στο μπροστινό μέρος του ρομποτικού οχήματος έναν servo κινητήρα ο οποίος θα γυρνάει τον αισθητήρα υπερήχων δεξιά και αριστερά.
Λίγα λόγια για τους υπέρηχους
Για να το πετύχουμε αυτό θα χρησιμοποιήσουμε έναν αισθητήρα υπερήχων και για αποφύγουμε συγκρούσεις με αντικείμενα που βρίσκονται εκτός του πεδίου ανίχνευσης θα χρησιμοποιήσουμε και δυο διακόπτες "επαφής". Επιπλέον για την καλύτερη επιλογή του δρόμου διαφυγής, έχουμε τοποθετήσει στο μπροστινό μέρος του ρομποτικού οχήματος έναν servo κινητήρα ο οποίος θα γυρνάει τον αισθητήρα υπερήχων δεξιά και αριστερά.
Λίγα λόγια για τους υπέρηχους
Όπως φαίνεται και στην παραπάνω εικόνα, οι υπέρηχοι βρίσκονται πάνω απ' τις ακουστικές συχνότητες, έτσι δεν μπορεί να τους ακούσει το ανθρώπινο αυτί. Παρόλο πάντως που εμείς δεν τους ακούμε κάποια ζώα μπορούν και να τους ακούν αλλά και να τους χρησιμοποιούν. Χαρακτηριστικά παραδείγματα που μας το δείχνουν αυτό είναι η κίνηση των νυχτερίδων και η σφυρίχτρα που χρησιμοποιείται για τους σκύλους. Αισθητήρες υπερήχων συναντάμε σε πολλές εφαρμογές στην ιατρική, στην πλοήγηση σκαφών/πλοίων ακόμα και στα αυτοκίνητα μας στα γνωστά park sensors.
Οι αισθητήρες υπερήχων λειτουργούν με την ίδια αρχή που λειτουργούν τα ραντάρ και τα σόναρ. Εκτιμούν την απόσταση ενός στόχου λαμβάνοντας υπόψη τους την αντανάκλαση ενός ραδιοκύματος ή ενός ηχητικού σήματος πάνω στο στόχο.
Οι αισθητήρες υπερήχων λειτουργούν με την ίδια αρχή που λειτουργούν τα ραντάρ και τα σόναρ. Εκτιμούν την απόσταση ενός στόχου λαμβάνοντας υπόψη τους την αντανάκλαση ενός ραδιοκύματος ή ενός ηχητικού σήματος πάνω στο στόχο.
Δημιουργούν υψηλής συχνότητας κύματα και χρησιμοποιώντας το επιστρεφόμενο σήμα καθορίζουν την απόσταση ή ακόμα και την ταχύτητα του στόχου. Για να το επιτύχουν αυτό χρησιμοποιούν τον χρόνο που έκανε το σήμα για να καλύψει την απόσταση από τον αισθητήρα στο αντικείμενο και πίσω.
Στο Arduino η διαδικασία αυτή (αντιστοίχηση χρόνου σε απόσταση) είναι αρκετά απλή διότι υπάρχει συγκεκριμένη βιβλιοθήκη για τον αισθητήρα HC-SR04 που κάνει την "δύσκολη" δουλεία. Εμείς στον κώδικα μας αρκεί να κάνουμε χρήση μόνο μιας εντολής! Η εντολή αυτή θα μας επιστρέψει την απόσταση σε εκατοστά (cm).
Συνδεσμολογία
Απ΄ εδώ και στο εξής θα χρησιμοποιείτε το breadboard για τα καλώδια τροφοδοσίας 5V και GND αλλά και για μικρά καλώδια που δεν φτάνουν στο Arduino, ως προέκταση.
Αισθητήρας HC-SR04 (Ultrasonic Sensor)
Διακόπτες "επαφής"
Θα πρέπει να έχετε τοποθετήσει έναν διακόπτη σε κάθε πλευρά του ρομποτικού οχήματος, εναν αριστερά και έναν δεξιά. Κάθε διακόπτης έχει δυο επαφές, το ένα καλώδιο θα πρέπει να πάει στην γείωση - gnd και το άλλο σε κάποιο pin του Arduino. Αν έχετε διακόπτη με τρις επαφές τότε θα πρέπει να συνδέσετε τα pins 'com' και 'no'. Δεδομένου οτι έχουμε να κάνουμε με διακόπτη δύο θέσεων, δεν παίζει ρόλο πιο pin θα επιλέξετε για την παρακάτω συνδεσμολογία.
Servo motor
Έχει τρία καλώδια, Vcc κόκκινο, GND μαύρο/καφέ και συνήθως πορτοκαλί το σήμα το οποίο το πάει στο Arduino pin 3.Διαβάστε τον κώδικα για να τον κατανοήσετε. Πατήστε το πράσινο κουμπί "Run on Arduino" για να προγραμματίσετε το Arduino uno. Μην τοποθετήσετε ακόμα τις μπαταρίες.
Κώδικας
Το παρακάτω πρόγραμμα χρησιμοποιεί την βιβλιοθήκη ultrasonic.h για την εύρεση την απόστασης σε cm απ' το εμπόδιο που βλέπει ο αισθητήρας υπερήχων. Αν θέλετε να κάνετε χρήση του Arduino IDE αντί του Codebender και σας αρέσει να παιδεύεστε θε πρέπει να την βρείτε και να την εγκαταστήσετε μόνοι σας, μην με ρωτάτε για το Arduino IDE όταν όλα γίνονται αυτόματα με το Codebender.
Διαβάστε τον κώδικα για να τον κατανοήσετε. Πατήστε το πράσινο κουμπί "Run on Arduino" για να προγραμματίσετε το Arduino uno. Μην τοποθετήσετε ακόμα τις μπαταρίες.
Συνδεσμολογία
Απ΄ εδώ και στο εξής θα χρησιμοποιείτε το breadboard για τα καλώδια τροφοδοσίας 5V και GND αλλά και για μικρά καλώδια που δεν φτάνουν στο Arduino, ως προέκταση.
Αισθητήρας HC-SR04 (Ultrasonic Sensor)
- Vcc - Arduino pin 5V (θέση breadboard)
- Trig - Arduino pin A0
- Echo - Arduino pin A1
- Gnd - Arduino pin GND (θέση breadboard)
Διακόπτες "επαφής"
Θα πρέπει να έχετε τοποθετήσει έναν διακόπτη σε κάθε πλευρά του ρομποτικού οχήματος, εναν αριστερά και έναν δεξιά. Κάθε διακόπτης έχει δυο επαφές, το ένα καλώδιο θα πρέπει να πάει στην γείωση - gnd και το άλλο σε κάποιο pin του Arduino. Αν έχετε διακόπτη με τρις επαφές τότε θα πρέπει να συνδέσετε τα pins 'com' και 'no'. Δεδομένου οτι έχουμε να κάνουμε με διακόπτη δύο θέσεων, δεν παίζει ρόλο πιο pin θα επιλέξετε για την παρακάτω συνδεσμολογία.
- Διακόπτης αριστερά - COM - Arduino pin GND (θέση breadboard)
- Διακόπτης αριστερά - NO - Arduino pin 7
- Διακόπτης δεξιά - COM - Arduino pin GND (θέση breadboard)
- Διακόπτης δεξιά - ΝΟ - Arduino pin 8
Servo motor
Έχει τρία καλώδια, Vcc κόκκινο, GND μαύρο/καφέ και συνήθως πορτοκαλί το σήμα το οποίο το πάει στο Arduino pin 3.Διαβάστε τον κώδικα για να τον κατανοήσετε. Πατήστε το πράσινο κουμπί "Run on Arduino" για να προγραμματίσετε το Arduino uno. Μην τοποθετήσετε ακόμα τις μπαταρίες.
Κώδικας
Το παρακάτω πρόγραμμα χρησιμοποιεί την βιβλιοθήκη ultrasonic.h για την εύρεση την απόστασης σε cm απ' το εμπόδιο που βλέπει ο αισθητήρας υπερήχων. Αν θέλετε να κάνετε χρήση του Arduino IDE αντί του Codebender και σας αρέσει να παιδεύεστε θε πρέπει να την βρείτε και να την εγκαταστήσετε μόνοι σας, μην με ρωτάτε για το Arduino IDE όταν όλα γίνονται αυτόματα με το Codebender.
Διαβάστε τον κώδικα για να τον κατανοήσετε. Πατήστε το πράσινο κουμπί "Run on Arduino" για να προγραμματίσετε το Arduino uno. Μην τοποθετήσετε ακόμα τις μπαταρίες.
Αποσυνδέστε το απ' τον υπολογιστή σας και βάλτε όλες τις μπαταρίες.
Αρχή λειτουργίας
Όταν το ρομποτικό όχημα ανιχνεύσει αντικείμενο σε απόσταση 10cm τότε σταματάει, κοιτάει αριστερά και δεξιά ψάχνοντας για τον καλύτερο τρόπο διαφυγής. Έπειτα στρίβει κατά 90 μοίρες δεξιά ή αριστερά και συνεχίζει ευθεία. Κατά την πορεία του είναι πιθανόν να πέσει πάνω σε αντικείμενα ή τοίχους τους οποίους δεν μπορεί να ανιχνεύσει. Οι διακόπτες επαφής το βοηθούν ώστε να κάνει λίγο πίσω και μια μικρή στροφή αριστερά ή δεξιά για να τα/τους αποφύγει.
Αρχή λειτουργίας
Όταν το ρομποτικό όχημα ανιχνεύσει αντικείμενο σε απόσταση 10cm τότε σταματάει, κοιτάει αριστερά και δεξιά ψάχνοντας για τον καλύτερο τρόπο διαφυγής. Έπειτα στρίβει κατά 90 μοίρες δεξιά ή αριστερά και συνεχίζει ευθεία. Κατά την πορεία του είναι πιθανόν να πέσει πάνω σε αντικείμενα ή τοίχους τους οποίους δεν μπορεί να ανιχνεύσει. Οι διακόπτες επαφής το βοηθούν ώστε να κάνει λίγο πίσω και μια μικρή στροφή αριστερά ή δεξιά για να τα/τους αποφύγει.
Το αποτέλεσμα
Έλεγχος μέσω Bluetooth
Σε αυτή την ενότητα θα πάρουμε την κατάσταση στα χέρια μας! Θα μπορέσουμε να ελέγξουμε εμείς την πορεία του ρομποτικού οχήματος μέσα από μια Android συσκευή (κινητό ή τάμπλετ) χρησιμοποιώντας την τεχνολογία Bluetooth.
Το Bluetooth είναι γνωστό σε όλους μας εδώ και χρόνια, μερικές πληροφορίες γι αυτό απ' την Βικιπαίδεια:
Το Bluetooth είναι ένα βιομηχανικό πρότυπο για ασύρματα προσωπικά δίκτυα υπολογιστών (Wireless Personal Αrea Νetworks, WPAN). Πρόκειται για μια ασύρματη τηλεπικοινωνιακή τεχνολογία μικρών αποστάσεων, η οποία μπορεί να μεταδώσει σήματα μέσω μικροκυμάτων σε ψηφιακές συσκευές. Επομένως το Bluetooth είναι ένα πρωτόκολλο το οποίο παρέχει προτυποποιημένη, ασύρματη επικοινωνία ανάμεσα σε PDA, κινητά τηλέφωνα, φορητοί υπολογιστές, προσωπικοί υπολογιστές, εκτυπωτές, καθώς και ψηφιακές φωτογραφικές μηχανές ή ψηφιακές κάμερες, μέσω μιας ασφαλούς, φθηνής και παγκοσμίως διαθέσιμης χωρίς ειδική άδεια ραδιοσυχνότητας μικρής εμβέλειας. Από τεχνικής άποψης το Bluetooth είναι ένα πρωτόκολλο ασύρματης δικτύωσης σε φυσικό επίπεδο, υποεπίπεδο MAC και, προαιρετικά, υποεπίπεδο LLC. (διαβάστε περισσότερα)
Στην δικιά μας περίπτωση θα χρησιμοποιήσουμε ένα σειριακό bluetooth module, το HC-06.
Το Bluetooth είναι γνωστό σε όλους μας εδώ και χρόνια, μερικές πληροφορίες γι αυτό απ' την Βικιπαίδεια:
Το Bluetooth είναι ένα βιομηχανικό πρότυπο για ασύρματα προσωπικά δίκτυα υπολογιστών (Wireless Personal Αrea Νetworks, WPAN). Πρόκειται για μια ασύρματη τηλεπικοινωνιακή τεχνολογία μικρών αποστάσεων, η οποία μπορεί να μεταδώσει σήματα μέσω μικροκυμάτων σε ψηφιακές συσκευές. Επομένως το Bluetooth είναι ένα πρωτόκολλο το οποίο παρέχει προτυποποιημένη, ασύρματη επικοινωνία ανάμεσα σε PDA, κινητά τηλέφωνα, φορητοί υπολογιστές, προσωπικοί υπολογιστές, εκτυπωτές, καθώς και ψηφιακές φωτογραφικές μηχανές ή ψηφιακές κάμερες, μέσω μιας ασφαλούς, φθηνής και παγκοσμίως διαθέσιμης χωρίς ειδική άδεια ραδιοσυχνότητας μικρής εμβέλειας. Από τεχνικής άποψης το Bluetooth είναι ένα πρωτόκολλο ασύρματης δικτύωσης σε φυσικό επίπεδο, υποεπίπεδο MAC και, προαιρετικά, υποεπίπεδο LLC. (διαβάστε περισσότερα)
Στην δικιά μας περίπτωση θα χρησιμοποιήσουμε ένα σειριακό bluetooth module, το HC-06.
To Blueooth module HC-06:
Κάθε Bluetooth Module έχει ένα όνομα, έναν κωδικό πρόσβασης και έναν ρυθμό μετάδοσης (baud rate), τα οποία μπορούμε εάν θέλουμε να τα αλλάξουμε, θα εξηγήσουμε παρακάτω πως γίνεται αυτό. Τα σήματα του ακροδέκτη που υπάρχουν στο ΒΤ έχουν την ακόλουθη σημασία:
Βήματα για τον προγραμματισμό του HC-06
Για να προγραμματίσουμε το Bluetooth module θα χρησιμοποιήσουμε το Arduino Uno board χωρίς τον μικρο επεξεργαστή ATMega328, οπότε με προσοχή τον αφαιρούμε πριν ξεκινήσουμε. Εάν δεν θέλετε να τον αποσυνδέσετε, μπορείτε να περάσετε απ' τα παραδείγματα το "Blink Led", με αυτόν τον τρόπο βεβαιωνόμαστε ότι ο μικρο επεξεργαστής δεν χρησιμοποιεί και αυτός την σειριακή θύρα.
- 1. Συνδέουμε το RXD του Bluetooth με το RXD του Arduino και το TXD του Bluetooth με το TXD του Arduino
- 2. Συνδέουμε το Vcc του Blueooth με τα 3,3V ή 5V του Arduino και το GNG του Bluetooth με το GND του Arduino
- 3. Συνδέουμε το KEY με μια αντίσταση ~10Κ στο Vcc του Bluetooth (3.3V) - Λειτουργία προγραμματισμού
- 4. Συνδέουμε το Arduino Uno με τον υπολογιστή μέσω του USB καλωδίου
- 5. Ανοίξτε την επικοινωνία στην παρακάτω σειριακή οθόνη του codebender
- 6. Επιλέγουμε τον σωστό ρυθμό μετάδοσης (baud rate) που έχει ήδη το bluetooth module. Αυτή την πληροφορία μπορεί να σας την δώσει ο προμηθευτής του Bluetooth Module. Συνηθίζετε η προεπιλεγμένη τιμή να είναι 9600.
- 7. Μετά την σύνδεση επιλέξτε "No line ending".
- 8. Πληκτρολογούμε AT , εάν πάρουμε απάντηση OK τότε είμαστε σε θέση να προγραμματίσουμε το Bluetooth. Εάν όχι τότε ξανά ελέγξτε τον ρυθμό μετάδοσης, βεβαιωθείτε για την συνδεσμολογία στα 3 πρώτα βήματα και πως έχετε βγάλει τον μικρο επεξεργαστή Atmel από το Arduino Uno ή έχετε περάσει σε αυτόν το "Blink Led".
- 9. Για αλλαγή ονόματος πληκτρολογούμε AT+NAMEνέο_όνομα. Το Bluetooth απαντάει OKsetname Για αλλαγή του κωδικού πληκτρολογούμε AT+PINνέος_κωδικός. Το Bluetooth απαντάει ΟΚsetpin Για αλλαγή του ρυθμού μετάδοσης AT+BAUDn (n=1,2,3,4,5,6,7,8) . To Blueooth απαντάει OKbaudrate (όπου n=1,2,3,4,5,6,7,8 αντίστοιχα 1200,2400,4800,9600,19200,38400,57600,115200)
- 10. Αποσυνδέουμε το KEY από την αντίσταση και από το Vcc και το Bluetooth είναι έτοιμο με νέα χαρακτηριστικά.
Σειριακή οθόνη
Κώδικας
Κάθε φορά που θα περνάτε πρόγραμμα στο Arduino θα πρέπει να αποσυνδέετε τα καλώδια απ' τα pins RX και TX. Υπάρχει τρόπος για να το αποφύγουμε αυτό μέσω της βιβλιοθήκης SoftwareSerial.h
Το πρόγραμμα παρακάτω θα σας δώσει την δυνατότητα να ελέγξετε το ρομποτικό όχημα μέσα απ' την εφαρμογή που θα δούμε στο επόμενο βήμα. Δεν κάνει χρήση του servo, διακοπτών και ultrasonic sensor. Στο επόμενο άρθρο θα σας δώσω το πρόγραμμα με το οποίο θα μπορεί το ρομπότ σας να εκτελέσει και τις δυο λειτουργίες.
Android εφαρμογή Η Android εφαρμογή που έχουμε φτιάξει έχει πολλές επιλογές τις οποίες μπορείτε να δείτε στην εικόνα ακριβώς δίπλα. Στην παρούσα φάση οι επιλογές που δουλεύουν είναι τα κουμπιά μπροστά, πίσω, αριστερά και δεξιά. Για να λειτουργήσει η εφαρμογή θα πρέπει να ενεργοποιήσετε τις "Άγνωστες πηγές" (Android 4.0: Ρυθμίσεις - Ασφάλεια - Άγνωστες πηγές) Μέγεθος οθόνης > 3.5 inch Κατεβάστε την από εδώ. |
Το αποτέλεσμα
Δύο σε ένα
Στα προηγούμενα δύο βήματα προγραμματίσαμε το ρομποτικό όχημα να κινείτε ελεύθερα στο χώρο και να κινείτε μέσω Bluetooth απ' την Android συσκευή μας. Ήρθε η στιγμή να το προγραμματίσουμε ώστε να μπορεί να εκτελέσει και τις δύο λειτουργίες - προγράμματα μαζί.
Το ρομποτικό όχημα θα ξεκινάει στην "χειροκίνητη" λειτουργία μέσω της οποίας μπορεί ο χρήστης να το κινήσει μπροστά - πίσω - αριστερά - δεξιά μέσα απ' την Android εφαρμογή. Με το πάτημα ενός κουμπιού (μέσα στην εφαρμογή) θα μπορέσει το ρομποτικό όχημα να μπει στην "αυτόματη" λειτουργία και να αρχίσει να κινείτε μόνο του στον χώρο.
Πλέον μπορείτε να ρυθμίσετε και την ταχύτητα του.
Κώδικας
Το ρομποτικό όχημα θα ξεκινάει στην "χειροκίνητη" λειτουργία μέσω της οποίας μπορεί ο χρήστης να το κινήσει μπροστά - πίσω - αριστερά - δεξιά μέσα απ' την Android εφαρμογή. Με το πάτημα ενός κουμπιού (μέσα στην εφαρμογή) θα μπορέσει το ρομποτικό όχημα να μπει στην "αυτόματη" λειτουργία και να αρχίσει να κινείτε μόνο του στον χώρο.
Πλέον μπορείτε να ρυθμίσετε και την ταχύτητα του.
Κώδικας
Το αποτέλεσμα
Φωνητικές εντολές
Στο τελευταίο μέρος αυτου του project "Φτιάχνοντας ένα ρομποτικό όχημα με Arduino" θα χρησιμοποιήσουμε μια Android εφαρμογή για να κινήσουμε το όχημα μας μέσω φωνητικών εντολών.
Η Android εφαρμογή που θα χρησιμοποιήσουμε λέγετε "BT Voice Control for Arduino" και μπορείτε να την κατεβάσετε δωρεάν απ΄ εδώ (developer SimpleLabsIN).
Η Android εφαρμογή που θα χρησιμοποιήσουμε λέγετε "BT Voice Control for Arduino" και μπορείτε να την κατεβάσετε δωρεάν απ΄ εδώ (developer SimpleLabsIN).
Στην ουσία αυτό που κάνει η εφαρμογή είναι να στέλνει τις λέξεις σειριακά στο Arduino. Οι λέξεις ξεκινάνε με '*' και τελειώνουν με '#'. Δεδομένου οτι το Arduino "καταλαβαίνει" μόνο λατινικούς χαρακτήρες, οι λέξεις αυτές πρέπει να είναι στα Αγγλικά. Έτσι αν θέλουμε να κινήσουμε το όχημα μας ευθεία θα πατήσουμε το κουμπί της εφαρμογής και θα πούμε "Forward". Η εφαρμογή θα στείλει στο Arduino το string "*Forward#" ή "*forward#". Οι εντολές που καταλαβαίνει είναι οι παρακάτω:
Κώδικας
- Forward - *Forward#
- Backward - *Backward#
- Left - *Left#
- Right - *Right#
- Stop - *Stop#
Κώδικας
Τώρα μπορείτε να ενώσετε τα κομμάτια κώδικα και να φτιάξετε το δικό σας σούπερ Arduino ρομπότ!