- Būtini komponentai:
- Grandinės schema:
- 8051 mikrovaldiklis:
- HC-05 „Bluetooth“ modulis:
- L293D variklio tvarkyklės IC:
- „Android Phone“ valdomo roboto veikimas:
- Kodo paaiškinimas:
Šiame projekte mes sukursime „ Android Phone“ valdomą robotą naudodami 8051 mikrovaldiklius ir „Bluetooth“ modulį. Robotas sukurtas naudojant nuolatinės srovės variklius, o nuolatinės srovės variklių kryptis bus valdoma komandomis, gautomis iš „Android“ programos. Roboto būsena siunčiama atgal į „Android“ programą. Šis projektas taip pat padės susieti „HC-05 Bluetooth“ modulį su 8051 mikrovaldikliais. Mes jau naudojome „Bluetooth“ modulį buitinei technikai valdyti su „8051“.
Būtini komponentai:
- 8051 mikrovaldiklis (AT89S52)
- HC-05 „Bluetooth“ modulis
- L293D variklio tvarkyklė
- Roboto važiuoklė
- Nuolatinės srovės varikliai (2)
- Ratai (2)
- Ratuko ratas
- Džemperių laidai
- „Bluetooth“ terminalo „Android“ programa
Grandinės schema:
8051 mikrovaldiklis:
8051 mikrovaldiklis yra 8 bitų mikrovaldiklis, turintis 128 baitų lusto RAM, 4K baitų lusto ROM, du laikmačius, vieną nuoseklųjį ir keturis 8 bitų prievadus. 8052 mikrovaldiklis yra 8051 mikrovaldiklio pratęsimas. Šiame projekte mes naudojame mikrovaldiklį AT89S52. Žemiau esančioje lentelėje parodytas 8051 šeimos nario palyginimas.
Funkcija |
8051 |
8052 |
ROM (baitais) |
4K |
8 tūkst |
RAM (baitai) |
128 |
256 |
Laikmačiai |
2 |
3 |
I / O kaiščiai |
32 |
32 |
Nuoseklusis prievadas |
1 |
1 |
Nutraukti šaltinius |
6 |
8 |
HC-05 „Bluetooth“ modulis:
HC-05 yra serijinis „Bluetooth“ modulis. Ją galima sukonfigūruoti naudojant AT komandas. Jis gali veikti trimis skirtingomis konfigūracijomis („Master“, „Slave“, „Loop back“). Savo projekte mes jį naudosime kaip vergą. HC-05 modulio savybės apima:
- Tipiškas -80dBm jautrumas.
- Numatytasis perdavimo greitis: 9600 bps, 8 duomenų bitai, 1 stop bitas, nėra pariteto.
- Automatiškai susieti PIN kodą: „1234“ numatytasis PIN kodas
- Jis turi 6 kaiščius.
- „HC-05“ maitinimui naudojami „Vcc“ ir „Gnd“ kaiščiai.
- „Tx“ ir „Rx“ kaiščiai naudojami ryšiui su mikrovaldikliu.
- Įjunkite kaištį, kad suaktyvintumėte modulį HC-05. kai jo yra nedaug, modulis išjungiamas
- Valstybės kaištis veikia būsenos indikatorių. Kai jis nėra suporuotas / sujungtas su jokiu kitu „Bluetooth“ įrenginiu, LED nuolat mirksi. Kai jis prijungtas / suporuotas su bet kuriuo kitu „Bluetooth“ įrenginiu, šviesos diodas mirksi pastoviai vėluodamas 2 sekundes.
L293D variklio tvarkyklės IC:
L293D yra dviguba H tilto variklio tvarkyklė IC. Tai veikia kaip srovės stiprintuvas, L293D išvestis varo nuolatinės srovės variklius. Jame yra dvi įmontuotos H tilto grandinės. Įprastu veikimo režimu jis gali vienu metu vairuoti du nuolatinės srovės variklius abiem kryptimis. Žemiau esančioje lentelėje pateikiamas L293D IC kaiščių aprašymas. Štai keletas projektų, kuriuose naudojama „L293D“ variklio tvarkyklė.
Smeigtuko aprašymas
Smeigtukas Nr. |
vardas |
Funkcija |
1 |
Įgalinti 1,2 |
Įjungti 1 variklio kaištį |
2 |
1 įvestis |
1 įėjimas 1 varikliui |
3 |
1 rezultatas |
1 variklio 1 išėjimas |
4 |
Gnd |
Įžeminimas (0V) |
5 |
Gnd |
Įžeminimas (0V) |
6 |
2 išėjimas |
2 variklis 1 išėjimas |
7 |
2 įvestis |
2 įėjimas 1 varikliui |
8 |
Vcc 2 |
Variklių maitinimo įtampa (5V) |
9 |
Įgalinti 3,4 |
Įjungti 1 variklio kaištį |
10 |
3 įvestis |
1 įėjimas 2 varikliui |
11 |
4 išėjimas |
1 išėjimas 2 varikliui |
12 |
Gnd |
Įžeminimas (0V) |
13 |
Gnd |
Įžeminimas (0V) |
14 |
4 išėjimas |
2 variklio 2 išėjimas |
15 |
4 įvestis |
2 variklio 2 įvestis |
16 |
Vcc 1 |
Maitinimo įtampa (5V) |
„Android Phone“ valdomo roboto veikimas:
Šiame „ Smart Phone“ valdomame robote „ Android“ programos vartotojas per HC-05 modulį siunčia duomenis į 8051 mikrovaldiklį. Gauti duomenys lyginami 8051 mikrovaldikliu ir sprendimas priimamas atitinkamai. Žemiau esančioje lentelėje parodyta variklių kryptis ir roboto būsena skirtingiems gautiems simboliams.
Gautas personažas |
Variklis 1 |
2 variklis |
Roboto būsena |
f |
Persiųsti |
Persiųsti |
Juda į priekį |
b |
Atgal |
Atgal |
Juda atgal |
r |
Persiųsti |
Atgal |
Juda į dešinę |
l |
Atgal |
Persiųsti |
Juda į kairę |
s |
Išjungta |
Išjungta |
Sustojo |
„ Bluetooth“ terminalo programa leidžia mums mėgdžioti „Bluetooth“ terminalą. Ši programa palaiko dvikryptį ryšį ir ši programa suderinama su daugeliu įrenginių.
Toliau pateikiami veiksmai rodo, kaip įdiegti ir naudoti šią programą.
1. Atsisiųskite ir įdiekite „Bluetooth“ terminalo programą į savo „Android“ telefoną. Programą galima atsisiųsti iš toliau pateiktos nuorodos.
play.google.com/store/apps/details?id=ptah.apps.bluetoothterminal
2. Įdiegę programą, atidarykite programą ir įjunkite „Bluetooth“.
3. Pasirinkite įrenginį ir spustelėkite prisijungimo parinktį. Po sėkmingo prisijungimo galime pradėti siųsti duomenis į HC-05 modulį.
Patikrinkite toliau pateiktą kodo paaiškinimą, kad pamatytumėte, kaip simbolį siunčia ir priima 8051 mikrovaldiklis, kad suktų reikiamus variklius.
Kodo paaiškinimas:
Visa C programa ir šio projekto demonstracinis vaizdo įrašas pateikiami šio projekto pabaigoje. Kodas yra padalintas į mažus reikšmingus gabalėlius ir paaiškinamas toliau.
Už L293D sąveikauja su 8051 mikrokontrolerio, turime apibrėžti kaiščių, dėl kurių L293D yra prijungtas prie 8051 mikrokontrolerio. 1 variklio In1 kaištis yra prijungtas prie P2.0, In2 1 variklio In2 kaištis yra prijungtas prie P2.1, 2 variklio In1 kaištis yra prijungtas prie P2.2, 2 variklio In2 kaištis yra prijungtas prie P2.3
sbit m1f = P2 ^ 0; // 1 variklio kaištis 1 sbit m1b = P2 ^ 1; // in2 variklio kaištis1 sbit m2f = P2 ^ 2; // 1 variklio kaištis2 sbit m2b = P2 ^ 3; //2 variklio2 kaištis
Toliau turime apibrėžti keletą funkcijų, kurios naudojamos programoje. Vėlavimo funkcija naudojama nurodytam laiko atidėjimui sukurti. „Txdata“ funkcija naudojama duomenims perduoti per nuoseklųjį prievadą. Rxdata funkcija naudojama duomenims gauti iš nuoseklaus prievado.
negaliojantis vėlavimas (nepasirašytas int); // funkcija atidėjimo char rxdata (void) sukūrimui; // funkcija gauti simbolį per 8051 nuoseklųjį prievadą void txdata (unsigned char); // funkcija siųsti simbolį per 8051 nuoseklųjį prievadą
Šioje kodo dalyje mes ketiname konfigūruoti 8051 mikrovaldiklį nuosekliam ryšiui. TMOD registre yra 0x20 laikmatis 1, 2 režimas (automatinis perkrovimas). SCON registre yra 0x50 8 duomenų bitams, 1 stop bitui ir įgalintam priėmimui. TH1 registras yra įkeltas su 0xfd, kai perdavimo sparta yra 9600 bitų per sekundę. TR1 = 1 naudojamas laikmatiui paleisti.
TMOD = 0x20; SCON = 0x50; TH1 = 0xfd; TR1 = 1; Šioje kodo dalyje grąžintas funkcijos „ rxdata“ simbolis saugomas kintamajame „s“ tolesniam naudojimui.
s = rxdata (); // gauti nuoseklius duomenis iš „hc-05 bluetooth“ modulio
Šioje kodo dalyje turime palyginti gautą simbolį su iš anksto skirtingais nurodymais. Jei gautas simbolis yra „f“, robotas turi judėti pirmyn. Tai pasiekiama padarius m1f, m2f kaiščius aukštus, o m1b, m2b kaiščius žemus. Kai tai bus padaryta, mes turime nusiųsti roboto būseną į „Android“ programą. Tai daroma txdata funkcijos pagalba. Tas pats procesas kartojamas skirtingiems gautiems simboliams ir atitinkamai priimamas sprendimas. 1 lentelėje pateiktos skirtingos m1f, m1b, m2f, m2b vertės skirtingoms roboto judėjimo kryptims.
if (s == 'f') // judinti abu variklius pirmyn {m1f = 1; vėlavimas (1); m1b = 0; vėlavimas (1); m2f = 1; vėlavimas (1); m2b = 0; vėlavimas (1); for (i = 0; msg1! = '\ 0'; i ++) // roboto būseną siųsti į „Android“ programą per „Bluetooth“ {txdata (msg1); }}
m1f |
m1b |
m2f |
m2b |
1 variklio sukimasis |
2 variklio sukimasis |
Roboto būsena |
1 |
0 |
1 |
0 |
Persiųsti |
Persiųsti |
Judėti pirmyn |
0 |
1 |
0 |
1 |
atvirkščiai |
atvirkščiai |
Judama atgal |
1 |
0 |
0 |
1 |
Persiųsti |
atvirkščiai |
Judama į dešinę |
0 |
1 |
1 |
0 |
atvirkščiai |
Persiųsti |
Juda į kairę |
0 |
0 |
0 |
0 |
sustojo |
sustojo |
sustojo |
Tai galite pasukti robotą automobilį bet kuria kryptimi valdydami keturis variklius naudodami 8051 mikrovaldiklį. Šį robotą taip pat galima valdyti naudojant DTMF su 8051, jei neturite „Android“ telefono.
Čia taip pat patikrinkite visus robotikos projektus.