Esquema de conexiones

Sigo trabajando en el interfaz gráfico para enviar órdenes al vehículo desde la web. Mientras tanto, he hecho un boceto de conexión entre los dispositivos entre sí.

Así es como quedaría:



Batería: He decidido usar una lipo de 2 celdas de unos 5000mAh. Que de momento pienso que le permitirá funcionar durante un buen rato, y con 7,2V que da, puedo alimentarlo todo (Arduino, motores, webcam...).

Arduino: Una Arduino Mega 2560 va a ser el centro del proyecto.

Conexión inalámbrica:
- La primera opción era comprarme todo el kit para poder utilizar XBee. Me parecía una idea estupenda, pero el precio del kit completo sale algo caro y realmente no necesito tanto alcance para la comunicación, de momento, con unos 10-20 metros es suficiente. Este kit constaría de: 1x Xbee Shield For Arduino, 1x Xbee USB adapter y 2x XBee 2mW Wire Antenna. Estamos hablando de unos 60€ en total.

- La segunda opción, que me parece más razonable es comunicarse a través de Bluetooth. Es una muy sencilla, me permite utilizar la misma velocidad de transferencia y es mucho más ecónomica. Hay mucha variedad, con más o menos alcance, con modo host o solo esclavo, etc. Sin ir más lejos, este modelo con modo Host y casi 30m de alcance cuesta cerca de 24€.

Finalmente he decidido quedarme con el Bluetooth, aunque con una versión más económica. Con unos 20 metros de alcance y solo con modo esclavo me cuesta cerca de 10€.

Controladora para motores:
Estoy entre dos opciones:


- La primera es el Adafruit Motor Shield, que me permite controlar hasta cuatro motores DC, dos motores paso a paso y dos servos, pero solo me permite usar motores de hasta 0,6A. El precio es de aproximadamente 20€.


- La segunda opción es comprar dos controladoras 2A Dual Motor Controller de DFRobot, que me permiten controlar dos motores de hasta 2A cada una. Esto ya me gusta más. Y el precio de las dos placas suma unos 24€.

Así que he pensado quedarme con la segunda opción, ya que la diferencia de precio es poca y me va a permitir usar motores mucho más potentes en el futuro.

Motores: El chasis viene equipado de casa con cuatro motores Micro DC Geared Motor de DFRobot. Vienen con reductora 1:120, funcionan entre 3V y 6V, y alcazan las 180rpm, que es más que suficiente para empezar.

Cámara: He pensado utilizar una webcam inalámbrica con receptor USB. He encontrado algunas relativamente económicas, pero de momento ninguna compatible con Linux. Me estoy planteando el montarla sobre un servo para poder orientar la cámara sin tener que girar el coche.

Linterna: Quiero equiparlo con una linternita LED, pero todavía no se si de LEDs de alta luminiscencia o de infrarrojos. El tema es que sea posible jugar con el cochecito incluso cuando sea de noche. Eso si, apagad la luz cuando hayais terminado :P

Un saludo!
Continue reading

Comunicación: Servidor - Arduino

Mientras llega el servidor para poder instalarle LAMP, voy dándole vueltas a como organizar la comunicación entre el servidor y la placa.

De momento he hecho un esquema de comunicación muy sencillo, de como funcionaría la gestión de operaciones que enviará el usuario al GE:




Puesto que de momento no creo que disponga de suficiente velocidad como para hacer un buen streaming con varias cámaras a la vez, y también porque me parece que tiene su gracia, quiero programar el interfaz de control del GE de tal forma que el usuario podrá crear una lista de comandos, que el robot tendrá que ejecutar de forma secuencial.

Para ello el usuario seleccionará las ordenes teniendo en cuenta todos los datos que tiene a su disposición, sobre la posición del robot (imágenes, animación, planos). Una vez creada la lista, se solicita la ejecución de todos los comandos. Ejemplo:




En el peor de los casos, si el usuario tiene una mala conexión a internet, o el servidor tiene un mal día, veríamos pasados unos segundos las imágenes con el resultados de las operaciones que le hemos pedido. Y en un buen caso, podríamos ir recibiendo imágenes en directo del GE mientras realiza las ordenes que le hemos pedido.

Estaríamos imitando, con algo de ventaja, a los operadores de un Mars Rover.


Y más o menos así sería el esquema general:



Para aligerar de trabajo y de memoria el hardware del GE, quiero administrar las instrucciones que envie el usuario en el servidor, con PHP. De esta forma, el GE solamente tendrá unas instrucciones predefinidas que ejecutará de una en una conforme se le vaya ordenando.
Continue reading