Verkaufsname: 2018 Arduino Shield Expansion Board 6-12V with 4 Channels Motors Servos Ports PS2 Joystick Remote Control
Ich habe die Erweiterungsplatine im Set inclusive PS2 Controller/Empfangsmodul, Arduino Uno und USB Kabel, beim schnellen Ali für unter 26€ gekauft.
!!!Vorab um ein paar Fehler zu vermeiden, ist es sinnvoll eine externe Spannungsquelle an den Arduino anzuschliessen, der Strom über den USB Port reicht leider nicht immer aus!!!
Aktuelle Status ist noch Draft, bitte meckern 😉
Überblick
Die Platine (hier in Version 2.1) ist beeindruckend vielfältig. Die wichtigsten Daten hier im Überblick:
Playstation 2 Anschluss für einen Controller-Empfänger.
4 Motor Anschlüsse mit Motorbrücke
6 Servoanschlüsse – 2 „Normale“ + 4 Über den PWM Chip
I2C Anschluss nach außen geführt
Anschluss für einen HC-SR04 oder kompatiblen Sonarsensor
Anschluss für ein HC-06 kompatibles Bluetooth Modul
Auf der Zusatzplatine gibt es zwei direkt mit dem Arduino verbundene Servos und vier die über die Motorbrücke über den I2C Bus verbunden sind.
2 Direkt ansteuerbare Servos
Pin assignment
Servo
Arduino Pin
1
5
2
6
Test programme
Die Anschlüsse befinden sich direkt neben dem Stromanschluss. Der Masse Pol des Servos begfindet sich an der Platinenkante. Die beiden Servos hängen an den Ardunio Pins 5 und 6. Sie sind über die, in der Arduino-Bibliothek integrierte Servosteuerung, regelbar. Hier ein Beispiel:
Die Adafruit Servo PWM Bibliothek ist auch in der Adafruit Motor Bibliothek eingebunden, somit können die Servos auch über diese angesteuert werden. Dies ist im Beispiel des Herstellers der Fall.
PS2 Schnittstelle
Für die PS2 Schnittstelle gibt es eine Bibliothek die sich PS2X nennt und auf Github verfügbar ist hier der Link:
Die Pinbelgung für den Controller ist wie folg zu definieren:
Pin
Description
12
DAT
11
Command Prompt
10
SEL
13
CLK
Test programme
Ich habe mit Hilfe des Beispiele in der Bibliothek mein eigenes Testprogramm erstellt. Dieses fragt alle Knöpfe und die Joystick-Positionen ab. Ein paar Eigenheiten die mir aufgefallen sind habe ich ebenfalls gleich behoben:
Das erste Initialisieren des Controllers geht meist schief, deshalb versuche ich es so lange bis es geklappt hat.
Erstes auslesen klappt nicht immer, überspringe ich.
Mein Beispiel funktioniert aktuell nur für den Dual Shock Controller, alle Anderen sind ausgeschlossen.
Da die Farbknöpfe identisch mit den Formknöpfen sind habe ich die Farbknöpfe aus dem Array herausgenommen.
Den HC-SR04 habe ich schon einmal in folgenden Artikel getestet. Das Programm aus dem Artikel mit angepasster Pinbelegung kann nachfolgend herunter geladen werden:
Der I2C Bus ist auf der Oberseite der Platine gut beschriftet. Ich war mir unsicher welchen Mehrwehrt ich hier erzeugen könnte. Ich habe nur getestet ob die herausgeführte Schnittestelle auch funktioniert. Zum Test habe ich ein HMC5883L am I2C Bus angeschlossen, um einen Verbraucher zu haben. Zum testen benutzte ich denn einen I2C Scanner den ich im Internet mal gefunden und etwas angepasst habe.
Und siehe da es funktioniert … nicht wirklich überraschend.
HC-06 Bluetooth
Ich habe aktuell weder eine HC-06 kompatibles Board zur Hand noch einen Anwendungszweck hierfür also lasse ich diesen Test mal aus. Schickt mir ein HC kompatibles Modul und ich teste es 😉
Conclusion
Ich finde dies Platine toll, sie bietet fast alles um einen kleinen Roboter aufzubauen. Der hohe Stromverbrauch ist sicherlich ein Nachteil, jedoch kommt der nicht zuletzt auch von PS2 Empfänger.
Ich habe mir das Board im set gekauft weil ich eine Fernsteuerung brauchte. Zudem bietet es noch Anschlussmöglichkeiten für 4 Motoren, 6 Servos, einen Entfernungssenors, 1 Bluetooth Modul und diverser I2C Geräte. Mehr kann man für den Paketpreis von unte 25 € nicht erwarten. Wer nur die Platine braucht, kann sie für rund 16€ erwerben.
Problems
Alles verhält sich doof …
Wenn nichts so richtig Funktioniert, die Servos ruckeln oder es sieht nach dauernden Resets aus, kann es an den folgenden Punkten liegen:
Die Spannung ist zu gering – Externe Spannungsquelle anschliessen
Falsche Version des Boards – Die getestete ist V2.1
Anderer Servo Hersteller – Ich verwende Billigware aus Fernost 95G, andere Servos brauchen evtl. andere Frequenzen.
Servo 3-6 gehen nicht
Achtung Servos können nicht mit der Standard Arduino Servo implementierung angesprochen werden, bitte die entsprechende Adafruit Bibliothek verwenden (Sieht Beispiel).
Anderer Servo Hersteller – Ich verwende Billigware aus Fernost 95G, andere Servos brauchen evtl. andere Frequenzen.
Unkontrollierte Tastendrücke
Beim Aufbau meines eigenen Testbeispiels hatte ich das Problem, dass immer mal wieder eine Meldung kam, dass alle Tasten gedrückt wurden. Nach Tests unterschiedlicher Optionen, einschliesslich der Anpassung der Clock in der Lib, habe ich heraus gefunden, dass es an den fehlenden 50ms Delay am Ende der Loop Funktion lag. Entfernt man diese scheint dem PS2 Empfänger das auslesen zu schnell zu gehen und es kommt zu Fehlern.
Keine Funktion
Da ich die Verkabelung des Empfängers nicht selbst gemacht habe, ist dies kein Fehler der bei mir auftreten konnte, aber auf der Entwicklerseite der PS2x Bibliothek wird darauf hingewiesen, dass immer mal wieder Probleme bei der Verkabelung auftreten können. Hier der Link: