BARC Jeep - un XBOX control Power Wheels (1 / 7 paso)

Paso 1: Obtener el mando de la Xbox con el Arduino

Lo primero es obtener el mando de la Xbox con el Arduino a través del USB Host Shield. Todas las fotos incluidas en este Instructable muestran un Arduino Mega, pero en realidad, un Uno es todo lo que es necesario para el USB Host Shield y 2 salidas digitales.

Enchufe el USB Host Shield en el Arduino. Por ahora, potencia el Arduino con usted es computadora. A continuación enchufe el Xbox 360™ Wireless Gaming Receiver for Windows®. Una vez que estas conexiones se hacen carga de código que se muestra a continuación en el Arduino que permite el Arduino realizar operaciones de manejo basadas en la entrada del controlador.

Hay un montón de la notación para ayudar a entender lo que está sucediendo.

Código de Arduino

// *****************************
* RC Power Wheels Jeep *
// *****************************

/*

RESUMEN
Un huracán de Jeep 12v doble motor potencia ruedas tendrá unidad
y manejo controlado remotamente a través de Arduino.

HARDWARE
Power Wheels Jeep Hurricane
Arduino UNO R3
Circuitos USB Host Shield 2.0 http://www.circuitsathome.com/products-page/arduino-shields/usb-host-shield-2-0-for-arduino
Pololu regulador Simple del Motor 18v25 http://www.pololu.com/catalog/product/1381/resources
Pololu regulador del Motor de JRK 12v12 http://www.pololu.com/catalog/product/1393/resources
Chip genérico lineal actuador 4".6"/s http://www.pololu.com/catalog/product/2333
Adaptador USB inalámbrico de Xbox 360
Controlador inalámbrico Xbox 360

CONFIGURACIÓN DE HARDWARE

* +-------+         +---------------+  USB    +-----------------+
* | Arduino +---> | USB Host Shield +---> | XBOX USB Receiver| *** / >< / *** controlador inalámbrico XBOX
* +-+-----+         +---------------+         +-----------------+
* |
* | TX (Serial de la TTL)
* |
* |------------------|
* |                  |
* v v Rx Rx
* +----------+      +----------+
* | Pololu SMC + | Chip Jrk|
* +----------+      +----------+
* Maestro esclavo
* +                 +
* |                 |
* |                 |
* v                 v
* +--------+        +--------+
* | 12v| doble        | Lineal |
* | Motores |        | Actuator|
* +--------+        +--------+
*
* NOTAS
* Al aire libre con línea de vista, el controlador de inalámbrico Xbox tiene una gama impresionante. El rango máximo
* no ha sido completamente probado, pero me he ido más de 50ft sin ninguna pérdida notable en la señal.
*
* Todo se encuentra a bordo del Jeep. Todas las conexiones Serial TTL son hard-wired en el Arduino
* y controladores de motor. El receptor de Xbox está conectado a una barra de metal al estilo de antena.
*
* El actuador linear actual puede ser demasiado lento. Puede moverse hay 110 libras de fuerza pero al.6"/ s.
* es un modelo más rápido que hace 22 lbs. @ 1.5"/ s http://www.pololu.com/catalog/product/2345
*
*/

*** Incluye el escudo de la USB de circuitos ***
#include < XBOXRECV.h > / / receptor inalámbrico Xbox 360

¿Crear instancia USB? ESCUDO DE LA USB
USB Usb;

Crear una instancia del receptor Xbox entradas llamados XboxRCV
XBOXRECV XboxRCV(&Usb);  ESCUDO DE LA USB

Estas constantes siguientes forman parte de bytes del protocolo Pololu
pololuCommandByte byte const = 170;
smcDeviceNumber byte const = 13;
smcSpeedDataByte3 byte const = 0;
smcFWDbyte byte const = 5;
smcREVbyte byte const = 6;
jrkDeviceNumber byte const = 11;

char smcSpeed;  Velocidad final
leftStickX int largo; Valor de Xbox izquierda Analog Stick

void setup() {}
Serial.Begin(9600);    Velocidad de transmisión serial a 9600

Detener el programa hasta que el escudo está conectado
USB. Init devuelve -1 para blindaje desconectado y 0 si está conectado
Si (Usb.Init() == -1) {/ / protector de USB si no inicializar por cualquier motivo...
while(1); detener como escudo se divulga desconectado
}

}

void loop() {}
Usb.Task();
Vamos a procesar la entrada de la Xbox
{if(XboxRCV.Xbox360Connected[0])}

INICIAR botón envía exitSafeStart comando para SMC
{if(XboxRCV.getButtonClick(Start,0))}
// *******************************
* exitSafeStart *
// *******************************
Necesario para permitir motores conectados al SMC para mover
Debe ser llamada cuando se reinicia el controlador y después de cualquier error
Protocolo de Pololu: 0xAA (170) | número de dispositivo | 0 x 03 (3)
Serial.Write(pololuCommandByte);
Serial.Write(smcDeviceNumber);
Serial.Write(3);
}

/ * Los gatillos del Xbox proporcionan valores de 0 - 255. El SMC aceptará una baja
valor de la velocidad de resolución porcentaje 0% - 100% (de alta resolución es
un int 2 bytes). Mapas de las dos líneas el controlador de salida de un
valor negativo de L2 (inversa) y positivo para R2 (adelante). Estos dos
luego se suman los valores para proporcionar la velocidad final y la dirección. Se trata de
para que ambos disparadores pueden celebrarse también sin causar los valores
a oscilar entre adelante y atrás
*/
char XboxL2 = map((XboxRCV.getButtonPress(L2,0)), 0, 255, 0, -100);
char XboxR2 = map((XboxRCV.getButtonPress(R2,0)), 0, 255, 0, 100);

Suma de las entradas asignadas para dar una velocidad final y la dirección
smcSpeed = XboxL2 + XboxR2;

/ * El ejemplo de código para el controlador de Xbox dio una zona muerta de-7500 a 7500.
Este código mantiene esa zona muerta por ahora (me gustaría hacerlo
ajustable mientras se está ejecutando el bosquejo). */

leftStickX = map(XboxRCV.getAnalogHat(LeftHatX,0),-32768, 0, 32767, 3880);  Stick analógico movido
Ajustar la banda muerta en el stick analógico izquierdo. Como esto es ajustable
Si ((leftStickX > = 1500) & & (leftStickX < = 1983)) {}
leftStickX = 1400;
}
}

Si no gatillos/sticks son móviles, luego centro y cero
Else {}
leftStickX = 1400;
smcSpeed = 0;
}

*** "LATIDO" RESERVADO ***
"Latido" enviará un comando serial cada segundos x como un "keep-alive" al SMC y JRK
Controladores. También evitará comandos duplicados de inundaciones el búfer serial (ideal
para la implementación de Xbee).

// *******************************
* COMANDOS SERIE ENVIAR *
// *******************************
/ * Reservado para comandos serie enviados a controladores de motor para ajustar
parámetros de la opción. También al proceso de la respuesta de los
comandos si procede. */

EN ESTA SECCIÓN ENVÍA LOS COMANDOS DE VELOCIDAD Y LA DIRECCIÓN AL SMC
// *******************************
* setMotorSpeed *
// *******************************
/*
http://www.Pololu.com/docs/0J44/6.2.1

El SMC Pololu puede utilizar un valor de velocidad de resolución (-3200 a 3200), sin embargo, esto no es necesario
(todavía) desde el controlador de Xbox de gatillos analógicos solamente salida de 0 a 255. El debajo de las tablas se copian
directamente desde el manual ligado por encima. Usaremos un valor de velocidad de baja resolución expresado en
porcentaje (0 a 100).

"Alternativo de interpretación: los valores permitidos para el segundo byte de datos de velocidad son 0à ¢ â' â €œ100,
así que usted puede ignorar el primer byte de datos de velocidad (siempre ponerlo a 0) y considerar la
segundo byte de datos que simplemente el porcentaje de velocidad. Por ejemplo, para conducir el motor en
53% en la velocidad, utilizas byte1 = 0 y byte2 = 53. "

Motor hacia delante
Comando Byte datos Byte 1 Byte 2 datos Byte 3 datos octeto de datos 4
Uso alterno de Pololu 0xAA (170) del dispositivo el número 0 x 05 (5) % de la velocidad 0 (siempre)


Marcha motor (cambios de datos byte 2)
Comando Byte datos Byte 1 Byte 2 datos Byte 3 datos octeto de datos 4
Uso alterno de Pololu 0xAA (170) del dispositivo el número 0 x 06 (6) % de la velocidad 0 (siempre)

*/
smcSpeed debe ser un número entre -100 y 100

Primero enviar el byte de comando de Pololu SMC
Serial.Write(pololuCommandByte);

A continuación, enviar el número de dispositivo SMC
Serial.Write(smcDeviceNumber);

Aquí, vamos a determinar la velocidad y dirección.
Si (smcSpeed < 0) / / vamos a atrás puesto que la velocidad es negativa
{
Serial.Write(6);  comando reversa motor
smcSpeed = - smcSpeed;  hacer smcSpeed positivos b y c el comando sólo puede leer números positivos
}
otra cosa
{
Serial.Write(5);  comando del motor hacia adelante
}

Serial.Write(smcSpeedDataByte3);  Siempre cero (por ahora) por el protocolo que se utiliza

Ahora vamos a enviar la velocidad real
Serial.Write(smcSpeed);
Delay(1);  Para la estabilidad

SECCIÓN SIGUIENTE ENVÍA LA POSICIÓN DEL ACTUADOR LINEAR DE LA VÍA EL JRK
// *******************************
* setJRKPos *
// *******************************
/ * http://www.pololu.com/docs/0J38/4.e
Protocolo de Pololu, hexagonal: 0xAA, dispositivo número, 0 x 40 + objetivo baja 5 pedacitos, blanco alto 7 bits
Aquí es un código de ejemplo C que genere el seriales correcto bytes
dado un número entero "objetivo" que tiene el objetivo deseado (0 - 4095) y una matriz llamada serialBytes:

1 serialBytes [0] = 0xC0 + (destino & 0x1F); Byte de comando contiene los 5 bits más bajos del destino.
2 serialBytes [1] = (blanco >> 5) & 0x7F;   Datos byte contiene los bits 7 superiores de destino. */

Serial.Write(pololuCommandByte);
Serial.Write(jrkDeviceNumber);
Serial.Write (0 x 40 + (leftStickX & 0x1F));
Serial.Write ((leftStickX >> 5) & 0x7F);

Delay(1);  Para la estabilidad

}

Artículos Relacionados

RC Power Wheels: Parte 1

RC Power Wheels: Parte 1

actualización 06/12/13:Lamentablemente dejé de trabajo en este proyecto cuando nos mudamos el año pasado y este se quedó con un pariente. Todavía no he conseguido él se movió a nuestra nueva casa, y estoy trabajando en otro proyecto que tiene todo el
Energía solar POWER WHEELS

Energía solar POWER WHEELS

Aquí es un proyecto que puede dejar a mamá, papá y Jr. o princesa todos juegan en el patio trasero por mejorar un coche eléctrico Power Wheels y actualización a tecnologías verdes y energías renovables.Un tiempo atrás, había recibido un PowerWheels J
Power Wheels Mods - Master Kill Switch y carga

Power Wheels Mods - Master Kill Switch y carga

El problema:Santa trajo un Power Wheels Jeep a mis hijos esta Navidad. Me ha sorprendido que no era un maestro interruptor de encendido en la cosa. Y por supuesto, la mañana de Navidad, lo primero que hizo mi hija salto en e intenta ejecutar de su he
ANTES Batmobile de Power Wheels Jeep Barbie después Batman

ANTES Batmobile de Power Wheels Jeep Barbie después Batman

esto es una conversión de un pequeño jeep eléctrico de tikes al malo de un niño al hueso Halloween Batmobile. Crucero y truco o el tratamiento en estilo! Había meathods de construcción utilizado. Hoja espuma, espuma de grandes cosas, papel maché, com
Star Wars Speeder de Power Wheels

Star Wars Speeder de Power Wheels

Hola a todos,Este es mi primer instructable. Tenía una idea de cuando mi hijo (5 años) y yo en ROTJ viendo y él pidieron una moto deslizadora. Les informó que no son reales. Un poco de expresión pegada en mi mente por un tiempo. Cuando él fue ver la
DIY Xbox control remoto cable de extensión

DIY Xbox control remoto cable de extensión

aquí es un hack rápido para extender el cable de la Xbox 360.Paso 1: El cable tuve cable USB viejo que tenía un adaptador inalámbrico WiFi en el final. Así que tomé de y pensó que sería cool tener un cable más largo de Xbox porque siempre vino descon
Power Wheels Glider

Power Wheels Glider

Este fue un proyecto del animal doméstico del sentido de la mina era 8. entonces el año pasado finalmente me puse a él. Paso 1 obtener las ruedas de energía. hacer Shure caben las piernas en él. He tenido problemas con eso así que tuve que volver a l
InstaMorph y Power Wheels!

InstaMorph y Power Wheels!

El Grupo fabricante de Omaha ha estado afanosamente preparando uno de dos entradas para la carrera PPPRS en el Maker Faire de Kansas City. Desde que llegamos a 3er lugar general el año pasado, queremos hacer todo lo posible para ser mejor este año. A
RC Power ruedas para un niño con discapacidad

RC Power ruedas para un niño con discapacidad

Conoce a Oliver y su jeep de las ruedas de energía. Oliver es el nieto de un buen amigo mío. Oliver tiene Parálisis Cerebral, pero no le dejes que te engañe, le encanta montar alrededor en un vehículo de ruedas de energía apenas como a todos los otro
Hackear tu Xbox Controller con Sugru

Hackear tu Xbox Controller con Sugru

en este instructable te enseñaré cómo modificar tu control de Xbox con sugruPaso 1: materiales Materiales: un paquete de 5g de sugru Xbox control remotoPaso 2: Izquierda/derecha Stick Primero vas a querer abrir el paquete de sugru y pero suciedad Láv
Xbox clásico Essentials!

Xbox clásico Essentials!

El propósito de este instructable es servir como un suplemento a alguien que tiene modificadas ya sea suave o duro su Xbox Original (Lea: no la 360). Algunas partes también se aplican a la acción (no modificadas) Xbox así (en el caso de XBConnect). E
Pastel volcán en erupción

Pastel volcán en erupción

para cumpleaños 5 de mi hijo, decidí ir un poco las tuercas. 4 meses y unos $200,00 más adelante creo que he creado algo único.Quería un volcán que haría varias cosas...humoerupción con lavavibrary por último, hacer ruidos de volcán.Por favor revise
Estrella de la muerte pintado juego de lanzamiento de pelota

Estrella de la muerte pintado juego de lanzamiento de pelota

Para el tercer cumpleaños de mi hijo menor, he pintado una versión sencilla de la estrella de la muerte de Star Wars en una caja de cartón como parte de un juego de lanzamiento de pelota.Fue una fiesta temática de Star Wars y he añadido cestas de tie
Mando matar a interruptor

Mando matar a interruptor

Hay un montón de veces cuando es útil poder remotamente activar algo o desactivar. En este caso, mi hijo tiene un pequeño coche de Power Wheels. Quería ser capaz de apagar el coche de forma remota si conduce demasiado lejos o en la dirección equivoca