- Erforderliche Komponenten:
- Schaltplan:
- 8051 Mikrocontroller:
- HC-05 Bluetooth-Modul:
- L293D Motortreiber-IC:
- Funktionieren von Android Phone Controlled Robot:
- Code-Erklärung:
In diesem Projekt werden wir einen Android Phone-gesteuerten Roboter mit 8051-Mikrocontrollern und Bluetooth-Modul bauen. Der Roboter ist mit Gleichstrommotoren konstruiert und die Richtung der Gleichstrommotoren wird durch die Befehle gesteuert, die von der Android-Anwendung empfangen werden. Der Status des Roboters wird an die Android-App zurückgesendet. Dieses Projekt wird auch bei der Anbindung des HC-05-Bluetooth-Moduls an 8051-Mikrocontroller helfen. Wir haben bereits ein Bluetooth-Modul verwendet, um Haushaltsgeräte mit 8051 zu steuern.
Erforderliche Komponenten:
- 8051 Mikrocontroller (AT89S52)
- HC-05 Bluetooth-Modul
- L293D Motortreiber
- Roboterchassis
- Gleichstrommotoren (2)
- Räder (2)
- Rollenrad
- Überbrückungsdrähte
- Bluetooth Terminal Android App
Schaltplan:
8051 Mikrocontroller:
Der 8051-Mikrocontroller ist ein 8-Bit-Mikrocontroller mit 128 Byte On-Chip-RAM, 4 KByte On-Chip-ROM, zwei Timern, einem seriellen Port und vier 8-Bit-Ports. Der 8052-Mikrocontroller ist eine Erweiterung des 8051-Mikrocontrollers. In diesem Projekt verwenden wir den Mikrocontroller AT89S52. Die folgende Tabelle zeigt den Vergleich von 8051 Familienmitgliedern.
Merkmal |
8051 |
8052 |
ROM (in Bytes) |
4K |
8 TAUSEND |
RAM (Bytes) |
128 |
256 |
Timer |
2 |
3 |
E / A-Pins |
32 |
32 |
Serielle Schnittstelle |
1 |
1 |
Quellen unterbrechen |
6 |
8 |
HC-05 Bluetooth-Modul:
HC-05 ist ein serielles Bluetooth-Modul. Es kann mit AT-Befehlen konfiguriert werden. Es kann in drei verschiedenen Konfigurationen arbeiten (Master, Slave, Loopback). In unserem Projekt werden wir es als Sklaven verwenden. Die Funktionen des HC-05-Moduls umfassen:
- Typische Empfindlichkeit von -80 dBm.
- Standardbaudrate: 9600 bps, 8 Datenbits, 1 Stoppbit, keine Parität.
- PIN-Code für das automatische Pairing: Standard-PIN-Code „1234“
- Es hat 6 Stifte.
- Vcc- und Gnd-Pins werden zur Stromversorgung des HC-05 verwendet.
- Tx- und Rx-Pins werden für die Kommunikation mit dem Mikrocontroller verwendet.
- Aktivierungsstift zum Aktivieren des HC-05-Moduls. Wenn es niedrig ist, ist das Modul deaktiviert
- Der Status-Pin dient als Statusanzeige. Wenn es nicht mit einem anderen Bluetooth-Gerät gekoppelt / verbunden ist, blinkt die LED kontinuierlich. Wenn es mit einem anderen Bluetooth-Gerät verbunden / gekoppelt ist, blinkt die LED mit einer konstanten Verzögerung von 2 Sekunden.
L293D Motortreiber-IC:
L293D ist ein Dual-H-Brücken-Motortreiber-IC. Dies wirkt als Stromverstärker, der Ausgang von L293D treibt die Gleichstrommotoren an. Es enthält zwei eingebaute H-Brückenschaltungen. Im normalen Betriebsmodus können zwei Gleichstrommotoren gleichzeitig in beide Richtungen angetrieben werden. Die folgende Tabelle zeigt die Pin-Beschreibung des L293D-IC. Hier sind einige Projekte mit L293D Motortreiber.
Pin Beschreibung
Pin Nr. |
Name |
Funktion |
1 |
Aktivieren Sie 1,2 |
Aktivierungsstift für Motor 1 |
2 |
Eingabe 1 |
Eingang 1 für Motor 1 |
3 |
Ausgabe 1 |
Ausgang 1 für Motor 1 |
4 |
Gnd |
Masse (0V) |
5 |
Gnd |
Masse (0V) |
6 |
Ausgabe 2 |
Ausgang 2 für Motor 1 |
7 |
Eingabe 2 |
Eingang 2 für Motor 1 |
8 |
Vcc 2 |
Versorgungsspannung für Motoren (5V) |
9 |
Aktivieren Sie 3,4 |
Aktivierungsstift für Motor 1 |
10 |
Eingabe 3 |
Eingang 1 für Motor 2 |
11 |
Ausgabe 4 |
Ausgang 1 für Motor 2 |
12 |
Gnd |
Masse (0V) |
13 |
Gnd |
Masse (0V) |
14 |
Ausgabe 4 |
Ausgang 2 für Motor 2 |
15 |
Eingabe 4 |
Eingang 2 für Motor 2 |
16 |
Vcc 1 |
Versorgungsspannung (5V) |
Funktionieren von Android Phone Controlled Robot:
In diesem Smartphone-gesteuerten Roboter sendet der Benutzer der Android-App die Daten über das HC-05-Modul an den 8051-Mikrocontroller. Die empfangenen Daten werden im 8051-Mikrocontroller verglichen und die Entscheidung entsprechend getroffen. Die folgende Tabelle zeigt die Richtung der Motoren und den Status des Roboters für verschiedene empfangene Zeichen.
Empfangener Charakter |
Motor 1 |
Motor 2 |
Status des Roboters |
f |
Nach vorne |
Nach vorne |
Bewegt sich vorwärts |
b |
Rückwärts |
Rückwärts |
Bewegt sich rückwärts |
r |
Nach vorne |
Rückwärts |
Bewegt sich nach rechts |
l |
Rückwärts |
Nach vorne |
Bewegt sich nach links |
s |
aus |
aus |
Gestoppt |
Mit der Bluetooth-Terminal- App können wir ein Bluetooth-Terminal emulieren. Diese App unterstützt die bidirektionale Kommunikation und ist mit den meisten Geräten kompatibel.
Die folgenden Schritte zeigen, wie Sie diese App installieren und verwenden.
1. Laden Sie die Bluetooth-Terminal-App herunter und installieren Sie sie auf Ihrem Android-Handy. Die App kann über den folgenden Link heruntergeladen werden.
play.google.com/store/apps/details?id=ptah.apps.bluetoothterminal
2. Öffnen Sie nach der Installation der App die App und aktivieren Sie Bluetooth.
3. Wählen Sie das Gerät aus und klicken Sie auf Verbindungsoption. Nach erfolgreicher Verbindung können wir Daten an das HC-05-Modul senden.
Überprüfen Sie die Code-Erklärung unten, um zu sehen, wie das Zeichen vom 8051 Microcontroller gesendet und empfangen wird, um die erforderlichen Motoren zu drehen.
Code-Erklärung:
Das vollständige C-Programm und das Demonstrationsvideo für dieses Projekt finden Sie am Ende dieses Projekts. Der Code ist in kleine sinnvolle Abschnitte unterteilt und wird unten erläutert.
Für die L293D-Schnittstelle mit 8051-Mikrocontrollern müssen Pins definiert werden, an denen L293D mit dem 8051-Mikrocontroller verbunden ist. Der In1-Pin von Motor 1 ist mit P2.0 verbunden, der In2-Pin von Motor 1 ist mit P2.1 verbunden, der In1-Pin von Motor 2 ist mit P2.2 verbunden, der In2-Pin von Motor 2 ist mit P2.3 verbunden
sbit m1f = P2 ^ 0; // in1 Pin von Motor1 sbit m1b = P2 ^ 1; // in2 Pin von Motor1 sbit m2f = P2 ^ 2; // in1 Pin von Motor2 sbit m2b = P2 ^ 3; // in2 Pin von Motor2
Als nächstes müssen wir einige Funktionen definieren, die im Programm verwendet werden. Die Verzögerungsfunktion wird verwendet, um eine bestimmte Zeitverzögerung zu erstellen. Die Txdata- Funktion wird verwendet, um Daten über die serielle Schnittstelle zu übertragen. Die Rxdata- Funktion wird verwendet, um Daten von der seriellen Schnittstelle zu empfangen.
ungültige Verzögerung (unsigned int); // Funktion zum Erstellen einer Verzögerung char rxdata (void); // Funktion zum Empfangen eines Zeichens über die serielle Schnittstelle von 8051 void txdata (unsigned char); // Funktion zum Senden eines Zeichens über die serielle Schnittstelle von 8051
In diesem Teil des Codes werden wir den 8051-Mikrocontroller für die serielle Kommunikation konfigurieren. Das TMOD-Register wird mit 0x20 für Timer 1, Modus 2 (automatisches Neuladen) geladen. Das SCON-Register wird mit 0x50 für 8 Datenbits, 1 Stoppbit und Empfang aktiviert. Das TH1-Register wird mit 0xfd für eine Baudrate von 9600 Bit pro Sekunde geladen. TR1 = 1 wird zum Starten des Timers verwendet.
TMOD = 0x20; SCON = 0x50; TH1 = 0xfd; TR1 = 1; In diesem Teil des Codes wird das zurückgegebene Zeichen der Funktion rxdata zur weiteren Verwendung in der Variablen 's' gespeichert.
s = rxdata (); // Serielle Daten vom Bluetooth-Modul hc-05 empfangen
In diesem Teil des Codes müssen wir das empfangene Zeichen mit vorab zugewiesenen Zeichen für verschiedene Richtungen vergleichen. Wenn das empfangene Zeichen 'f' ist, muss sich der Roboter in Vorwärtsrichtung bewegen. Dies wird erreicht, indem m1f, m2f Pins hoch und m1b, m2b Pins niedrig gemacht werden. Sobald dies erledigt ist, müssen wir als nächstes den Status des Roboters an die Android App senden. Dies geschieht mit Hilfe der Funktion txdata . Der gleiche Vorgang wird für verschiedene empfangene Zeichen wiederholt und die Entscheidung entsprechend getroffen. Tabelle 1 zeigt verschiedene Werte von m1f, m1b, m2f, m2b für verschiedene Bewegungsrichtungen des Roboters.
if (s == 'f') // bewege beide Motoren in Vorwärtsrichtung {m1f = 1; Verzögerung (1); m1b = 0; Verzögerung (1); m2f = 1; Verzögerung (1); m2b = 0; Verzögerung (1); für (i = 0; msg1! = '\ 0'; i ++) // Status des Roboters über Bluetooth an die Android-App senden {txdata (msg1); }}
m1f |
m1b |
m2f |
m2b |
Motor 1 Umdrehung |
Motor 2 drehen |
Status des Roboters |
1 |
0 |
1 |
0 |
nach vorne |
nach vorne |
Vorwärts gehen |
0 |
1 |
0 |
1 |
umkehren |
umkehren |
Rückwärts bewegen |
1 |
0 |
0 |
1 |
nach vorne |
umkehren |
Nach rechts bewegen |
0 |
1 |
1 |
0 |
umkehren |
nach vorne |
Nach links bewegen |
0 |
0 |
0 |
0 |
gestoppt |
gestoppt |
gestoppt |
Dies bedeutet, dass Sie das Roboterauto in jede Richtung drehen können, indem Sie die vier Motoren mit dem 8051- Mikrocontroller steuern. Dieser Roboter kann auch mit DTMF mit 8051 gesteuert werden, wenn Sie kein Android-Telefon haben.
Überprüfen Sie auch alle Robotikprojekte hier.