Introducción (actualizado 26/12/15)
Este es siempre mi primer intento de construir un robot web controlada con construido en modo autónomo. El proyecto comenzado como un Arduino Nano robot de evitación de colisión construido para inspirar a los niños de primaria y desarrollar un interés en computación y electrónica.
Al principio el robot era un robot de evitación de colisión simple que luego añadí un Raspberry Pi. A la Pi era un detector de movimiento PIR y un C270 Logitech Web Cam, todo montado en la parte superior. Armé un programa de python pequeño utilizando fswebcam para tomar fotos con la Web Cam cada vez que el detector de movimiento PIR detecta movimiento, que era todo el tiempo que el robot se movía. Las fotografías fueron substituidas más adelante con un flujo de vídeo vivo, llevado a cabo utilizando un programa de python llamado MJPG-Streamer.
Después de mucha investigación el Pi fue conectado con el Nano en una interfaz (dos hilos) serie i2c para servir una página Web que podría ser utilizado para enviar y recibir comandos para controlar el movimiento del robot y ver la secuencia de vídeo.
Esto es todavía un trabajo en progreso y está lejos de terminar, pero pensé que ya era hora que he creado un blog en la construcción. Si me da tiempo en una fecha posterior que haré un paso a paso, en el entretanto no dude me pregunta preguntas y si puedo te ayudo.
Lista de partes:
1. frambuesa Pi modelo B
2. Logitech C270 Webcam
3. Arduino Nano AT-Mega328P (copia China)
4. PIR Detector (redundante en la última versión)
5. EasyAcc 10000mAh batería USB (para la frambuesa Pi)
6. LiPo 7.4v batería recargable
7. WiFi Dongle
8. HC-SR04 Sensor ultrasónico módulo
9. L298N Dual 'H' puente tablero de conductor del Motor
10. 9g Servo Micro
10. plexiglás chasis (con 2 x motores de corriente continua y rueda)
11. zorros de galleta y lata de reloj G Shock
12. macho a macho y de macho a hembra Cables de puente
13. sin soldadura Breadboard
La construcción
Inicialmente, como he mencionado anteriormente, el robot comenzó en la vida como consecuencia de la necesidad de construir un robot de evitación de colisión para un club de robótica de la escuela. La idea fue identificar piezas lo suficientemente baratas como hacer la construcción de un robot asequibles para los miembros del club que estaban en Y5 y Y6 en la escuela primaria en la que yo estoy actualmente formación. El robot inicial fue basado en un Arduino Nano AT-Mega328P, para mantener los costos. También incorpora un Kit de chasis de plexiglás que incluye 2 motores x y una rueda del echador. Detección de colisiones se estableció usando un Sensor de ultrasonidos y un controlador de Motor de puente H de doble usado para controlar los motores. Energía fue proporcionada inicialmente de 1 pila de 9v x PP3 (no hay investigación en baterías y alimentación en este punto).
Este plan inicial era que el Sensor de ultrasonidos montar en el Micro Servo de 9g sin embargo la opción de batería pobres y poco investigada resultó inadecuada para manejar todo con el servo conectado.
Con el servo que se omite el robot funcionó admirablemente y demostró para ser un favorito y seguía siendo la versión adquirido y construido por los niños.
Requisitos de alimentación
Como se mencionó anteriormente el robot fue inicialmente impulsado por una batería PP3 de 9v. Esto estaba bien para alimentar a los motores y los sensores de ultrasonidos, sin embargo, en orden para esta versión del robot con un sensor ultrasónico montado en un servo de rotación se necesita una mejor alimentación. Después de investigar los requerimientos de energía en vamos a hacer Robots, que me aconsejaron el PP3 de 9v de la zanja (que por cierto están diseñados para los artículos de consumo de energía muy baja como detectores de humo) y optar por pilas AA, recargables preferiblemente con alrededor de un grado de 2000mAh. Me dijeron que use 6 como AA recargable salida alrededor de 1.2v en lugar de 1, 5V de salida por el tipo no recargable.
Otra opción que me dijeron que seguir era usar baterías de polímero de litio (LiPo), comúnmente utilizadas entre la fraternidad de la robótica. Mientras que las baterías tienen un precio razonable (alrededor de £11 para un paquete de la célula 2 - 7.4v) le será también necesario un cargador de equilibrio que son caros. Esto es un desembolso inicial elevado pero es un costo.
Al final compré un 7.4v (Turnigy) batería recargable LiPo:
http://www.hobbyking.com/hobbyking/Store/__9172__T...
Y un cargador de B6ACBalance de Imax:
http://www.hobbyking.com/hobbyking/Store/__58285 __...
También se recomienda que usted consigue una LiPo carga bolsa de fuego que prueba, estas baterías son bastante seguras, pero si uno se daña y se carga puede ser similar a la luz de un fuego artificial en su casa!!!!
Para utilizar esta batería con este cargador tuve que soldar un conector diferente en el extremo de la batería.
Detalles de cómo se conecta la batería está cubierta por debajo.
El Raspberry Pi es alimentado mediante un paquete de energía recargable USB, en mi caso usé un EasyAcc 10000mAh del paquete que cuando completamente cargada última para las edades (no una unidad técnica de medida, pero usted consigue mi deriva).
Actualización del chasis
Para darle un cuerpo y cambiar el aspecto visual del robot me había montado una lata de galletas de zorros en la parte superior del chasis de plexiglás y ocupa toda la electrónica dentro de él. El Sensor ultrasónico fue montado dentro de una lata que viene con un nuevo Casio G Shock. La lata fue cortada usando una combinación de recortes de estaño, tijeras y un cuchillo de Stanley, una vez que corte tener cuidado porque los bordes son afiladísimo, arena, pero también les cubrió con cinta de PVC.
Microprocesadores
En el momento de escribir este robot cuenta con dos microprocesadores, un Pi de frambuesa y un Arduino Nano. El Arduino Nano impulsa los motores de DC y el Sensor de ultrasonidos y el IPC ofrece el WiFi Web Control, funciona una cámara web y tiene capacidad para más lejos mejorar / ampliar este robot.
El Nano y el RPi están conectados mediante una conexión de dos hilos de ic2, el Nano está configurado como un dispositivo esclavo y el IPC es el maestro. Usando el Nano para conducir los motores y los sensores de esta manera evita atar para arriba de los pines GPIO de Pis que asegura la capacidad de ampliación.
Como un principiante, configurar el i2c tomó una gran cantidad de investigación y aunque trabaja el control del motor todavía necesita afinación fino.
Electrónica
El x 2 motores están conectados a un tablero de conductor del Motor L298N H puente, estas juntas permiten el control de motores de corriente continua para echar hacia delante y hacia atrás. El L298 también viene con un regulador de voltaje de 5v a bordo. El L298 es una opción barata pero sufren de una caída de voltaje grande, así que asegúrese de que la batería es bastante más grande.
La batería está conectado del L298 a través de un simple poste solo tiro singular (SPST) interruptor on / off. El L298 entonces proporciona energía de 5v a la placa sin soldadura que alternadamente proporciona la energía para el Sensor de ultrasonidos HC-SR04, el Micro Servo de 9g en que el sensor se monta y el Arduino Nano.
Cómo funciona
El IPC está configurado con acceso remoto y una vez encendida entrar en ella con SSH (Secure Shell) e iniciar el programa de Python que actúa como el programa para controlar Arduino i2c. Desde dentro del programa de Python que es un script bash ejecute que comienza otro programa de Python para servir una página Web utilizando WebIOPi un programa de Python para el Control de la Web, esto también llama a otro programa de Python, mjpg-streamer que se enciende la Web Cam y marcos de mjpg de arroyos que se ven en las páginas web servidas por WebIOPi. La página web que he creado contiene un panel de control simplemente con botones marcados hacia adelante, atrás, izquierda, derecha y Stop. También he añadido un par de botones para activar el servo que el cabezal se monta sobre.
Cuando la robusteza sí mismo se enciende el Nano se dispara para arriba y empieza a escuchar para comandos que llegan sobre la interfaz i2c de la Pi (cuando se presiona un botón en el panel de control de página web). También tengo instalación de un 'modo autónomo' que espera un periodo de tiempo determinado y si no los comandos reciben el robot empieza a navega por su entorno.
El código de
Hay tres programas asociados a este proyecto, HTML, Python y bosquejo.
El archivo HTML es la página web de la Pi con WebIOpi, el código Python comienza el programa principal de i2c, inicia WebIOPi y llama mjpg-streamer para transmitir el video feed. El código de bosquejo está subido a Arduino para configurarlo como esclavo y a la espera y comandos de acción proveniente de la Pi, así como proporcionan el modo autónomo.
YouTube
Aquí hay un enlace a un video de YouTube corto del robot en acción (sólo en modo autónomo), chocar unos cuantos pero los edité :-)
Temas de actualidad
En el momento de esta actualización hay dos problemas con la versión actual:
1. movimiento (sobre todo izquierdo y derecho). Control sobre la interfaz web necesita más trabajo, haciendo clic en un botón de control en el panel de control de página web (un ratón .html evento) hace que el robot para moverse, hay demasiado retraso entre el envío de la orden de parada (el ratón evento cuando el usuario suelta el botón del ratón) y el robot detener el comando actual. Mientras que esto no es particularmente sensible cuando se mueve hacia adelante y hacia atrás, cuando da vuelta el robot convierte cerca de 270 grados cada vez que lo hace fino control imposible. ¿Más trabajo requerido?
2. modo autónomo. Modo autónomo entra en acción después de unos minutos de inactividad sin embargo cuando el usuario intenta tomar el control otra vez algo modo autónomo Cesar, continúa dando por resultado una lucha entre el usuario y los robots AI para control!!!! Probablemente un simple fijar sin embargo una vez más más trabajo requiere.
Tienen configuración de una cuenta de GitHub para albergar el código sin embargo yo nunca he usado Git Hub antes por lo que estoy luchando para trabajar todo lo posible como lo hago voy a publicar el enlace al código diferentes utilizado en este proyecto.
Espero que os guste este blog / proyecto y si usted necesita cualquier ayuda con esto por favor no dude en dejar un comentario o me encontrar en LMR.