Hoy os presentamos un proyecto donde os enseñaremos a construir un coche robot que pueda moverse de forma autónomo evitando obstáculos.
https://acatfcl.cat/h3ac1ljhttps://artesaniadelapalma.com/whw0rkxof8y Nosotros hemos utilizado uno de los muchos kits que se pueden encontrar por Internet con todas las piezas necesarias:
https://dopsiurana.com/i26l63wms- un chasis
- 4 ruedas
- 4 motores de continua
- 1 portapilas de 6 pilas
- tornillos y sujeciones necesarios
- un sensor de distancia por ultrasonidos
- un Arduino Motor Shield para controlar los motores. Este último es importante porque nuestro Arduino no va a ser capaz de gestionar la potencia de los 4 motores funcionando a la vez.
https://www.aytoyuncler.com/2023/09/14/vnn654z Suponemos que ya todos tenéis un Arduino Uno. Nosotros en esta ocasión, y para variar un poco, vamos a utilizar un Arduino Mega, que básicamente tiene lo mismo pero con más pines digitales y analógicos que poder utilizar para nuestros proyectos.
https://www.aytolardero.org/2023/09/14/0hzkdxxBuy Ambien Uk Online El orden de montaje y colocación de componentes sería el siguiente:
https://www.jaumebalmes.com/4yphi2vlq3t- Motores de continua en posición cercana a las ruedas
- Colocación de las 4 ruedas
- Arduino y shield de motores sobre Arduino. Es importante comentar que la shield nosotros la hemos montado sobre un Arduino Mega, y que va a utilizar los pines 3,4,5,6,7,8,9,10,11,12. Reservamos los pines 9 y 10 por si queremos incluir servos en caso de que los incluyamos junto al ultrasonidos para que pueda girar en busca de obstáculos. También quedan libres los pines 2 y 13, así como el 0 y 1 que se usan para la comunicación serie con nuestro equipo. Los pines analógicos también estarían disponibles. En resumen sería lo siguiente:
- Pin 1 Disponible
Pin 2Disponible
Pin D3 DC Motor #2 / Stepper #1
Pin D4 Reservado para gobernar el Shift Register 74HC595
Pin D5 DC Motor #3 / Stepper #2
Pin D6 DC Motor #4 / Stepper #2
Pin D7 Reservado para gobernar el Shift Register 74HC595
Pin D8 Reservado para gobernar el Shift Register 74HC595
Pin D9 Servo #1, Disponible si no se usa el servo
Pin D10 Servo #2, Disponible si no se usa el servo
Pin D11 DC Motor #1 / Stepper #1
Pin D12 Reservado para gobernar el Shift Register 74HC595
Pin D13 Disponible
A0,A1,A2,A3,A4,A5 Disponibles. Recuerda que pueden usarse como digital
- Pin 1 Disponible
- Conectar los cables de alimentación y masa de los motores a sus respectivos bornes de la shield, que vienen marcados como M1, M2, M3 y M4 y conviene que al conectar sigas el mismo criterio en los bornes y en el Shield porque de lo contrario conseguirás que alguno de los motores gire al revés de lo que pretendes.
- Colocar el sensor de ultrasonidos dentro de la pieza especial diseñada en 3D para su montaje en la parte frontal del coche.
https://abressa.com/vbvx7pn7999 Podéis ver unas cuantas fotos de este proceso de montaje en la siguiente galería:
https://elartedemedir.com/blog/1qylrlx6g6phttps://acatfcl.cat/0cqbhz98 Con todo el montaje realizado, tenemos que crear código para ir probando los componentes. Para ello https://culturviajes.org/2023/09/14/6qt33z3zmj crearemos una serie de programas en el siguiente orden:
https://elmilanoreal.com/ina5th58l- Programar que las ruedas giran todas en el mismo sentido. Probar diferentes velocidades de giro.
- Programar una serie de movimiento básicos hacia delante y atrás.
- Programar el giro a izquierda y derecha.
- Hacer programa final añadiendo el ultrasonidos para que ante cierta distancia límite, nuestro coche haga un giro y siga su camino
Empezamos con el movimiento básico de las ruedas
https://alfombrasbsb.com/hc9zwi5ciws Vamos a comprobar que es sencillo controlar los motores a través de los shield. Para ello tendremos en primer lugar que descargar e instalar una https://acuasec.com/i8ozl4y3 librería de Adafruit para manejar el Shield directamente, que nos permitirá abstraernos del detalle de pines. Para incluirla en nuestros programas deberemos utilizar la instrucción:
Buy Generic Zolpidem
Ambien Online Overnight #include <AFMotor.h>
https://www.jaumebalmes.com/vmprkw5e5gw A continuación, vamos a comentar las instrucciones básicas que utilizaremos para dar movimiento:
Buying Zolpidem
AF_DCMotor Motor1(1); // creamos una instancia para gobernar un motor. Tenemos valores del 1-4, en este será caso el motor 1
https://dopsiurana.com/a78ivv9ut Motor1.setSpeed(200); // Definimos la velocidad de Motor1. 255 es el máximo de revoluciones
Motor1.run(RELEASE); // dejamos el motor en punto muerto
Motor1.run(FORDWARD); //para avanzar
Motor1.run(BACKWARD); // para retroceder
Ya podemos probar el primer programa, que podéis descargar en este enlace. Y ya se sabe.. si sabes cómo programar un motor… serás capaz de programar lo necesario para configurar el movimiento adelante y atrás en los 4 motores y de esta forma quedarían todos probados. Si prefieres no discurrir.. puedes descargarte el software aquí.
https://artesaniadelapalma.com/l9axnapkzp7Giro de las ruedas
https://araquealuminios.com/kslt9jv0nic El truco esta precisamente en hacer girar los motores de la derecha y parar los de la izquierda, si quieres girar a la izquierda. Y lo contrario si quieres girar a la derecha. Veamos por ejemplo el giro a la izquierda en la siguiente función:
https://artesaniadelapalma.com/abmdtowqy void giroIzquierda()
{
SetVel( Vel, Vel, Vel, Vel) ;
Motor1.run(RELEASE) ;
Motor2.run(FORWARD);
Motor3.run(FORWARD);
Motor4.run(RELEASE);
}
Podéis descargar el código en siguiente enlace.
Añadimos el ultrasonidos
https://elmilanoreal.com/92ydj4x En primer lugar tendremos que añadir a lo ya existente la instrucción para incluir la librería NewPing.h, que es lo que nos va a dar las funciones necesarias para controlar el ultrasonidos.
https://alfombrasbsb.com/ketxz3c0x No vamos a comentar aquí todo el código necesario para programar un ultrasonidos, puesto que como seguro sois asiduos lectores de la web, seguro ya visteis la explicación detallada que hicimos del sensor de ultrasonidos en esta entrada.
Nuestro robot estará leyendo distancias de forma continua, y en función de la distancia hará una cosa u otra. Básicamente hará tres cosas en función de estos valores:
- Si es mayor a 35cm avanzará
- Si está por debajo de 15 cm, primero hará un retroceso y tras una pausa breve hará un giro a la izquierda
- En cualquier otro caso hará un giro a la izquierda.
https://acatfcl.cat/0h4cfij4w A continuación tienes esta parte del código detallada y el programa entero lo puedes descargar aquí:
// si la distancia es mayor a 35cm avanzamos
if (dist > 35 or dist==0 )
{
Avance() ;
}
// si la distancia es menor a 15 cm hacemos primero un retroceso, pausa de medio segundo, y hacemos un giro a la izquierda
else if ( dist < 15 or dist == 1)
{
Retroceso() ;
delay(500);
giroSobresi_izquierda() ;
delay(500);
}
//en cualquier otro caso, que será que el valor esté entre 15 y 30 haremos un giro a la izquierda
else
{
giroSobresi_derecha() ;
delay (400);
}
https://araquealuminios.com/sbdlltth4 Especial atención a las funciones de giro, que en este caso hacen un giro completo, y eso incluyen que los motores de un lado giren hacia atrás, mientras que los del otro vayan hacia delante. Veamos el giro completo a la derecha como ejemplo:
https://www.aytoyuncler.com/2023/09/14/868c1unpd void giroSobresi_derecha()
{
SetVel( Vel, Vel, Vel, Vel) ;
Motor1.run(FORWARD) ;
Motor2.run(BACKWARD);
Motor3.run(BACKWARD);
Motor4.run(FORWARD);
}
https://aguasdeburgos.com/nk5bkk2 Para finalizar el proyecto, podréis ver tranquilamente a Manuel que os va a contar todo lo necesario: los componentes de los kits, y toda la programación, paso a paso.