- Vereiste componenten:
- Schakelschema:
- 8051 Microcontroller:
- HC-05 Bluetooth-module:
- L293D Motor Driver IC:
- Werking van Android Phone Controlled Robot:
- Code uitleg:
In dit project gaan we een Android Phone-gestuurde robot bouwen met behulp van 8051 microcontrollers en Bluetooth-module. De robot is ontworpen met behulp van gelijkstroommotoren en de richting van gelijkstroommotoren wordt bestuurd door de opdrachten die worden ontvangen van de Android-applicatie. De status van de robot wordt teruggestuurd naar de Android-app. Dit project zal ook helpen bij de koppeling van de HC-05 Bluetooth-module met 8051 microcontrollers. We gebruikten al Bluetooth-module om huishoudelijke apparaten te bedienen met 8051.
Vereiste componenten:
- 8051 microcontroller (AT89S52)
- HC-05 Bluetooth-module
- L293D-motorstuurprogramma
- Robot chassis
- Gelijkstroommotoren (2)
- Wielen (2)
- Zwenkwiel
- Doorverbindingsdraden
- Android-app met Bluetooth-terminal
Schakelschema:
8051 Microcontroller:
8051-microcontroller is een 8-bits microcontroller met 128 bytes op chip RAM, 4K bytes op chip ROM, twee timers, een seriële poort en vier 8-bits poorten. 8052 microcontroller is een uitbreiding van 8051 microcontroller. In dit project gebruiken we AT89S52 microcontroller. Onderstaande tabel toont de vergelijking van 8051 gezinsleden.
Voorzien zijn van |
8051 |
8052 |
ROM (in bytes) |
4K |
8K |
RAM (bytes) |
128 |
256 |
Timers |
2 |
3 |
I / O-pinnen |
32 |
32 |
Seriële poort |
1 |
1 |
Bronnen onderbreken |
6 |
8 |
HC-05 Bluetooth-module:
HC-05 is een seriële Bluetooth-module. Het kan worden geconfigureerd met AT-opdrachten. Het kan werken in drie verschillende configuraties (Master, Slave, Loop back). In ons project zullen we het als slaaf gebruiken. De kenmerken van HC-05-module omvatten,
- Typische gevoeligheid van -80dBm.
- Standaard baudrate: 9600bps, 8 databits, 1 stopbit, geen pariteit.
- Pincode voor automatisch koppelen: "1234" standaardpincode
- Het heeft 6 pinnen.
- Vcc- en Gnd-pinnen worden gebruikt voor het voeden van de HC-05.
- Tx- en Rx-pinnen worden gebruikt om te communiceren met de microcontroller.
- Pin inschakelen voor het activeren van de HC-05-module. als het laag is, is de module uitgeschakeld
- State pin fungeert statusindicator. Wanneer het niet is gekoppeld / verbonden met een ander Bluetooth-apparaat, knippert de LED continu. Wanneer het is verbonden / gekoppeld met een ander Bluetooth-apparaat, knippert de LED met een constante vertraging van 2 seconden.
L293D Motor Driver IC:
L293D is een dual H-bridge motor driver IC. Dit fungeert als een stroomversterker, de uitgang van L293D stuurt de DC-motoren aan. Het bevat twee ingebouwde H-brugcircuits. In de normale werkingsmodus kan het twee gelijkstroommotoren tegelijkertijd in beide richtingen aandrijven. De onderstaande tabel toont de pinbeschrijving van de L293D IC. Hier zijn enkele projecten met L293D Motor Driver.
Pin Beschrijving
Pin nr. |
Naam |
Functie |
1 |
Schakel 1,2 in |
Pin voor motor 1 inschakelen |
2 |
Invoer 1 |
Ingang 1 voor motor 1 |
3 |
Uitgang 1 |
Uitgang 1 voor motor 1 |
4 |
GND |
Aarde (0V) |
5 |
GND |
Aarde (0V) |
6 |
Uitgang 2 |
Uitgang 2 voor motor 1 |
7 |
Invoer 2 |
Ingang 2 voor motor 1 |
8 |
Vcc 2 |
Voedingsspanning voor motoren (5V) |
9 |
Schakel 3,4 in |
Pin voor motor 1 inschakelen |
10 |
Invoer 3 |
Ingang 1 voor motor 2 |
11 |
Uitgang 4 |
Uitgang 1 voor motor 2 |
12 |
GND |
Aarde (0V) |
13 |
GND |
Aarde (0V) |
14 |
Uitgang 4 |
Uitgang 2 voor motor 2 |
15 |
Invoer 4 |
Ingang 2 voor motor 2 |
16 |
Vcc 1 |
Voedingsspanning (5V) |
Werking van Android Phone Controlled Robot:
In deze Smart Phone-gestuurde robot stuurt de gebruiker van de Android-app de gegevens naar de 8051-microcontroller via de HC-05-module. De ontvangen gegevens worden vergeleken in de 8051-microcontroller en de beslissing wordt dienovereenkomstig genomen. De onderstaande tabel toont de richting van motoren en de status van de robot voor verschillende ontvangen karakters.
Karakter ontvangen |
Motor 1 |
Motor 2 |
Status van robot |
f |
Vooruit |
Vooruit |
Beweegt vooruit |
b |
Achteruit |
Achteruit |
Gaat achteruit |
r |
Vooruit |
Achteruit |
Gaat naar rechts |
l |
Achteruit |
Vooruit |
Beweegt naar links |
s |
Uit |
Uit |
Gestopt |
Met de Bluetooth-terminal- app kunnen we een Bluetooth-terminal emuleren. Deze app ondersteunt bidirectionele communicatie en deze app is compatibel met de meeste apparaten.
De onderstaande stappen laten zien hoe u deze app installeert en gebruikt.
1. Download en installeer de Bluetooth-terminal-app op je Android-telefoon. De app kan worden gedownload via de onderstaande link.
play.google.com/store/apps/details?id=ptah.apps.bluetoothterminal
2. Open na het installeren van de app de app en schakel Bluetooth in.
3. Selecteer het apparaat en klik op de verbindingsoptie. Na een succesvolle verbinding kunnen we beginnen met het verzenden van gegevens naar de HC-05-module.
Controleer de code-uitleg hieronder om te zien hoe het personage wordt verzonden en ontvangen door 8051 Microcontroller om de vereiste motoren te laten draaien.
Code uitleg:
Aan het einde van dit project wordt het complete C-programma en de demonstratievideo voor dit project gegeven. De code is opgesplitst in kleine, betekenisvolle brokken en wordt hieronder uitgelegd.
Voor L293D-interface met 8051-microcontrollers moeten we pinnen definiëren waarop L293D is verbonden met 8051-microcontroller. In1 pin van motor 1 is verbonden met P2.0, In2 pin van motor 1 is verbonden met P2.1, In1 pin van motor 2 is verbonden met P2.2, In2 pin van motor 2 is verbonden met P2.3
sbit m1f = P2 ^ 0; // in1 pin van motor1 sbit m1b = P2 ^ 1; // in2 pin van motor1 sbit m2f = P2 ^ 2; // in1 pin van motor2 sbit m2b = P2 ^ 3; // in2 pin van motor2
Vervolgens moeten we enkele functies definiëren die in het programma worden gebruikt. De vertragingsfunctie wordt gebruikt om een gespecificeerde vertraging te creëren. De Txdata- functie wordt gebruikt om gegevens via de seriële poort te verzenden. De functie Rxdata wordt gebruikt om gegevens van de seriële poort te ontvangen.
ongeldige vertraging (unsigned int); // functie voor het creëren van delay char rxdata (void); // functie voor het ontvangen van een teken via de seriële poort van 8051 void txdata (unsigned char); // functie voor het verzenden van een teken via de seriële poort van 8051
In dit deel van de code gaan we de 8051-microcontroller configureren voor seriële communicatie. TMOD-register wordt geladen met 0x20 voor timer 1, modus 2 (automatisch herladen). SCON-register is geladen met 0x50 voor 8 databits, 1 stopbit en ontvangen ingeschakeld. TH1-register is geladen met 0xfd voor een baudrate van 9600 bits per seconde. TR1 = 1 wordt gebruikt om de timer te starten.
TMOD = 0x20; SCON = 0x50; TH1 = 0xfd; TR1 = 1; In dit deel van de code wordt het geretourneerde karakter van de functie rxdata opgeslagen in de variabele 's' voor verder gebruik.
s = rxdata (); // ontvang seriële gegevens van de hc-05 bluetooth-module
In dit deel van de code moeten we het ontvangen teken vergelijken met vooraf toegewezen tekens voor verschillende richtingen. Als het ontvangen karakter 'f' is, moet de robot in voorwaartse richting bewegen. Dit wordt bereikt door m1f, m2f pinnen hoog en m1b, m2b pinnen laag te maken. Zodra dit is gebeurd, moeten we de status van de robot naar de Android-app sturen. Dit wordt gedaan met behulp van de txdata- functie. Hetzelfde proces wordt herhaald voor verschillende ontvangen karakters en de beslissing wordt dienovereenkomstig genomen. Tabel 1 toont verschillende waarden van m1f, m1b, m2f, m2b voor verschillende bewegingsrichtingen van de robot.
if (s == 'f') // beweeg beide motoren in voorwaartse richting {m1f = 1; vertraging (1); m1b = 0; vertraging (1); m2f = 1; vertraging (1); m2b = 0; vertraging (1); for (i = 0; msg1! = '\ 0'; i ++) // stuur de status van de robot naar de Android-app via bluetooth {txdata (msg1); }}
m1f |
m1b |
m2f |
m2b |
Motor 1 rotatie |
Motor 2 rotatie |
Status van robot |
1 |
0 |
1 |
0 |
vooruit |
vooruit |
Vooruit gaan |
0 |
1 |
0 |
1 |
omgekeerde |
omgekeerde |
Achteruit gaan |
1 |
0 |
0 |
1 |
vooruit |
omgekeerde |
Rechts bewegen |
0 |
1 |
1 |
0 |
omgekeerde |
vooruit |
Naar links gaan |
0 |
0 |
0 |
0 |
gestopt |
gestopt |
gestopt |
Hiermee kun je de robotauto in elke richting draaien door de vier motoren te besturen met behulp van de 8051- microcontroller. Deze robot kan ook worden bestuurd met DTMF met 8051, als je geen Android-telefoon hebt.
Bekijk hier ook alle Robotics Projects.