- Potrebne komponente:
- Shema vezja:
- 8051 Mikrokrmilnik:
- Modul Bluetooth HC-05:
- L293D IC gonilnika motorja:
- Delovanje robota s krmiljenim telefonom Android:
- Razlaga kode:
V tem projektu bomo izdelali robota, ki ga upravlja Android Phone, z uporabo mikrokrmilnikov 8051 in modula Bluetooth. Robot je zasnovan z uporabo enosmernih motorjev, smer enosmernih motorjev pa bo nadzorovana z ukazi, prejetimi iz aplikacije android. Stanje robota se pošlje nazaj v aplikacijo Android. Ta projekt bo pomagal tudi pri povezovanju modula Bluetooth HC-05 z mikrokrmilniki 8051. Modul Bluetooth smo že uporabljali za nadzor gospodinjskih aparatov z 8051.
Potrebne komponente:
- 8051 mikrokrmilnik (AT89S52)
- Modul Bluetooth HC-05
- L293D Motor voznik
- Robotsko podvozje
- Enosmerni motorji (2)
- Kolesa (2)
- Ricinusovo kolo
- Jumper žice
- Aplikacija za Android terminala Bluetooth
Shema vezja:
8051 Mikrokrmilnik:
8051 mikrokrmilnik je 8-bitni mikrokrmilnik, ki ima 128 bajtov čipov RAM-a, 4K bajtov čipa ROM, dva časovnika, eno serijsko vrata in štiri 8-bitna vrata. 8052 mikrokrmilnik je podaljšek mikrokrmilnika 8051. V tem projektu uporabljamo mikrokrmilnik AT89S52. Spodnja tabela prikazuje primerjavo 8051 družinskih članov.
Značilnost |
8051 |
8052 |
ROM (v bajtih) |
4K |
8K |
RAM (bajti) |
128 |
256 |
Časovniki |
2. |
3. |
I / O zatiči |
32 |
32 |
Zaporedna vrata |
1. |
1. |
Prekinite vire |
6. |
8. |
Modul Bluetooth HC-05:
HC-05 je serijski modul Bluetooth. Nastavite ga lahko z ukazi AT. Deluje lahko v treh različnih konfiguracijah (Master, Slave, Loop back). V našem projektu ga bomo uporabili kot sužnja. Značilnosti modula HC-05 vključujejo,
- Značilna občutljivost -80dBm.
- Privzeta hitrost prenosa: 9600 bps, 8 podatkovnih bitov, 1 stop bit, brez paritete.
- Samodejno seznanjanje PIN kode: privzeta PIN koda »1234«
- Ima 6 nožic.
- Za napajanje HC-05 se uporabljajo zatiči Vcc in Gnd.
- Tx in Rx nožice se uporabljajo za komunikacijo z mikrokrmilnikom.
- Omogoči zatič za aktiviranje modula HC-05. ko je nizka, je modul onemogočen
- Državni pin deluje indikator stanja. Ko ni seznanjen / povezan z nobeno drugo napravo Bluetooth, LED neprekinjeno utripa. Ko je povezan / seznanjen s katero koli drugo napravo Bluetooth, LED utripa s konstantno zakasnitvijo 2 sekundi.
L293D IC gonilnika motorja:
L293D je dvojni H-mostni pogonski sklop motorja. Ta deluje kot ojačevalnik toka, izhod L293D poganja enosmerne motorje. Vsebuje dva vgrajena vezja H-mostu. V običajnem načinu delovanja lahko poganja dva enosmerna motorja hkrati v obe smeri. Spodnja tabela prikazuje pin opis L293D IC. Tu je nekaj projektov, ki uporabljajo L293D Motor Driver.
Opis pin
Pin št. |
Ime |
Funkcija |
1. |
Omogoči 1,2 |
Omogočite zatič za motor 1 |
2. |
Vhod 1 |
Vhod 1 za motor 1 |
3. |
Izhod 1 |
Izhod 1 za motor 1 |
4. |
Gnd |
Tla (0V) |
5. |
Gnd |
Tla (0V) |
6. |
Rezultat 2 |
Izhod 2 za motor 1 |
7. |
Vhod 2 |
Vhod 2 za motor 1 |
8. |
Vcc 2 |
Napajalna napetost za motorje (5V) |
9. |
Omogoči 3,4 |
Omogočite zatič za motor 1 |
10. |
Vhod 3 |
Vhod 1 za motor 2 |
11. |
Rezultat 4 |
Izhod 1 za motor 2 |
12. |
Gnd |
Tla (0V) |
13. |
Gnd |
Tla (0V) |
14. |
Rezultat 4 |
Izhod 2 za motor 2 |
15. |
Vhod 4 |
Vhod 2 za motor 2 |
16. |
Vcc 1 |
Napajalna napetost (5V) |
Delovanje robota s krmiljenim telefonom Android:
V tem robotu, ki ga upravlja pametni telefon, uporabnik aplikacije Android pošlje podatke mikrokrmilniku 8051 prek modula HC-05. Prejeti podatki se primerjajo v mikrokrmilniku 8051 in se o tem odloči. Spodnja tabela prikazuje smer motorjev in status robota za različne prejete znake.
Prejeti znak |
Motor 1 |
2. motor |
Status robota |
f |
Naprej |
Naprej |
Premakne se naprej |
b |
Nazaj |
Nazaj |
Premakne se nazaj |
r |
Naprej |
Nazaj |
Premakne se desno |
l |
Nazaj |
Naprej |
Premakne se levo |
s |
Izklopljeno |
Izklopljeno |
Ustavljeno |
Aplikacija terminala Bluetooth nam omogoča posnemanje terminala Bluetooth. Ta aplikacija podpira dvosmerno komunikacijo in je združljiva z večino naprav.
Spodnji koraki prikazujejo, kako namestiti in uporabljati to aplikacijo.
1. Prenesite in namestite aplikacijo terminala Bluetooth v telefon Android. Aplikacijo lahko prenesete s spodnje povezave.
play.google.com/store/apps/details?id=ptah.apps.bluetoothterminal
2. Po namestitvi aplikacije odprite aplikacijo in vklopite Bluetooth.
3. Izberite napravo in kliknite možnost povezave. Po uspešni povezavi lahko začnemo pošiljati podatke na modul HC-05.
Preverite spodnjo razlago kode, da vidite, kako znak pošilja in sprejema mikrokrmilnik 8051, da zavrti zahtevane motorje.
Razlaga kode:
Celoten program C in predstavitveni video za ta projekt je podan na koncu tega projekta. Koda je razdeljena na majhne pomembne koščke in je razložena spodaj.
Za povezovanje L293D z 8051 mikrokrmilniki moramo določiti nožice, na katerih je L293D povezan z 8051 mikrokrmilnikom. In1 pin motorja 1 je povezan s P2.0, In2 pin motorja 1 je povezan s P2.1, In1 pin motorja 2 je povezan s P2.2, In2 pin motorja 2 je povezan s P2.3
sbit m1f = P2 ^ 0; // in1 zatič motorja1 sbit m1b = P2 ^ 1; // v2 zatič motorja1 sbit m2f = P2 ^ 2; // in1 zatič motorja2 sbit m2b = P2 ^ 3; // v2 zatič motorja2
Nato moramo definirati nekatere funkcije, ki se uporabljajo v programu. Funkcija zakasnitve se uporablja za ustvarjanje določene časovne zakasnitve. Funkcija Txdata se uporablja za prenos podatkov skozi serijska vrata. Funkcija Rxdata se uporablja za sprejemanje podatkov iz serijskih vrat.
zamuda pred praznino (nepodpisan int); // funkcija za ustvarjanje zamika char rxdata (void); // funkcija za sprejem znaka skozi serijska vrata 8051 void txdata (nepodpisani znak); // funkcija za pošiljanje znaka skozi serijska vrata 8051
V tem delu kode bomo konfigurirali mikrokrmilnik 8051 za serijsko komunikacijo. Register TMOD je naložen z 0x20 za časovnik 1, način 2 (samodejno ponovno nalaganje). Register SCON je naložen z 0x50 za 8 podatkovnih bitov, 1 stop-bit in sprejem je omogočen. Register TH1 je naložen z 0xfd za hitrost prenosa 9600 bitov na sekundo. TR1 = 1 se uporablja za zagon časovnika.
TMOD = 0x20; SCON = 0x50; TH1 = 0xfd; TR1 = 1; V tem delu kode se vrnjeni znak funkcije rxdata shrani v spremenljivko 's' za nadaljnjo uporabo.
s = rxdata (); // prejem serijskih podatkov iz modula bluetooth hc-05
V tem delu kode moramo prejeti znak primerjati s predhodno dodeljenimi znaki za različne smeri. Če je prejeti znak 'f', se mora robot premakniti naprej. To se doseže z izdelavo m1f, m2f zatičev visoko in m1b, m2b zatičev nizko. Ko je to storjeno, moramo naslednjič poslati status robota v android aplikacijo. To se naredi s pomočjo funkcije txdata . Isti postopek se ponovi za različne prejete znake in se ustrezno sprejme odločitev. Tabela 1 prikazuje različne vrednosti m1f, m1b, m2f, m2b za različne smeri gibanja robota.
if (s == 'f') // premik obeh motorjev v smeri naprej {m1f = 1; zamuda (1); m1b = 0; zamuda (1); m2f = 1; zamuda (1); m2b = 0; zamuda (1); for (i = 0; msg1! = '\ 0'; i ++) // pošljemo status robota v android aplikacijo prek Bluetootha {txdata (msg1); }}
m1f |
m1b |
m2f |
m2b |
Vrtenje motorja 1 |
Vrtenje motorja 2 |
Status robota |
1. |
0 |
1. |
0 |
naprej |
naprej |
Premikanje naprej |
0 |
1. |
0 |
1. |
vzvratno |
vzvratno |
Premikanje nazaj |
1. |
0 |
0 |
1. |
naprej |
vzvratno |
Gibanje desno |
0 |
1. |
1. |
0 |
vzvratno |
naprej |
Premik levo |
0 |
0 |
0 |
0 |
ustavil |
ustavil |
ustavil |
To je, da lahko robotski avtomobil zasukate v katero koli smer z upravljanjem štirih motorjev z mikrokrmilnikom 8051. Ta robot lahko nadzirate tudi s pomočjo DTMF z 8051, če nimate telefona Android.
Tukaj preverite tudi vse projekte robotike.