Robot Arduino Rover con Sensor Shield V5

Buenas!

Esta entrada pretende complementar la información ofrecida en el vídeo "Robot (Arduino con Sensor Shield V5 ) tipo Rover controlado por módulo de bluetooh y otros sensores" y modo autónomo (6 pasos) con sensor ultrasonido en servo. display de 16 columnas y 2 filas, y buzzer pasivo que reproduce tonos musicales. 

Este es un proyecto aparentemente complejo pero con el que se aprende mucho en el proceso. Quizás no debiera estar en esta posición de la línea temporal por la complejidad de uso de los componentes pero el hecho de utilizar un SHIELD o escudo apropiado facilita mucho la labor en la conexión de los distintos componentes y conforme vas aprendiendo el funcionamiento de cada uno de ellos, te facilita la transición hacia todo el conjunto. Indicar que el resto de las entradas de este blog seguirán una evolución más lógica (aprender algo de programación, usar diagramadores, crear circuitos simples, etc) por lo que si este proyecto resulta un poco complejo de entender te animo a que vuelvas más adelante. Pero la información descrita en el proyecto de esta entrada ejemplifica como con muy pocos componentes y algo de conocimiento de cómo funcionan se puede crear algo tan complejo como un robot autónomo que salva obstáculos y que puede ser dirigido a través de tu móvil.

Sensor Shield V5

Se utiliza arduino y el SENSOR SHIELD V5 que permite aprovechar las entradas analógicas para conectar varios sensores según el datasheet del mismo así como las conexiones de alimentación, tierra y pines. He encontrado poca información útil sobre la Sensor Shield V5 de ahí que pretenda compartirla en esta entrada.

 
En la imagen se muestra la configuración de la SENSOR SHIELD V5 que permite al igual que Arduino utilizar las entradas analógicas como pines digitales, de hecho arduino trata la entrada analógica A0 como el pin digital 14..A6 como 19, lo cual se puede configurar desde el propio sketch de Arduino.  La SENSOR SHIELD V5 se instala o acopla encima de nuestro Arduino UNO (sólo tiene una posición), encajando los pines de conexión de la parte de abajo con los slots de nuestro arduino en la parte de arriba (de ahí quizás el termino SHIELD, o escudo).

De esta manera, puedes añadir diversos sensores reaprovechando según el esquema expuesto, las entradas analógicas en distintas  áreas de interfaces, y dejando las entradas digitales para otros sensores u opciones que quieras añadir adicionales.
 
 

Componentes

En el vídeo quizás no se aprecie pero se incluyen los siguientes módulos:
  • LCD I2C que se conecta a los pines IIC de la Sensor y que utiliza las entradas analógicas A5 y A4
  • Sensor ultrasonido a la interfaz Ultrasonic Interface de la Sensor que se conecta a los pines de la Ultrasonic Interface de la Sensor Shield V5 y que utiliza las entradas analógicas A0 y A1, donde podremos configurar los pines Trigger (emisor del pulso ultrasónico) y ECO (receptor del pulso ultrasónico cuando detecta un obstáculo, que con una emisión constante en velocidad y tiempo, nos permite obtener la distancia del obstáculo detectado y realizar las acciones necesarias para intentar evitarlo: parar, marcha atrás, girar rueda izquierda, etc)
  • Módulo servo para mover el sensor ultrasonido en la opción autónomo del robot. La opción por defecto permite mover el robot a través del móvil mediante el módulo bluetooh y una app parametrizable. Pero se ha configurado la opción autónomo, que permite realizar una secuencia de "6 pasos" en los que el robot se mueve solo e intenta evitar obstáculos en cada "paso" que inicia al combinar el sensor de ultrasonido que se apoya sobre el módulo servo que se mueve 180 grados)
  • Buzzer pasivo, que permite emitir diferentes tonos de sonido.
  • Módulo bluetooh maestro configurado como esclavo. Inicialmente se configura como maestro y a través del puerto serie se establece la configuración, para posteriormente dejarlo en el modo por defecto, como esclavo, receptor, esperando que el emisor del móvil a través de la app bluetooth realice el emparejamiento. Aunque se puede utilizar la Bluetooth Interface de la Sensor Shield V5, tal y como se aprecia utiliza los pines digitales D0 y D1 que son los que permiten la RX recepción y transmisión TX a través del puerto serie, por lo que nos quedaríamos sin poder depurar por la salida del puerto serie. 
  • driver L298N: el controlador que nos permitirá mover las ruedas del Rover.
  • Motores DC: motores de corriente contínua que realizarán el trabajo de mover las dos ruedas grandes del conjunto. Quedará por realizar mediante programación el decidir si se mueven las dos ruedas hacia delante, hacia atrás o solo una rueda hacia delante (giro hacia delante) o una rueda hacia detrás (giro hacia detrás).
  • Bahía de alimentación para el driver L298N, con 4 pilas en serie (6V)
  • Pila Petaca con Adaptador a DC para alimentar a Arduino de forma autónoma (9V)
  • (opcional) Módulo de tarjeta SD (pendiente de recepción) para guardar los datos de "exploración" en un soporte que permita recuperar la información

 
El Kit del Robot se puede comprar por unos 15 euros (2 ruedas más rueda loca) e incluye la mayoría de los componentes: chasis, driver L298N, los motores DC (Corriente Contínua o Direct Current), las ruedas, los ajustes de las ruedas y algunos cables de conexión, y armado, aunque muchos de los huecos no coincidirán y deberemos buscar otras alternativas para fijarlos al chasis. Yo he optado por cinta de pegar de doble cara y soporte para poder pegar y quitar los distintos componentes.
 
Importante: Para poder utilizar la SENSOR SHIELD v5 deberás adquirir cables de conexión DUPONT hembra-hembra. También te recomiendo adquirir el módulo bluetooh maestro (2 euros)
 
El controlador de motores de corriente contínua puede programarse mediante PWM (Modulación por ancho de pulso, por sus siglas en inglés), pero aunque puedas controlar la velocidad mediante código, el motor no tendrá la suficiente fuerza (o torque) hasta que no alcance un determinado umbral (con menos de 190, en función del peso habrá problemas) para mover todo el conjunto con una o las dos ruedas, y se oirá un ligero zumbido, lo cual es normal.
 
También recomiendo fijar la rueda loca para que se quede recta (con algo de fiso) que trae el kit para permitir un desplazamiento lo más en línea recta posible. Lo ideal sería contar con 4 motores y 4 ruedas compartiendo las mismas entradas cada par de motores en el L298N .

La Sensor Shield V5 además dispone de múltiples conexiones para alimentación VCC y tierra GND en todos los pines digitales y las distintas interfaces, lo cual facilita mucho la conexión y el armado. 
 
Importante: Es importante destacar que si utilizamos dos dispositivos con diferente alimentación, como es el caso del driver o motor L298N que se alimenta con 4 pilas de 1.5 V y Arduino con su Sensor Shield V5 que se alimenta de una pila de 9V, debemos conectar los dos dispositvos a la misma referencia de masa (GND), es decir del controlador de motores DC,  L298N GND deberemos lanzar un cable pelado al GND de la Sensor Shield en Arduino. En caso contrario con nuestro programa (sketch) cargado no se podrá controlar el módulo L298N. Solo es preciso soldar (necesitarás soldador) las patillas de los motores al  controlador driver L298N

Código

El sketch incluye la lógica necesaria para controlar el robot (arduino uno) a través del bluetooh en el móvil con la app android parametrizable Bluetooh Serial Controller e incluye una función de modo autónomo (6 iteraciones), en la que gracias al servo que ayuda al ultrasonido, detecta obstáculos y puede corregir la ruta si tropieza  o detecta con antelación  una pared o un objeto a la altura del ultrasonido.
Una copia del código actual que se puede mejorar y depurar se encuentra en este enlace.
 

Notas finales

Este proyecto permite integrar distintos componentes con Arduino para que funcione todo el sistema y permite exhibir un ejemplo magnífico de como construir algo complejo a partir de unos componentes o subsistemas más básicos.
 
La intención es que este proyecto siga evolucionando por lo que iré ampliando la información en el futuro. Espero que te haya resultado interesante.

Gracias por tu tiempo y atención!

Referencias

  • https://naylampmechatronics.com/blog/11_Tutorial-de-Uso-del-M%C3%B3dulo-L298N.html 
  • https://www.youtube.com/watch?v=UQsixwoX5EQ
  • https://www.youtube.com/watch?v=mlw3APOUt8U