INTRODUCCIÓN
En el siguiente blog enseñaremos paso a paso como hacer un carro robot con velocidad variable controlado desde nuestro celular a través del módulo bluetooth, creando una app en app inventor2, la cual realizaremos la construcción desde cero. A continuación, les mostraremos los pasos correspondientes:
MATERIALES
-
- Arduino UNO 0 1
- Modulo bluetooth (hc_06) 01
- Driver puente H (MODULO CON RELÉS) 01
- Llantas 04
- Motores 02
- Batería 12V 01
- Switch 02
- Led RGB (Opcional) 02
PASO 1: CONSTRUCCIÓN DEL DRIVER (PUENTE H)
Este driver nos ayudará a controlar la inversión de giro, el cual realizaremos con relés, ya que los relés soportan una buena cantidad de corriente a diferencia de otros drivers como por ejm: LM 293D y similares a ello, por tanto, estos se pueden emplear para motores que necesitan una cantidad elevada de corriente.
PASO 2: CREACIÓN DE PCB (PROTEUS)
Sabiendo el funcionamiento del driver (puente h) pasaremos a crear el pcb (proteus) para poder plasmarlo en una placa, para que nos resulte más seguro y fácil de montar en muestro carro robot.
Descargar PCB
PASO 3: CREACIÓN DEL CÓDIGO EN EL IDE DE ARDUINO Y DE LA APP (App inventor)
A continuación, crearemos el código en el entorno de programación de Arduino y al mismo tiempo crearemos la app correspondiente para nuestro control del carro robot.
Código Arduino
/* CREADO POR :{==[=======>>>> ELECTROALL <<<<<=======]==} INSTAGRAM : https://www.instagram.com/carlos_j_fuentess/ ó @carlos_j_fuentess FACEBOOK : https://web.facebook.com/ELECTROALL.ELECTRONICA/?_rdc=1&_rdr PÁGINA WEB : https://www.electroallweb.com/ YOUTUBE : https://www.youtube.com/c/ELECTROALL ________________________________________________________ {==[=======> (CARRO ROBOT) <=======]==} ________________________________________________________ CONEXIONES: ARDUINO PIN PUENTE (H) 9 = PWM_MI 10 = PWM_MD 11 = INT_MI_A 12 = INT_MI_B 13 = INT_MD_A 14 = INT_MD_B ARDUINO PIN LED RGB 14 = PIN_RED 15 = PIN_GREEN 16 = PIN_BLUE */ //=== MOTORES===>> # define MI_A 11 # define MI_B 12 # define MD_A 13 # define MD_B 14 int VEL_MI = 9; int VEL_MD = 10; //=== LEDS===>> # define red 15 # define green 16 # define blue 17 String readString ; void setup(){ Serial.begin (9600); //=== MOTORES===>> pinMode (MI_A, OUTPUT); pinMode (MI_B, OUTPUT); pinMode (MD_A, OUTPUT); pinMode (MD_B, OUTPUT); pinMode (VEL_MI, OUTPUT); pinMode (VEL_MD, OUTPUT); //=== LEDS===>> pinMode (red , OUTPUT); pinMode (green, OUTPUT); pinMode (blue, OUTPUT); } void loop(){ char dato = Serial.read(); switch (dato){ case 'A' :adelante(); break; case 'D' : derecha(); break; case 'I' :izquierda(); break; case 'a' : atras(); break; case 'X' : neutro(); break; case 'V': vel_motorI(); break; case 'v': vel_motorD(); break; } } //====FUNCIONES PARA MOTORES=====>> void adelante(){ digitalWrite(MI_A,1); digitalWrite(MI_B,0); digitalWrite(MD_A,1); digitalWrite(MD_B,0); digitalWrite(green,0); digitalWrite(red, 1); digitalWrite(blue, 1); } void derecha(){ digitalWrite(MI_A,0); digitalWrite(MI_B,0); digitalWrite(MD_A,1); digitalWrite(MD_B,0); digitalWrite(green,1); digitalWrite(red, 1); digitalWrite(blue, 0); } void izquierda(){ digitalWrite(MI_A,1); digitalWrite(MI_B,0); digitalWrite(MD_A,0); digitalWrite(MD_B,0); digitalWrite(green,1); digitalWrite(red, 1); digitalWrite(blue, 0); } void atras(){ digitalWrite(MI_A,0); digitalWrite(MI_B,1); digitalWrite(MD_A,0); digitalWrite(MD_B,1); digitalWrite(green,1); digitalWrite(red, 0); digitalWrite(blue, 1); } void neutro(){ digitalWrite(MI_A,0); digitalWrite(MI_B,0); digitalWrite(MD_A,0); digitalWrite(MD_B,0); digitalWrite(green,1); digitalWrite(red, 1); digitalWrite(blue, 1); } //-----------velocidad---------- void vel_motorI(){ delay(15); while (Serial.available()){ char C = Serial.read(); readString += C; } if (readString.length()>0){ Serial.println(readString.toInt()); analogWrite (VEL_MI,(readString.toInt())); readString = ""; } } void vel_motorD(){ delay(15); while (Serial.available()){ char c = Serial.read(); readString += c; } if (readString.length()>0){ Serial.println(readString.toInt()); analogWrite (VEL_MD,(readString.toInt())); readString = ""; } }
PASO 4: CONSTRUCCIÓN MECÁNICA
Este será nuestro último paso para construir nuestro carro robot, en la cual empezaremos a montar todos los dispositivos necesarios.