- Componente necesare:
- Diagrama circuitului:
- Microcontroler 8051:
- Modul Bluetooth HC-05:
- IC driver driver L293D:
- Funcționarea robotului controlat de telefonul Android:
- Explicarea codului:
În acest proiect vom construi un robot controlat de telefonul Android folosind microcontrolere 8051 și modul Bluetooth. Robotul este proiectat folosind motoare de curent continuu și direcția motoarelor de curent continuu va fi controlată de comenzile primite de la aplicația Android. Starea robotului este trimisă înapoi la aplicația Android. Acest proiect va ajuta, de asemenea, pentru interfața modulului Bluetooth HC-05 cu microcontrolerele 8051. Am folosit deja modulul Bluetooth pentru a controla aparatele electrocasnice cu 8051.
Componente necesare:
- 8051 microcontroler (AT89S52)
- Modul Bluetooth HC-05
- Driver motor L293D
- Șasiu robot
- Motoare DC (2)
- Roți (2)
- Roată cu rotor
- Sârme de jumper
- Aplicație pentru terminal Bluetooth
Diagrama circuitului:
Microcontroler 8051:
Microcontrolerul 8051 este un microcontroler de 8 biți care are 128 de octeți pe cip RAM, 4K octeți pe cip ROM, două temporizatoare, un port serial și patru porturi de 8 biți. 8052 microcontroler este o extensie a 8051 microcontroler. În acest proiect folosim microcontrolerul AT89S52. Tabelul de mai jos arată comparația a 8051 membri ai familiei.
Caracteristică |
8051 |
8052 |
ROM (în octeți) |
4K |
8K |
RAM (octeți) |
128 |
256 |
Cronometre |
2 |
3 |
Pinii I / O |
32 |
32 |
Port serial |
1 |
1 |
Surse de întrerupere |
6 |
8 |
Modul Bluetooth HC-05:
HC-05 este un modul Bluetooth serial. Poate fi configurat folosind comenzile AT. Poate funcționa în trei configurații diferite (Master, Slave, Loop back). În proiectul nostru îl vom folosi ca sclav. Caracteristicile modulului HC-05 includ,
- Sensibilitate tipică -80dBm.
- Rata de transmisie implicită: 9600bps, 8 biți de date, 1 bit de oprire, fără paritate.
- Asocierea automată a codului PIN: codul PIN implicit „1234”
- Are 6 pini.
- Pinii Vcc și Gnd sunt utilizați pentru alimentarea HC-05.
- Pinii Tx și Rx sunt utilizați pentru comunicarea cu microcontrolerul.
- Activați pinul pentru activarea modulului HC-05. când este scăzut, modulul este dezactivat
- Pinul de stat acționează indicatorul de stare. Când nu este asociat / conectat cu niciun alt dispozitiv Bluetooth, LED-ul clipește continuu. Când este conectat / asociat cu orice alt dispozitiv Bluetooth, LED-ul clipește cu întârzierea constantă de 2 secunde.
IC driver driver L293D:
L293D este un IC cu driver dual pentru motor H-bridge. Acesta acționează ca un amplificator de curent, ieșirea L293D acționează motoarele de curent continuu. Conține două circuite H-bridge încorporate. În modul comun de funcționare, poate conduce simultan două motoare de curent continuu în ambele direcții. Tabelul de mai jos prezintă descrierea pinului L293D IC. Iată câteva proiecte care utilizează driverul de motor L293D.
Descrierea pinului
Pin nr. |
Nume |
Funcţie |
1 |
Activați 1,2 |
Activați pinul pentru motorul 1 |
2 |
Intrare 1 |
Intrare 1 pentru motorul 1 |
3 |
Ieșire 1 |
Ieșire 1 pentru motorul 1 |
4 |
Gnd |
Masă (0V) |
5 |
Gnd |
Masă (0V) |
6 |
Ieșire 2 |
Ieșire 2 pentru motorul 1 |
7 |
Intrare 2 |
Intrare 2 pentru motorul 1 |
8 |
Vcc 2 |
Tensiunea de alimentare pentru motoare (5V) |
9 |
Activați 3,4 |
Activați pinul pentru motorul 1 |
10 |
Intrare 3 |
Intrare 1 pentru motorul 2 |
11 |
Ieșire 4 |
Ieșire 1 pentru motorul 2 |
12 |
Gnd |
Masă (0V) |
13 |
Gnd |
Masă (0V) |
14 |
Ieșire 4 |
Ieșire 2 pentru motorul 2 |
15 |
Intrare 4 |
Intrare 2 pentru motorul 2 |
16 |
Vcc 1 |
Tensiunea de alimentare (5V) |
Funcționarea robotului controlat de telefonul Android:
În acest robot controlat de telefonul inteligent, utilizatorul aplicației Android trimite datele către microcontrolerul 8051 prin modulul HC-05. Datele primite sunt comparate în 8051 microcontroler și decizia se ia în consecință. Tabelul de mai jos arată direcția motoarelor și starea robotului pentru diferite caractere primite.
Caracter primit |
Motorul 1 |
Motorul 2 |
Starea robotului |
f |
Redirecţiona |
Redirecţiona |
Se mișcă înainte |
b |
Înapoi |
Înapoi |
Se mișcă înapoi |
r |
Redirecţiona |
Înapoi |
Se deplasează spre dreapta |
l |
Înapoi |
Redirecţiona |
Se mută la stânga |
s |
Dezactivat |
Dezactivat |
Oprit |
Terminalul Bluetooth App ne permite să emuleze un terminal Bluetooth. Această aplicație acceptă comunicarea bidirecțională și această aplicație este compatibilă cu majoritatea dispozitivelor.
Pașii de mai jos arată cum să instalați și să utilizați această aplicație.
1. Descărcați și instalați aplicația terminal Bluetooth pe telefonul dvs. Android. Aplicația poate fi descărcată de pe linkul de mai jos.
play.google.com/store/apps/details?id=ptah.apps.bluetoothterminal
2. După instalarea aplicației, deschideți aplicația și activați Bluetooth.
3. Selectați dispozitivul și faceți clic pe opțiunea de conectare. După o conexiune reușită, putem începe să trimitem date către modulul HC-05.
Verificați explicația de cod de mai jos pentru a vedea cum este trimis și primit caracterul de către microcontrolerul 8051 pentru a roti motoarele necesare.
Explicarea codului:
Programul complet C și videoclipul demonstrativ pentru acest proiect sunt furnizate la sfârșitul acestui proiect. Codul este împărțit în mici bucăți semnificative și explicat mai jos.
Pentru interfața L293D cu microcontrolerele 8051, trebuie să definim pinii pe care L293D este conectat la microcontrolerul 8051. Pinul 1 al motorului 1 este conectat la P2.0, pinul 2 al motorului 1 este conectat la P2.1, pinul 1 al motorului 2 este conectat la P2.2, pinul 2 al motorului 2 este conectat la P2.3
sbit m1f = P2 ^ 0; // in1 pin al motorului 1 sbit m1b = P2 ^ 1; // in2 pin al motorului 1 sbit m2f = P2 ^ 2; // in1 pin motor2 sbit m2b = P2 ^ 3; // in2 pin al motorului 2
În continuare trebuie să definim câteva funcții care sunt utilizate în program. Funcția de întârziere este utilizată pentru a crea o întârziere specificată. Funcția Txdata este utilizată pentru a transmite date prin portul serial. Funcția Rxdata este utilizată pentru a primi date de la portul serial.
întârziere nulă (int semnat); // funcție pentru crearea întârzierii rxdata (void); // funcție pentru primirea unui caracter prin portul serial al 8051 void txdata (caracter nesemnat); // funcție pentru trimiterea unui caracter prin portul serial al 8051
În această parte a codului vom configura microcontrolerul 8051 pentru comunicații seriale. Registrul TMOD este încărcat cu 0x20 pentru temporizatorul 1, modul 2 (reîncărcare automată). Registrul SCON este încărcat cu 0x50 pentru 8 biți de date, 1 bit de oprire și recepție activată. Registrul TH1 este încărcat cu 0xfd pentru o rată de transmisie de 9600 biți pe secundă. TR1 = 1 este utilizat pentru a porni cronometrul.
TMOD = 0x20; SCON = 0x50; TH1 = 0xfd; TR1 = 1; În această parte a codului, caracterul returnat al funcției rxdata este stocat în variabila „s” pentru utilizare ulterioară.
s = rxdata (); // primiți date seriale de la modulul hc-05 bluetooth
În această parte a codului, trebuie să comparăm caracterul primit cu caracterele prealocate pentru direcții diferite. Dacă caracterul primit este „f”, atunci robotul trebuie să se deplaseze în direcția înainte. Acest lucru se realizează prin reducerea pinilor m1f, m2f și pinii m1b, m2b . Odată ce acest lucru este făcut, în continuare trebuie să trimitem starea robotului către aplicația Android. Acest lucru se face cu ajutorul funcției txdata . Același proces se repetă pentru diferite personaje primite și decizia se ia în consecință. Tabelul 1 prezintă valori diferite ale m1f, m1b, m2f, m2b pentru diferite direcții de mișcare ale robotului.
if (s == 'f') // deplasați ambele motoare în direcția înainte {m1f = 1; întârziere (1); m1b = 0; întârziere (1); m2f = 1; întârziere (1); m2b = 0; întârziere (1); for (i = 0; msg1! = '\ 0'; i ++) // trimite starea robotului către aplicația Android prin Bluetooth {txdata (msg1); }}
m1f |
m1b |
m2f |
m2b |
Rotirea motorului 1 |
Rotirea motorului 2 |
Starea robotului |
1 |
0 |
1 |
0 |
redirecţiona |
redirecţiona |
A merge inainte |
0 |
1 |
0 |
1 |
verso |
verso |
Mergând înapoi |
1 |
0 |
0 |
1 |
redirecţiona |
verso |
Mergând la dreapta |
0 |
1 |
1 |
0 |
verso |
redirecţiona |
Mergând la stânga |
0 |
0 |
0 |
0 |
oprit |
oprit |
oprit |
Acesta este modul în care puteți roti mașina Robot în orice direcție controlând cele patru motoare folosind microcontrolerul 8051. Acest robot poate fi, de asemenea, controlat folosind DTMF cu 8051, dacă nu aveți telefon Android.
De asemenea, verificați aici toate proiectele de robotică.