Archiv der Kategorie: Zubehör

Arduino PS2 Controller Platine Grundlagen

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 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 aussen geführt
  • Anschluss für einen HC-SR04 oder kompatiblen Sonarsensor
  • Anschluss für ein HC-06 kompatibles Bluetooth modul
  • Stromanschluss 6-9V
  • Stromanschluss Klemmen für +5V???
  • JMP Jumper zum deaktivieren on Board Spannung
  • JP1 Zur deaktiveren der 5V Spannung???

Ansichten

Beschaltung

Beschriftete Frontansicht

Einsatz

  • Als Morotplatine mit zuätzlichen Erweiterungen
  • Zur Steuerung von Robotern
  • Fernsteuerung diverser Fahrzeuge

Programmierung

Die Einbindung von Bibliotheken im Generellen ist unter folgenden Link beschrieben, hier werde ich nicht mehr näher darauf eingehen.
http://fambach.net/arduino-ide#Bibliotheken

Motorsteuerung

Die Motorbrücke wird über den I2C Bus angesteuert und ist mit der Adafruit Motor V2 Bibliothek kompatibel. Die Adresse ist 0x60.

Diese ist über den folgenden Link erhältlich:

https://github.com/adafruit/Adafruit_Motor_Shield_V2_Library

Deren Verwendung habe ich schon einmal im Artikel zur Motor Platine V2 beschrieben :

Das Programm des Artikels habe ich einfach mal auf den UNO dieses Projektes gespielt und siehe da die Motoren drehen.

Servos

Es gibt 2 direkt mit dem Arduino verbundene Servos und 4 die über die Motorbrücke über den I2C Bus verbunden sind.

2 Direkt ansteuerbare Servos

Pinbelegung

Servo Arduino Pin
15
26

Testprogramm

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:

P.S. Sollte die Servos unfug machen, mal eine extene Spannungsquelle anschliessen die USB Spannung reicht für dieses Board nicht aus.

4 über PWM ansteuerbare Servos

Für die Servos gibt es ebenfalls von Adafruit eine Servo-Treiber Bibliothek:

https://github.com/adafruit/Adafruit-PWM-Servo-Driver-Library

Testprogramm

Eingebunden werden kann die Bibliothek sowohl über das GitHub Zip als auch über den Labrary Manager.

Pinbelegung

Servo Nummer Servo PWM Pins
(Nicht Arduino Pins)
10
21
314
415

Das folgende Programm lassen sich alle Servos drehen.

Ich habe noch eine zweite Version bei der die Position des Servos in Grad angegeben werden kann:

Die Adafruit Servo PWM Biliothek 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:

https://github.com/madsci1016/Arduino-PS2X/zipball/5d2be701af64d826d268301d83119a6d2ad04f15

Pinbelegung

Die Pinbelgung für den Controller ist wie folg zu definieren:

PinBeschreibung
12DAT
11CMD
10SEL
13CLK

Testprogramm

Als Testprogramm habe ich das Beispiel aus der Bibliothek verwendet und nur die Pins angepasst:

SR04

Pinbelegung

PinFunktion
7 Echo
8Trigger

Testprogramm

Den HC-SR04 habe ich schon einmal in folgenden Artikel getestet. Das Programm aus dem Artikel habe ich bezüglich der Pinbelegung angepasst und erfolgreich getestet.

http://fambach.net/ardunino-mit-dht10

I2C

Der I2C Bus ist auf der Oberseite der Platine gut beschriftet. Ich war mir unsicher welchen Mehrwehrt ich hier erzeugen könnte. Somit habe ich 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 😉

Fazit

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.

Probleme

Nichts geht, die Servos Ruckeln, alles ferhält sich doof …

Wenn nichts so richtig Funktioniert 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.

Projekte

Natürlich will ich die hier erworbenen Kenntnisse in einen kleinen Projekt anwenden. Sehr wahrscheinlich kommt ein Ferngesteuertes Auto dabei heraus.

Der Link zum Projekt kommt noch nach Fertigstellung.

Quellen

https://www.google.com/search?q=servo+daten+sc90&oq=servo+daten+sc90&aqs=chrome..69i57.3435j0j7&sourceid=chrome&ie=UTF-8

http://www.7gp.cn/archives/195  (Hersteller Link)
http://www.7gp.cn/archives/409  (Hersteller Link) 
http://www.7gp.cn/archives/475  (Hersteller Link) 

https://github.com/madsci1016/Arduino-PS2X/zipball/5d2be701af64d826d268301d83119a6d2ad04f15

Arduino Motor Platine V1

Die Motorplatine ist perfekt für kleine Roboter-Projekte geeignet, bei denen 2 bis 4 Antriebsmotoren verwendet werden.

Zusätzlich bietet sie Anschlüsse für zwei Servos und die analogen Ports und mit ihnen auch der I2C Bus, sind durchgeschleift.

Überblick

Hier die wichtigsten Daten im Überblick:

  • 2 Servoanschlüsse
  • 2 Motorbrücken
  • 1 Schieberegistert
  • 1 Resetschalter
  • 1 Externer Spannungsanschluss
  • 1 Power LED
  • Jumper – zur Unterbrechung der Boardspannung

Ansicht

Beschaltung

Einsatz

  • Zwei-Achs-Plotter
  • 2 oder 4 Rad-Roboter
  • Pan/Tilt Stativ

Motorbrücken

Mit Hilfe der Motorbrücken können 4 Gleichstrommotoren oder 2  Schrittmotoren (mit 4 Leitungen) betrieben werden. Die L293D Motorbrücken können Motoren bis zu einem Strom vom 600mA versorgen. (Kurzzeitig bis zu 1,2 A). Wird ein höherer Strom benötigt können weitere L293D IC’s huckepack auf die vorhandenen aufgelötet und parallel betrieben werden.

Das Schieberegister, ermöglicht es mit nur 3 Pins des Arduinos die Drehrichtungen der Motoren zu bestimmen.

(evtl. mal einen Beitrag zum Scheiberegister einfügen…).

Für die Ansteuerung der Motoren gibt es unteranderem eine Bibliothek von Adarfruit. Diese kann über Git oder die Arduino GUI herunter geladen werden (siehe unten).

https://github.com/adafruit/Adafruit-Motor-Shield-library/zipball/master

Die Motorbrücken belegen die folgenden Pins am Arduino:

  • Pin 11 Motor 1 – Geschwindigkeit
  • Pin   3  Motor 2 – Geschwindigkeit
  • Pin   5  Motor 3 – Geschwindigkeit
  • Pin   6  Motor 4 – Geschwindigkeit
  • Pin   4, 7, 8, 12 Richtungsvorgabe für alle Motoren über 74HC595 Register.

Servoanschlüsse

Das Bord verfügt über zwei Steckplätze für Standardservos. Jeder Steckplatz hat drei Pins jeweils einen für Strom, Masse und den Steuereingang.

Die Steuereingänge belegen die folgenden Pins am Arduino:

  • Pin 9    – Servo 1
  • Pin 10 – Servo 2

Externe Spannungsversorgung

Hier können von 4.5V bis zu 25V an Schraubklemmen angelegt werden. Bitte auf die Polung achten sonst rauchts …

Kompatibilität

Der Shield kann mit folgenden Boards verwendet werden.

Arduino Uno

Arduino Uno

Arduino Leonardo

Arduino Leonardo

Uno + WiFi

Bedingt kompatibel, es wird eine externe Spannungquelle benötigt um mehr als einen Servo zu betreiben.

Arduino Uno + WiFi

Software

Bibliothek installieren

Ich habe mir die Bibliothek über GitHub herunter geladen und sie manuell installiert. Über die Arduino GUI geht es etwas einfacher.

Bibliotheksmanger aufrufen:

Nach „motor“ suchen und die „Adafruit Motor Shield Library“ in der letzten Version installieren.  Aufgepasst es gibt eine „Adafruit Motor Shield V2“ diese kann leider nicht für die V1 Platine verwendet werden. (Motorplatine V2).

Servos ansteuern

Im Grunde werden die Servos ganz normal über die Arduino Bibliothek angesprochen. Wichtig für die Motorplatine ist nur, dass hier die Servos an Port 9 und 10 angeschlossen sind.

Meine Billigservos, harkeln einwenig an den Endpunkten, diese könnte man noch ausschliessen indem man die Konstanten min und max anpasst.

Über den Faktor kann die Schrittgröße bestimmt werden und über wait die wartezeit zwischen den einzelnen Schritten.

#include  // inlcude library for servos

// init servos 
#define SERVO_PIN_1 9
#define SERVO_PIN_2 10
Servo servo1;
Servo servo2;

void setup() {

  // initialize serial port
  Serial.begin(9600);
  
  // leonardo workaround waiting for serial port to be ok
  while(!Serial)delay(1);

  // init servos
  Serial.print("Init Servos .");
  servo1.attach(SERVO_PIN_1); Serial.print(".");
  servo2.attach(SERVO_PIN_2); Serial.println(".");
}

const int min = 0, max = 255;
int  cur = 0, factor = 1, wait = 10;

void loop() {
  // put your main code here, to run repeatedly:
  if(cur <= min){ // change to positive direction
    cur = 0; factor *= -1;
    Serial.println("Start positive direction");
  }else if( cur >= 255){ // change to negative direction
    cur = 255; factor *= -1;
    Serial.println("Start negative direction");
  } 

  Serial.print(".");
  servo1.write(cur);
  servo2.write(cur);
  
  cur += factor;
  delay(wait);
}

ServoTest.ino

Motoren Ansteuern

Für einen ersten Test habe ich das vorhandene Beispielprogramm verwendet.

Einfach auswählen, kopilieren und schon läuft Motor 1.

Um alle 4 Motoren zu testen, was nützlich erscheint um die Drehrichtungen (Polung) zu überprüfen, habe ich die Datei wie folgt angepasst.

MotorTest2.ino

Die Ausgabe sollte dann wie folgt aussehen.

Quellen

https://playground.arduino.cc/Main/AdafruitMotorShield

https://learn.adafruit.com/adafruit-motor-shield/library-install

https://learn.adafruit.com/adafruit-motor-shield

https://learn.adafruit.com/adafruit-motor-shield/faq

 

Arduino Prototyp Platine (V1)

Dieser Shield vereinfacht den schnellen prototypischen Aufbau von Schaltungen.

Überblick

Die Platine hat folgende Zusätze:

  • 1 Steckplatine
  • 1 Reset Taster
  • 1 Beschaltbarer Taster
  • 2 Status LEDs (Bei den neueren Boards als SMD LED)
  • Durchgeführte Pins zur Verdrahtung auf der Steckplatine

Etwas störend ist, dass der freie Schalter und die LED’s  nicht mit den vorhandenen Pin-Header Buchsen verbunden sind. Somit muss erst eine Verbindung über ein Kabel oder zusätzlich eingelötete Pin-Header Buchsen geschaffen werden.

Kompatibilität

Der Shield kann mit folgenden Boards verwendet werden.

Arduino Uno

Arduino Uno

Arduino Leonardo

Arduino Leonardo

WeMos D1

Ist Kompatibel mit ein paar Einschränkungen:

  • Nur 1 Analoger Port
  • IOs mit 3v anstatt 5 V

WeMos D1 R2 ESP8266

Beispiel Projekte

DHT10 mit Arduino Uno

Quellen

https://store.arduino.cc/proto-shield-rev3-uno-size

https://www.exp-tech.de/module/prototyping/4193/arduino-proto-shield-rev3-assembled

https://www.adafruit.com/product/51