- Komponenter som krävs:
- Kretsschema:
- 8051 Microcontroller:
- HC-05 Bluetooth-modul:
- L293D Motor Driver IC:
- Arbeta med Android-telefonstyrd robot:
- Kodförklaring:
I det här projektet ska vi bygga en Android-telefonstyrd robot med 8051 mikrokontroller och Bluetooth-modul. Roboten är designad med likströmsmotorer och riktningen för likströmsmotorer styrs av kommandona som tas emot från Android-applikationen. Robotens status skickas tillbaka till Android-appen. Detta projekt kommer också att hjälpa till med gränssnitt mellan HC-05 Bluetooth-modul och 8051 mikrokontroller. Vi har redan använt Bluetooth-modulen för att styra hushållsapparater med 8051.
Komponenter som krävs:
- 8051 mikrokontroller (AT89S52)
- HC-05 Bluetooth-modul
- L293D Motor Driver
- Robotchassi
- DC-motorer (2)
- Hjul (2)
- Länkhjul
- Bygeltrådar
- Android-app för Bluetooth-terminal
Kretsschema:
8051 Microcontroller:
8051 mikrokontroller är en 8-bitars mikrokontroller som har 128 byte på chip-RAM, 4K byte på chip-ROM, två timers, en seriell port och fyra 8bit-portar. 8052 mikrokontroller är en förlängning av 8051 mikrokontroller. I detta projekt använder vi AT89S52 mikrokontroller. Tabellen nedan visar jämförelsen mellan 8051 familjemedlemmar.
Funktion |
8051 |
8052 |
ROM (i byte) |
4K |
8 K |
RAM (byte) |
128 |
256 |
Timers |
2 |
3 |
I / O-stift |
32 |
32 |
Serieport |
1 |
1 |
Avbryt källor |
6 |
8 |
HC-05 Bluetooth-modul:
HC-05 är en seriell Bluetooth-modul. Den kan konfigureras med AT-kommandon. Det kan fungera i tre olika konfigurationer (Master, Slave, Loop back). I vårt projekt kommer vi att använda det som en slav. Funktionerna i HC-05-modulen inkluderar,
- Typisk -80dBm känslighet.
- Standard baudhastighet: 9600bps, 8 databitar, 1 stoppbit, ingen paritet.
- Automatisk ihopparning av PIN-kod: “1234” standard PIN-kod
- Den har 6 stift.
- Vcc- och GND-stift används för att driva HC-05.
- Tx- och Rx-stift används för att kommunicera med mikrokontrollern.
- Aktivera stift för att aktivera HC-05-modulen. när den är låg är modulen inaktiverad
- Statusindikeringsstatusindikator. När den inte är ihopparad / ansluten till någon annan Bluetooth-enhet blinkar LED kontinuerligt. När den är ansluten / ihopkopplad med någon annan Bluetooth-enhet, blinkar lysdioden med konstant fördröjning på 2 sekunder.
L293D Motor Driver IC:
L293D är en dubbel H-bridge motor driver IC. Detta fungerar som en strömförstärkare, utgången från L293D driver DC-motorerna. Den innehåller två inbyggda H-bridge-kretsar. I vanligt driftsätt kan den köra två likströmsmotorer samtidigt i båda riktningarna. Tabellen nedan visar stiftbeskrivningen för L293D IC. Här är några projekt som använder L293D Motor Driver.
Stiftbeskrivning
Stift nr. |
namn |
Fungera |
1 |
Aktivera 1,2 |
Aktivera stift för motor 1 |
2 |
Ingång 1 |
Ingång 1 för motor 1 |
3 |
Utgång 1 |
Utgång 1 för motor 1 |
4 |
Gnd |
Jord (0V) |
5 |
Gnd |
Jord (0V) |
6 |
Utgång 2 |
Utgång 2 för motor 1 |
7 |
Ingång 2 |
Ingång 2 för motor 1 |
8 |
Vcc 2 |
Matningsspänning för motorer (5V) |
9 |
Aktivera 3,4 |
Aktivera stift för motor 1 |
10 |
Ingång 3 |
Ingång 1 för motor 2 |
11 |
Utgång 4 |
Utgång 1 för motor 2 |
12 |
Gnd |
Jord (0V) |
13 |
Gnd |
Jord (0V) |
14 |
Utgång 4 |
Utgång 2 för motor 2 |
15 |
Ingång 4 |
Ingång 2 för motor 2 |
16 |
Vcc 1 |
Matningsspänning (5V) |
Arbeta med Android-telefonstyrd robot:
I den här smarttelefonstyrda roboten skickar användaren av Android-appen data till 8051 mikrokontroller via HC-05-modulen. De mottagna uppgifterna jämförs i 8051 mikrokontroller och beslutet fattas därefter. Tabellen nedan visar motorriktningen och robotens status för olika mottagna tecken.
Mottagen karaktär |
Motor 1 |
Motor 2 |
Robotens status |
f |
Fram |
Fram |
Går framåt |
b |
Bakåt |
Bakåt |
Rör sig bakåt |
r |
Fram |
Bakåt |
Rör sig åt höger |
l |
Bakåt |
Fram |
Flyttar vänster |
s |
Av |
Av |
Stannade |
Den Bluetooth terminal app ger oss möjlighet att emulera en Bluetooth terminal. Denna app stöder dubbelriktad kommunikation och den här appen är kompatibel med de flesta enheter.
Stegen nedan visar hur du installerar och använder den här appen.
1. Ladda ner och installera Bluetooth-terminalappen på din Android-telefon. Appen kan laddas ner från länken nedan.
play.google.com/store/apps/details?id=ptah.apps.bluetoothterminal
2. När du har installerat appen öppnar du appen och slår på Bluetooth.
3. Välj enheten och klicka på anslutningsalternativet. Efter lyckad anslutning kan vi börja skicka data till HC-05-modulen.
Kontrollera kodförklaringen nedan för att se hur karaktären skickas och tas emot av 8051 Microcontroller för att rotera de nödvändiga motorerna.
Kodförklaring:
Det fullständiga C-programmet och demonstrationsvideon för detta projekt ges i slutet av detta projekt. Koden är uppdelad i små meningsfulla bitar och förklaras nedan.
För L293D-gränssnitt med 8051 mikrokontroller måste vi definiera stift som L293D är ansluten till 8051 mikrokontroller. In1-stift av motor 1 är ansluten till P2.0, In2-stift av motor 1 är ansluten till P2.1, In1-stift av motor 2 är ansluten till P2.2, In2-stift av motor 2 är ansluten till P2.3
sbit m1f = P2 ^ 0; // in1 stift av motor1 sbit m1b = P2 ^ 1; // in2 stift av motor1 sbit m2f = P2 ^ 2; // in1 stift av motor2 sbit m2b = P2 ^ 3; // in2 stift av motor2
Därefter måste vi definiera några funktioner som används i programmet. Fördröjningsfunktionen används för att skapa specificerad tidsfördröjning. Txdata- funktionen används för att överföra data via seriell port. Rxdata- funktionen används för att ta emot data från seriell port.
ogiltig fördröjning (osignerad int); // funktion för att skapa fördröjning char rxdata (ogiltig); // funktion för att ta emot ett tecken genom seriell port på 8051 void txdata (osignerad char); // funktion för att skicka ett tecken genom serieport 8051
I den här delen av koden ska vi konfigurera 8051 mikrokontroller för seriell kommunikation. TMOD-registret laddas med 0x20 för timer 1, läge 2 (automatisk laddning). SCON-registret laddas med 0x50 för 8 databitar, 1 stoppbit och mottagning aktiverad. TH1-registret laddas med 0xfd för överföringshastighet på 9600 bitar per sekund. TR1 = 1 används för att starta timern.
TMOD = 0x20; SCON = 0x50; TH1 = 0xfd; TR1 = 1; I denna del av koden lagras den returnerade karaktären av rxdata- funktionen i variabeln s för vidare användning.
s = rxdata (); // ta emot seriell data från hc-05 Bluetooth-modul
I den här delen av koden måste vi jämföra det mottagna tecknet med fördelade tecken för olika riktningar. Om den mottagna karaktären är 'f' måste roboten gå framåt. Detta uppnås genom att göra m1f, m2f- stiften höga och m1b, m2b- stiften låga. När detta är gjort måste vi sedan skicka robotens status till Android-appen. Detta görs med hjälp av txdata- funktionen. Samma process upprepas för olika tecken som tas emot och beslutet fattas därefter. Tabell 1 visar olika värden på m1f, m1b, m2f, m2b för olika rörelseriktningar för robot.
om (s == 'f') // flyttar båda motorerna i riktning framåt {m1f = 1; fördröjning (1); m1b = 0; fördröjning (1); m2f = 1; fördröjning (1); m2b = 0; fördröjning (1); för (i = 0; msg1! = '\ 0'; i ++) // skicka robotens status till Android-appen via Bluetooth {txdata (msg1); }}
m1f |
m1b |
m2f |
m2b |
Motor 1 rotation |
Motor 2-rotation |
Robotens status |
1 |
0 |
1 |
0 |
fram- |
fram- |
Går vidare |
0 |
1 |
0 |
1 |
omvänd |
omvänd |
Rör sig bakåt |
1 |
0 |
0 |
1 |
fram- |
omvänd |
Flytta åt höger |
0 |
1 |
1 |
0 |
omvänd |
fram- |
Flytta vänster |
0 |
0 |
0 |
0 |
slutade |
slutade |
slutade |
Det här är att du kan rotera robotbilen i valfri riktning genom att styra de fyra motorerna med 8051 mikrokontroller. Denna robot kan också styras med DTMF med 8051, om du inte har en Android-telefon.
Kontrollera också alla robotprojekt här.