- Componentes requeridos:
- Diagrama de circuito:
- Microcontrolador 8051:
- Módulo Bluetooth HC-05:
- Controlador de motor L293D IC:
- Funcionamiento del robot controlado por teléfono Android:
- Explicación del código:
En este proyecto, vamos a construir un robot controlado por un teléfono Android usando microcontroladores 8051 y un módulo Bluetooth. El robot está diseñado con motores de CC y la dirección de los motores de CC será controlada por los comandos recibidos de la aplicación de Android. El estado del robot se envía de vuelta a la aplicación de Android. Este proyecto también ayudará a la interfaz del módulo Bluetooth HC-05 con microcontroladores 8051. Ya usamos el módulo Bluetooth para controlar electrodomésticos con 8051.
Componentes requeridos:
- Microcontrolador 8051 (AT89S52)
- Módulo Bluetooth HC-05
- Controlador de motor L293D
- Chasis de robot
- Motores DC (2)
- Ruedas (2)
- Rueda giratoria
- Cables de puente
- Aplicación de Android terminal Bluetooth
Diagrama de circuito:
Microcontrolador 8051:
El microcontrolador 8051 es un microcontrolador de 8 bits que tiene 128 bytes de RAM en el chip, 4K bytes de ROM en el chip, dos temporizadores, un puerto serie y cuatro puertos de 8 bits. El microcontrolador 8052 es una extensión del microcontrolador 8051. En este proyecto estamos usando el microcontrolador AT89S52. La siguiente tabla muestra la comparación de 8051 miembros de la familia.
Característica |
8051 |
8052 |
ROM (en bytes) |
4K |
8K |
RAM (bytes) |
128 |
256 |
Temporizadores |
2 |
3 |
Pines de E / S |
32 |
32 |
Puerto serial |
1 |
1 |
Fuentes de interrupción |
6 |
8 |
Módulo Bluetooth HC-05:
HC-05 es un módulo Bluetooth en serie. Se puede configurar mediante comandos AT. Puede funcionar en tres configuraciones diferentes (Master, Slave, Loop back). En nuestro proyecto lo usaremos como esclavo. Las características del módulo HC-05 incluyen,
- Sensibilidad típica de -80dBm.
- Tasa de baudios predeterminada: 9600bps, 8 bits de datos, 1 bit de parada, sin paridad.
- Código PIN de emparejamiento automático: código PIN predeterminado "1234"
- Tiene 6 pines.
- Los pines Vcc y Gnd se utilizan para alimentar el HC-05.
- Los pines Tx y Rx se utilizan para comunicarse con el microcontrolador.
- Habilitar pin para activar el módulo HC-05. cuando está bajo, el módulo está deshabilitado
- Estado pin actúa indicador de estado. Cuando no está emparejado / conectado con ningún otro dispositivo Bluetooth, el LED parpadea continuamente. Cuando está conectado / emparejado con cualquier otro dispositivo Bluetooth, el LED parpadea con un retraso constante de 2 segundos.
Controlador de motor L293D IC:
L293D es un controlador de motor de puente H dual IC. Esto actúa como un amplificador de corriente, la salida de L293D impulsa los motores de CC. Contiene dos circuitos de puente en H incorporados. En el modo de funcionamiento común, puede impulsar dos motores de CC simultáneamente en ambas direcciones. La siguiente tabla muestra la descripción de los pines del L293D IC. A continuación se muestran algunos proyectos que utilizan el controlador de motor L293D.
Pin Descripción
Pin No. |
Nombre |
Función |
1 |
Habilitar 1,2 |
Habilitar pin para motor 1 |
2 |
Entrada 1 |
Entrada 1 para motor 1 |
3 |
Salida 1 |
Salida 1 para motor 1 |
4 |
Gnd |
Tierra (0 V) |
5 |
Gnd |
Tierra (0 V) |
6 |
Salida 2 |
Salida 2 para motor 1 |
7 |
Entrada 2 |
Entrada 2 para motor 1 |
8 |
Vcc 2 |
Tensión de alimentación para motores (5V) |
9 |
Habilitar 3,4 |
Habilitar pin para motor 1 |
10 |
Entrada 3 |
Entrada 1 para motor 2 |
11 |
Salida 4 |
Salida 1 para motor 2 |
12 |
Gnd |
Tierra (0 V) |
13 |
Gnd |
Tierra (0 V) |
14 |
Salida 4 |
Salida 2 para motor 2 |
15 |
Entrada 4 |
Entrada 2 para motor 2 |
dieciséis |
Vcc 1 |
Voltaje de suministro (5 V) |
Funcionamiento del robot controlado por teléfono Android:
En este robot controlado por teléfono inteligente, el usuario de la aplicación de Android envía los datos al microcontrolador 8051 a través del módulo HC-05. Los datos recibidos se comparan en el microcontrolador 8051 y la decisión se toma en consecuencia. La siguiente tabla muestra la dirección de los motores y el estado del robot para los diferentes caracteres recibidos.
Personaje recibido |
Motor 1 |
Motor 2 |
Estado del robot |
F |
Adelante |
Adelante |
Se mueve hacia adelante |
segundo |
Hacia atrás |
Hacia atrás |
Se mueve hacia atrás |
r |
Adelante |
Hacia atrás |
Se mueve a la derecha |
l |
Hacia atrás |
Adelante |
Mueve a la izquierda |
s |
Apagado |
Apagado |
Detenido |
La aplicación del terminal Bluetooth nos permite emular un terminal Bluetooth. Esta aplicación es compatible con la comunicación bidireccional y esta aplicación es compatible con la mayoría de los dispositivos.
Los pasos a continuación muestran cómo instalar y usar esta aplicación.
1. Descargue e instale la aplicación de terminal Bluetooth en su teléfono Android. La aplicación se puede descargar desde el siguiente enlace.
play.google.com/store/apps/details?id=ptah.apps.bluetoothterminal
2. Después de instalar la aplicación, ábrala y encienda Bluetooth.
3. Seleccione el dispositivo y haga clic en la opción de conexión. Después de una conexión exitosa, podemos comenzar a enviar datos al módulo HC-05.
Consulte la Explicación del código a continuación para ver cómo el microcontrolador 8051 envía y recibe el carácter para rotar los motores requeridos.
Explicación del código:
El programa C completo y el video de demostración para este proyecto se encuentran al final de este proyecto. El código se divide en pequeños fragmentos significativos y se explica a continuación.
Para la interfaz de L293D con microcontroladores 8051, tenemos que definir pines en los que L293D está conectado al microcontrolador 8051. El pin In1 del motor 1 está conectado a P2.0, el pin In2 del motor 1 está conectado a P2.1, el pin In1 del motor 2 está conectado a P2.2, el pin In2 del motor 2 está conectado a P2.3
sbit m1f = P2 ^ 0; // pin in1 del motor1 sbit m1b = P2 ^ 1; // pin in2 del motor1 sbit m2f = P2 ^ 2; // pin in1 de motor2 sbit m2b = P2 ^ 3; // pin in2 del motor2
A continuación, tenemos que definir algunas funciones que se utilizan en el programa. La función de retardo se utiliza para crear un retardo de tiempo especificado. La función Txdata se utiliza para transmitir datos a través del puerto serie. La función Rxdata se utiliza para recibir datos del puerto serie.
demora nula (unsigned int); // función para crear delay char rxdata (void); // función para recibir un carácter a través del puerto serie de 8051 void txdata (unsigned char); // función para enviar un carácter a través del puerto serie 8051
En esta parte del código vamos a configurar el microcontrolador 8051 para comunicación serial. El registro TMOD se carga con 0x20 para el temporizador 1, modo 2 (recarga automática). El registro SCON se carga con 0x50 para 8 bits de datos, 1 bit de parada y recepción habilitada. El registro TH1 se carga con 0xfd para una tasa de baudios de 9600 bits por segundo. TR1 = 1 se utiliza para iniciar el temporizador.
TMOD = 0x20; SCON = 0x50; TH1 = 0xfd; TR1 = 1; En esta parte del código, el carácter devuelto de la función rxdata se almacena en la variable 's' para su uso posterior.
s = rxdata (); // recibe datos en serie del módulo bluetooth hc-05
En esta parte del código, tenemos que comparar el carácter recibido con caracteres preasignados para diferentes direcciones. Si el carácter recibido es 'f', entonces el robot debe moverse hacia adelante. Esto se logra haciendo pines m1f, m2f altos y pines m1b, m2b bajos. Una vez hecho esto, a continuación tenemos que enviar el estado del robot a la aplicación de Android. Esto se hace con la ayuda de la función txdata . El mismo proceso se repite para los diferentes caracteres recibidos y se toma la decisión en consecuencia. La Tabla 1 muestra diferentes valores de m1f, m1b, m2f, m2b para diferentes direcciones de movimiento del robot.
if (s == 'f') // mueve ambos motores en dirección de avance {m1f = 1; retraso (1); m1b = 0; retraso (1); m2f = 1; retraso (1); m2b = 0; retraso (1); for (i = 0; msg1! = '\ 0'; i ++) // envía el estado del robot a la aplicación de Android a través de bluetooth {txdata (msg1); }}
m1f |
m1b |
m2f |
m2b |
Rotación del motor 1 |
Rotación del motor 2 |
Estado del robot |
1 |
0 |
1 |
0 |
adelante |
adelante |
Avanzando |
0 |
1 |
0 |
1 |
contrarrestar |
contrarrestar |
Moviéndose hacia atrás |
1 |
0 |
0 |
1 |
adelante |
contrarrestar |
Moviéndose a la derecha |
0 |
1 |
1 |
0 |
contrarrestar |
adelante |
Moviéndose a la izquierda |
0 |
0 |
0 |
0 |
detenido |
detenido |
detenido |
Esto es, puede girar el coche Robot en cualquier dirección controlando los cuatro motores con el microcontrolador 8051. Este robot también se puede controlar usando DTMF con 8051, si no tiene un teléfono Android.
Consulte también todos los proyectos de robótica aquí.