- Componenti richiesti:
- Schema elettrico:
- Microcontrollore 8051:
- Modulo Bluetooth HC-05:
- IC driver motore L293D:
- Funzionamento del robot controllato da telefono Android:
- Spiegazione del codice:
In questo progetto costruiremo un robot controllato da un telefono Android utilizzando microcontrollori 8051 e modulo Bluetooth. Il robot è progettato utilizzando motori DC e la direzione dei motori DC sarà controllata dai comandi ricevuti dall'applicazione Android. Lo stato del robot viene rimandato all'app Android. Questo progetto aiuterà anche per l'interfacciamento del modulo Bluetooth HC-05 con i microcontrollori 8051. Abbiamo già utilizzato il modulo Bluetooth per controllare gli elettrodomestici con 8051.
Componenti richiesti:
- Microcontrollore 8051 (AT89S52)
- Modulo Bluetooth HC-05
- Driver motore L293D
- Telaio del robot
- Motori DC (2)
- Ruote (2)
- Rotella di ricino
- Cavi jumper
- App Android per terminale Bluetooth
Schema elettrico:
Microcontrollore 8051:
Il microcontrollore 8051 è un microcontrollore a 8 bit che ha 128 byte di RAM su chip, 4K byte di ROM su chip, due timer, una porta seriale e quattro porte a 8 bit. Il microcontrollore 8052 è un'estensione del microcontrollore 8051. In questo progetto stiamo usando il microcontrollore AT89S52. La tabella seguente mostra il confronto di 8051 membri della famiglia.
Caratteristica |
8051 |
8052 |
ROM (in byte) |
4K |
8 MILA |
RAM (byte) |
128 |
256 |
Timer |
2 |
3 |
Pin di I / O |
32 |
32 |
Porta seriale |
1 |
1 |
Fonti di interrupt |
6 |
8 |
Modulo Bluetooth HC-05:
HC-05 è un modulo Bluetooth seriale. Può essere configurato utilizzando i comandi AT. Può funzionare in tre diverse configurazioni (Master, Slave, Loop back). Nel nostro progetto lo useremo come schiavo. Le caratteristiche del modulo HC-05 includono,
- Sensibilità tipica di -80dBm.
- Baud rate predefinito: 9600 bps, 8 bit di dati, 1 bit di stop, nessuna parità.
- Codice pin di accoppiamento automatico: codice pin predefinito "1234"
- Dispone di 6 pin.
- I pin Vcc e Gnd vengono utilizzati per alimentare l'HC-05.
- I pin Tx e Rx vengono utilizzati per comunicare con il microcontrollore.
- Abilita il pin per l'attivazione del modulo HC-05. quando è basso, il modulo è disabilitato
- Il pin di stato funge da indicatore di stato. Quando non è accoppiato / connesso a nessun altro dispositivo Bluetooth, il LED lampeggia continuamente. Quando è connesso / accoppiato con qualsiasi altro dispositivo Bluetooth, il LED lampeggia con un ritardo costante di 2 secondi.
IC driver motore L293D:
L293D è un circuito integrato del driver del motore con doppio ponte H. Questo funge da amplificatore di corrente, l'uscita di L293D pilota i motori CC. Contiene due circuiti H-bridge integrati. Nella modalità di funzionamento comune, può azionare due motori CC contemporaneamente in entrambe le direzioni. La tabella seguente mostra la descrizione dei pin dell'IC L293D. Di seguito sono riportati alcuni progetti che utilizzano L293D Motor Driver.
Descrizione pin
N. pin |
Nome |
Funzione |
1 |
Abilita 1,2 |
Abilitazione pin per motore 1 |
2 |
Ingresso 1 |
Ingresso 1 per motore 1 |
3 |
Uscita 1 |
Uscita 1 per motore 1 |
4 |
Gnd |
Terra (0V) |
5 |
Gnd |
Terra (0V) |
6 |
Uscita 2 |
Uscita 2 per motore 1 |
7 |
Ingresso 2 |
Ingresso 2 per motore 1 |
8 |
Vcc 2 |
Tensione di alimentazione per motori (5V) |
9 |
Abilita 3,4 |
Abilitazione pin per motore 1 |
10 |
Ingresso 3 |
Ingresso 1 per motore 2 |
11 |
Uscita 4 |
Uscita 1 per motore 2 |
12 |
Gnd |
Terra (0V) |
13 |
Gnd |
Terra (0V) |
14 |
Uscita 4 |
Uscita 2 per motore 2 |
15 |
Ingresso 4 |
Ingresso 2 per motore 2 |
16 |
Vcc 1 |
Tensione di alimentazione (5 V) |
Funzionamento del robot controllato da telefono Android:
In questo robot controllato da smartphone, l'utente dell'app Android invia i dati al microcontrollore 8051 tramite il modulo HC-05. I dati ricevuti vengono confrontati nel microcontrollore 8051 e la decisione viene presa di conseguenza. La tabella seguente mostra la direzione dei motori e lo stato del robot per i diversi caratteri ricevuti.
Carattere ricevuto |
Motore 1 |
Motore 2 |
Stato del robot |
f |
Inoltrare |
Inoltrare |
Va avanti |
b |
Indietro |
Indietro |
Si sposta indietro |
r |
Inoltrare |
Indietro |
Si muove a destra |
l |
Indietro |
Inoltrare |
Si sposta a sinistra |
S |
Off |
Off |
Fermato |
L' app del terminale Bluetooth ci consente di emulare un terminale Bluetooth. Questa app supporta la comunicazione bidirezionale e questa app è compatibile con la maggior parte dei dispositivi.
I passaggi seguenti mostrano come installare e utilizzare questa app.
1. Scarica e installa l'app del terminale Bluetooth sul tuo telefono Android. L'app può essere scaricata dal link sottostante.
play.google.com/store/apps/details?id=ptah.apps.bluetoothterminal
2. Dopo aver installato l'app, apri l'app e attiva il Bluetooth.
3. Selezionare il dispositivo e fare clic sull'opzione di connessione. Dopo la connessione riuscita, possiamo iniziare a inviare dati al modulo HC-05.
Controllare la spiegazione del codice di seguito per vedere come il carattere viene inviato e ricevuto dal microcontrollore 8051 per ruotare i motori richiesti.
Spiegazione del codice:
Il programma completo in C e il video dimostrativo per questo progetto sono forniti alla fine di questo progetto. Il codice è suddiviso in piccoli blocchi significativi e spiegato di seguito.
Per l'interfacciamento di L293D con i microcontrollori 8051, dobbiamo definire i pin su cui L293D è collegato al microcontrollore 8051. Il pin In1 del motore 1 è collegato a P2.0, il pin In2 del motore 1 è collegato a P2.1, il pin In1 del motore 2 è collegato a P2.2, il pin In2 del motore 2 è collegato a P2.3
sbit m1f = P2 ^ 0; // in1 pin di motor1 sbit m1b = P2 ^ 1; // in2 pin di motor1 sbit m2f = P2 ^ 2; // in1 pin di motor2 sbit m2b = P2 ^ 3; // in2 pin del motore2
Successivamente dobbiamo definire alcune funzioni che vengono utilizzate nel programma. La funzione di ritardo viene utilizzata per creare un ritardo di tempo specificato. La funzione Txdata viene utilizzata per trasmettere i dati tramite la porta seriale. La funzione Rxdata viene utilizzata per ricevere dati dalla porta seriale.
void delay (unsigned int); // funzione per creare delay char rxdata (void); // funzione per ricevere un carattere tramite la porta seriale di 8051 void txdata (unsigned char); // funzione per inviare un carattere tramite la porta seriale dell'8051
In questa parte del codice configureremo il microcontrollore 8051 per la comunicazione seriale. Il registro TMOD viene caricato con 0x20 per il timer 1, modalità 2 (ricarica automatica). Il registro SCON viene caricato con 0x50 per 8 bit di dati, 1 bit di stop e ricezione abilitata. Il registro TH1 viene caricato con 0xfd per una velocità di trasmissione di 9600 bit al secondo. TR1 = 1 viene utilizzato per avviare il timer.
TMOD = 0x20; SCON = 0x50; TH1 = 0xfd; TR1 = 1; In questa parte del codice, il carattere restituito dalla funzione rxdata viene memorizzato nella variabile "s" per un ulteriore utilizzo.
s = rxdata (); // riceve i dati seriali dal modulo bluetooth hc-05
In questa parte del codice, dobbiamo confrontare il carattere ricevuto con caratteri preassegnati per direzioni diverse. Se il carattere ricevuto è "f", il robot deve spostarsi in avanti. Ciò si ottiene rendendo m1f, m2f alti e m1b, m2b bassi. Una volta fatto, dobbiamo inviare lo stato del robot all'app Android. Questo viene fatto con l'aiuto della funzione txdata . Lo stesso processo viene ripetuto per diversi personaggi ricevuti e la decisione viene presa di conseguenza. La tabella 1 mostra diversi valori di m1f, m1b, m2f, m2b per diverse direzioni di movimento del robot.
if (s == 'f') // sposta entrambi i motori in avanti {m1f = 1; ritardo (1); m1b = 0; ritardo (1); m2f = 1; ritardo (1); m2b = 0; ritardo (1); for (i = 0; msg1! = '\ 0'; i ++) // invia lo stato del robot all'app Android tramite bluetooth {txdata (msg1); }}
m1f |
m1b |
m2f |
m2b |
Rotazione del motore 1 |
Rotazione motore 2 |
Stato del robot |
1 |
0 |
1 |
0 |
inoltrare |
inoltrare |
Andando avanti |
0 |
1 |
0 |
1 |
inversione |
inversione |
Andando indietro |
1 |
0 |
0 |
1 |
inoltrare |
inversione |
Andando a destra |
0 |
1 |
1 |
0 |
inversione |
inoltrare |
Spostarsi a sinistra |
0 |
0 |
0 |
0 |
fermato |
fermato |
fermato |
Questo è che puoi ruotare l'auto del robot in qualsiasi direzione controllando i quattro motori usando il microcontrollore 8051. Questo robot può anche essere controllato utilizzando DTMF con 8051, se non si dispone di un telefono Android.
Controlla anche tutti i progetti di robotica qui.