- Απαιτούμενα υλικά
- Διάγραμμα κυκλώματος
- Αρχική διαμόρφωση των ενοτήτων HC05
- Δοκιμή επικοινωνίας Arduino σε Arduino Bluetooth
Οι μονάδες Bluetooth HC-05 είναι οι μονάδες Bluetooth για οποιοδήποτε έργο Arduino! Είναι εύκολο να συνδέσετε και να κωδικοποιήσετε στο Arduino IDE. Στα περισσότερα έργα, συνήθως συνδέουμε το HC05 σε ένα Arduino και το χρησιμοποιούμε για ασύρματη επικοινωνία με μια άλλη έξυπνη συσκευή, όπως ένα κινητό τηλέφωνο. Αυτό είναι αρκετά απλό και έχουμε δημιουργήσει πολλά ενδιαφέροντα έργα μαζί του, όπως το ελεγχόμενο ρομπότ Bluetooth, το Bluetooth Voice Control, το Bluetooth Home Automation κ.λπ. Ωστόσο, χρειάστηκε ποτέ να συνδέσετε δύο HC-05 μαζί; Δεν είναι τόσο απλή η σύνδεση ενός HC05 σε ένα smartphone, υπάρχουν ορισμένα επιπλέον βήματα. Αυτό το σεμινάριο θα σας καθοδηγήσει σε αυτήν τη διαδικασία. Ας πηδήσουμε δεξιά!
Απαιτούμενα υλικά
- 2x Arduino (Οποιοδήποτε μοντέλο θα κάνει, χρησιμοποιώ ένα Arduino Uno R3 και ένα Arduino Nano)
- 2x Ενότητες Bluetooth HC05
- Ψωμί
- Καλώδια αλτών
- 2x 1kΩ αντίσταση
- 2x 2.2kΩ αντίσταση
Διάγραμμα κυκλώματος
Αυτό είναι το βασικό διάγραμμα κυκλώματος. Συνδέστε 2 από αυτά τα κυκλώματα, ένα για τον πλοίαρχο και ένα για τον δούλο. Για τις συνδέσεις, το μόνο που κάνουμε εδώ είναι να συνδέσουμε το HC05 με το Arduino. Ο ακροδέκτης δέκτη (Rx) του HC05 λειτουργεί στο εύρος 0V έως 3.3V και το Arduino λειτουργεί στο εύρος 0V έως 5V. Έτσι, θα χρησιμοποιήσουμε αντιστάσεις (R1 και R2) για να δημιουργήσουμε ένα διαχωριστικό τάσης για να μειώσουμε την έξοδο 5V του Arduino σε 3.3V, ώστε να μην προκαλέσουμε ζημιά στη μονάδα HC05.
Χρησιμοποιώ 1kΩ για R1 και 2.2KΩ για R2, αλλά μπορείτε να χρησιμοποιήσετε οποιαδήποτε τιμή αντίστασης, αρκεί το R2 να είναι περίπου διπλάσιο από την τιμή του R1 (R2 ≈ 2R1). Ομοίως, επαναλάβετε το κύκλωμα τόσο για το master όσο και για το slave, το Arduino Master Bluetooth Circuit και το Arduino Slave Bluetooth Circuit εμφανίζονται παρακάτω.
Αρχική διαμόρφωση των ενοτήτων HC05
Αυτό είναι το πρόσθετο βήμα που απαιτείται για τη σύνδεση δύο μονάδων HC05 μεταξύ τους. Πρέπει να αλλάξουμε κάποιες ρυθμίσεις μέσα στο HC05 Bluetooth Module, για να το κάνουμε αυτό, πρέπει να περάσουμε στη λειτουργία εντολών AT της μονάδας HC05 και να στείλουμε εντολές σε αυτήν μέσω της σειριακής οθόνης του Arduino IDE. Για να γίνει αυτό, πρέπει να γράψουμε έναν κωδικό Arduino για να στείλουμε εντολές μέσω της σειριακής οθόνης στο HC05.
Ο κωδικός για τη διαμόρφωση της μονάδας HC05 βρίσκεται στο κάτω μέρος αυτής της σελίδας, η εξήγηση του κώδικα έχει ως εξής
Προσθέστε τη βιβλιοθήκη SoftwareSerial σε αυτόν τον κωδικό.
# συμπερίληψη < SoftwareSerial.h>
Καθορίστε τους αριθμούς pin μετάδοσης (Tx) και λήψης (Rx). Χρησιμοποιώ το pin 2 για Tx και το pin 3 για Rx.
# καθορισμός tx 2 # καθορισμός rx 3
Δώστε στη σύνδεση Bluetooth κάποιο όνομα (εδώ χρησιμοποιώ το configBt) και, στη συνέχεια, πείτε στη βιβλιοθήκη SoftwareSerial ποια καρφίτσα είναι Tx και ποια pin είναι Rx. Η σύνταξη είναι bluetoothName (Rx, Tx).
SoftwareSerial configBt (rx, tx); // RX, TX
Για να διαμορφώσει τη μονάδα Bluetooth, το Arduino πρέπει να του στείλει εντολές σε αυτό με ρυθμό baud 38400 baud. Παρομοίως, ορίζουμε το ρυθμό baud της σύνδεσης Bluetooth και σε 38400 baud. Ρυθμίστε το Transmit (Tx) στον πείρο εξόδου και το Receive (Rx) στον πείρο εισόδου
άκυρη ρύθμιση () { Serial.begin (38400); configBt.begin (38400); pinMode (tx, OUTPUT); pinMode (rx, INPUT); }
Μέσα στο βρόχο για πάντα, έχουμε το κύριο κομμάτι του κώδικα. Η ιδέα εδώ είναι να στείλετε ό, τι έχει πληκτρολογηθεί στο πλαίσιο κειμένου της σειριακής οθόνης στο HC05 μέσω του πείρου Tx του Arduino. Στη συνέχεια, εμφανίστε ό, τι εξέρχεται από το HC05 στη σειριακή οθόνη.
void loop () {if (configBt.available ()) // εάν το HC05 στέλνει κάτι… { Serial.print (configBt.readString ()); // εκτύπωση σε σειριακή οθόνη} if (Serial.available ()) // εάν η σειριακή οθόνη εμφανίζει κάτι… {configBt.write (Serial.read ()); // γράψτε στην καρφίτσα Tx του Arduino}}
Ανεβάστε πρώτα αυτόν τον κωδικό στο Arduino που είναι συνδεδεμένο στην κύρια μονάδα HC05. Αφού ανεβάσετε τον κωδικό, αποσυνδέστε το καλώδιο τροφοδοσίας Arduino. Πατήστε και κρατήστε πατημένο το κουμπί στο HC05. Τώρα συνδέστε το καλώδιο τροφοδοσίας Arduino ενώ κρατάτε πατημένο το κουμπί στο HC05. Εντάξει, τώρα μπορείτε να αφήσετε το κουμπί στο HC05. Έτσι μπαίνετε στη λειτουργία AT του HC05. Για να ελέγξετε εάν το έχετε κάνει σωστά, βεβαιωθείτε ότι η κόκκινη λυχνία στο HC05 αναβοσβήνει περίπου κάθε δευτερόλεπτο (αργή αναλαμπή!). Κανονικά πριν το HC05 συνδεθεί σε οποιαδήποτε συσκευή Bluetooth, το κόκκινο φως αναβοσβήνει σε πολύ υψηλή συχνότητα (γρήγορο αναβοσβήνει!).
Στη συνέχεια, ανοίξτε τη σειριακή οθόνη (το κουμπί σειριακής οθόνης βρίσκεται στην επάνω δεξιά γωνία του Arduino IDE). Στην κάτω δεξιά γωνία του παραθύρου Serial monitor, εάν δεν το έχετε κάνει ήδη, βεβαιωθείτε ότι έχετε ορίσει τη ρύθμιση τερματισμού γραμμής σε "NL και CL" και baud rate σε 38400. Τώρα, πληκτρολογήστε AT στο σειριακό μόνιτορ, αν όλα πάνε καλά, θα λάβετε ένα "ΟΚ" από το HC05 που εμφανίζεται στο παράθυρο της σειριακής οθόνης. Συγχαρητήρια! Έχετε συνδεθεί με επιτυχία στη λειτουργία εντολών AT της μονάδας HC05.
Τώρα, εισαγάγετε τις ακόλουθες εντολές στον παρακάτω πίνακα για να διαμορφώσετε την κύρια μονάδα HC05:
ΕΓΓΡΑΦΕΙΤΕ (εισάγετε αυτό στη σειριακή οθόνη και πατήστε enter) |
RESPONSE (απάντηση από το HC05, εμφανίζεται στη σειριακή οθόνη) |
Λειτουργία (Τι κάνει αυτή η εντολή;) |
ΣΤΟ |
Εντάξει |
Δοκιμή |
AT + CMODE; |
Εντάξει |
Ελέγξτε το CMODE ή τη λειτουργία σύνδεσης ----------------------------- CMODE: 0 είναι ο σκλάβος 1 είναι πλοίαρχος |
AT + CMODE = 1 |
Εντάξει |
Ορίστε το CMODE σε 1 καθώς ρυθμίζουμε το κύριο HC05 |
AT + ADDR; |
+ ADDR: FCA8: 9A: 58D5 Εντάξει * Αυτή είναι η διεύθυνση του κυρίου μου HC05. Η διεύθυνσή σας θα είναι διαφορετική! |
Επιστρέφει τη διεύθυνση του HC05, σημειώστε το καθώς θα το χρειαζόμαστε αργότερα! |
Στη συνέχεια, συνδέστε τον υπολογιστή σας με το άλλο HC05, το σκλάβος:
ΕΓΓΡΑΦΕΙΤΕ (εισάγετε αυτό στη σειριακή οθόνη και πατήστε enter) |
RESPONSE (απάντηση από το HC05, εμφανίζεται στη σειριακή οθόνη) |
Λειτουργία (Τι κάνει αυτή η εντολή;) |
ΣΤΟ |
Εντάξει |
Δοκιμή |
AT + CMODE; |
Εντάξει |
Ελέγξτε το CMODE ή τη λειτουργία σύνδεσης ----------------------------- CMODE: 0 είναι σκλάβος 1 είναι πλοίαρχος |
AT + CMODE = 0 |
Εντάξει |
Ρυθμίστε το CMODE στο 0 καθώς ρυθμίζουμε το slave HC05 |
AT + BIND = FCA8,9A, 58D5 * Αντικαταστήστε το ":" στην κύρια διεύθυνση HC05 με "," * Εδώ χρησιμοποιώ τη διεύθυνση του κύριου HC05 που σημείωσα από τον προηγούμενο πίνακα. Πρέπει να χρησιμοποιήσετε τη διεύθυνση του πλοιάρχου σας HC05! |
Εντάξει |
Ρύθμιση της διεύθυνσης του κύριου HC05 στην οποία θα συνδεθεί αυτόματα αυτός ο υποτελής HC05 κατά την εκκίνηση |
AT + BIND; |
+ BIND: FCA8: 9A: 58D5 Εντάξει * Αυτή είναι η διεύθυνση του κυρίου μου HC05. Η διεύθυνσή σας θα είναι διαφορετική! |
Ελέγξτε τη δεσμευτική διεύθυνση του δούλου σας. Εάν ταιριάζει με τη διεύθυνση του πλοιάρχου σας HC05, μπορείτε να πάτε! |
Δοκιμή επικοινωνίας Arduino σε Arduino Bluetooth
Πρώτον, τροφοδοτήστε τόσο τα κύρια όσο και τα εξαρτήματα HC05. Μετά την ενεργοποίηση και λίγα δευτερόλεπτα, κοιτάξτε το κόκκινο φως στις μονάδες HC05.
Αναβοσβήνει ταχύτητα του κόκκινου φωτός |
Τι σημαίνει |
Αναβοσβήνει σε πολύ υψηλή συχνότητα (γρήγορα αναβοσβήνει!) |
ΟΧΙ καλα! Αυτό σημαίνει ότι οι μονάδες HC05 σας δεν συνδέονται μεταξύ τους! Ώρα για αντιμετώπιση προβλημάτων! |
Αναβοσβήνει σε χαμηλή συχνότητα (αργή αναλαμπή!) |
Ομορφη! Το έχεις κάνει! Αλλά πρέπει ακόμη να κάνουμε έναν ακόμη έλεγχο για να είμαστε εξαιρετικά σίγουροι ότι αυτή η εγκατάσταση λειτουργεί! Προχώρα! |
Όταν τα κόκκινα φώτα σας αναβοσβήνουν σε χαμηλή συχνότητα (αργή αναλαμπή!), Μπορείτε να είστε σίγουροι ότι και τα δύο HC05 σας είναι συνδεδεμένα μεταξύ τους, αλλά δεν έχουμε δοκιμάσει εάν μπορούν να σταλούν δεδομένα μεταξύ των πλοιάρχων και των υποτελών. Σε τελική ανάλυση, αυτός είναι ο κύριος σκοπός εδώ.
Μεταφορτώστε τον παρακάτω κωδικό σε ένα από τα Arduinos, αυτός είναι ο κωδικός για τη δοκιμή πομπού (Tx), και πάλι ο πλήρης κωδικός τόσο για πομπό όσο και για δέκτη βρίσκεται στο κάτω μέρος αυτής της σελίδας.
Ακολουθώντας τον προηγούμενο κώδικα, προσθέτουμε τη βιβλιοθήκη SoftwareSerial σε αυτόν τον κώδικα και καθορίζουμε τους αριθμούς pin (Tx) και Receive (Rx) Στη συνέχεια, ονομάζουμε τη σύνδεση Bluetooth και μεταβιβάζουμε τους αριθμούς pin Tx και Rx στη βιβλιοθήκη.
#include < SoftwareSerial.h> #define tx 2 #define rx 3 SoftwareSerial bt (rx, tx); // RX, TX
Στη λειτουργία εγκατάστασης, ρυθμίζουμε ξανά το ρυθμό baud για τη σειριακή οθόνη Arduino και το Bluetooth. Βλέπετε τη διαφορά εδώ σε σύγκριση με τον προηγούμενο κώδικα; Χρησιμοποιούμε ρυθμό baud 9600 baud. Αυτός είναι ο προεπιλεγμένος ρυθμός baud επικοινωνίας της μονάδας Bluetooth HC05 κατά την επικοινωνία με άλλες συσκευές Bluetooth. Λοιπόν, σημειώστε ότι το 38400 baud είναι για τη διαμόρφωση του HC05 με εντολές AT και το 9600 baud είναι ο προεπιλεγμένος ρυθμός baud της μονάδας HC05. Τέλος, όπως ακριβώς πριν διαμορφώσουμε τον ακροδέκτη Tx ως έξοδο και τον ακροδέκτη Rx ως είσοδο.
άκυρη ρύθμιση () { Serial.begin (9600); bt.begin (9600); pinMode (tx, OUTPUT); pinMode (rx, INPUT); }
Μέσα στον βρόχο για πάντα, το μόνο που κάνουμε είναι να μεταδώσουμε μια τυχαία τιμή "123" μέσω του HC05.
void loop () {bt.write (123); }
Ανεβάστε αυτόν τον κωδικό στο άλλο Arduino, αυτός είναι ο κωδικός για τη δοκιμή λήψης (Rx):
Ακριβώς το ίδιο με τους προηγούμενους κωδικούς, διαμορφώνουμε τη βιβλιοθήκη SoftwareSerial.
#include < SoftwareSerial.h> #define tx 2 #define rx 3 SoftwareSerial bt (rx, tx); // RX, TX
Ο κωδικός στη λειτουργία εγκατάστασης είναι ακριβώς ο ίδιος με τον κωδικό δοκιμής μετάδοσης (Tx).
άκυρη ρύθμιση () { Serial.begin (9600); bt.begin (9600); pinMode (tx, OUTPUT); pinMode (rx, INPUT); }
Στο βρόχο για πάντα, πρέπει απλώς να λάβουμε αυτό που στέλνουμε από το Arduino που μεταδίδει. Εάν το buffer λήψης έχει λάβει ορισμένα δεδομένα από το HC05, τότε εμφανίστε ό, τι λαμβάνεται στη σειριακή οθόνη.
void loop () {if (bt.available ()> 0) { Serial.println (bt.read ()); }}
Αφού ανεβάσετε τους αντίστοιχους κωδικούς σε κάθε Arduino, ανοίξτε το Serial monitor στο Arduino που λαμβάνει. Βεβαιωθείτε ότι έχετε επιλέξει το ρυθμό baud ως 9600 και τη γραμμή που τελειώνει ως Newline στη σειριακή οθόνη. Εάν όλα λειτουργούν καλά, θα πρέπει να βλέπετε 123.
Σημείωση: Εάν έχετε συνδέσει τόσο την εκπομπή όσο και τη λήψη Arduinos στον ίδιο φορητό υπολογιστή, βεβαιωθείτε ότι έχετε επιλέξει τη σωστή θύρα COM στην ενότητα ΕΡΓΑΛΕΙΑ> Θύρα. Θα πρέπει να είστε συνδεδεμένοι στη θύρα COM του Arduino.
Εάν όλα πάνε καλά, ανταλλάξτε τις μονάδες HC05 για να βεβαιωθείτε ότι η επικοινωνία μπορεί να συμβεί και προς τις δύο κατευθύνσεις και ΕΙΜΑΣΤΕ!