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.