- Kinakailangan ang Mga Bahagi:
- Diagram ng Circuit:
- 8051 Microcontroller:
- HC-05 Bluetooth Module:
- L293D Motor Driver IC:
- Paggawa ng Android Phone Controlled Robot:
- Paliwanag sa code:
Sa proyektong ito magtatayo kami ng isang robot na kinokontrol ng Android Phone gamit ang 8051 microcontrollers at Bluetooth module. Ang robot ay dinisenyo gamit ang DC motors at ang direksyon ng DC motors ay makokontrol ng mga utos na natanggap mula sa android application. Ang katayuan ng robot ay naibalik sa Android app. Ang proyektong ito ay makakatulong din para sa interfacing ng HC-05 Bluetooth module na may 8051 microcontrollers. Gumamit na kami ng Bluetooth module upang makontrol ang mga gamit sa bahay sa 8051.
Kinakailangan ang Mga Bahagi:
- 8051 microcontroller (AT89S52)
- HC-05 Bluetooth module
- L293D Motor Driver
- Mga chassis ng robot
- DC Motors (2)
- Gulong (2)
- Castor Wheel
- Jumper wires
- Bluetooth terminal android app
Diagram ng Circuit:
8051 Microcontroller:
Ang 8051 microcontroller ay isang 8-bit microcontroller na mayroong 128 bytes ng sa chip RAM, 4K bytes ng sa chip ROM, dalawang timer, isang serial port at apat na 8bit port. Ang 8052 microcontroller ay isang extension ng 8051 microcontroller. Sa proyektong ito gumagamit kami ng AT89S52 microcontroller. Ipinapakita ng talahanayan sa ibaba ang paghahambing ng 8051 mga miyembro ng pamilya.
Tampok |
8051 |
8052 |
ROM (sa bytes) |
4K |
8K |
RAM (bytes) |
128 |
256 |
Mga timer |
2 |
3 |
I / O mga pin |
32 |
32 |
Serial port |
1 |
1 |
Nakagambala ang mga mapagkukunan |
6 |
8 |
HC-05 Bluetooth Module:
Ang HC-05 ay isang serial Bluetooth module. Maaari itong mai-configure gamit ang mga utos ng AT. Maaari itong gumana sa tatlong magkakaibang mga pagsasaayos (Master, Slave, Loop back). Sa aming proyekto gagamitin namin ito bilang isang alipin. Ang mga tampok ng module na HC-05 ay may kasamang,
- Karaniwang -80dBm pagiging sensitibo.
- Default na rate ng baud: 9600bps, 8 data bit, 1 stop bit, walang pagkakapantay-pantay.
- Awtomatikong pagpapares ng pin code: default na code ng "1234"
- Mayroon itong 6 na mga pin.
- Ginagamit ang mga Vcc at Gnd pin para sa paggana ng HC-05.
- Ginagamit ang mga Tx at Rx pin para sa pakikipag-ugnay sa microcontroller.
- Paganahin ang pin para sa pag-aktibo ng module na HC-05. kapag ito ay mababa, ang module ay hindi pinagana
- Ang pin ng estado ay kumikilos tagapagpahiwatig ng katayuan. Kapag hindi ito ipinares / konektado sa anumang iba pang Bluetooth device, tuloy-tuloy na nag-flash ang LED. Kapag ito ay konektado / ipinares sa anumang iba pang mga aparatong Bluetooth, pagkatapos ang LED flashes na may patuloy na pagkaantala ng 2 segundo.
L293D Motor Driver IC:
Ang L293D ay isang dalawahang H-bridge motor driver na IC. Gumagawa ito bilang isang kasalukuyang amplifier, ang output ng L293D ay nagdadala ng DC Motors. Naglalaman ito ng dalawang nakapaloob na mga circuit ng H-tulay. Sa karaniwang mode ng pagpapatakbo, maaari itong magdala ng dalawang dc motor nang sabay-sabay sa parehong direksyon. Ipinapakita ng talahanayan sa ibaba ang paglalarawan ng pin ng L293D IC. Narito ang ilang mga proyekto na gumagamit ng L293D Motor Driver.
Paglalarawan ng Pin
Pin No. |
Pangalan |
Pag-andar |
1 |
Paganahin ang 1,2 |
Paganahin ang pin para sa motor 1 |
2 |
Input 1 |
Input 1 para sa motor 1 |
3 |
Output 1 |
Output 1 para sa motor 1 |
4 |
Gnd |
Lupa (0V) |
5 |
Gnd |
Lupa (0V) |
6 |
Output 2 |
Output 2 para sa motor 1 |
7 |
Input 2 |
Input 2 para sa motor 1 |
8 |
Vcc 2 |
Supply boltahe para sa mga motor (5V) |
9 |
Paganahin ang 3,4 |
Paganahin ang pin para sa motor 1 |
10 |
Pagpasok 3 |
Input 1 para sa motor 2 |
11 |
Output 4 |
Output 1 para sa motor 2 |
12 |
Gnd |
Lupa (0V) |
13 |
Gnd |
Lupa (0V) |
14 |
Output 4 |
Output 2 para sa motor 2 |
15 |
Input 4 |
Input 2 para sa motor 2 |
16 |
Vcc 1 |
Supply boltahe (5V) |
Paggawa ng Android Phone Controlled Robot:
Sa Robot na kinokontrol ng Smart Phone, ang gumagamit ng android app ay nagpapadala ng data sa 8051 microcontroller sa pamamagitan ng module na HC-05. Ang natanggap na data ay inihambing sa 8051 microcontroller at ang desisyon ay nabanggit nang naaayon. Ipinapakita ng talahanayan sa ibaba ang direksyon ng mga motor at katayuan ng robot para sa iba't ibang natanggap na mga character.
Natanggap na character |
Motor 1 |
Motor 2 |
Katayuan ng robot |
f |
Pasulong |
Pasulong |
Umusad |
b |
Paatras |
Paatras |
Umaatras |
r |
Pasulong |
Paatras |
Kumikilos nang Tama |
l |
Paatras |
Pasulong |
Umalis na |
s |
Patay na |
Patay na |
Natigil |
Pinapayagan kami ng Bluetooth terminal app na tularan ang isang Bluetooth terminal. Sinusuportahan ng app na ito ang komunikasyon na bidirectional at ang app na ito ay tugma sa karamihan ng mga aparato.
Ipinapakita ng mga hakbang sa ibaba kung paano i-install at gamitin ang app na ito.
1. Mag-download at mag-install ng Bluetooth terminal app sa iyong Android phone. Maaaring ma-download ang app mula sa link sa ibaba.
play.google.com/store/apps/details?id=ptah.apps.blu Bluetoothterminal
2. Matapos mai-install ang app, buksan ang app at i-on ang Bluetooth.
3. Piliin ang aparato at mag-click sa pagpipilian sa pagkonekta. Matapos ang matagumpay na koneksyon, maaari naming simulang magpadala ng data sa module na HC-05.
Suriin ang Paliwanag sa Code sa ibaba upang makita kung paano ipinadala ang character at natanggap ng 8051 Microcontroller upang paikutin ang mga kinakailangang motor.
Paliwanag sa code:
Ang kumpletong programa ng C at pagpapakita ng Video para sa proyektong ito ay ibinibigay sa pagtatapos ng proyektong ito. Ang code ay nahahati sa maliit na makahulugang mga tipak at ipinaliwanag sa ibaba.
Para sa L293D interfacing sa 8051 microcontrollers, kailangan nating tukuyin ang mga pin kung saan ang L293D ay konektado sa 8051 microcontroller. Ang In1 pin ng motor 1 ay konektado sa P2.0, In2 pin ng motor 1 ay konektado sa P2.1, In1 pin ng motor 2 ay konektado sa P2.2, In2 pin ng motor 2 ay konektado sa P2.3
sbit m1f = P2 ^ 0; // in1 pin ng motor1 sbit m1b = P2 ^ 1; // in2 pin ng motor1 sbit m2f = P2 ^ 2; // in1 pin ng motor2 sbit m2b = P2 ^ 3; // in2 pin ng motor2
Susunod kailangan nating tukuyin ang ilang mga pagpapaandar na ginagamit sa programa. Ginagamit ang pagkaantala ng pagpapaandar upang lumikha ng tinukoy na pagkaantala ng oras. Ginagamit ang pagpapaandar ng Txdata upang makapagpadala ng data sa pamamagitan ng serial port. Ginagamit ang pagpapaandar ng Rxdata upang makatanggap ng data mula sa serial port.
walang bisa ang pagkaantala (unsigned int); // function para sa paglikha ng pagkaantala ng char rxdata (walang bisa); // function para sa pagtanggap ng isang character sa pamamagitan ng serial port na 8051 void txdata (unsigned char); // function para sa pagpapadala ng isang character sa pamamagitan ng serial port na 8051
Sa bahaging ito ng code ay mai - configure namin ang 8051 microcontroller para sa serial na komunikasyon. Ang rehistro ng TMOD ay puno ng 0x20 para sa timer 1, mode 2 (auto reload). Ang rehistro ng SCON ay puno ng 0x50 para sa 8 data bits, 1 stop bit at natanggap na pinagana. Ang rehistro ng TH1 ay na-load ng 0xfd para sa rate ng baud na 9600 bits bawat segundo. Ginagamit ang TR1 = 1 upang simulan ang timer.
TMOD = 0x20; SCON = 0x50; TH1 = 0xfd; TR1 = 1; Sa bahaging ito ng code, ang naibalik na katangian ng pagpapaandar ng rxdata ay nakaimbak sa variable 's para sa karagdagang paggamit.
s = rxdata (); // makatanggap ng serial data mula sa hc-05 bluetooth module
Sa bahaging ito ng code, kailangan naming ihambing ang natanggap na character sa mga preassigned na character para sa iba't ibang direksyon. Kung ang natanggap na character ay 'f', kung gayon ang robot ay kailangang ilipat sa pasulong na direksyon. Natapos ito sa pamamagitan ng paggawa ng m1f, matataas ang mga mina ng mf at m1b, mababa ang mga mina ngb . Kapag tapos na ito, sa susunod kailangan naming magpadala ng katayuan ng robot sa android app. Ginagawa ito sa tulong ng pagpapaandar ng txdata . Ang parehong proseso ay paulit-ulit para sa iba't ibang mga character na natanggap at ang desisyon ay kinuha nang naaayon. Ipinapakita ng talahanayan 1 ang iba't ibang mga halaga ng m1f, m1b, m2f, m2b para sa iba't ibang direksyon ng paggalaw ng robot.
kung (s == 'f') // ilipat ang parehong mga motor sa direksyon sa unahan {m1f = 1; antala (1); m1b = 0; antala (1); m2f = 1; antala (1); m2b = 0; antala (1); para sa (i = 0; msg1! = '\ 0'; i ++) // magpadala ng katayuan ng robot sa android app sa pamamagitan ng bluetooth {txdata (msg1); }}
m1f |
m1b |
m2f |
m2b |
Motor 1 pag-ikot |
Pag-ikot ng Motor 2 |
Katayuan ng robot |
1 |
0 |
1 |
0 |
pasulong |
pasulong |
Sumulong |
0 |
1 |
0 |
1 |
baligtarin |
baligtarin |
Umatras |
1 |
0 |
0 |
1 |
pasulong |
baligtarin |
Kumikilos ng tama |
0 |
1 |
1 |
0 |
baligtarin |
pasulong |
Paglipat ng kaliwa |
0 |
0 |
0 |
0 |
huminto |
huminto |
huminto |
Ito ay maaari mong paikutin ang kotse ng Robot sa anumang direksyon sa pamamagitan ng pagkontrol sa apat na motor na gumagamit ng 8051 microcontroller. Ang robot na ito ay maaari ring makontrol gamit ang DTMF na may 8051, kung wala kang android phone.
Suriin din dito ang lahat ng Mga Proyekto ng Robotics.