Ardumotive Arduino Greek Playground
  • Home
    • About us
    • License
  • Arduino
    • Tutorials
    • Workshop
  • Raspberry Pi
  • DIY 3D Printer
  • News
    • Events >
      • Unboxing & Review
    • Blog
The 1st Arduino Playground in Greece - Open Source Hardware

Φτιάχνοντας ένα ρομποτικό όχημα με το Arduino

Available Languages
Picture
Picture
(it will be available soon in English)

Εισαγωγή

Published date: 10/09/2016
Picture
Arduino ρομπότ υπάρχουν πολλά, τόμως αυτό που θα φιάξουμε μαζί εδώ στο ardumotive.com θα είναι ξεχωριστό! Γιατί; Γιατί θα το έχετε φτιάξει εσείς!
Το να φτιάξει κάποιος ένα ρομποτικό όχημα με την χρήση του Arduino είναι ίσως η πιο διασκεδαστική κατασκευή που μπορεί να κάνει κάποιος με αυτό. Το να βλέπεις κάτι που έφτιαξες εσύ να κινείται μόνο του στον χώρο, αποφεύγοντας τυχών εμπόδια, είναι κάτι που σε 'γεμίζει'. Είναι όμως και κάτι ξεπερασμένο θα έλεγα. Γι΄αυτό το δικό μας ρομπότ θα μπορεί να κάνει και μερικά πράγματα παραπάνω.
Στόχος μας λοιπόν είναι να κατασκευάσουμε βήμα βήμα ένα ρομποτικό όχημα το οποίο να μπορεί να
  • κινείται μόνο του στον χώρο
  • ελέγχεται μέσω Android εφαρμογής
  • κινείται μέσω φωνητικών εντολών
Σε αυτή τη κατασκευή θα δούμε τα υλικά και εργαλεία που θα χρειαστούμε γι΄ αυτή την κατασκευή. Έτσι θα έχετε χρόνο να τα προμηθευτείτε και να ξεκινήσουμε μαζί την υλοποίηση του. 

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

Τα υλικά που θα χρειαστούμε:
Picture
  • 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
  • Αποστάτες - βίδες - παξιμάδια για να τοποθετήσουμε τα εξαρτήματα πάνω στο ρομποτικό σασί (όπως αυτά)
Σε κάποια έχω δώσει link για να πάρετε ότι έχω πάρει και εγώ. Επίσης κάποια απο αυτά τα βλέπετε και στην παραπάνω εικόνα. Για να μην υπάρξουν προβλήματα και μπερδέματα σας παρακαλώ να μην παρεκκλίνετε απ' την παραπάνω λίστα και... μην με ρωτάτε για άλλο hardware.

Εργαλεία:


  • Δραπανοκατσάβιδο για να ανοίξετε επιπλέον τρύπες στο ρομποτικό σασί 
  • Κατσαβίδι
  • Κολλητήρι και καλάι για να κολλήσετε τα καλώδια στα μοτέρ 
  • Πιστόλι θερμοσιλικόνης και ράβδους θερμοσιλικόνης

Συναρμολόγηση

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

Τοποθέτηση μοτέρ και πίσω ρόδας
Το πρώτο που πρέπει να κάνουμε είναι να τοποθετήσουμε τα μοτέρ με τις ρόδες τους, καθώς και την πίσω ρόδα πάνω στο ρομποτικό σασί. Χρησιμοποιείστε ένα κατσαβίδι για να βιδώσετε τις βίδες που περιλαμβάνονται μαζί με το σασί. Δείτε τις παρακάτω φωτογραφίες απ' το δικό μου όχημα (το οποίο είναι ήδη συναρμολογημένο).


Picture
εικόνα 1
Στην παραπάνω εικόνα φαίνεται το πως είναι τοποθετημένο το μοτέρ. Παρατηρήστε πως οι ακροδέκτες του μοτέρ είναι απ' την έξω πλευρά! Αυτό ισχύει και για τα δυο μοτέρ. Δείτε επίσης, σε σχέση με την κάτω εικόνα - εσωτερική πλευρά, πως είναι τοποθετημένες οι βίδες πάνω στα πλαστικά άκρα που "κρατάνε" τα μοτέρ σταθερά στο ρομποτικό σασί. Αφού βιδώστε τα μοτέρ μπορείτε να "κουμπώσετε" τις δυο ρόδες πάνω σε αυτά. Χρησιμοποιείστε τους 4 αποστάτες για να το φέρετε στο σωστό ύψος.
Picture
εικόνα 2


​Χρησιμοποιείστε τους 4 αποστάτες για να το φέρετε στο σωστό ύψος. (παρακάτω εικόνα)
Picture
εικόνα 3
Επόμενο βήμα είναι να κολλήσουμε καλώδια πάνω στους ακροδέκτες των μοτέρ. Πριν συνεχίσετε βεβαιωθείτε πως οι ακροδέκτες (και των δυο μοτέρ) κοιτάνε προς την εξωτερική πλευρά του σασί! ("προς τα έξω"). Εδώ θα πρέπει να κάνετε δύο κολλήσεις για κάθε μοτέρ. Όπως φαίνεται στην πρώτη εικόνα πιο πάνω, στον πάνω ακροδέκτη κολλήστε ένα κόκκινο καλώδιο και στον κάτω ένα μαύρο. Φροντίστε τα καλώδια να είναι αρκετά μεγάλα ώστε να μπορέσουμε να τα περάσουμε αργότερα στο πάνω μέρος του ρομποτικού σασί. Επαναλάβετε την διαδικασία και για το άλλο μοτέρ (το κόκκινο καλώδιο πάνω!).

Ήρθε η ώρα να ανοίξουμε μερικές τρύπες! Χρησιμοποιείστε ένα δραπανοκατσάβιδο με το κατάλληλο τρυπάνι ώστε να μπορέσουν να περάσουν οι αποστάτες μέσα απ' αυτές (στο ρομποτικό σασί). Που να ανοίξω τις τρύπες; Ο χώρος είναι περιορισμένος, προχωρήστε με προσοχή. 

Τοποθέτηση L298

Αρχικά, στο πίσω μέρος τοποθετήστε πρόχειρα το L298, και με ένα μαρκαδόρο αφήστε κάποια σημαδάκια μέσα απ' τις τρύπες του ώστε να ανοίξετε τις τρύπες στην σωστή θέση.  Ανοίξτε τις τρύπες και περάστε τους αποστάτες - στο κάτω μέρος παξιμάδια, στο πάνω βίδες. Τοποθετήστε το L298 πάνω στους αποστάτες και βιδώστε καλά. 
Picture
εικόνα 4
Η παραπάνω εικόνα δείχνει πως πρέπει να έχετε τοποθετήσει το L298 πάνω στο ρομποτικό σασί. Αριστερά και δεξιά θα δείτε πως έχει τις θέσης - κλέμες - που πρέπει να μπουν τα καλώδια απ' τα μοτέρ. Στην θέση OUT1 βάζετε το κόκκινο καλώδιο απ' το δεξί μοτέρ (όπως το κοιτάμε απο πίσω) ενώ στην θέση OUT2 το μαύρο καλώδιο. Στην θέση OUT3 το κόκκινο καλώδιο του άλλου μοτέρ (αριστερού) και στην θέση OUT4 το μαύρο καλώδιο. Θα ασχοληθούμε στην συνέχεια με τα υπόλοιπα καλώδια που πρέπει να συνδέσουμε στο L298 για να λειτουργήσει.

Τοποθέτηση Arduino και breadboard

Ακριβώς δίπλα στο L298 πρέπει να τοποθετηθεί το Arduino uno. Ακολουθήστε την ίδια διαδικασία όπως παραπάνω για να ανοίξετε τις 4 τρύπες για τους αποστάτες. Βιδώστε το arduino πάνω σε αυτούς. Λίγο πιο δίπλα κολλήστε το breadboard πάνω στο ρομποτικό σασί (διαθέτει ταινία διπλής όψεως στο κάτω μέρος του). Δείτε την εικόνα παρακάτω απ' το δικό μου όχημα - αγνοείστε τα καλώδια, θα σας σώσω οδηγίες στην συνέχεια.
Picture
εικόνα 5
Τοποθέτηση διακοπτών επαφής

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

Picture
εικόνα 6
Τοποθέτηση servo και HC-SR04

Στο σημείο αυτό θα πρέπει να συναρμολογήσετε την βάση με τον servo κινητήρα και τον αισθητήρα υπερήχων HC-SR04. Δεν μπορώ να σας δώσω περισσότερες λεπτομέρειες εδώ, αν έχετε αγοράσει το ίδιο εξάρτημα με αυτό που σας είπα στο πρώτο άρθρο, τότε η παρακάτω εικόνα μιλάει από μόνη της.

Picture
εικόνα 7
Τοποθέτηση βάσεις μπαταριών

Στο κάτω μέρος του και με την χρήση θερμοσιλικόνης κολλήστε-στερεώστε τις δυο βάσεις μπαταριών. Πίσω η βάση για τις 4 ΑΑ και λίγο πιο μπροστά η βάση για την 9V. 

Η 9V μπαταρία θα τροφοδοτεί το Arduino μας. Περάστε το καλώδιο απο μια τρύπα στο πάνω μέρος του σασί, κοντά στο Arduino. Κάντε μια τομή στο κόκκινο καλώδιο και συνδέστε εκεί τον διακόπτη on/off (αν έχετε πάρει το ίδιο σασί με το δικό μου είχε μαζί έναν τέτοιο διακόπτη, καθώς και την βάση για τις 4 ΑΑ μπαταρίες). Στο τέλος του καλωδίου συνδέστε το DC jack και τέλος συνδέστε το με το Arduino. (μην βάλετε ακόμα την μπαταρία επάνω!) - Δείτε την εικόνα 5.
Picture
εικόνα 8 - στο tip το κόκκινο, στο sleeve το μαύρο
Picture
εικόνα 9
Το καλώδιο απ' την βάση των 4xAA (4x1.5V=6V) θα πάει στο L298. To L298 για την τροφοδοσία του έχει 3 κλέμες (συνήθως Vbat ή 12V, GND, 5V). Το κόκκινο καλώδιο θα πάει στο Vbat και το μαύρο στο GND. Βρείτε ένα άλλο ζεύγος κόκκινου-μαύρου καλωδίου και συνδέστε το στο GND και 5V (δε χρειάζεται φαντάζομαι να αναφέρω ότι στο 5V θα βάλετε το κόκκινο, αλλά θα το κάνω). Την άλλη άκρη συνδέστε την με το Arduino uno στα pins 5V και GND αντίστοιχα (που αλλού;)

Τέλος συναρμολόγησης

Έχοντας ολοκληρώσει όλα τα παραπάνω, το ρομποτικό σας όχημα πρέπει να δείχνει κάπως έτσι...

Picture
εικόνα 10

Κίνηση

Στο επόμενο βήμα θα συνδέσουμε το L298 module με το Arduino uno και θα το προγραμματίσουμε έτσι ώστε να μπορεί να εκτελέσει κίνηση προς όλες τις κατευθύνσεις.
Δεν χρειάζεται προς το παρόν να συνδέσετε την μπαταρία των 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: Μαύρο καλώδιο - Δεξί μοτέρ
Τώρα αυτό που απομένει για να μπορέσει να ολοκληρωθεί η συνδεσμολογία L298 και Arduino είναι να συνδέσουμε τα σήματα για κάθε μοτέρ. Θα χρησιμοποιήσουμε PWM pins για τον σκοπό αυτό έτσι ώστε να είμαστε σε θέση να ελέγξουμε την ταχύτητα του ρομποτικού οχήματος.
  • In1: Arduino PWM pin 6
  • In2: Arduino PWM pin 5
  • In3: Arduino PWM pin 11
  • In4: Arduino PWM pin 10
Τοποθετήστε τις 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 καλώδιο, καλό θα ήταν κάπως να το κρατάτε για να μην σας "φύγει". Αν το όχημα δεν κινηθεί σωστά ελέγξτε την συνδεσμολογία σας.

Αποφυγή εμποδίων

Στο τελευταίο βήμα θα κάνουμε το ρομπότ να κινείτε μόνο του στον χώρο, αποφεύγοντας τυχών εμπόδια που θα συναντήσει στον δρόμο του.

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

Λίγα λόγια για τους υπέρηχους
Picture
Όπως φαίνεται και στην παραπάνω εικόνα, οι υπέρηχοι βρίσκονται πάνω απ' τις ακουστικές συχνότητες, έτσι δεν μπορεί να τους ακούσει το ανθρώπινο αυτί. Παρόλο πάντως που εμείς δεν τους ακούμε κάποια ζώα μπορούν και να τους ακούν αλλά και να τους χρησιμοποιούν. Χαρακτηριστικά παραδείγματα που μας το δείχνουν αυτό είναι η κίνηση των νυχτερίδων και η σφυρίχτρα που χρησιμοποιείται για τους σκύλους. Αισθητήρες υπερήχων συναντάμε σε πολλές εφαρμογές στην ιατρική, στην πλοήγηση σκαφών/πλοίων ακόμα και στα αυτοκίνητα μας στα γνωστά park sensors. 
Οι αισθητήρες υπερήχων λειτουργούν με την ίδια αρχή που λειτουργούν τα ραντάρ και τα σόναρ. Εκτιμούν την απόσταση ενός στόχου λαμβάνοντας υπόψη τους την αντανάκλαση ενός ραδιοκύματος ή ενός ηχητικού σήματος πάνω στο στόχο.
Picture
Δημιουργούν υψηλής συχνότητας κύματα και χρησιμοποιώντας το επιστρεφόμενο σήμα καθορίζουν την απόσταση ή ακόμα και την ταχύτητα του στόχου. Για να το επιτύχουν αυτό χρησιμοποιούν τον χρόνο που έκανε το σήμα για να καλύψει την απόσταση από τον αισθητήρα στο αντικείμενο και πίσω. 
Picture
Picture
Στο Arduino η διαδικασία αυτή (αντιστοίχηση χρόνου σε απόσταση) είναι αρκετά απλή διότι υπάρχει συγκεκριμένη βιβλιοθήκη για τον αισθητήρα HC-SR04 που κάνει την "δύσκολη" δουλεία. Εμείς στον κώδικα μας αρκεί να κάνουμε χρήση μόνο μιας εντολής! Η εντολή αυτή θα μας επιστρέψει την απόσταση σε εκατοστά (cm).

Συνδεσμολογία
Απ΄ εδώ και στο εξής θα χρησιμοποιείτε το 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
NC: normaly close, NO: nornaly open, com: common 

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 μοίρες δεξιά ή αριστερά και συνεχίζει ευθεία. Κατά την πορεία του είναι πιθανόν να πέσει πάνω σε αντικείμενα ή τοίχους τους οποίους δεν μπορεί να ανιχνεύσει. Οι διακόπτες επαφής το βοηθούν ώστε να κάνει λίγο πίσω και μια μικρή στροφή αριστερά ή δεξιά για να τα/τους αποφύγει.

Το αποτέλεσμα

Έλεγχος  μέσω Bluetooth

Σε αυτή την ενότητα θα πάρουμε την κατάσταση στα χέρια μας! Θα μπορέσουμε να ελέγξουμε εμείς την πορεία του ρομποτικού οχήματος μέσα από μια Android συσκευή (κινητό ή τάμπλετ) χρησιμοποιώντας την τεχνολογία Bluetooth.

Το Bluetooth είναι γνωστό σε όλους μας εδώ και χρόνια, μερικές πληροφορίες γι αυτό απ' την Βικιπαίδεια:
Το Bluetooth είναι ένα βιομηχανικό πρότυπο για ασύρματα προσωπικά δίκτυα υπολογιστών (Wireless Personal Αrea Νetworks, WPAN). Πρόκειται για μια ασύρματη τηλεπικοινωνιακή τεχνολογία μικρών αποστάσεων, η οποία μπορεί να μεταδώσει σήματα μέσω μικροκυμάτων σε ψηφιακές συσκευές. Επομένως το Bluetooth είναι ένα πρωτόκολλο το οποίο παρέχει προτυποποιημένη, ασύρματη επικοινωνία ανάμεσα σε PDA, κινητά τηλέφωνα, φορητοί υπολογιστές, προσωπικοί υπολογιστές, εκτυπωτές, καθώς και ψηφιακές φωτογραφικές μηχανές ή ψηφιακές κάμερες, μέσω μιας ασφαλούς, φθηνής και παγκοσμίως διαθέσιμης χωρίς ειδική άδεια ραδιοσυχνότητας μικρής εμβέλειας. Από τεχνικής άποψης το Bluetooth είναι ένα πρωτόκολλο ασύρματης δικτύωσης σε φυσικό επίπεδο, υποεπίπεδο MAC και, προαιρετικά, υποεπίπεδο LLC. (διαβάστε περισσότερα)
Στην δικιά μας περίπτωση θα χρησιμοποιήσουμε ένα σειριακό bluetooth module, το HC-06. 

Picture

To Blueooth module HC-06:

Κάθε Bluetooth Module έχει ένα όνομα, έναν κωδικό πρόσβασης και έναν ρυθμό μετάδοσης (baud rate), τα οποία μπορούμε εάν θέλουμε να τα αλλάξουμε, θα εξηγήσουμε παρακάτω πως γίνεται αυτό. Τα σήματα του ακροδέκτη που υπάρχουν στο ΒΤ έχουν την ακόλουθη σημασία:

Picture

Συνδεσμολογία

Για να γίνει σωστά η επικοινωνία θα πρέπει να ενώσουμε το RXD του Bluetooth με το TXD του Arduino και το TXD του Bluetooth με το RXD του Arduino αντίστοιχα. Προσοχή! Όταν περνάμε πρόγραμμα στο Arduino, θα πρέπει το RXD και TXD του Bluetooth να τα αποσυνδέουμε από το Arduino board.
Picture

Βήματα για τον προγραμματισμό του 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 είναι έτοιμο με νέα χαρακτηριστικά.

Σειριακή οθόνη
Πίσω στο ρομποτικό μας όχημα... 

Συνδεσμολογία:
Προσθέστε στο κύκλωμα σας τις παρακάτω συνδέσεις:
  • Bluetooth Vcc - Arduino 5V
  • Bluetooth GND - Arduino GND
  • Bluetooth RX - Arduino TX
  • Bluetooth TX -Arduino RX
Picture

Κώδικας
Κάθε φορά που θα περνάτε πρόγραμμα στο Arduino θα πρέπει να αποσυνδέετε τα καλώδια απ' τα pins RX και TX. Υπάρχει τρόπος για να το αποφύγουμε αυτό μέσω της βιβλιοθήκης SoftwareSerial.h

Το πρόγραμμα παρακάτω θα σας δώσει την δυνατότητα να ελέγξετε το ρομποτικό όχημα μέσα απ' την εφαρμογή που θα δούμε στο επόμενο βήμα. Δεν κάνει χρήση του servo, διακοπτών και ultrasonic sensor. Στο επόμενο άρθρο θα σας δώσω το πρόγραμμα με το οποίο θα μπορεί το ρομπότ σας να εκτελέσει και τις δυο λειτουργίες.


Android εφαρμογή
 Η Android εφαρμογή που έχουμε φτιάξει έχει πολλές επιλογές τις οποίες μπορείτε να δείτε στην εικόνα ακριβώς δίπλα.
 Στην παρούσα φάση οι επιλογές που δουλεύουν είναι τα κουμπιά μπροστά, πίσω, αριστερά και δεξιά.
Για να λειτουργήσει η εφαρμογή θα πρέπει να ενεργοποιήσετε τις "Άγνωστες πηγές" (Android 4.0: Ρυθμίσεις - Ασφάλεια - Άγνωστες πηγές) Μέγεθος οθόνης > 3.5 inch

Κατεβάστε την από εδώ.

Picture

Το αποτέλεσμα

Δύο σε ένα

Στα προηγούμενα δύο βήματα προγραμματίσαμε το ρομποτικό όχημα να κινείτε ελεύθερα στο χώρο και να κινείτε μέσω Bluetooth απ' την Android συσκευή μας. Ήρθε η στιγμή να το προγραμματίσουμε ώστε να μπορεί να εκτελέσει και τις δύο λειτουργίες - προγράμματα μαζί.
Το ρομποτικό όχημα θα ξεκινάει στην "χειροκίνητη" λειτουργία μέσω της οποίας μπορεί ο χρήστης να το κινήσει μπροστά - πίσω - αριστερά - δεξιά μέσα απ' την Android εφαρμογή. Με το πάτημα ενός κουμπιού (μέσα στην εφαρμογή) θα μπορέσει το ρομποτικό όχημα να μπει στην "αυτόματη" λειτουργία και να αρχίσει να κινείτε μόνο του στον χώρο.
Πλέον μπορείτε να ρυθμίσετε και την ταχύτητα του.

Κώδικας

Το αποτέλεσμα

Φωνητικές εντολές

Στο τελευταίο μέρος αυτου του project "Φτιάχνοντας ένα ρομποτικό όχημα με Arduino" θα χρησιμοποιήσουμε μια Android εφαρμογή για να κινήσουμε το όχημα μας μέσω φωνητικών εντολών.
Η Android εφαρμογή που θα χρησιμοποιήσουμε λέγετε "BT Voice Control for Arduino" και μπορείτε να την κατεβάσετε δωρεάν απ΄ εδώ (developer SimpleLabsIN).

Picture
Στην ουσία αυτό που κάνει η εφαρμογή είναι να στέλνει τις λέξεις σειριακά στο Arduino. Οι λέξεις ξεκινάνε με '*' και τελειώνουν με '#'. Δεδομένου οτι το Arduino "καταλαβαίνει" μόνο λατινικούς χαρακτήρες, οι λέξεις αυτές πρέπει να είναι στα Αγγλικά. Έτσι αν θέλουμε να κινήσουμε το όχημα μας ευθεία θα πατήσουμε το κουμπί της εφαρμογής και θα πούμε "Forward". Η εφαρμογή θα στείλει στο Arduino το string "*Forward#" ή "*forward#". Οι εντολές που καταλαβαίνει είναι οι παρακάτω:
  • Forward - *Forward#
  • Backward - *Backward#
  • Left - *Left#
  • Right - *Right#
  • Stop - *Stop#
Καμιά φορά η εφαρμογή στέλνει τις λέξεις με το πρώτο γράμμα μικρό. Αυτό μπορούμε να το ελέγξουμε μέσα στην if του κώδικα παρακάτω. Αν λόγω προφοράς δεν στέλνετε σωστά μια εντολή μπορείτε να δοκιμάσετε κάποια άλλη λέξη και να την προσθέσετε στον κώδικα μέσα. Για παράδειγμα για να πάει πίσω μπορούμε να του πούμε Backward ή Reverse, οπότε αυτό που περιμένει το Arduino μπορεί να είναι *Backward# ή *backward# ή *Reverse# ή *reverse#.

Κώδικας
Τώρα μπορείτε να ενώσετε τα κομμάτια κώδικα και να φτιάξετε το δικό σας σούπερ Arduino ρομπότ!
Picture

Search Engine

Picture

Licence 

Picture

Help us to grow up!

Picture


Donate us
About us
License
Cookies policy

Visit the biggest Arduino Shop in Greece!

Picture
find us on dwrean.net
find us on Codebender
find us on Instructables
Developed and designed by Vasilakis Michalis Copyright © 2013 Ardumotive All Rights Reserved
All trademarks referenced herein are properties of their
Powered by Create your own unique website with customizable templates.
Design by DivTag Templates
Ardumotive Arduino Greek Playground