Proyecto Carro
En este proyecto, desarrollaremos un carrito diseñado específicamente para recoger una pelota y funcionar como un vehículo de control remoto. Este enfoque combina elementos de mecánica, electrónica y programación para crear un sistema funcional e interactivo.
La base del sistema será una placa Arduino, que actuará como la unidad de control principal. Integraremos micromotores DC y motores DC para proporcionar movimiento al carrito, junto con un puente H que permitirá gestionar tanto la dirección como la velocidad. Además, utilizaremos servomotores para operar una garra mecánica encargada de recoger la pelota.
Como parte esencial del proyecto, desarrollaremos una aplicación personalizada con AppInventor, que permitirá controlar el carrito de manera remota desde un dispositivo móvil, replicando la experiencia de un carro a control remoto.
Este proyecto no solo busca resolver un desafío técnico, sino también explorar las oportunidades que ofrece la integración de tecnologías en proyectos educativos y aplicaciones prácticas en robótica.
Supplies
Componentes Electrónicos y Eléctricos
- Arduino Uno.
- 3 servomotores grandes.
- 2 motores DC.
- Puente H (L298N).
- Módulo Bluetooth HC-05 o HC-06.
- Protoboard.
- Fuente de alimentación para protoboard.
- Jumpers (cables de conexión).
- 3 pilas de 9V.
Materiales de Construcción
- Piezas impresas en 3D:
- Base del coche.
- Llantas.
- Estructura de la garra.
- Engranajes para la garra.
- Tornillos y tuercas.
- Ligas (para mejorar el agarre en las llantas).
Ensamble De La Estructura Física
Pasos para hacer el carro
- Diseña e imprime las piezas necesarias en 3D para la base del coche, las llantas y la garra.
- Ensambla las ruedas en la base del coche con los motores DC traseros.
- Fija la garra robótica en la parte superior de la base.
- Coloca los engranajes en la garra para permitir su apertura y cierre.
- Asegúrate de que los servomotores y motores estén bien ajustados en sus posiciones.
Notas sobre Diseño Mecánico
- Tapa Inferior Direccional:
- Esta pieza se encarga de mantener el motor a la altura adecuada para que el engranaje y la cremallera encajen correctamente.
- En la parte superior frontal del motor, se incorpora una perforación de 1 mm de profundidad para que el engranaje gire sin interrupción.
- Conexión entre las Llantas:
- Se colocan dos piezas conectadas por una viga, la cual ayuda a empujar la llanta contraria dependiendo del movimiento del motor.
- Estructura de las Llantas:
- Se diseñó un anillo en la parte media de la llanta que permite girar mientras permanece conectado con los transmisores direccionales.
- Colocación de los Motores Traseros:
- Los motores traseros se fijan en cubículos con perforaciones para atornillarlos posteriormente.
- Brazo de Conexión:
- El brazo se adapta en la parte frontal superior del coche con perforaciones de 4 mm para su ensamblaje.
Conexiones Electrónicas En Base Al Código
Conexión del Puente H (L298N):
- Motores DC:
- Conecta los terminales de un motor a OUT1 y OUT2 del puente H.
- Conecta los terminales del otro motor a OUT3 y OUT4.
- Alimentación del puente H:
- Conecta el pin VCC del puente H al positivo de una pila de 9V.
- Conecta el pin GND al negativo de la misma pila.
- Conecta el pin GND del puente H al GND del Arduino para unificar las tierras.
- Pines de Control:
- Conecta IN1 e IN2 del puente H a los pines 11 y 10 del Arduino (para el motor izquierdo).
- Conecta IN3 e IN4 del puente H a los pines 9 y 8 del Arduino (para el motor derecho).
Conexión De Los Servomotores
Pines del módulo Bluetooth:
- TX (transmisión): Al pin 12 del Arduino.
- RX (recepción): Al pin 13 del Arduino.
- VCC: Al pin de 5V del Arduino.
- GND: Al GND del Arduino.
Alimentación General
- Arduino:
- Conecta una pila de 9V al conector de alimentación del Arduino.
- Fuente de Alimentación:
- Conecta otra pila de 9V a la fuente de alimentación y ajusta la salida a 5V para alimentar los servos desde la protoboard.
- Verifica que todas las tierras (GND) estén conectadas entre el puente H, los servos, la fuente de alimentación y el Arduino.
Programación
- Copia el siguiente código en el IDE de Arduino y cárgalo al Arduino.
- Asegúrate de que los pines utilizados en el código coincidan con las conexiones físicas.
#include <SoftwareSerial.h> // Librería para comunicación Bluetooth
#include <Servo.h> // Librería para control de servomotores
// Pines del puente H para motores
#define IN1 11 // Motor DC 1
#define IN2 10
#define IN3 9 // Motor DC 2
#define IN4 8
// Configuración del módulo Bluetooth
int bluetoothTx = 13;
int bluetoothRx = 12;
SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);
// Instancias de los servos
Servo servo1;
Servo servo2;
Servo servo3;
void setup() {
// Configuración de los pines del puente H
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
digitalWrite(IN1, LOW); // Apagar motores inicialmente
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
// Configuración de los servos
servo1.attach(7);
servo2.attach(6);
servo3.attach(5);
// Inicialización de los servos en posición 90 grados
servo1.write(90);
servo2.write(90);
servo3.write(90);
// Configuración de comunicación serial
bluetooth.begin(9600);
}
void loop() {
if (bluetooth.available() > 0) {
char command = bluetooth.read(); // Leer comando del Bluetooth
// Control del motor DC 1 (ya existente)
if (command == 'X') { // Avanzar
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
} else if (command == 'Y') { // Retroceder
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
} else if (command == 'Z') { // Detener
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
}
// Control del motor DC 2 (nuevo motor como servo)
else if (command == 'P') { // Mover a "45°" (izquierda)
digitalWrite(IN3, HIGH); // Motor hacia adelante
digitalWrite(IN4, LOW);
delay(250); // Tiempo para moverse
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW); // Detener
} else if (command == 'R') { // Mover a "135°" (derecha)
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH); // Motor hacia atrás
delay(250); // Tiempo para moverse
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW); // Detener
}
// Control del servo 1
else if (command == 'A') {
servo1.write(0);
} else if (command == 'B') {
servo1.write(45);
} else if (command == 'C') {
servo1.write(90);
} else if (command == 'D') {
servo1.write(135);
} else if (command == 'E') {
servo1.write(180);
}
// Control del servo 2
else if (command == 'F') {
servo2.write(0);
} else if (command == 'G') {
servo2.write(45);
} else if (command == 'H') {
servo2.write(90);
} else if (command == 'I') {
servo2.write(135);
} else if (command == 'J') {
servo2.write(180);
}
// Control del servo 3
else if (command == 'K') {
servo3.write(0);
} else if (command == 'L') {
servo3.write(45);
} else if (command == 'M') {
servo3.write(90);
} else if (command == 'N') {
servo3.write(135);
} else if (command == 'O') {
servo3.write(180);
}
}
}
Creación De La App Bluetooth
- Usa MIT App Inventor:
- Crea una nueva app.
- Agrega un componente Bluetooth y conéctalo al dispositivo HC-05.
- Diseña la interfaz:
- Agrega botones con etiquetas para cada acción: avanzar, detenerse, mover servo, etc.
- Configura cada botón para que envíe una letra específica al Arduino, como 'A', 'B', 'X', etc.
- Ejemplo de Bloques:
- Cuando el botón de "Avanzar" sea presionado, envía la letra 'X'.
- Cuando el botón de "Detener" sea presionado, envía la letra 'Y'.
Pruebas Y Ajustes:
- Prueba de Movilidad: Verifica que el coche responda correctamente a los comandos para avanzar, retroceder, y girar.
- Prueba de la Garra: Asegúrate de que los servos realicen los movimientos esperados al enviar las letras correspondientes.
- Ajusta tiempos, conexiones y código si detectas algún problema.