- Nødvendige komponenter:
- Kretsdiagram:
- 8051 mikrokontroller:
- HC-05 Bluetooth-modul:
- L293D Motor Driver IC:
- Arbeid med Android-telefonstyrt robot:
- Kode forklaring:
I dette prosjektet skal vi bygge en Android-telefonstyrt robot ved hjelp av 8051 mikrokontrollere og Bluetooth-modul. Roboten er designet med DC-motorer, og retningen til DC-motorer vil bli styrt av kommandoene som mottas fra Android-applikasjonen. Statusen til roboten sendes tilbake til Android-appen. Dette prosjektet vil også bidra til grensesnitt mellom HC-05 Bluetooth-modul og 8051 mikrokontrollere. Vi brukte allerede Bluetooth-modul for å kontrollere husholdningsapparater med 8051.
Nødvendige komponenter:
- 8051 mikrokontroller (AT89S52)
- HC-05 Bluetooth-modul
- L293D Motordriver
- Robotchassis
- DC-motorer (2)
- Hjul (2)
- Hjul
- Jumper ledninger
- Android-app for Bluetooth-terminal
Kretsdiagram:
8051 mikrokontroller:
8051 mikrokontroller er en 8-bits mikrokontroller som har 128 byte på RAM-brikke, 4K byte på ROM-brikke, to tidtakere, en seriell port og fire 8-biters porter. 8052 mikrokontroller er en utvidelse av 8051 mikrokontroller. I dette prosjektet bruker vi AT89S52 mikrokontroller. Tabellen nedenfor viser sammenligningen av 8051 familiemedlemmer.
Trekk |
8051 |
8052 |
ROM (i byte) |
4K |
8K |
RAM (byte) |
128 |
256 |
Tidtakere |
2 |
3 |
I / O-pinner |
32 |
32 |
Seriell port |
1 |
1 |
Avbryt kilder |
6 |
8 |
HC-05 Bluetooth-modul:
HC-05 er en seriell Bluetooth-modul. Den kan konfigureres ved hjelp av AT-kommandoer. Den kan fungere i tre forskjellige konfigurasjoner (Master, Slave, Loop back). I prosjektet vårt vil vi bruke det som en slave. Funksjonene til HC-05-modulen inkluderer,
- Typisk -80dBm følsomhet.
- Standard baudrate: 9600bps, 8 databiter, 1 stoppbit, ingen paritet.
- Automatisk paring av PIN-kode: “1234” standard PIN-kode
- Den har 6 pinner.
- Vcc og GND-pinner brukes til å drive HC-05.
- Tx- og Rx-pinner brukes til å kommunisere med mikrokontrolleren.
- Aktiver pin for å aktivere HC-05-modulen. når den er lav, er modulen deaktivert
- Statusindikator for statusnål. Når den ikke er paret / koblet til noen annen Bluetooth-enhet, blinker LED kontinuerlig. Når den er koblet til / sammenkoblet med en hvilken som helst annen Bluetooth-enhet, blinker LED-lampen med konstant forsinkelse på 2 sekunder.
L293D Motor Driver IC:
L293D er en dual H-bridge motor driver IC. Dette fungerer som en strømforsterker, og utgangen fra L293D driver DC-motorene. Den inneholder to innebygde H-brokretser. I vanlig driftsmåte kan den kjøre to likestrømsmotorer samtidig i begge retninger. Tabellen nedenfor viser pinbeskrivelsen til L293D IC. Her er noen prosjekter som bruker L293D Motor Driver.
Pin Beskrivelse
Pin nr. |
Navn |
Funksjon |
1 |
Aktiver 1,2 |
Aktiver pin for motor 1 |
2 |
Inngang 1 |
Inngang 1 for motor 1 |
3 |
Utgang 1 |
Utgang 1 for motor 1 |
4 |
Gnd |
Jord (0V) |
5 |
Gnd |
Jord (0V) |
6 |
Utgang 2 |
Utgang 2 for motor 1 |
7 |
Inngang 2 |
Inngang 2 for motor 1 |
8 |
Vcc 2 |
Forsyningsspenning for motorer (5V) |
9 |
Aktiver 3,4 |
Aktiver pin for motor 1 |
10 |
Inngang 3 |
Inngang 1 for motor 2 |
11 |
Utgang 4 |
Utgang 1 for motor 2 |
12 |
Gnd |
Jord (0V) |
1. 3 |
Gnd |
Jord (0V) |
14 |
Utgang 4 |
Utgang 2 for motor 2 |
15 |
Inngang 4 |
Inngang 2 for motor 2 |
16 |
Vcc 1 |
Forsyningsspenning (5V) |
Arbeid med Android-telefonstyrt robot:
I denne smarttelefonkontrollerte roboten sender brukeren av Android-appen dataene til 8051 mikrokontroller via HC-05-modulen. De mottatte dataene sammenlignes i 8051 mikrokontroller, og avgjørelsen tas deretter. Tabellen nedenfor viser retningen på motorene og statusen til roboten for forskjellige mottatte tegn.
Mottatt karakter |
Motor 1 |
Motor 2 |
Status for robot |
f |
Framover |
Framover |
Går fremover |
b |
Bakover |
Bakover |
Flytter bakover |
r |
Framover |
Bakover |
Flytter til høyre |
l |
Bakover |
Framover |
Flytter til venstre |
s |
Av |
Av |
Stoppet |
Den Bluetooth terminal app tillater oss å etterligne en Bluetooth terminal. Denne appen støtter toveiskommunikasjon, og denne appen er kompatibel med de fleste enhetene.
Trinnene nedenfor viser hvordan du installerer og bruker denne appen.
1. Last ned og installer Bluetooth-terminalappen på Android-telefonen din. Appen kan lastes ned fra lenken nedenfor.
play.google.com/store/apps/details?id=ptah.apps.bluetoothterminal
2. Etter at du har installert appen, åpner du appen og slår på Bluetooth.
3. Velg enheten og klikk på tilkoblingsalternativet. Etter vellykket tilkobling kan vi begynne å sende data til HC-05-modulen.
Sjekk kodeforklaringen nedenfor for å se hvordan tegnet sendes og mottas av 8051 Microcontroller for å rotere de nødvendige motorene.
Kode forklaring:
Hele C-programmet og demonstrasjonsvideoen for dette prosjektet er gitt på slutten av dette prosjektet. Koden er delt inn i små meningsfulle biter og forklart nedenfor.
For L293D-grensesnitt med 8051 mikrokontrollere, må vi definere pinner som L293D er koblet til 8051 mikrokontroller. In1 pin på motor 1 er koblet til P2.0, In2 pin på motor 1 er koblet til P2.1, In1 pin på motor 2 er koblet til P2.2, In2 pin på motor 2 er koblet til P2.3
sbit m1f = P2 ^ 0; // in1 pin av motor1 sbit m1b = P2 ^ 1; // in2 pin av motor1 sbit m2f = P2 ^ 2; // in1 pin av motor2 sbit m2b = P2 ^ 3; // in2 pin av motor2
Deretter må vi definere noen funksjoner som brukes i programmet. Forsinkelsesfunksjon brukes til å lage spesifisert tidsforsinkelse. Txdata- funksjonen brukes til å overføre data gjennom seriell port. Rxdata- funksjonen brukes til å motta data fra seriell port.
ugyldig forsinkelse (usignert int); // funksjon for å lage forsinkelse char rxdata (ugyldig); // funksjon for å motta et tegn gjennom seriell port på 8051 ugyldig txdata (usignert tegn); // funksjon for å sende et tegn gjennom serieport 8051
I denne delen av koden skal vi konfigurere 8051 mikrokontroller for seriell kommunikasjon. TMOD-registeret er lastet med 0x20 for tidtaker 1, modus 2 (automatisk omlasting). SCON-registeret er lastet med 0x50 for 8 databiter, 1 stoppbit og mottak aktivert. TH1-registeret er lastet med 0xfd for overføringshastighet på 9600 bits per sekund. TR1 = 1 brukes til å starte timeren.
TMOD = 0x20; SCON = 0x50; TH1 = 0xfd; TR1 = 1; I denne delen av koden lagres det returnerte tegnet til rxdata- funksjonen i variabelen s for videre bruk.
s = rxdata (); // motta serielle data fra hc-05 Bluetooth-modulen
I denne delen av koden må vi sammenligne det mottatte tegnet med forhåndstildelte tegn for forskjellige retninger. Hvis den mottatte karakteren er 'f', må roboten bevege seg fremover. Dette oppnås ved å gjøre m1f, m2f pinner høye og m1b, m2b pinner lave. Når dette er gjort, må vi deretter sende status som robot til Android-app. Dette gjøres ved hjelp av txdata- funksjonen. Den samme prosessen gjentas for forskjellige mottatte tegn, og avgjørelsen tas deretter. Tabell 1 viser forskjellige verdier av m1f, m1b, m2f, m2b for forskjellige bevegelsesretninger for roboten.
hvis (s == 'f') // beveger begge motorene i retning fremover {m1f = 1; forsinkelse (1); m1b = 0; forsinkelse (1); m2f = 1; forsinkelse (1); m2b = 0; forsinkelse (1); for (i = 0; msg1! = '\ 0'; i ++) // send status for robot til Android-app via Bluetooth {txdata (msg1); }}
m1f |
m1b |
m2f |
m2b |
Motor 1 rotasjon |
Motor 2 rotasjon |
Status for robot |
1 |
0 |
1 |
0 |
framover |
framover |
Går videre |
0 |
1 |
0 |
1 |
omvendt |
omvendt |
Flytter bakover |
1 |
0 |
0 |
1 |
framover |
omvendt |
Flytter til høyre |
0 |
1 |
1 |
0 |
omvendt |
framover |
Flytter til venstre |
0 |
0 |
0 |
0 |
stoppet |
stoppet |
stoppet |
Dette er at du kan rotere robotbilen i hvilken som helst retning ved å kontrollere de fire motorene ved hjelp av 8051 mikrokontroller. Denne roboten kan også styres ved hjelp av DTMF med 8051, hvis du ikke har Android-telefon.
Sjekk også alle robotprosjektene her.