La interacció entre Arduino i un comandament de PlayStation 2 és increïblement interessant per a projectes de robòtica i automatització. El comandament sense fil de la PS2 és un controlador versàtil i molt econòmic capaç d'oferir una diversitat d'entrades analògiques i digitals. Encara que en principi pugui semblar una tasca complexa, la integració d'aquests dos sistemes és força assequible gràcies a diferents llibreries i eines que ja s'han desenvolupat per facilitar el procés.
Un comandament de PS2 sense fils és una opció ergonòmica i econòmica per controlar robots, vehicles 4×4 o qualsevol tipus de projecte on es requereixi un control remot fluid i pràctic. L'ús d'aquest comandament amb Arduino és una solució que molts aficionats trien, ja que no només és barat, sinó que proporciona una experiència de control d'alta precisió gràcies a les dues palanques analògiques i un conjunt de 14 botons.
Avantatges d'utilitzar un comandament de PS2 amb Arduino
Una de les principals avantatges de l' comandament de PS2 és que és sense fil, cosa que permet dotar els teus projectes de mobilitat sense la limitació de cables. A més, és molt còmode de fer servir gràcies al seu disseny ergonòmic optimitzat per a llargues sessions de joc, cosa que ho fa perfecte per controlar robots o altres dispositius de manera prolongada sense afectar la precisió ni la capacitat de resposta.
Un altre aspecte important és el cost. Un comandament de PS2 clònic es pot aconseguir per menys de 10€. Per aquest preu, adquireixes un controlador amb una gran quantitat de botons i entrades analògiques, cosa que el converteix en una opció tremendament atractiva per a projectes de control remot.
Per integrar aquest comandament amb Arduino, a més del mateix comandament i el receptor, és comú utilitzar un convertidor lògic de nivell que permeti ajustar els senyals de 3,3V del comandament PS2 als 5V amb què treballa Arduino en la majoria de les seves versions.
materials necessaris
- Comandament de PS2 sense fil. Un clònic d'aquest comandament costa entre 9 i 10€.
- Receptor sense fil per al comandament, inclòs normalment al paquet.
- Conversor lògic de nivell. Aquest és necessari ja que Arduino opera a 5V i el comandament PS2 funciona amb senyals de 3,3V.
- Arduino. Pots fer servir qualsevol model, com el Arduino Uno, Mega o Mini.
- protoboard i cables per fer les connexions entre el receptor i l'Arduino.
Connexions i muntatge
El receptor sense fil que acompanya el comandament PS2 és la peça clau per a la comunicació entre tots dos. Aquest component es connecta al Arduino a través d'una sèrie de pins, que varien segons el receptor, però que generalment inclouen els pins de alimentació (5V i GND), data, clock i altres auxiliars com el pin datenció o vibració.
Una recomanació important és no refiar-se del codi de colors dels cables, ja que aquest pot variar depenent del fabricant. El millor és utilitzar un polímetre per verificar la funció de cadascun, cosa que evitarà possibles errors en la connexió.
Quan has identificat correctament els pins, pots fer servir una placa de prova per soldar o connectar els diferents senyals a l'Arduino, o si prefereixes muntar-ho tot de forma compacta, també pots soldar els cables directament al receptor, assegurant-te sempre que les connexions són les correctes.
És molt important fer servir un convertidor de nivell lògic ja que, com hem esmentat, el comandament PS2 treballa a 3,3V, mentre que la majoria de les plaques Arduino operen a 5V. Aquest convertidor permetrà que tots dos sistemes puguin “parlar” entre si sense causar danys.
Configuració i llibreria per al comandament PS2
Per controlar el comandament de PS2 amb Arduino, existeix una llibreria fonamental anomenada PS2X_lib, creada per Bill Porter, que facilita enormement l'ús d'aquest tipus de comandaments. Aquest programari us permetrà gestionar tots els senyals que el comandament envia a través del seu receptor sense fil.
La instal·lació d'aquesta llibreria és molt senzilla i la podeu trobar a GitHub. Un cop descarregada i instal·lada al teu entorn de desenvolupament d'Arduino, podràs començar a treballar-hi.
El següent pas serà configurar els pins al codi d'Arduino. T'hauràs d'assegurar de definir correctament els pins de clock, command, data y atenció que corresponen a les entrades i sortides del teu Arduino. Això és vital, ja que una incorrecta assignació de pins pot fer que el comandament no respongui correctament.
El fragment següent de codi mostra com configurar aquests pins:
#include
PS2X ps2x; // crear la clase para el mando PS2
int error; // variable para errores
#define PS2_CLK 34
#define PS2_CMD 24
#define PS2_ATT 32
#define PS2_DAT 22
// Configuramos los pines para el mando
error = ps2x.config_gamepad(PS2_CLK, PS2_CMD, PS2_ATT, PS2_DAT, true, true);
Un cop configurats els pins, pots començar a llegir els senyals que envia el comandament a través del codi. La llibreria proporciona mètodes específics per verificar si un botó ha estat premut, així com per obtenir els valors analògics dels joysticks del comandament.
Lectura de botons
El comandament PS2 compta amb fins 14 botons, distribuïts entre la part davantera i posterior del comandament. Per llegir els botons frontals i posteriors pots utilitzar el codi següent:
if (ps2x.Button(PSB_PAD_UP)) {
Serial.println("Arriba");
} else if (ps2x.Button(PSB_PAD_DOWN)) {
Serial.println("Abajo");
} else if (ps2x.Button(PSB_PAD_LEFT)) {
Serial.println("Izquierda");
} else if (ps2x.Button(PSB_PAD_RIGHT)) {
Serial.println("Derecha");
}
A més dels botons de direcció, podeu llegir l'activació de botons d'acció com ara Cercle, X, Quadrat i Triangle, de forma similar.
Lectura de Joysticks
Els joystick analògics del comandament de PS2 proporcionen valors continus que podeu utilitzar per moure motors o controlar la direcció i velocitat d'un robot, per exemple. Els valors van de 0 a 255, i 127 és el valor central quan els joysticks estan en repòs.
int LX = ps2x.Analog(PSS_LX);
int LY = ps2x.Analog(PSS_LY);
int RX = ps2x.Analog(PSS_RX);
int RY = ps2x.Analog(PSS_RY);
Serial.print("Stick Values: ");
Serial.print(LX);Serial.print(",");
Serial.print(LY);Serial.print(",");
Serial.print(RX);Serial.print(",");
Serial.println(RY);
Amb aquests valors pots controlar la velocitat dels motors en funció de quanta pressió s'exerceixi sobre les palanques del comandament.
exemples pràctics
Controlar un robot rover 4×4 amb un comandament de PS2 és un exemple clàssic de les aplicacions daquest tipus de controladors. Aquest muntatge es torna especialment fàcil amb una Arduino Mega, ja que ofereix més pins i més memòria, cosa que permet gestionar diversos motors i sensors al mateix temps.
El codi següent mostra un exemple bàsic de com controlar un rover utilitzant els botons de direcció del comandament:
void loop() {
ps2x.read_gamepad();
if (ps2x.Button(PSB_PAD_UP)) {
avance();
} else if (ps2x.Button(PSB_PAD_DOWN)) {
retroceso();
} else if (ps2x.Button(PSB_PAD_LEFT)) {
giroIzquierda();
} else if (ps2x.Button(PSB_PAD_RIGHT)) {
giroDerecha();
} else {
paro();
}
}
Aquest és un exemple senzill de com els diferents botons del comandament poden controlar el moviment del vehicle, però lús dels joysticks permetria realitzar moviments més suaus i precisos, controlant tant la direcció com la velocitat del robot.
Amb una correcta integració i configuració, aquest comandament es converteix en una eina potentíssima per controlar gairebé qualsevol projecte electrònic basat en Arduino.
Combinar un comandament de PlayStation 2 amb Arduino obre un ampli ventall de possibilitats per controlar projectes de robots, sistemes automatitzats o fins i tot sistemes més simples com a braços robòtics. La gran quantitat de botons i la precisió dels joysticks fan que aquest controlador sigui una opció excel·lent per als que busquen afegir control remot als seus muntatges amb una interfície ergonòmica i familiar.