Hace tiempo que hice mi primer robot, pero este se quedó en el olvido y recientemente he querido retomarlo para un proyecto de orientación por GPS. De momento lo he estado montando para que detecte colisiones con objetos, pero además me comunique mediante bluetooth cuando detecta esas colisiones. He aquí los pasos que he ido siguiendo para montarlo:
Primero extraemos la electronica y nos quedamos con los cables de los motores del coche teledirigido, después añadimos un conector tamiya con fusible para la batería LIPO:
Nos hacemos con una placa Arduino y un motorshield, en la cual se pueden acoplar en sus pines los cables de los motores:
En el mercado existen multitud de módulos bluetooth, yo he comprado el de sure electronics por su sencillez tanto de montaje como de comunicaciones (va a 9600 bps). Dos cables van a los pines RX y TX de la arduino y otros dos van a la salida de 3,3 voltios y GND de la arduino. Para comunicarse con él en windows basta con el putty accediendo al puerto COM que se haya asociado a vuestra conexión bluetooth; si se trata de linux o mac podeis conectaros desde la consola con screen /dev/<dispositivo> 9600 siendo <dispositivo> el tty asociado a la conexión:
Montamos los bumpers. El cable suelto va a uno de los pines GND de la arduino, los otros dos cables van conectados a los pines EC1 y EC2 de la motorshield, que a su vez están conectados a los pines 4 y 5 de la arduino, por lo que se deberá activar la resistencia pull-up interna de esos pines:
Una batería LIPO para alimentar el conjunto, pegada con velcro para que se sujete bien a la vez que sea fácil quitarla para cargarla o sustituirla:
Aunque no es necesario, he puesto una cámara wireless alimentada con una pila de 9 voltios para grabar los movimientos. Al final el conjunto queda así:
Como el movimiento se demuestra andando, pongo un video de su funcionamiento (recomiendo agrandarlo para ver mejor los detalles). A la izquierda el putty mostrando los mensajes que envía la arduino a través de bluetooth, en el centro un video del cómo responde el robot y a la derecha otro video desde dentro del robot:
Finalmente dejo el código fuente del robot para el entorno Arduino:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
int dirA = 12; // sentido int dirB = 13; // direccion int speedA = 10; // velocidad del motor int speedB = 11; // parada o encendido de la dirección int bumperI = 5; // bumper izquierdo int bumperD = 4; // bumper derecho int boton2 = 6; // boton 2 de la motorshield int boton1 = 7; // boton 1 de la motorshield // El robot va hacia atrás void atras() { digitalWrite (dirA, HIGH); } // El robot va hacia alante void alante() { digitalWrite (dirA, LOW); } // El robot tuerce a la izquierda void izquierda() { digitalWrite (dirB, LOW); } // El robot tuerce a la derecha void derecha() { digitalWrite (dirB, HIGH); } void setup() { // Configuración de los pines de la motorshield pinMode (dirA, OUTPUT); pinMode (dirB, OUTPUT); pinMode (speedA, OUTPUT); pinMode (speedB, OUTPUT); // Configuración de los pines de los bumpers pinMode (bumperI, INPUT); pinMode (bumperD, INPUT); // Configuración de los botones de la motorshield pinMode (boton1, INPUT); pinMode (boton2, INPUT); // Configuración de las comunicaciones por bluetooth Serial.begin(9600); } void loop() { // Si se ha pulsado el boton de arranque if(digitalRead(boton1) == 0) { delay(200); // para evitar rebotes en el boton Serial.println("empiezo"); analogWrite(speedA, 100); // PWM a 100 } // Si se ha pulsado el boton de parada else if(digitalRead(boton2) == 0) { delay(200); // para evitar rebotes en el boton Serial.println("termino"); analogWrite(speedA, 0); // PWM a 0 } alante(); // Si se ha detectado una colisión por el flanco derecho if(digitalRead(bumperD) == 0) { Serial.println("choque derecha"); digitalWrite(speedB, HIGH); // Va hacia atrás a la derecha durante 1 segundo derecha(); atras(); delay(1000); // Va hacia alante a la izquierda durante medio segundo alante(); izquierda(); delay(500); digitalWrite(speedB, LOW); } // Si se ha detectado una colisión por el flanco izquierdo else if(digitalRead(bumperI) == 0) { Serial.println("choque izquierda"); digitalWrite(speedB, HIGH); // Va hacia atrás a la izquierda durante 1 segundo izquierda(); atras(); delay(1000); // Va hacia alante a la derecha durante medio segundo alante(); derecha(); delay(500); digitalWrite(speedB, LOW); } } |
Pingback: de la red – 4/07/2010 « Tecnologías y su contexto
Muy nas «Sr. X» pongo asi porque nose quien eres sino te enviare un email.
Estoy en medio de 1 proyecto por el estilo, pero bastante mas complejo y veo que dominas tanto en robotica como en arduino y la verdad, haver si me podrias hacer el favor en ayudarme en unas cosillas, para mi proyecto.
te dejo mi email para que contactes conmigo.
Saludos
Perdon que no lo he puesto.
roma0712@gmail.com
Saludos
Para compartir con el resto de los lectores las explicaciones, puedes poner tu duda aquí.
Holas, eey, bueno primero agradecerte tus maravillosos contenidos que me van a animar a entrar en el mundo de arduino,y mi duda. Voy a empezar con esto y quiero seguirlo paralelamente a mis estudios de bachillerato para dedicarme a ratos ya que quiero estudiar ingeniera informatica, y mi duda: que pack de arduino deberia comprarme para empezar, vi que algunos tenian el pack con usb para transmitir el codigo, y me gustaria ese, o uno con usb pero completito y no muy caro. Donde podria conseguirlo, me podrias facilitar un link, gracias y el nombre del pack o el link directo a su compra ya que no domino aun los modelos ni las diferencias entre cada uno de los packs de arduino.
Muchas gracias
Pues hay varios modelos de arduino, pero el que tiene la mayoría de la gente es el arduino duemilanove. Tiene como dices usb por lo que sirve tanto para programarlo como para comunicarse con el pc. El precio difiere de la tienda donde lo compres, por ejemplo:
http://www.bricogeek.com/shop/10-arduino-duemilanove-usb.html
http://www.tuxbrain.com/oscommerce/products/38
http://cgi.ebay.es/Arduino-Duemilanove-ATmega328-USB-Cable-9V-adapter-/170474585320?pt=LH_DefaultDomain_0
Hola!
Antes todo quiero decirte que esta muy bueno lo que has hecho.
Queria preguntarte cual es la camara wireless has utilizado ya que quiero hacer un proyecto que tenga una camara pero no se cual utilizar.
Gracias!
Fabricio.
Se trata de una cámara GD-LD-203C
Hola buenas noches , se tienes tiempo y quieres me puedes decir si el modulo bluethooth que has usado lo podria conectar con Amarino para usar el arduino y android? y como lo conectaria al arduino porque veo que tu has realizado como una placa que une ambos… no tengo mucha idea y si me ayudaras me seria de mucha ayuda un saludo Mario
Gracias espero tu respuesta
Hola
Según esta página: http://www.amarino-toolkit.net/index.php/docs.html si que puedes usar el módulo bluetooth de sure. La placa intermedia que ves es para poder sacar 4 cables del módulo bluetooth que es SMD a los pines del arduino.
Gracias por contestar, yo no entiendo mucho de esto de electronica , me podrias explicar mas o menos como tendria que hacer la conexion? porque no se puede comrpar echa no?o comprartela ati?un saludo
Para hacerlo puedes mirar este artículo: http://webdelcire.com/wordpress/archives/135
Me es imposible soldar en la placa es super pequeña con un soldador casero…tu como lo has echo?
Con un soldador con punta de 1 mm. y con estaño de 1 mm. de grosor. El cable que he usado es hilo de wrapping.
Hola,
Muy interesante tu trabajo. Yo acabo de comprar un arduino uno y el motor shield kit en http://www.bricogeek.com/shop/15-motor-shield-kit.html
El caso es que al soldar me quedo sin la posibilidad de utilizar las salidas digitales, no como tú que veo que son hembras y que puedes poner los interruptores final de carrera. ¿Es que lo compraste en otro sitio? He pensado que estaba hecho así para que la gente no lo usarán, pero al ver tu video. ¿se pueden usar estas salidas digitales sin problemas?
muchas gracias y felicidades por tu trabajo.
Compré aparte estos pines hembra que son más largos que los normales: https://www.tuxbrain.net/shop/product_info.php?cPath=38_302&products_id=76&osCsid=p5gjrmljtkotfo21spn28ra771
No se pueden usar todas porque muchas de ellas ya está usadas por el propio shield, pero puedes usar las de comunicaciones 0 (rx) y 1 (tx), todas los pines analógicos (que también pueden ser usadas como digitales) y el pin 3.
Muchas gracias por la información, me ha resultado muy útil.
Un saludo.
vaya mierda de robot, podías por lo menos ponerle sensores infrarrojos y xbee .
El robot no puede ir tan rápido y si quieres ponerle gps necesitas un receptor gps y una brújula electrónica.
A ver listillo de tres al cuarto, muestrame un robot tuyo mejor. Sensores infrarrojos ¿para qué?. Y Xbee para qué si ya tiene bluetooth. Si supieses leer y entender lo que lees verás que estaba probando otras cosas pero no el GPS. Y para tu información no es necesario tener una brújula electrónica para orientarse, si no sabes eso es que eres muy torpe (como has demostrado con tu mensaje), repasa la teoría de vectores y la ecuación de la recta, troll.
dijculpa me envias los planos de tu trabajo especialmente de la camara portatil espero q pueda ayudarpe y grasias es bueno
Pingback: SISTEMAS O.R.P » Blog Archive » Televigilancia con un coche RC, arduino y la raspberry pi
hola ,soy novato en el manejo de arduino pero me interesa saber un poco mas sobre el su proyecto especialmente el uso de la camara
mi correo es durangoleon at hotmail.com por si deseas ayudarme mil gracias de antemano
Mejor pregunta por aquí por si alguien tiene la misma duda.
Hola, quisiera contactarme con el autor del post, para que me brinde ayuda en el armado de este coche
He armado un robot para evitar colisiones, y tambien controlado por telefono o control infrarojo, me gustaria agregarle una cámara y quisiera que me ayudaran en la reforma.