#72 Φτιάχνοντας ένα ρομποτικό όχημα με το Arduino - Έλεγχος μέσω Bluetooth



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

Το 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), τα οποία μπορούμε εάν θέλουμε να τα αλλάξουμε, θα εξηγήσουμε παρακάτω πως γίνεται αυτό. Τα σήματα του ακροδέκτη που υπάρχουν στο ΒΤ έχουν την ακόλουθη σημασία:


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

Για να γίνει σωστά η επικοινωνία θα πρέπει να ενώσουμε το RXD του Bluetooth με το TXD του Arduino και το TXD του Bluetooth με το RXD του Arduino αντίστοιχα. Προσοχή! Όταν περνάμε πρόγραμμα στο Arduino, θα πρέπει το RXD και TXD του Bluetooth να τα αποσυνδέουμε από το Arduino board.
Βήματα για τον προγραμματισμό του 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


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


Android εφαρμογή

Η Android εφαρμογή που έχουμε φτιάξει έχει πολλές επιλογές τις οποίες μπορείτε να δείτε στην εικόνα παρακάτω.


Στην παρούσα φάση οι επιλογές που δουλεύουν είναι τα κουμπιά μπροστά, πίσω, αριστερά και δεξιά.

Για να λειτουργήσει η εφαρμογή θα πρέπει να ενεργοποιήσετε τις "Άγνωστες πηγές" (Android 4.0: Ρυθμίσεις - Ασφάλεια - Άγνωστες πηγές) Μέγεθος οθόνης > 3.5 inch

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

Συντάκτης: Βασιλάκης Μιχάλης
www.ardumotive.com Το μεγαλύτερο ελληνικό site για το Arduino