Fischertechnik Interface Arduino

Community-Firmware (cfw), Selbstbaucontroller (TX-Pi, ftduino, usw.), usw.
Forumsregeln
Bitte beachte die Forumsregeln!
Antworten
fischerpiet
Beiträge: 5
Registriert: 22 Dez 2019, 18:01

Fischertechnik Interface Arduino

Beitrag von fischerpiet » 22 Dez 2019, 18:11

Liebe ftc-ler,

ich habe letztens in der Schule (bin Lehrer) uralten vergessenen Fischertechnik Kram (computing Baukästen, Teach-In Roboter) gefunden und habe gedacht, man könne das wieder mal reaktivieren. Als Kind wollte ich immer diesen Roboter haben.

Mit dem CVK-Interface konnte ich nichts mehr anfangen, wegen Parallelport. Ich habe mir gedacht, ich baue ein neues auf Arduino Basis. War gar nicht schwer. Ist die Story interessant? Kosten liegen bei weniger als 20 EUR für das gesamte Interface.

Es gibt natürlich den ftDuino schon, aber was solls.

Bild anbei.

LG
Peter
ftarduino.JPG
ftarduino.JPG (118.71 KiB) 910 mal betrachtet

PHabermehl
Moderator
Beiträge: 1414
Registriert: 20 Dez 2014, 22:59
Wohnort: Bad Hersfeld

Re: Fischertechnik Interface Arduino

Beitrag von PHabermehl » 22 Dez 2019, 18:35

Hallo Peter,
klar ist das Projekt interessant. Wäre schön, wenn du es mit uns teilst.

Ich habe den Thread mal in den Bereich Community-Projekte verschoben, weil es sich nicht um Original fischertechnik handelt...

Schöne Weihnachten!
Peter
Moderative Beiträge sind explizit gekennzeichnet!

juh
Beiträge: 346
Registriert: 23 Jan 2012, 13:48

Re: Fischertechnik Interface Arduino

Beitrag von juh » 22 Dez 2019, 22:43

Hallo Peter,

und willkommen im Forum. Auf dem Foto sieht man wenig. Ich vermute, das ist ein Arduino UNO mit dem neueren Adafruit motor shield, oder? In jedem Fall interessant, wie Du den prototyping-Bereich des shields genutzt hast, um das alte Flachbandkabel anzuschließen! Da fände ich einen "Schaltplan" in jedem Fall interessant.

lg
Jan
Meine fischertechnik Designs für den 3D-Druck: https://www.thingiverse.com/juh/designs

NBGer
Beiträge: 254
Registriert: 02 Aug 2013, 18:26
Wohnort: Nürnberg

Re: Fischertechnik Interface Arduino

Beitrag von NBGer » 23 Dez 2019, 10:09

Hallo und herzlich willkommen,

sieht interessant aus!

also, ich bin mir fast sicher, dass es sich um ein MotorShield V2 handelt! Ich hab so Teile hier, sieht identisch aus!
und das Prototype-Feld darauf ist wirklich praktisch!

falls es nur um das Interfacing geht, google mal nach "Adapter Centronics USB", es gibt Adapter auf den alten Parallelport für ein paar wenige Euro!

fischerpiet
Beiträge: 5
Registriert: 22 Dez 2019, 18:01

Re: Fischertechnik Interface Arduino

Beitrag von fischerpiet » 23 Dez 2019, 16:30

Dann also eine kurze Dokumentation von "FTControl".

Die Basis bildet ein adafruit Motor shield v2, hier ein Nachbau von Ebay für 11 EUR.
Der "Schaltplan" sieht so chaotisch aus wie in echt. Auch in echt sind die Kabel so chaotisch verlegt.
Ich habe mich an die Belegung aus der ft-pedia 2/2017 gehalten (Bild angehängt).

Die Eingänge E1-E8 liegen auf den Digitalpins 2-9.
Die Potis EX und EY liegen auf A0 bzw. A1
Die Motorausgänge wurden an die Klemmen angeschlossen.
Der grüne COM Anschluss wurde zu einem Pluspol (5V) umgewidmet. Der rote COM Anschluss zum Arduino GND geführt.

Die Fischertechnikpotis sind mit drei Anschlüssen angeschlossen, die äußeren 5V/GND, in der Mitte das Signal.
Ein Wannenstecker wäre hier schön, hatte ich jedoch nicht zur Hand. Daher kommen hier noch zwei kurze Stiftleisten (< 1 EUR) zum Einsatz.

Die Eingänge haben ein gemeinsames Minus (roter COM), die Eingänge sind auf dem Arduino mit INPUT_PULLUP konfiguriert, damit kein externer Pullup/Pulldown Widerstand nötig ist. Die Schalter sind also in Ruhe auf Logisch HIGH/1. Durch Druck werden die nach Masse gezogen, dann also LOW/0.

Die Motoransteuerung ist nach adafruit Lib unverändert.

Interessanter wäre noch eine Bibliothek. Die ist gerade in Arbeit und wird nachgereicht. Anbei aber immerhin ein kleines Programm, dass den Teach-In Roboter aus dem Computing Kasten von ca. 1985 steuern kann. Teach-In Funktion ist hier noch nicht implementiert.
Knopf 7/8 - Steuerung Arm
Knopf 5/6 - Steuerung Drehkranz
Knopf 3/4 - Magnet an/aus
Knopf 1/2 - noch frei (aufnehmen/abspielen)

Motor 4 - Base
Motor 2 - Magnet
Motor 3 - Arm

Die Potis werden dafür verwendet, einen gültigen Fahrbereich zu definieren. Daher die zusätzlichen if-Statements.

Gruß
Peter

FTControl-fritzing.png
FTControl-fritzing.png (277.59 KiB) 398 mal betrachtet
FT-Interface.png
FT-Interface.png (33.1 KiB) 752 mal betrachtet

Code: Alles auswählen

#include <Wire.h>
#include <Adafruit_MotorShield.h>

#define bE8 9
#define bE7 8
#define bE6 7
#define bE5 6
#define bE4 5
#define bE3 4
#define bE2 12
#define bE1 11

#define pEY A1
#define pEX A0

Adafruit_MotorShield AFMS = Adafruit_MotorShield(); 
Adafruit_DCMotor *m1 = AFMS.getMotor(1);
Adafruit_DCMotor *m2 = AFMS.getMotor(2);
Adafruit_DCMotor *m3 = AFMS.getMotor(3);
Adafruit_DCMotor *m4 = AFMS.getMotor(4);

int magnet = 0;
void setup() {
  Serial.begin(9600);           // set up Serial library at 9600 bps
  Serial.println("Adafruit Motorshield v2 - DC Motor test!");

  AFMS.begin();  // create with the default frequency 1.6KHz
  m1->setSpeed(150);
  m1->run(FORWARD);
  m1->run(RELEASE);

  m2->setSpeed(150);
  m2->run(FORWARD);
  m2->run(RELEASE);

  m3->setSpeed(150);
  m3->run(FORWARD);
  m3->run(RELEASE);

  m4->setSpeed(150);
  m4->run(FORWARD);
  m4->run(RELEASE);

  pinMode(pEX, INPUT);
  pinMode(pEY, INPUT);

  pinMode(bE8, INPUT_PULLUP);
  pinMode(bE7, INPUT_PULLUP);
  pinMode(bE6, INPUT_PULLUP);
  pinMode(bE5, INPUT_PULLUP);
  pinMode(bE4, INPUT_PULLUP);
  pinMode(bE3, INPUT_PULLUP);
  pinMode(bE2, INPUT_PULLUP);
  pinMode(bE1, INPUT_PULLUP);
}

uint8_t checkE8() {
  return digitalRead(bE8);
}

uint8_t checkE7() {
  return digitalRead(bE7);
}

uint8_t checkE6() {
  return digitalRead(bE6);
}

uint8_t checkE5() {
  return digitalRead(bE5);
}

uint8_t checkE4() {
  return digitalRead(bE4);
}

uint8_t checkE3() {
  return digitalRead(bE3);
}

uint8_t checkE2() {
  return digitalRead(bE2);
}

uint8_t checkE1() {
  return digitalRead(bE1);
}

int checkEX() {
  return analogRead(pEX);
}

int checkEY() {
  return analogRead(pEY);
}

void debug(String s) {
  //  Serial.println(s);
}

void loop() {
  if (checkE7() == LOW) {
    if (checkEY() > 345) {
      debug("arm-forward");
      m3->run(FORWARD);
      m3->setSpeed(250);
    } else {
      debug("arm-stop");
      m3->run(RELEASE);
    }  
  } else if (checkE8() == LOW) {
    if (checkEY() < 1020) {
      debug("arm-backward");
      m3->run(BACKWARD);
      m3->setSpeed(250);  
    } else {
      debug("arm-stop");
      m3->run(RELEASE);
    }  
  } else {
    m3->run(RELEASE);
    debug("arm-off");
  }

  if (checkE6() == LOW) {
    if (checkEX() < 940) {
      debug("base-forward");
      m4->run(FORWARD);
      m4->setSpeed(250);  
    } else {
      debug("base-stop");
      m4->run(RELEASE);
    }  
  } else if (checkE5() == LOW) {
    if (checkEX() > 680) {
      debug("base-backward");
      m4->run(BACKWARD);
      m4->setSpeed(250);  
    } else {
      debug("base-stop");
      m4->run(RELEASE);
    }  
  } else {
    m4->run(RELEASE);
    debug("base-off");
  }

  if (checkE3() == LOW) {
     magnet = 1;
     m2->run(FORWARD);
  } else if (checkE4() == LOW) {
     magnet = 0;
     m2->run(RELEASE);
  }
  if (magnet == 1)
     debug("magnet-on");
  else
     debug("magnet-off");


  debug("base: ");
  debug("" + checkEX());

  debug("arm: ");
  debug("" + checkEY());

  debug("");
  debug("");
  
  delay(100);
}
EDIT: musste den Schaltplan nochmal ändern.
Zuletzt geändert von fischerpiet am 28 Dez 2019, 13:39, insgesamt 1-mal geändert.

PHabermehl
Moderator
Beiträge: 1414
Registriert: 20 Dez 2014, 22:59
Wohnort: Bad Hersfeld

Re: Fischertechnik Interface Arduino

Beitrag von PHabermehl » 23 Dez 2019, 17:22

Na das sieht doch schon sehr gut aus.
Vielen Dank für's Teilen, das Thema Arduino und fischertechnik ist immer interessant.

Frohes Fest und Gruß
Peter
Moderative Beiträge sind explizit gekennzeichnet!

Benutzeravatar
Dirk Fox
ft:pedia-Herausgeber
Beiträge: 1293
Registriert: 01 Nov 2010, 00:49
Wohnort: Karlsruhe
Kontaktdaten:

Re: Fischertechnik Interface Arduino

Beitrag von Dirk Fox » 25 Dez 2019, 00:45

Hallo Peter,

schreibst Du uns Deine "Wiederbelebung" der 1985er Computing-Modelle über ein Arduino-Interface einmal als Beitrag für die ft:pedia zusammen? Sehr spannend... und vielleicht sogar eine Lösung, die das eine oder andere Modell in einer Schule aus der Versenkung zaubern kann.

Beste Grüße und schöne Weihnachten,
Dirk
http://fischertechnik-blog.de - technikgeschichte-mit-fischertechnik.de - http://ftpedia.de

fischerpiet
Beiträge: 5
Registriert: 22 Dez 2019, 18:01

Re: Fischertechnik Interface Arduino

Beitrag von fischerpiet » 25 Dez 2019, 01:05

@Dirk; das will ich wohl machen, dauert aber noch ein paar Tage.

Anbei die entsprechende Bibliothek für die Arduino IDE und "FTControl".
(Oh ZIP ist im Forum verboten, also hier als Link:)

http://sis.leibniz-remscheid.de/FTControlV1.1.zip

Weiterhin frohes Fest!

EDIT: musste die Bibliothek nochmal updaten
Zuletzt geändert von fischerpiet am 28 Dez 2019, 13:36, insgesamt 1-mal geändert.

Karl
Beiträge: 737
Registriert: 24 Sep 2016, 17:28
Wohnort: Ruhrgebiet

Re: Fischertechnik Interface Arduino

Beitrag von Karl » 25 Dez 2019, 03:48

Hallo,
normalerweise funktionieren die Standard -USB-Centronics, bzw. -USB-Parallel-Wandler nur an Druckern.
Knobloch scheint noch einige für Fischertechnik-Interfaces geeignete Adapter zu haben.
Einfach mal bei denen anfragen, evtl. Betriebssystem und Interface CVK angeben.
https://knobloch-gmbh.de/de/robo-connec ... ce-adapter
Grüße von
Karl
Ich.., Bauteile verschwenderisch eingesetzt. Lösung....., einfach weglassen.

Benutzeravatar
uffi
Beiträge: 142
Registriert: 24 Jan 2014, 16:21
Wohnort: München
Kontaktdaten:

Re: Fischertechnik Interface Arduino

Beitrag von uffi » 25 Dez 2019, 16:46

Hallo fischerpiet,

Du kannst auch das Adafruit Motorshield weglassen und mit dem Arduino mit 5 Signalen auf das CVK Interface zugreifen und somit das CVK-Interface als Motorshield für 4 Motoren nutzen.
Dazu gab es mehrere Beiträge in der ft_pedia.

Gruß, Dirk

Benutzeravatar
Dirk Fox
ft:pedia-Herausgeber
Beiträge: 1293
Registriert: 01 Nov 2010, 00:49
Wohnort: Karlsruhe
Kontaktdaten:

Re: Fischertechnik Interface Arduino

Beitrag von Dirk Fox » 26 Dez 2019, 21:47

Stimmt, Dirk - und genau deshalb erscheint mir der Weg über das Motorshield eine interessante Alternative zu sein, wenn das CVK Interface nicht mehr funktioniert oder fehlt... Und: Wer den genialen 1985er Kasten gar nicht besitzt, kann mit Peters Lösung die damaligen Modelle nachbauen und über einen Arduino ansteuern. Ich meine, die Teile gibt es noch alle (passende Potis gibt es bei fisherfriendsman). Die Lösung ist "straight forward" - aber mir ist nicht bekannt, dass das schon mal jemand so gelöst hat.

Beste Grüße,
Dirk
http://fischertechnik-blog.de - technikgeschichte-mit-fischertechnik.de - http://ftpedia.de

fischerpiet
Beiträge: 5
Registriert: 22 Dez 2019, 18:01

Re: Fischertechnik Interface Arduino

Beitrag von fischerpiet » 28 Dez 2019, 13:44

Genau so ist es. Ich habe fünf Kästen aber nur zwei Interfaces. D.h. ich möchte die originalen Interfaces gar nicht mehr verwenden.
Außerdem kann ich mir kaum vorstellen, dass die noch vernünftig nach 25 Jahren Nicht-Benutzung funktionieren. Damit man etwas mit einer Klasse machen kann, benötige ich wahrscheinlich ohnehin viel mehr von diesen Kästen. Mit fünf reicht das für eine AG oder einen Projektkurs.

Beste Grüße
Peter

P.S: ich hatte mich gewundert, warum E1 und E2 nicht funktionierten - hier sind auf dem Motoshield an Pin 2 und 3 die I2C Datenleitungen aufgelegt. Daher musste ich E1 und E2 nach Pin 11 und 12 verlegen. So wäre zumindest noch Pin 10 für ein Servo frei. Ansonsten würde ich wohl eher die Buttons über einen I2C Expander anschließen, das wäre sinnvoller. Aber so läuft das erstmal super. Ich habe entsprechende Beiträge oben editiert und die Bibliothek aktualisiert.

Benutzeravatar
uffi
Beiträge: 142
Registriert: 24 Jan 2014, 16:21
Wohnort: München
Kontaktdaten:

Re: Fischertechnik Interface Arduino

Beitrag von uffi » 28 Dez 2019, 19:45

ja, ok. wenn das so ist. Ich hätte noch Verwendung für die beiden CVK Interfaces. Kann ich die von Dir bekommen?

Benutzeravatar
Dirk Fox
ft:pedia-Herausgeber
Beiträge: 1293
Registriert: 01 Nov 2010, 00:49
Wohnort: Karlsruhe
Kontaktdaten:

Re: Fischertechnik Interface Arduino

Beitrag von Dirk Fox » 28 Dez 2019, 22:30

Hallo Peter,
fischerpiet hat geschrieben:
28 Dez 2019, 13:44
P.S: ich hatte mich gewundert, warum E1 und E2 nicht funktionierten - hier sind auf dem Motoshield an Pin 2 und 3 die I2C Datenleitungen aufgelegt. Daher musste ich E1 und E2 nach Pin 11 und 12 verlegen. So wäre zumindest noch Pin 10 für ein Servo frei.
die Fehlfunktion muss eine andere Ursache haben: Das Adafruit Motorshield hat dieselbe Pin-Belegung wie der Arduino (Uno) - die I2C-Datenleitungen liegen also an A5 und A6 (bzw. den separaten I2C-Pins SCL/SDA oberhalb von Pin 13). An den Pins 2 und 3 liegen die Interrupts. Wenn Du Pin 13 statt Pin 9 verwendest, sind sogar beide Servo-Anschlüsse noch frei.

Beste Grüße,
Dirk
http://fischertechnik-blog.de - technikgeschichte-mit-fischertechnik.de - http://ftpedia.de

juh
Beiträge: 346
Registriert: 23 Jan 2012, 13:48

Re: Fischertechnik Interface Arduino

Beitrag von juh » 29 Dez 2019, 01:23

Hallo Dirk,
wahrscheinlich nur ein Tippfehler, aber beim UNO sind die I2C-Pins A4 und A5, nicht A5 und A6 (A6 und A7 sind ohnehin nur beim Nano und Mini verfügbar und nur als analog Eingänge verwendbar).

lg
Jan
Meine fischertechnik Designs für den 3D-Druck: https://www.thingiverse.com/juh/designs

fischerpiet
Beiträge: 5
Registriert: 22 Dez 2019, 18:01

Re: Fischertechnik Interface Arduino

Beitrag von fischerpiet » 29 Dez 2019, 14:50

@Dirk - an Pin 13 habe ich mich nicht rangetraut - aufgrund der internen LED. Sollte aber wirklich kein Problem sein - stimmt schon.

Ich selbst verwende einen Leonardo, der hat tatsächlich SCL und SDA an Pin 2 und 3. Die Anleitung https://learn.adafruit.com/adafruit-mot ... rduino/faq (What Pins are used / not used ...) sagt etwas in dieser Richtung, dass I2C an A4/A5 und an Pin 2/3 liegt. Da muss man aufpassen.
Dazu passt, dass bei meiner ursprünglichen Pinbelegung der Arduino eingefroren ist, wenn ich die Buttons an 2 und 3 gedrückt hatte. Ein Kurzschluss auf der Platine war nicht vorhanden.

Gruß
Peter

Antworten