- Componentes necessários:
- Diagrama de circuito:
- Microcontrolador 8051:
- Módulo Bluetooth HC-05:
- IC do driver do motor L293D:
- Funcionamento do robô controlado por telefone Android:
- Explicação do código:
Neste projeto, vamos construir um robô controlado por telefone Android usando microcontroladores 8051 e módulo Bluetooth. O robô é projetado usando motores DC e a direção dos motores DC será controlada pelos comandos recebidos do aplicativo Android. O status do robô é enviado de volta ao aplicativo Android. Este projeto também ajudará na interface do módulo HC-05 Bluetooth com microcontroladores 8051. Já usamos o módulo Bluetooth para controlar eletrodomésticos com 8051.
Componentes necessários:
- Microcontrolador 8051 (AT89S52)
- Módulo de Bluetooth HC-05
- Motorista L293D
- Chassis de robô
- Motores DC (2)
- Rodas (2)
- Roda giratória
- Fios de ligação
- Aplicativo para Android do terminal Bluetooth
Diagrama de circuito:
Microcontrolador 8051:
O microcontrolador 8051 é um microcontrolador de 8 bits que possui 128 bytes de RAM no chip, 4K bytes de ROM no chip, dois temporizadores, uma porta serial e quatro portas de 8 bits. O microcontrolador 8052 é uma extensão do microcontrolador 8051. Neste projeto estamos usando o microcontrolador AT89S52. A tabela abaixo mostra a comparação de 8051 membros da família.
Característica |
8051 |
8052 |
ROM (em bytes) |
4K |
8K |
RAM (bytes) |
128 |
256 |
Cronômetros |
2 |
3 |
Pinos de I / O |
32 |
32 |
Porta serial |
1 |
1 |
Fontes de interrupção |
6 |
8 |
Módulo Bluetooth HC-05:
HC-05 é um módulo Bluetooth serial. Ele pode ser configurado usando comandos AT. Pode funcionar em três configurações diferentes (Master, Slave, Loop back). Em nosso projeto iremos usá-lo como um escravo. Os recursos do módulo HC-05 incluem,
- Sensibilidade típica de -80dBm.
- Taxa de baud padrão: 9600bps, 8 bits de dados, 1 bit de parada, sem paridade.
- Código PIN de emparelhamento automático: código PIN padrão “1234”
- Possui 6 pinos.
- Os pinos Vcc e Gnd são usados para alimentar o HC-05.
- Os pinos Tx e Rx são usados para comunicação com o microcontrolador.
- Habilite o pino para ativar o módulo HC-05. quando está baixo, o módulo está desabilitado
- O pino de estado atua como indicador de status. Quando não está emparelhado / conectado a nenhum outro dispositivo Bluetooth, o LED pisca continuamente. Quando está conectado / emparelhado com qualquer outro dispositivo Bluetooth, o LED pisca com um atraso constante de 2 segundos.
IC do driver do motor L293D:
L293D é um driver de motor H-bridge duplo IC. Este atua como um amplificador de corrente, a saída do L293D aciona os motores DC. Ele contém dois circuitos de ponte H embutidos. No modo comum de operação, ele pode acionar dois motores CC simultaneamente em ambas as direções. A tabela abaixo mostra a descrição do pino do L293D IC. Aqui estão alguns projetos usando o driver de motor L293D.
Descrição do pino
Pin No. |
Nome |
Função |
1 |
Habilitar 1,2 |
Habilitar pino para motor 1 |
2 |
Entrada 1 |
Entrada 1 para motor 1 |
3 |
Produto 1 |
Saída 1 para motor 1 |
4 |
Gnd |
Terra (0V) |
5 |
Gnd |
Terra (0V) |
6 |
Produto 2 |
Saída 2 para motor 1 |
7 |
Entrada 2 |
Entrada 2 para motor 1 |
8 |
Vcc 2 |
Tensão de alimentação para motores (5V) |
9 |
Habilite 3,4 |
Habilitar pino para motor 1 |
10 |
Entrada 3 |
Entrada 1 para motor 2 |
11 |
Produto 4 |
Saída 1 para motor 2 |
12 |
Gnd |
Terra (0V) |
13 |
Gnd |
Terra (0V) |
14 |
Produto 4 |
Saída 2 para motor 2 |
15 |
Entrada 4 |
Entrada 2 para motor 2 |
16 |
Vcc 1 |
Tensão de alimentação (5V) |
Funcionamento do robô controlado por telefone Android:
Neste robô controlado por Smart Phone, o usuário do app android envia os dados para o microcontrolador 8051 através do módulo HC-05. Os dados recebidos são comparados no microcontrolador 8051 e a decisão é tomada em conformidade. A tabela abaixo mostra a direção dos motores e o status do robô para os diferentes caracteres recebidos.
Personagem recebido |
Motor 1 |
Motor 2 |
Status do robô |
f |
frente |
frente |
Avança |
b |
Para trás |
Para trás |
Se move para trás |
r |
frente |
Para trás |
Se move para a direita |
eu |
Para trás |
frente |
Move-se para a esquerda |
s |
Fora |
Fora |
Parado |
O aplicativo de terminal Bluetooth nos permite emular um terminal Bluetooth. Este aplicativo oferece suporte à comunicação bidirecional e é compatível com a maioria dos dispositivos.
As etapas abaixo mostram como instalar e usar este aplicativo.
1. Baixe e instale o aplicativo de terminal Bluetooth em seu telefone Android. O aplicativo pode ser baixado do link abaixo.
play.google.com/store/apps/details?id=ptah.apps.bluetoothterminal
2. Depois de instalar o aplicativo, abra o aplicativo e ligue o Bluetooth.
3. Selecione o dispositivo e clique na opção de conexão. Após a conexão bem-sucedida, podemos começar a enviar dados para o módulo HC-05.
Verifique a explicação do código abaixo para ver como o caractere é enviado e recebido pelo microcontrolador 8051 para girar os motores necessários.
Explicação do código:
O programa C completo e o vídeo de demonstração para este projeto são fornecidos no final deste projeto. O código é dividido em pequenos pedaços significativos e explicado a seguir.
Para a interface do L293D com microcontroladores 8051, temos que definir os pinos nos quais o L293D está conectado ao microcontrolador 8051. O pino In1 do motor 1 está conectado a P2.0, o pino In2 do motor 1 está conectado a P2.1, o pino In1 do motor 2 está conectado a P2.2, o pino In2 do motor 2 é conectado a P2.3
sbit m1f = P2 ^ 0; // pino 1 do motor1 sbit m1b = P2 ^ 1; // pino in2 do motor1 sbit m2f = P2 ^ 2; // pino 1 do motor 2 sbit m2b = P2 ^ 3; // pino 2 do motor 2
Em seguida, temos que definir algumas funções que são usadas no programa. A função de atraso é usada para criar um atraso de tempo especificado. A função Txdata é usada para transmitir dados através da porta serial. A função Rxdata é usada para receber dados da porta serial.
void delay (unsigned int); // função para criar atraso char rxdata (void); // função para receber um caractere através da porta serial de 8051 void txdata (unsigned char); // função para enviar um caractere pela porta serial de 8051
Nesta parte do código vamos configurar o microcontrolador 8051 para comunicação serial. O registro TMOD é carregado com 0x20 para o temporizador 1, modo 2 (recarregamento automático). O registro SCON é carregado com 0x50 para 8 bits de dados, 1 bit de parada e recepção habilitada. O registro TH1 é carregado com 0xfd para uma taxa de transmissão de 9600 bits por segundo. TR1 = 1 é usado para iniciar o cronômetro.
TMOD = 0x20; SCON = 0x50; TH1 = 0xfd; TR1 = 1; Nesta parte do código, o caractere retornado da função rxdata é armazenado na variável 's' para uso posterior.
s = rxdata (); // receber dados seriais do módulo hc-05 bluetooth
Nesta parte do código, temos que comparar o caractere recebido com caracteres pré-atribuídos para diferentes direções. Se o caractere recebido for 'f', o robô deve se mover para frente. Isso é feito tornando os pinos m1f, m2f altos e m1b, m2b baixos. Feito isso, temos que enviar o status do robô para o aplicativo Android. Isso é feito com a ajuda da função txdata . O mesmo processo é repetido para diferentes caracteres recebidos e a decisão é tomada em conformidade. A Tabela 1 mostra diferentes valores de m1f, m1b, m2f, m2b para diferentes direções de movimento do robô.
if (s == 'f') // move ambos os motores na direção para frente {m1f = 1; atraso (1); m1b = 0; atraso (1); m2f = 1; atraso (1); m2b = 0; atraso (1); for (i = 0; msg1! = '\ 0'; i ++) // enviar status do robô para o aplicativo Android através do bluetooth {txdata (msg1); }}
m1f |
m1b |
m2f |
m2b |
Rotação do motor 1 |
Rotação do motor 2 |
Status do robô |
1 |
0 |
1 |
0 |
frente |
frente |
Seguindo em frente |
0 |
1 |
0 |
1 |
reverter |
reverter |
Movendo-se para trás |
1 |
0 |
0 |
1 |
frente |
reverter |
Movendo para a direita |
0 |
1 |
1 |
0 |
reverter |
frente |
Movendo para a esquerda |
0 |
0 |
0 |
0 |
parado |
parado |
parado |
Você pode girar o carro do robô em qualquer direção, controlando os quatro motores usando o microcontrolador 8051. Este robô também pode ser controlado usando DTMF com 8051, se você não tiver um telefone Android.
Verifique também todos os Projetos de Robótica aqui.