ROBOT INTELIGENTE CONTROLADO POR BLUETOOTH
Ahora voy a exponer como migrar este mismo proyecto para que sea controlado por Bluetooth.
Se va a requerir descargar e instalar desde Play Store, la App "Serial Bluetooth Terminal" (la llamaré SBT en adelante) en un SmartPhone y declarar los botones como a continuación se indica, todo en modo texto:
M1 con 0
M2 con 1
M3 con 2
M4 con 3
M5 con 4
M6 queda libre para un entusiasta que desee programar algo mas.
Al robot se le incorpora una tarjeta "SP32 DEV MODULE", a la cual se le envía el programa desde el IDE de Arduino "arana1.ino", el cual controlará un Driver H tipo L293D, un buzzer y recibirá vía bluetooth los comandos del 0 al 4
que se interpretarán de la siguiente manera:
COMANDO FUNCION
0 Girar a la Derecha
1 Girar a la Izquierda
2 Detenerse completamente
3 Avanzar
4 Retroceder
Cuando está en funcionamiento el robot, desde el SmartPhone y haciendo uso de SBT se hacen las siguientes acciones:
1.- Encender el Bluetooth del SmartPhone
2.- En ajustes del SmartPhone, emparejar el robot, cuyo nombre es ESP32-CAR
3.- En SBT oprimir el ícono de Menú y elegir ESP32-CAR
4.- Esperar a que se conecte SBT con ESP32-CAR (es inmediato)
5.- Comenzar a enviar los comandos con M1 a M4
El robot tiene "vida propia", es decir se desplaza hacia adelante y cuando choca con un obstáculo, sus "antenas" detectan ese evento, enviando un nivel bajo a los pines GPIO34 y GPIO35 que son Entradas en el ESP32. Esto hará que el robot haga la siguiente secuencia de movimientos:
1.- Se detiene
2.- Manda un beep
3.- Retrocede
4.- Gira en el sentido contrario a la antena que detectó el obstáculo
5.- Avanza
En cualquier momento se puede interactuar con el robot para darle las instrucciones que el operario desee, pues el canal bluetoot está siempre disponible.
En caso de que el robot entre en un "callejón sin salida", está programado para que cada 13 segundos aproximandamente haga una secuencia similar a la detección de un obstáculo, aunque no haya evento de choque con antena. Esto se hace para sacar el robot de dicho callejón. Esta función es controlada por uno de los Timers del propio ESP32 debidamente programado en el propio software "arana1.ino"
El operario puede detener la marcha del robot con M2, y así se queda indefinidamente. Incluso el Timer no tiene efecto en este estado. Sólo el operario puede sacar al robot del estado detenido, ya sea aplicando alguna otra tecla diferente de M2 o bien activando físicamente cualquiera de las dos antenas.
Para montar el ESP32, se usan las mismas 2 pilas de 3.6VCD para dar 7.2VCD, pero ahora es conveniente usar un regulador 7805 con encapsulado TO-220, pues la demanda de corriente es mayor que la usada por el PIC16F87A.
El L293D sigue alimentándose con los 7.2VCD de ambas pilas en serie.
Las salidas digitales del ESP32 que son de 3.3V a nivel alto, son capaces de activar correctamente las entradas del L293D.
Es conveniente usar un buzzer que emita su sonido al aplicarle su voltaje de activación, mediante un transistor NPN que es controlado por el pin 27 del ESP32 DEV MODULE.
Se proporciona un listado de pinouts del ESP32 DEV MODULe, el cual tiene 15 pines por lado para dar un total de 30. No confundir esos pines con los del microcontrolador ESP32-WROOM-32D que está montado en la tablilla ESP32 DEV MODULE. Solamente algunos de los pines del microcontrolador son cableadas en el ESP32 DEV MODULE.
Se recomienda estudiar la rutina de control del Timer, sobre todo para calcular los tiempos en que se desborda el registro del timer usado y la participación del pre-escalador propio del ESP32.
PROGRAMAS
México, 2021
No hay comentarios:
Publicar un comentario