
Carreras de carritos 1° A
- AGR
- Web , Programación
- 05 Jan, 2025
Índice
- Índice
- Explicación del Proyecto
- Desarrollo
- Electrónica
- Tabla de Conexiones
- Programación
- Diagrama de flujo de la programacion del carrito
- Recursos
Explicación del Proyecto
Materiales necesarios
# | Componente | Imagen | Link |
---|---|---|---|
1 | Arduino NANO | ![]() | link |
1 | Shield Compatible con Arduino UNO | ![]() | link |
1 | Servomotor MG90S Servomotor 180° con Engranes Metálicos | ![]() | link |
4 | Llanta para Motorreductor TT de 66x27mm | ![]() | link |
1 | L298N Módulo Driver Motor A pasos | ![]() | link |
1 | Bluetooth HC-05 Maestro Esclavo 6 pines | ![]() | link |
1 | Motorreductor Amarillo Para Carrito 48:1 | ![]() | link |
Herramientas
- 1 Destornillador
- 1 Pinza
- 1 Tijera
- 1 Cautín
- 1 Soldadura
- 1 Cableado
Desarrollo
Electrónica
Realiza el siguiente diagrama de conexión
El siguiente diagrama es opcional en caso de tener un arduino uno
Tabla de Conexiones
Componente | Pin Arduino Nano | Pin Componente |
---|---|---|
L298N IN1 | D7 | IN1 del controlador L298N |
L298N IN2 | D8 | IN2 del controlador L298N |
L298N Enable | D9 | ENA del controlador L298N |
Servo | D6 | Señal del servo |
HC-05 VCC | 5V | VCC del módulo HC-05 |
HC-05 GND | GND | GND del módulo HC-05 |
HC-05 TX | D10 | RX del Arduino Nano (usar divisor de voltaje si necesario) |
HC-05 RX | D11 | TX del Arduino Nano |
L298N VCC | 12V (fuente externa) | VCC del controlador L298N |
L298N GND | GND | GND del controlador L298N |
L298N OUT1 y OUT2 | Motores | Cables del motoreductor trasero |
Programación
#include <Servo.h>
#include <SoftwareSerial.h>
// Pines del L298N
const int motorIn1 = 7;
const int motorIn2 = 8;
const int motorEnable = 9;
// Servo
Servo steeringServo;
const int servoPin = 6;
// Comunicación Bluetooth con SoftwareSerial (pines 10: RX y 11: TX)
SoftwareSerial BTSerial(10, 11);
char command = 'S'; // Comando actual (S: Stop)
unsigned long lastCommandTime = 0;
const unsigned long timeout = 200; // Tiempo en ms sin recibir comando para detener el carrito
void setup() {
pinMode(motorIn1, OUTPUT);
pinMode(motorIn2, OUTPUT);
pinMode(motorEnable, OUTPUT);
steeringServo.attach(servoPin);
steeringServo.write(90); // Centra el servo
Serial.begin(9600); // Monitor serial para depuración
BTSerial.begin(9600); // Comunicación con HC-05
Serial.println("Carrito listo para recibir comandos:");
stopCar(); // Inicializa con el carrito detenido
}
void loop() {
// Procesa todos los comandos disponibles y actualiza el comando actual
while (BTSerial.available()) {
char inChar = BTSerial.read();
// Ignora caracteres de nueva línea o retorno de carro
if (inChar == '\n' || inChar == '\r') {
continue;
}
command = inChar;
lastCommandTime = millis(); // Actualiza el tiempo del último comando recibido
Serial.print("Comando recibido: ");
Serial.println(command);
}
// Ejecuta el comando actual
controlCar(command);
// Si no se recibe comando en 'timeout' ms, detiene el carrito
if (millis() - lastCommandTime > timeout) {
if (command != 'S') { // Solo actúa si no está ya detenido
command = 'S';
stopCar();
Serial.println("Timeout: Deteniendo carrito");
}
}
// Retardo breve para evitar saturación del loop
delay(10);
}
void controlCar(char cmd) {
switch (cmd) {
case 'F': // Avanzar
digitalWrite(motorIn1, HIGH);
digitalWrite(motorIn2, LOW);
analogWrite(motorEnable, 255);
// Retardo breve para dar estabilidad a la acción
delay(20);
break;
case 'B': // Retroceder
digitalWrite(motorIn1, LOW);
digitalWrite(motorIn2, HIGH);
analogWrite(motorEnable, 255);
delay(20);
break;
case 'L': // Girar a la izquierda
steeringServo.write(45);
break;
case 'R': // Girar a la derecha
steeringServo.write(135);
break;
case 'S': // Detenerse
stopCar();
break;
default:
Serial.println("Comando no reconocido");
break;
}
}
void stopCar() {
digitalWrite(motorIn1, LOW);
digitalWrite(motorIn2, LOW);
analogWrite(motorEnable, 0);
steeringServo.write(90); // Centra el servo
}
Comandos Bluetooth
- F: Avanzar.
- B: Retroceder.
- L: Girar a la izquierda.
- R: Girar a la derecha.
- S: Detener.
Diagrama de flujo de la programacion del carrito
Recursos
Videos
Video de ensamble de brazo robotico
Código
aqui el codigo
Enlaces
Enlaces a web Chareditor.
Enlaces a blog Instalacion de arduino.