COCHE DE CARRERAS

(Esta es una foto provisional. Una vez finalizado el proyecto adjuntaremos la foto del coche de carreras original, que explicaremos cómo realizar paso por paso a continuación)


Descripción del proyecto:

La intención de nuestro proyecto es crear un coche de carreras de tipo todoterreno. Este deberá superar un circuito con obstáculos para competir contra otro coche con las mismas características.

Usaremos este blog para documentar el proceso, explicar diseño, construcción y programación del vehículo para que puedas ejecutar el mismo proyecto; adjuntaremos las piezas y materiales utilizados.

Las piezas de la estructura del coche que utilizaremos será hecha con impresoras 3D, diseñaremos las piezas a través de TinkerCad.  Se adjuntarán a medida que las vayamos elaborando.

Autores: (nombres, correos, foto, y año en el que se hace el proyecto)

  • Raúl Manzano y Claudia González.
    • Raúl: raulcillo01@gmail.com
    • Claudia: claukj2005@gmail.com

Año en el que se realiza el proyecto: (noviembre) curso de 2022-2023.


Material necesario:

motor    30c

MOTOR 1000K                                                                    ESL 30C

IMG_20210510_122836               ardino nano

4 RUEDAS                                                                              ARDUINO NANO *1

arduino-robot-car-joystick                                     Captura de pantalla 2021-06-13 a las 6.53.10

MANDO                                                                                  6 RODAMIENTOS 8*12*3’5

servos 360º              Stunning Bigery (1)

SERVO                                                                PIEZAS STL

NFR RADIO

Material comprado:

MOTOR 1000K
ESL 30C
4 RUEDAS
NFR RADIO
ARDUINO NANO 1
MANDO
6 RODAMIENTOS 8*12*3’5  MR128ZZ
SERVO

Material en 3D:

https://www.tinkercad.com/things/3Vrl9beTmSK -> Mediante este link adjunto podrás acceder al diseño de nuestro proyecto en curso, a medida que vamos avanzando en la elaboración y fabricación de sus piezas se irá actualizando, añadiendose una a una, las cuáles están postradas a continuación (TODAS LAS PIEZAS DE LAS IMÁGENES DISPONIBLES EN EL LINK).

Stunning Bigery (1)IMG_20230201_113410

IMG_20230201_113455              IMG_20230203_092920


Diagrama del circuito:

La prueba que hemos acordado, conjuntamente con el otro equipo que va a realizar el proyecto de un coche de carreras, es una prueba de obstáculos con tiempo limitado.

En esta prueba los coches saldrán al mismo tiempo, desde la misma altura y en la misma dirección.

Deberán seguir dos recorridos paralelos, que serán iguales para que estén en igualdad de condiciones. Deben superar una serie de obstáculos lo más rápido posible para ganar al contrincante.

Los dos coches dispondrán del mismo tiempo para completar el circuito realizado, será limitado y acordado por los dos equipos en el momento de la creación del recorrido.

Aquel coche que exceda el tiempo acordado para completar la carrera, quedará automáticamente descalificado. Ganará su contrincante y sus correspondientes creadores.

El coche que consiga alcanzar en primer lugar la meta del circuito, ganará. Siempre y cuando no sobrepase el tiempo acordado.

Código:

EL CÓDIGO DEL RECEPTOR:

// Librerías
#include <RF24.h> // Driver de Radio – Módulos nRF24L01+
#include <Servo.h>

// definimos el servo dirección
#define PIN_VELO 2
#define PIN_DIRE 3
#define RECTO 80
#define MAXDER 115
#define MINIZQ 45

// Pines RF24L01
#define PIN_CE 9
#define PIN_CSN 10

int velo, dire;

const byte direccion[5] =  {‘c’, ‘a’, ‘n’, ‘a’, ‘1’};
RF24 radio(PIN_CE, PIN_CSN);

int datos[2];

Servo velocidad, direc;

// Configuración
void setup() {
  velocidad.attach(PIN_VELO, 1000, 2000);
  velocidad.writeMicroseconds(900); // send “stop” signal to ESC.
  delay(4000);

  direc.attach(PIN_DIRE);
  direc.write(RECTO);

  // Configuración Consola – Depuración
  Serial.begin(9600);

  // Inicializa Sistema RF sobre el bus SPI
  if (!radio.begin()) {
    Serial.println(F(«¡¡¡El Hardware de Radio no responde!!!»));
    while (1) {
    } // Bucle infinito
  }

  // Modo Lectura > Pipe 1 + Dirección
  radio.openReadingPipe(1, direccion);

  // Serial.println(«escuchando»);
  // Sistema RF en Recepción – RX Mode
  radio.startListening();
}

void loop() {
  // Enlace TX / RX
  boolean radioOK = radio.available();
  delay(100);
  //Serial.println(«escuchando»);
  // Datos Recibidos > Sistema RF
  if (radioOK) {
    // Leer Datos > Estructura
    radio.read(datos, sizeof(datos));
    velo = datos[0];
    dire = datos[1];
    // Depuración – Datos recibidos

    Serial.print(F(«V: «));
    Serial.print(velo);
    Serial.print(F(» – D:»));
    Serial.print(dire);
    Serial.println();

    if (dire >= MINIZQ && dire <= MAXDER) {
      direc.write(dire);
    }
    if (velo >= 0 && velo <= 180) {
      velocidad.write(velo);

    }
  }
}

EL CÓDIGO DEL EMISOR ES:

#include <nRF24L01.h>
#include <RF24.h>
#include <SPI.h>

#define CE_PIN 9
#define CSN_PIN 10

int x_axis = A0;
int y_axis = A1;
int velo, dire;

const byte direccion[5] = {‘c’, ‘a’, ‘n’, ‘a’, ‘1’};
RF24 radio(CE_PIN, CSN_PIN);

int datos[2];

void setup() {
Serial.begin(9600);
radio.begin();
radio.openWritingPipe(direccion);
}

void loop() {
velo = analogRead(y_axis);
dire = analogRead(x_axis);
velo = map (velo, 510, 1015, 0, 180);
dire = map (dire, 0, 1024, 45, 115);
if (velo < 0)
velo = 0;
else if (velo > 180)
velo = 180;

//Para comprobaciones, luego comentar
Serial.print(«Velocidad : «);
Serial.print(velo);
Serial.print(» Dirección = «);
Serial.println(dire);

datos[0] = velo;
datos[1] = dire;

bool ok = radio.write(datos, sizeof(datos));
// mostramos por el puerto serial los datos enviados
// luego lo comentaremos no será necesario
if (ok) {
Serial.print(«Datos enviados: X=»);
Serial.print(datos[0]);
Serial.print(» , Y= «);
Serial.print(datos[1]);
}
else {
Serial.println(«no se ha podido enviar y entregar»);
}
delay(100);
}