Sei sulla pagina 1di 12

Usando un controlador de Playstation 2 con su

proyecto Arduino
Le lun 16 de mayo de el ao 2016
Siempre que he echado un vistazo a travs de las estadsticas de trfico del sitio web en mi sitio web,
he notado que un claro favorito era el "Controlador Boceto PS2 para los CES y
Stuff" pgina. Tena ganas de escribir un artculo para la revista The Shed y as se propone un
artculo sobre el uso del controlador de PlayStation 2 en proyectos basados en Arduino. Ellos
aceptaron la idea y el artculo escrito posteriormente fue publicado en la edicin de febrero / marzo
de 2016. Que amablemente me han dado permiso para incluir el artculo en mi sitio web y me
proporcion un .pdf versin del artculo como impresa por compartir a travs de mi pgina web.
El artculo en su forma impresa se puede descargar
aqu: Shed_Magazine_Article_PS_controller.pdf
El artculo ms o menos como est redactado en LibreOffice: PS2_to_Arduino_V1b.pdf
No es que hay una diferencia entre ellos que no sea el formato.

Introduccin

Se me ocurri un da mientras estaba diseando una pequea caja con algunos joysticks y un par de
botones para controlar un proyecto mo, que me resultaba familiar. De repente me pregunt por qu
estaba tratando de construir lo que era esencialmente un dispositivo de juego desde cero cuando no
estaban perfectamente buenos dispositivos de juego alrededor que inclua las entradas que estaba
esperando para usar, as como un montn de otros botones y funciones mucho ms all de lo que
necesitaba . Y eran ms barato que el pequeo puado de componentes que iba a tener que comprar
para hacer mi propia.
Ha habido millones de dlares vertido en el desarrollo de los controladores de Playstation, y por lo
que son piezas muy sofisticadas, bien diseados, y de equipos ms resistentes que son ideales para
usar como una interfaz para proyectos de mecatrnica. A pesar de que la consola de juegos
Playstation 2 es ahora una pieza bastante anticuada de los equipos, las Playstation 2 Controlador
clones todava se hacen y se pueden adquirir a travs trademe extraordinariamente barato.
No slo eso, sino que son fciles de conectar a un Arduino. Adems de las dos palancas de mando de
alta calidad, todos los botones son sensibles a la presin, lo que aade an ms funcionalidad al
dispositivo.
Este artculo muestra cmo se conectara un controlador de Playstation 2 a un Arduino, y la
facilidad con que se puede utilizar para controlar varios dispositivos gracias a la Biblioteca de
Arduino PS2Xlib.

Las aplicaciones para los controladores


de PS2
Entonces, dnde se puede usar un controlador de Playstation, aparte de en una consola
Playstation?
Controlar el movimiento de un vehculo de ruedas u orugas.
El control de un brazo robtico.
Interactuar con un ordenador.
El control de una cmara de giro e inclinacin de montaje.
sistema de control de radio de bricolaje mediante el uso de un mdulo Bluetooth, o un mdulo
de radio para transmitir los comandos desde el controlador de Playstation 2 a otra Arduino que
est controlando el vehculo.
Luego est mi propio proyecto personal que utiliza el controlador de Playstation 2 como la
interfaz de piloto para un ROV (aka. Drone bajo el agua) .
Conexin del controlador de Playstation 2 a
la placa Arduino
Hay dos opciones para conectar el controlador a la Arduino. El mtodo para masoquistas, es cortar
el conector y conecte los cables en una fila de cabeceras de terminal o directamente soldarlos a
algn otro enchufe. Los colores de los cables en el diagrama a continuacin pueden ayudarle a
identificar qu cable es el que (El 7V - alambre de alimentacin del motor estruendo 9V es a
menudo de color gris). Una mejor opcin es retener el tapn y encontrar una toma de corriente
adecuada. En marcado contraste con la facilidad de comprar un controlador, la bsqueda de tomas
es mucho ms difcil. Es posible comprar los zcalos y las juntas de grupo de trabajo de
la RobotShop en los EE.UU.. Lamentablemente no hay proveedores locales. La alternativa ms
barata si usted est en un poco de piratera, es extraer las tomas desde un controlador de
PlayStation 2 a USB (aproximadamente 5 $ - 10 $ o menos a travs trademe ). He encontrado que
las lengetas de la parte posterior de los zcalos a ser bastante frgil y vale la pena incrustados en el
pegamento caliente una vez que haya algunos cables soldada a la misma.

Fuentes de Playstation 2 sockets

La siguiente ilustracin muestra el tapn de Playstation 2, y las etiquetas de pasador. Con el fin de
conectar con el Arduino slo tenemos que conectar los datos, mando, Planta, pines 3.3V, la
atencin, y el reloj. El pasador de motor Rumble slo necesita ser conectado a un suministro 7-9V si
se desea retroalimentacin estruendo.
Playstation 2 Plug prendedores

El lado del software


Gracias a uno de Bill Porter un fcil utilizar la biblioteca est disponible que permitir a los usuarios
utilizar un controlador de Playstation 2 (o incluso un controlador de Guitar Hero) con un
Arduino. Lo puede encontrar en el sitio web de Bill Porter: "la mente de Bill Porter" . Ms
especficamente aqu est el enlace a su pgina con enlaces a su Biblioteca y el cdigo fuente de la
biblioteca se puede obtener de Github , basta con hacer clic en " Descargar ZIP botn" en el lado
derecho de la pgina. Tambin puede descargar la biblioteca PS2X desde el repositorio de
bibliotecas que tengo uso en mis diferentes proyectos: Una coleccin de Arduino bibliotecas
utilizados en este proyecto . Una vez que tenga el zip archivo descargado, inicie su interfaz de
Arduino , y navegar por el men Sketch> Import Library> Aadir Biblioteca . Esto abrir
un dilogo donde se puede navegar a su descargado el zip Biblioteca PS2X archivo.
El boceto ejemplo que se incluye con la biblioteca es una gran demostracin de las capacidades de la
biblioteca y hace uso de todas las caractersticas de la Playstation 2 Controller. La manifestacin que
se describe en este artculo no es tan sofisticado, pero cubre los elementos esenciales necesarios
para utilizar un controlador de Playstation 2 para accionar motores, servos, y cambiar las cosas
dentro y fuera.
Para utilizar la biblioteca en un Arduino Croquis, que tiene que ser llamado usando los siguientes
comandos;
# include <PS2X_lib.h>
PS2X ps2x ;

En la configuracin de parte del dibujo el comando para que el Arduino sabe cmo el
controlador est conectado a ella, parece;
ps2x . config_gamepad ( 5 , 4 , 3 , 2 , falsa , falsa );

donde los nmeros son los pines digitales del Arduino, donde las Playstation 2 pines del controlador
estn conectados de la siguiente manera;
gamepad (reloj, comando, atencin, datos, activar sensibilidad a la presin, vibraciones
habilitado)
Si desea utilizar la funcin de botn de sensibilidad a la presin, en la lnea de comando anterior
debera ajustar esto a "verdadero" y si quera estruendo del motor disponible para proporcionar
retroalimentacin a continuacin, se debe establecer esto a "verdadero" tambin. Para el uso de la
funcin de vibracin por favor mire el ejemplo boceto que viene con la biblioteca PS2X.
Una vez que el controlador est configurado, el Arduino bucles a travs del bosquejo de forma
continua. Una vez por recorrer, el Arduino tiene que comunicarse con el controlador para reunir
todos los datos de entrada. Esto se realiza con el siguiente comando.
ps2x . read_gamepad ();
Ahora podemos leer lo que el control se ha utilizado. Las etiquetas utilizadas en la biblioteca PS2X
son muy lgico. El siguiente diagrama muestra cada uno de los nombres de los botones y palos.

nombres de los controles utilizados en la Biblioteca PS2X.

Los botones con las formas de colores tambin pueden hacer referencia a los
nombres PSB_TRIANGLE, PSB_CIRCLE, PSB_CROSS, y PSB_SQUARE.
Para usar la sensibilidad a la presin analgica en las teclas de los nombres son los mismos excepto
por la sustitucin de " PSAB" para " PSB". As que para permitir una lectura desde el botn verde del
tringulo el nombre sera la presin PSAB_GREEN o PSAB_TRIANGLE.
Los botones pueden ser presionados, pulsar y mantener pulsado, o a presin con una presin
variable, por lo que hay un nmero de mtodos que se pueden aplicar a los botones y
joystick. Los mtodos son; Button Pressed, Button, Y Analog. Estos son algunos ejemplos de
cmo se utilizan estos.
ps2x.ButtonPressed(PSB_RED) es una simple pulsacin del crculo rojo botn.
ps2x.Button(PSB_PAD_DOWN) es para el botn de abajo en la superficie que se presiona
y se mantiene.
ps2x.Analog(PSAB_CROSS)es el comando para la medicin de la presin aplicada a la " X "
botn, si la sensibilidad de presin se ha activado. Como se puede ver la " PSAB" forma del
nombre ha sido utilizado para el botn.
ps2x.Analog(PSS_RY)es el comando para obtener lecturas de la stick analgico
derecho en la direccin vertical.
Agruparlos
Para ilustrar cmo funciona esto, es un proyecto de ejemplo. Se hace uso de un motor de corriente
continua, un controlador electrnico de velocidad (en este caso un coche de RC ESC), una serie de
servos, y una matriz de LED diseado para ejecutarse en 7-12V. Si esto llegara a ser aplicado a un
proyecto real, podra ser un coche con la direccin, y dos servos adicionales para control de montaje
en una cmara de giro e inclinacin. Un solo LED no necesitara el transistor, pero he incluido una
matriz LED de 12V y el transistor para ilustrar que el otro alto voltaje y dispositivos de alta corriente
puede ser activado por un sistema de este tipo.
El no es nada exigente sobre el boceto y se puede ejecutar en cualquier Arduino Arduino o clon.
A continuacin se muestra un diagrama del circuito y componentes. El CES suministra 5.6V a los
servos a travs de su conector de control. El CES he utilizado tiene un interruptor en ella que
necesita ser activado antes de que el motor se ejecutar y antes de la electricidad est disponible
para los servos. Aparte de eso, los nicos componentes son las tres resistencias para la conexin con
el controlador de Playstation 2 y el transistor del LED. El condensador probablemente no es
necesario ya que la batera debe ser capaz de entregar un suministro relativamente suave.
Los controles que queremos usar son; un interruptor para la matriz de LED, y los dos joysticks
analgicos para accionar los servos y ESC. Debido a que el ESC "habla" Servo, slo lo tratan como
un servo en el cdigo.
Playstation 2 controles que se utilizan en esta demostracin.

Aqu est el boceto.


Puede descargar el boceto de aqu: PS2Controlv0.ino
/ *
PS2Controlv0.ino
21 de de septiembre de el ao 2015
Hamish Trolove - www.techmonkeybusiness.com

Este bosquejo ilustra el uso de un controlador de Playstation 2 para


accionar una serie de servos y un controlador electrnico de velocidad (ESC)
como se puede ver con un vehculo. Una luz LED se utiliza para ilustrar
el uso de los botones de PlayStation 2.

la asignacin de patillas son:

Salida de 3,3 V a PS2 pin rojo


de salida de 5V a 1Kohm tire hacia arriba de resistencias para PS2.
Pin D02 a PS2 pasador marrn (datos)
pin D03 a PS2 pin amarillo (atencin)
pin D04 a PS2 marcador naranja (comando)
D05 pin a pin azul PS2 (reloj)

Pin D06 ESC Seal Pin


Pin D07 de direccin asistida de seal pin
D08 pin a Servo 1 Seal pin
pin D09 a Servo 2 pines de seal

Pin D13 a LED Base Transistor

El CES suministros de conexin del servo 5.6V a los servos.


La codificacin tira de la biblioteca PS2X desarrollado por Bill Porter.
Ver www.billporter.info para la ltima de Bill Porter y para
descargar la biblioteca.

Los controles utilizados para este bosquejo son;


Stick derecho - eje X = servo de direccin a la izquierda / derecha, eje Y =
ESC adelante / atrs
Izquierda Stick - eje X = 2 Servo izquierda / derecha, eje Y = 1 Servo
izquierda / derecha

Tringulo = Cambia el LED


* /

# include <Servo.h> // Para el accionamiento de la CES y Servos


# include <PS2X_lib.h> // Biblioteca PS2 de Bill Porter

PS2X ps2x ; // El regulador PS2 Clase


Servo SteeringServo ; // Crear un objeto que representa servo SteeringServo
Servo ServoN1 ; // Crear un objeto que representa servo Servo 1
Servo ServoN2 ; // Crear un objeto que representa servo Servo 2
Servo ESCcontrol ; // Crear un objeto que representa servo ESC

const int ledPin = 13 ; // LED verde est en el pin digital 13

voltiles booleanos LEDHdlts ; // Faros LED de encendido / apagado de


palanca

int PlyStnRStickUpDn = 0 ; // Valor ledo de la PS2 stick derecho hacia


arriba / abajo.
int PlyStnRStickLtRt = 0 ; // Valor ledo de la PS2 stick derecho hacia
la izquierda / derecha
int PlyStnLStickUpDn = 0 ; // Valor ledo de la PS2 stick izquierdo hacia
arriba / abajo
int PlyStnLStickLtRt = 0 ; // Valor ledo de la PS2 stick izquierdo hacia
la izquierda / derecha

int ESCSetting = 90 ; // Configuracin de los DESC (grados).


int StrServoSetting = 90 ; // Ajuste de la direccin asistida
int ServoN1Setting = 90 ; // Ajuste para el Servo 1
int ServoN2Setting = 90 ; // Ajuste para el Servo 2

void setup ()
{
ps2x . config_gamepad ( 5 , 4 , 3 , 2 , falsa , falsa );
// pasadores de ajustes y configuraciones: GamePad (reloj, comando,
atencin, datos, Presiones, Rumble)
// Se han deshabilitado la sensibilidad a la presin y hacer ruido en este
caso.
pinMode ( ledPin , SALIDA ); // Establece el ledPin a la salida

LEDHdlts = false ; // Establece los faros en off


SteeringServo . adjuntar ( 7 ); // Une el servo de direccin a la patilla 7
ServoN1 . adjuntar ( 8 ); // Concede el Servo 1 al pin 8
ServoN2 . adjuntar ( 9 ); // Concede el Servo 2 a 9 pin
ESCcontrol . adjuntar ( 6 , 150 , 2250 ); // Concede el CES al pin 6
// El comando ESC unin anterior tambin incluye los ajustes de la seal
// para el mximo y mnimo que el CES reconocer. Esta
// vara para los diferentes CES.

// Establecer todos los CES y los servos a una posicin de 90 grados neutra
// esto evita el CES tratando de calibrar.
ESCcontrol . escribir ( 90 );
SteeringServo . escribir ( 90 );
ServoN1 . escribir ( 90 );
ServoN2 . escribir ( 90 );
retardo ( 5000 ); // Cinco segundos de retraso para permitir ESC y el
controlador de
// inicializar completamente.

void loop ()
{
ps2x . read_gamepad (); // Esto tiene que ser llamado al menos una vez por
segundo
// para obtener datos desde el controlador.

si ( ps2x . buttonPressed ( PSB_GREEN )) // Tringulo pulsa


{
LEDHdlts = ! LEDHdlts ; // Mueva el indicador de luz LED
}

// Lecturas analgica del palillo


PlyStnRStickUpDn = ps2x . Analog ( PSS_RY ); // Stick derecho hacia
arriba y abajo
PlyStnRStickLtRt = ps2x . Analog ( PSS_RX ); // Stick derecho izquierdo y
derecho
PlyStnLStickUpDn = ps2x . Analog ( PSS_LY ); // stick izquierdo hacia
arriba y abajo
PlyStnLStickLtRt = ps2x . Analog ( PSS_LX ); // Stick izquierdo Izquierda
y Derecha

// Las lecturas de los palillos de PS2 Controller son de 0 a 255


// con ser el neutro 128. Las posiciones son cero a
// la izquierda con los movimientos del eje X y para los movimientos del eje
Y.

// Variables para llevar a la configuracin de los CES y los servos


// Los valores de los Palos de PS2 se asignan a 0 a 180 grados

ESCSetting = mapa ( PlyStnRStickUpDn , - 256 , 256 , 0 , 179 );


StrServoSetting = mapa ( PlyStnRStickLtRt , - 256 , 256 , 0 , 179 );
ServoN1Setting = mapa ( PlyStnLStickUpDn , - 256 , 256 , 0 , 179 );
ServoN2Setting = mapa ( PlyStnLStickLtRt , - 256 , 256 , 0 , 179 );

// Escribir al servos o los CES

ESCcontrol . escribir ( ESCSetting );


SteeringServo . escribir ( StrServoSetting );
ServoN1 . escribir ( ServoN1Setting );
ServoN2 . escribir ( ServoN2Setting );

digitalWrite ( ledPin , LEDHdlts ); // Luz del LED indicador de estado


basado en los faros
de retardo ( 15 );
}

Todas las cosas van bien, cuando se conecta este y conecta en la batera, usted debe ser capaz de
empujar el botn tringulo para encender el LED y mover las palancas de mando para mover los
servos y hacer funcionar el motor.
Si no entra automticamente en modo analgico (como se indica por la luz roja en el
controlador), pulse el botn analgico . Esto permitir que las palancas de mando en el
controlador y puesto este asunto.
El circuito y el croquis estn diseados con un ESC coche en mente. Esto significa un comando de
servo de 90 grados es la posicin neutral . La ESCcontrol.write(90);lnea en la instalacin
de rutina establece el acelerador a la posicin neutral para permitir que el ESC para inicializar. Si
est utilizando un control de radio de la aeronave ESC tendr que inicializarla a 0
grados .
Dependiendo de la calidad de la Arduino que est utilizando puede que tenga que tener el USB
conectado al ordenador para alimentar el Arduino. De ordinario, el Arduino debera ser capaz de
correr en el ser 7.2v suministrada desde la batera de NiCd. Si usted tiene una batera 11.1V Li-Po, y
ESC diseado para adaptarse a ella, entonces no debera tener ningn problema.

Observacin final
Con un dispositivo de entrada tan sofisticado como el controlador de Playstation 2, hay una gran
cantidad de diferentes proyectos de mecatrnica que puedan interactuar con. La biblioteca PS2X
hace que sea muy fcil acceder a la gama completa de funciones disponibles desde el controlador de
Playstation 2. Por qu reinventar la rueda cuando ya hay revistas de ultra-alto rendimiento
disponibles a precios ms baratos que un par de componentes?

Potrebbero piacerti anche