Robot esquiva obstáculos con Arduino

De Jose Castillo Aliaga
Ir a la navegación Ir a la búsqueda

En este artículo vamos a construir un robot muy específico con Arduino, un robot que esquiva obstáculos y consigue salir de un laberinto.

En Internet encontrarás muchos tutoriales, la mayoría utiliza diferentes drivers para los motores. Muchos tienen un sólo sensor ultrasónico que se mueve con una torreta hecha con un servo. Elijas el que elijas, fíjate en que el código es distinto. El robot que describe este artículo tiene el Arduino Motor Shield Rev3 y 3 sensores ultrasónicos.

Construcción del Robot

Materiales

El chasis que verás en las fotos es específico, creado a medida por la empresa What's Next? para el proyecto [Robots Boost Skills]. El resto de componentes son genéricos y se pueden comprar Arduinos oficiales, What's Next Yellow o cualquier clon compatible.

Esta es la lista de materiales:

  • Chasis que permita 2 ruedas con motor DC analógicos y una rueda delantera.
  • 2 Motores DC analógicos con reducción y ruedas.
  • Arduino Uno o equivalente.
  • 3 Sensores ultrasónicos HR-SC04
  • Arduino Motor Shield o alguno que tenga el mismo Chip L298
  • Baterías, entre 9V y 12V

Fotos

Construcción del Chasis

En el caso del robot del ejemplo, el chasis tiene todos los elementos necesarios. Si lo tienes que construir, aquí tienes algunos consejos:

  • Se recomienda cuidar el centro de gravedad de robot. Por ejemplo, las baterías deberían estar entre las ruedas motrices y la rueda delantera.
  • Los sensores deberían estar situados de forma que se cubra el mismo ángulo por los dos lados. En nuestro caso, al haber 3 sensores, se han puesto uno en el centro hacia adelante y los otros en un ángulo de 45º.
  • Hay que dejar espacio para los cables y para poder modificar las conexiones sin necesidad de desmontar todo el robot.

Cableado

Hay que tenen en cuenta que el Arduino Motor Shield utiliza algunos pines para su funcionamiento:

Function 	A 	 B
Direction 	D12 	D13
PWM 	        D3 	D11
Brake 	        D9 	D8
Curr. Sensor 	A0 	A1

Por tanto, no podemos utilizar esos pines. Cada sensor necesita 2 pines digitales para el echo i el trig. Así que necesitamos ocupar 6 pines digitales, más los 6 para los motores. Para los sensores utilitzaremos los pines 2,4,5,6,7,10.

Este es el esquema de cables del robot:

Alimentaremos tanto al Arduino como al Shield por la entrada del shield. Este alimenta al arduino por el pin VIN. Como el voltaje va a ser moderado, no es necesario aislar el Arduino del shield. Si los motores necesitaran más de 9V hay que cortar el pin VIN y alimentar por separado el Arduino.