Materiales:
- Kit motores reductores + llantas (esos chinos amarillos que venden en las tiendas de electrónica).
- Modulo driver de motor L298N.
- Arduino (Uno, Nano, Mega, etc). (recomiendo el nano por el tamaño reducido)
- Modulo bluetooth hc05 0 hc06 (solo recibira datos desde el android para manejar el carrito).
- Cables machos para protoboard ( para unir el circuito en el protoboard).
- 1 switch, 1 led, 1 resistencia de 1K.
- Un mini Protoboar.
- Ball Caster o rueda loca
- Tornillos largos (para unir el ball caster o rueda loca al chasis)
- Baterias de litio, lipo o kit de pilas con voltajes de 7.4v a 9 v ( mayor a 5 V si no el arduino no arrancara).
- Portapilas AA (si utilizas pilas, compra una que venga de 6 , o sino una de 4 y la otra de 2)
- Celular o tablet android con conectividad bluetooth.
- El chasis puede ser de acrilico, triplay (darle forma ).
La Forma del Chasis:
Hay que hacer un cuadrado y dentro de el hacer una circunferencia en la plataforma (acrilico, triplay, etc) .
Luego cortar dos esquinas del cudrado, esto para colocar los motores y las llantas, hacerlo con mucho cuidado de no quebrar.
Los agujeros serviran para colocar tornillos que sujeten alos motores y ball caster o rueda loca.
Las baterias para ahorrar espacio se pueden colocar debajo.
Las baterias para ahorrar espacio se pueden colocar debajo.
El circuito electrónico:
Programa en Arduino:
En escencia lo que hace el el programa del arduino es recibir un caracter y adicionalmente una bandera para indicar si es un dato de dirección("d") o de la velocidad("#") y los concatena. De esa manera se podra manejar mejor la comunicación.
Adicionalmente el control del robot tebnra una función para aumentar o disminuir la velocidad.
////////
#include <SoftwareSerial.h> #define motor_1_a 7 #define motor_1_r 8 #define motor_2_a 5 #define motor_2_r 6 #define pin_pwm1 9 #define pin_pwm2 10 #define led1 13 #define led2 11 int numero=0; int direccion=0; SoftwareSerial bluetooth(2, 3); // RX, TX String readString=""; void motores(float pwm1, float pwm2) { int v1, v2; if(pwm1 >= 0) //para el motor 1 { digitalWrite(motor_1_a, HIGH); digitalWrite(motor_1_r, LOW); v1 = pwm1; } else if(pwm1 < 0) { digitalWrite(motor_1_a, LOW); digitalWrite(motor_1_r, HIGH); v1 = pwm1 * (-1); } //para el motor 2 if(pwm2 >= 0) { digitalWrite(motor_2_a, HIGH); digitalWrite(motor_2_r, LOW); v2 = pwm2; } else if(pwm2<0) { digitalWrite(motor_2_a, LOW); digitalWrite(motor_2_r, HIGH); v2 = pwm2 * (-1); } analogWrite(pin_pwm1, v1); analogWrite(pin_pwm2, v2); } void setup() { delay(500); pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); pinMode(motor_1_a, OUTPUT); pinMode(motor_1_r, OUTPUT); pinMode(motor_2_a, OUTPUT); pinMode(motor_2_r, OUTPUT); pinMode(pin_pwm1, OUTPUT); pinMode(pin_pwm2, OUTPUT); digitalWrite(led1,HIGH); delay(500); digitalWrite(led1,LOW); delay(500); digitalWrite(led1,HIGH); delay(500); digitalWrite(led1,LOW); delay(500); digitalWrite(led1,HIGH); delay(500); Serial.begin(9600); bluetooth.begin(9600); } void loop() { readString=""; while( bluetooth.available()) { delay(2); char c=bluetooth.read(); if(c=='#')//bandera velocidad { numero=readString.toInt(); //convierte cadena a entero numero numero=numero*2.54; Serial.println(numero); } if(c=='d')//bandera direccion { direccion=readString.toInt(); Serial.print("dato direccion "); Serial.println(direccion); } readString+=c; //concatena datos que llegan } if(direccion==0) {digitalWrite(led2,LOW); motores(0,0);} if(direccion==1) {digitalWrite(led2,HIGH);motores(numero,numero-5);} if(direccion==2) {digitalWrite(led2,HIGH);motores(-numero,-numero);} if(direccion==3) {digitalWrite(led2,HIGH);motores(0,numero-3);} if(direccion==4) {digitalWrite(led2,HIGH);motores(numero,0);} }
Aplicacion Android ".apk":
Lo que hace la aplicación es enviar caracteres numéricos seguido de una bandera para identificar que tipo de dato es. Si es de dirección (avanzar=1, retroceder=2, izquierda=3, derecha=4) adicionando la bandera "d" que indicara que es justamente de direccion. Si no se preciona nada, entonces enviara "0" (detenido). De esta forma el robot funcionara si solamente es presionado algún boton de direccion.
Ln el slider de velocidad la logica es similar, pero en este caso enviara datos numerico que van desde 0 hasta 255, que justamente es el pwm con el cual variaremos la velocidad en el arduino, seguido de la bandera "#" que justamente identifica que es un dato de direccion.
Todo esos datos son enviados mediante la rutina call bluetoothClient como se nota en la imagen.
Puedes descargarlo desde aqui : apk carrito bluetooth
clave de cifrado: !H2nwlNrYYt_EaM-xcvGrmQKe1VcPZl8lv_xcqZQKjkI
12 comentarios:
Disculpe, me pide una contraseña al descargar el archivo apk, me la puede proporcionar?
CUAL ES LA CLAVE DE CIFRADO DE LA APLICACION EN ANDROID?
clave de cifrado: !H2nwlNrYYt_EaM-xcvGrmQKe1VcPZl8lv_xcqZQKjkI
muchas gracias por la respuesta tan rapida.
muy buen trabajo
Gracias por el gran aporte, como sería las conecciones de arduino uno con el driver l298n y el bluetooth HC-06 lo necesito con urgencia como cambio las definiciones. Gracias de antemano.
Alguien me puede decir como sería el mapeo con aduino uno por favor.
Gracias por siempre
hola amigo muy chevere me podrias regalar el archivo .aia el cual creo con la aplicacion app inventor, no a la aplicacion apk ese ya lo tengo gracias mi correo es fachame12@hotmail.com
me aparece error 515
Ese es todo el codigo de arduino
Hola!
Me gustaría saber si solamente puede llevarse a cabo con un dispositivo Android
Betway casino review for 2021 - Wooricasinos.info
Find out if Betway 애니팡 포커 is a legitimate, trusted and reliable online 카드 게임 종류 casino 수있습니다 in the world with reliable reviews. ✓ Find the best 바카라카운팅 site for 알바로 모라타
Publicar un comentario