- Απαιτούμενα στοιχεία:
- Διάγραμμα κυκλώματος:
- 8051 Μικροελεγκτής:
- Ενότητα Bluetooth HC-05:
- IC οδηγού κινητήρα L293D:
- Λειτουργία ρομπότ ελεγχόμενου τηλεφώνου Android:
- Επεξήγηση κώδικα:
Σε αυτό το έργο πρόκειται να δημιουργήσουμε ένα ρομπότ ελεγχόμενο από τηλέφωνο Android χρησιμοποιώντας 8051 μικροελεγκτές και μονάδα Bluetooth. Το ρομπότ έχει σχεδιαστεί χρησιμοποιώντας κινητήρες DC και η κατεύθυνση των κινητήρων DC θα ελέγχεται από τις εντολές που λαμβάνονται από την εφαρμογή Android. Η κατάσταση του ρομπότ αποστέλλεται πίσω στην εφαρμογή Android. Αυτό το έργο θα βοηθήσει επίσης στη διασύνδεση της μονάδας Bluetooth HC-05 με 8051 μικροελεγκτές. Χρησιμοποιήσαμε ήδη μονάδα Bluetooth για τον έλεγχο οικιακών συσκευών με 8051.
Απαιτούμενα στοιχεία:
- 8051 μικροελεγκτής (AT89S52)
- Ενότητα Bluetooth HC-05
- Οδηγός κινητήρα L293D
- Σασί ρομπότ
- DC Motors (2)
- Τροχοί (2)
- Τροχός τροχού
- Καλώδια αλτών
- Εφαρμογή Android τερματικού Bluetooth
Διάγραμμα κυκλώματος:
8051 Μικροελεγκτής:
Ο μικροελεγκτής 8051 είναι ένας μικροελεγκτής 8-bit που έχει 128 bytes σε μνήμη RAM, 4K bytes σε chip ROM, δύο χρονοδιακόπτες, μία σειριακή θύρα και τέσσερις θύρες 8bit. Ο μικροελεγκτής 8052 είναι μια επέκταση του 8051 μικροελεγκτή. Σε αυτό το έργο χρησιμοποιούμε μικροελεγκτή AT89S52. Ο παρακάτω πίνακας δείχνει τη σύγκριση 8051 μελών της οικογένειας.
χαρακτηριστικό |
8051 |
8052 |
ROM (σε byte) |
4K |
8 ΧΙΛ |
RAM (byte) |
128 |
256 |
Χρονόμετρα |
2 |
3 |
Καρφίτσες I / O |
32 |
32 |
Σειριακή θύρα |
1 |
1 |
Διακοπή πηγών |
6 |
8 |
Ενότητα Bluetooth HC-05:
Το HC-05 είναι μια σειριακή μονάδα Bluetooth. Μπορεί να ρυθμιστεί χρησιμοποιώντας εντολές AT. Μπορεί να λειτουργήσει σε τρεις διαφορετικές διαμορφώσεις (Master, Slave, Loop back). Στο έργο μας θα το χρησιμοποιούμε ως σκλάβος. Τα χαρακτηριστικά της μονάδας HC-05 περιλαμβάνουν,
- Τυπική ευαισθησία -80dBm.
- Προεπιλεγμένος ρυθμός baud: 9600bps, 8 bit δεδομένων, 1 bit διακοπής, χωρίς ισοτιμία.
- Κωδικός pin αυτόματης αντιστοίχισης: προεπιλεγμένος κωδικός pin "1234"
- Έχει 6 καρφίτσες.
- Οι ακίδες Vcc και Gnd χρησιμοποιούνται για την τροφοδοσία του HC-05.
- Οι ακίδες Tx και Rx χρησιμοποιούνται για την επικοινωνία με τον μικροελεγκτή.
- Ενεργοποίηση ακίδας για ενεργοποίηση της μονάδας HC-05. όταν είναι χαμηλή, η μονάδα απενεργοποιείται
- Ο δείκτης κατάστασης ενεργεί το pin. Όταν δεν είναι συνδεδεμένο / συνδεδεμένο με οποιαδήποτε άλλη συσκευή Bluetooth, η λυχνία LED αναβοσβήνει συνεχώς. Όταν είναι συνδεδεμένη / αντιστοιχισμένη με οποιαδήποτε άλλη συσκευή Bluetooth, τότε η λυχνία LED αναβοσβήνει με σταθερή καθυστέρηση 2 δευτερολέπτων.
IC οδηγού κινητήρα L293D:
Το L293D είναι ένα διπλό IC οδηγού κινητήρα H-bridge. Αυτό λειτουργεί ως ενισχυτής ρεύματος, η έξοδος του L293D οδηγεί τους κινητήρες DC Περιέχει δύο ενσωματωμένα κυκλώματα H-Bridge. Στον κοινό τρόπο λειτουργίας, μπορεί να οδηγήσει δύο κινητήρες DC ταυτόχρονα και στις δύο κατευθύνσεις. Ο παρακάτω πίνακας δείχνει την περιγραφή του L293D IC. Ακολουθούν ορισμένα έργα που χρησιμοποιούν το πρόγραμμα οδήγησης L293D Motor.
Περιγραφή καρφίτσας
Pin No. |
Ονομα |
Λειτουργία |
1 |
Ενεργοποίηση 1,2 |
Ενεργοποίηση ακίδας για κινητήρα 1 |
2 |
Είσοδος 1 |
Είσοδος 1 για κινητήρα 1 |
3 |
Έξοδος 1 |
Έξοδος 1 για κινητήρα 1 |
4 |
Gnd |
Γείωση (0V) |
5 |
Gnd |
Γείωση (0V) |
6 |
Έξοδος 2 |
Έξοδος 2 για κινητήρα 1 |
7 |
Είσοδος 2 |
Είσοδος 2 για κινητήρα 1 |
8 |
Vcc 2 |
Τάση τροφοδοσίας για κινητήρες (5V) |
9 |
Ενεργοποίηση 3,4 |
Ενεργοποίηση ακίδας για κινητήρα 1 |
10 |
Είσοδος 3 |
Είσοδος 1 για κινητήρα 2 |
11 |
Έξοδος 4 |
Έξοδος 1 για κινητήρα 2 |
12 |
Gnd |
Γείωση (0V) |
13 |
Gnd |
Γείωση (0V) |
14 |
Έξοδος 4 |
Έξοδος 2 για κινητήρα 2 |
15 |
Είσοδος 4 |
Είσοδος 2 για κινητήρα 2 |
16 |
Vcc 1 |
Τάση τροφοδοσίας (5V) |
Λειτουργία ρομπότ ελεγχόμενου τηλεφώνου Android:
Σε αυτό το ρομπότ ελεγχόμενο από έξυπνο τηλέφωνο, ο χρήστης της εφαρμογής Android στέλνει τα δεδομένα σε 8051 μικροελεγκτή μέσω της μονάδας HC-05. Τα ληφθέντα δεδομένα συγκρίνονται σε 8051 μικροελεγκτή και η απόφαση λαμβάνεται ανάλογα. Ο παρακάτω πίνακας δείχνει την κατεύθυνση των κινητήρων και την κατάσταση του ρομπότ για διαφορετικούς λαμβανόμενους χαρακτήρες.
Λήφθηκε χαρακτήρας |
Κινητήρας 1 |
Κινητήρας 2 |
Κατάσταση του ρομπότ |
φά |
Προς τα εμπρός |
Προς τα εμπρός |
Προχωρά μπροστά |
σι |
Οπισθοδρομικός |
Οπισθοδρομικός |
Μετακινείται προς τα πίσω |
ρ |
Προς τα εμπρός |
Οπισθοδρομικός |
Μετακινείται προς τα δεξιά |
μεγάλο |
Οπισθοδρομικός |
Προς τα εμπρός |
Μετακινείται αριστερά |
μικρό |
Μακριά από |
Μακριά από |
Διακόπηκε |
Η εφαρμογή τερματικού Bluetooth μας επιτρέπει να μιμούμαστε ένα τερματικό Bluetooth. Αυτή η εφαρμογή υποστηρίζει αμφίδρομη επικοινωνία και αυτή η εφαρμογή είναι συμβατή με τις περισσότερες συσκευές.
Τα παρακάτω βήματα δείχνουν πώς να εγκαταστήσετε και να χρησιμοποιήσετε αυτήν την εφαρμογή.
1. Πραγματοποιήστε λήψη και εγκατάσταση της εφαρμογής τερματικού Bluetooth στο τηλέφωνο Android. Μπορείτε να κατεβάσετε την εφαρμογή από τον παρακάτω σύνδεσμο.
play.google.com/store/apps/details?id=ptah.apps.bluetoothterminal
2. Μετά την εγκατάσταση της εφαρμογής, ανοίξτε την εφαρμογή και ενεργοποιήστε το Bluetooth.
3. Επιλέξτε τη συσκευή και κάντε κλικ στην επιλογή σύνδεσης. Μετά την επιτυχή σύνδεση, μπορούμε να αρχίσουμε να στέλνουμε δεδομένα στη μονάδα HC-05.
Ελέγξτε την Επεξήγηση κώδικα παρακάτω για να δείτε πώς αποστέλλεται και λαμβάνεται ο χαρακτήρας από τον 8051 Microcontroller για να περιστρέψετε τους απαιτούμενους κινητήρες.
Επεξήγηση κώδικα:
Το πλήρες πρόγραμμα C και το βίντεο επίδειξης για αυτό το έργο δίνεται στο τέλος αυτού του έργου. Ο κωδικός χωρίζεται σε μικρά μικρά κομμάτια και εξηγείται παρακάτω.
Για διασύνδεση L293D με 8051 μικροελεγκτές, πρέπει να ορίσουμε ακίδες στις οποίες το L293D συνδέεται με 8051 μικροελεγκτή. Ο ακροδέκτης In1 του κινητήρα 1 είναι συνδεδεμένος στο P2.0, ο ακροδέκτης In2 του κινητήρα 1 είναι συνδεδεμένος στο P2.1, ο ακροδέκτης In1 του κινητήρα 2 είναι συνδεδεμένος με το P2.2, ο ακροδέκτης In2 του κινητήρα 2 είναι συνδεδεμένος στο P2.3
sbit m1f = P2 ^ 0; // in1 pin του κινητήρα 1 sbit m1b = P2 ^ 1; // in2 pin του κινητήρα 1 sbit m2f = P2 ^ 2; // in1 pin του κινητήρα 2 sbit m2b = P2 ^ 3; // in2 ακίδα κινητήρα2
Στη συνέχεια πρέπει να καθορίσουμε ορισμένες λειτουργίες που χρησιμοποιούνται στο πρόγραμμα. Η λειτουργία καθυστέρησης χρησιμοποιείται για τη δημιουργία καθορισμένης χρονικής καθυστέρησης. Η λειτουργία Txdata χρησιμοποιείται για τη μετάδοση δεδομένων μέσω σειριακής θύρας. Η συνάρτηση Rxdata χρησιμοποιείται για τη λήψη δεδομένων από σειριακή θύρα.
άκυρη καθυστέρηση (χωρίς υπογραφή int) // συνάρτηση για τη δημιουργία καθυστέρησης char rxdata (void); // συνάρτηση για τη λήψη ενός χαρακτήρα μέσω σειριακής θύρας 8051 κενού txdata (χωρίς υπογραφή char). // συνάρτηση για αποστολή χαρακτήρα μέσω σειριακής θύρας 8051
Σε αυτό το μέρος του κώδικα πρόκειται να ρυθμίσουμε 8051 μικροελεγκτή για σειριακή επικοινωνία. Ο καταχωρητής TMOD είναι φορτωμένος με 0x20 για χρονοδιακόπτη 1, λειτουργία 2 (αυτόματη επαναφόρτωση). Ο καταχωρητής SCON είναι φορτωμένος με 0x50 για 8 bit δεδομένων, 1 bit διακοπής και ενεργοποιημένη λήψη. Ο καταχωρητής TH1 φορτώνεται με 0xfd για ρυθμό baud 9600 bits ανά δευτερόλεπτο. TR1 = 1 χρησιμοποιείται για την εκκίνηση του χρονοδιακόπτη.
TMOD = 0x20; SCON = 0x50; TH1 = 0xfd; TR1 = 1; Σε αυτό το μέρος του κώδικα, ο επιστρεφόμενος χαρακτήρας της συνάρτησης rxdata αποθηκεύεται στη μεταβλητή για περαιτέρω χρήση.
s = rxdata (); // λάβετε σειριακά δεδομένα από τη μονάδα Bluetooth hc-05
Σε αυτό το μέρος του κώδικα, πρέπει να συγκρίνουμε τον ληφθέντα χαρακτήρα με τους προκαθορισμένους χαρακτήρες για διαφορετικές κατευθύνσεις. Εάν ο ληφθείς χαρακτήρας είναι «f», τότε το ρομπότ πρέπει να κινηθεί προς τα εμπρός. Αυτό επιτυγχάνεται κάνοντας τις ακίδες m1f, m2f υψηλές και τις ακίδες m1b, m2b χαμηλές. Μόλις γίνει αυτό, στη συνέχεια πρέπει να στείλουμε την κατάσταση του ρομπότ στην εφαρμογή Android. Αυτό γίνεται με τη βοήθεια της λειτουργίας txdata . Η ίδια διαδικασία επαναλαμβάνεται για διαφορετικούς χαρακτήρες που λαμβάνονται και η απόφαση λαμβάνεται ανάλογα. Ο Πίνακας 1 δείχνει διαφορετικές τιμές m1f, m1b, m2f, m2b για διαφορετικές κατευθύνσεις κίνησης ρομπότ.
if (s == 'f') // μετακινήστε και τους δύο κινητήρες προς τα εμπρός {m1f = 1; καθυστέρηση (1) m1b = 0; καθυστέρηση (1) m2f = 1; καθυστέρηση (1) m2b = 0; καθυστέρηση (1) για (i = 0; msg1! = '\ 0'; i ++) // αποστολή κατάστασης ρομπότ σε εφαρμογή Android μέσω bluetooth {txdata (msg1); }}
m1στ |
m1β |
m2στ |
m2β |
Περιστροφή κινητήρα 1 |
Περιστροφή κινητήρα 2 |
Κατάσταση του ρομπότ |
1 |
0 |
1 |
0 |
προς τα εμπρός |
προς τα εμπρός |
Προχωρώντας μπροστά |
0 |
1 |
0 |
1 |
ΑΝΤΙΣΤΡΟΦΗ |
ΑΝΤΙΣΤΡΟΦΗ |
Κινείται προς τα πίσω |
1 |
0 |
0 |
1 |
προς τα εμπρός |
ΑΝΤΙΣΤΡΟΦΗ |
Κινείται δεξιά |
0 |
1 |
1 |
0 |
ΑΝΤΙΣΤΡΟΦΗ |
προς τα εμπρός |
Μετακίνηση αριστερά |
0 |
0 |
0 |
0 |
σταμάτησε |
σταμάτησε |
σταμάτησε |
Αυτό μπορείτε να περιστρέψετε το ρομπότ προς οποιαδήποτε κατεύθυνση ελέγχοντας τους τέσσερις κινητήρες χρησιμοποιώντας 8051 μικροελεγκτή. Αυτό το ρομπότ μπορεί επίσης να ελεγχθεί χρησιμοποιώντας DTMF με 8051, εάν δεν έχετε τηλέφωνο Android.
Δείτε επίσης όλα τα Έργα Ρομποτικής εδώ.