ftduino I/O Erweiterungen

Community-Firmware (cfw), Selbstbaucontroller (TX-Pi, ftduino, usw.), usw.
Forumsregeln
Bitte beachte die Forumsregeln!
Antworten
Benutzeravatar
fishfriend
Beiträge: 1794
Registriert: 26 Nov 2010, 11:45

ftduino I/O Erweiterungen

Beitrag von fishfriend » 09 Jul 2022, 13:58

Hallo...
Ich bin gerade sehr, sehr froh, weil es mir gerade eben gelungen ist, im ftduino eine Extension (Slave) zu emulieren.
Ich kann also mit RoboPro den ftduino als Master -und- einen Slave gleichzeitig ansprechen. Ich habe also nun doppelt soviele I/Os zu verfügung. Entsprechend mehr wird es, wenn alle 8 Extensions funktionieren.

Ich dachte mir, ich frage mal nach, was ihr mit eurem ftduino so benutzt, um mehr I/Os zu bekommen.
Dann würde ich mit die besorgen/ausleihen und meine Programmierung entsprechend anpassen.

Ich selbst, habe Motorshields 2.0 von Adafruit. Wobei ich die noch nie mit dem ftduino benutzt habe. Da ist es auch die Frage, inwieweit man die Bibliothek einbinden kann. Das hab ich aber auch noch nie gemacht.

Mein Plan ist auch, die I2C Servo Shields zu benutzen. Ich dachte daran, die Geschwindigkeitswerte in Servowinkel umzurechnen.
Dann könnte man sehr sehr viele Servos über RoboPro ansprechen.
Desweiteren kann man dann auch Schrittmotoren als einfachen Motorausgang benutzen.

Die nächste Frage ist, wie man es hinbekommt eine "Konfiguration" bei dem Aufspielen auf den ftduino zu machen?
Ich dachte mir am Anfang der INO-Datei eine Auswahl vorzugeben und das Programm läd dann die entsprechenden Programmteile nach.
Dann würden nicht so viele verschiedene TX-Light-Varianten entstehen.

Der letzte Schritt ist es, das Ganze auf einen Arduino-Mega zu packen. So hätte man sehr viele I/Os unter RoboPro zur verfügung.

Mir ist klar, dass es dennoch Grenzen gibt. Es kann ja sein, das nicht alle Geschwindigkeiten auch zum achten Slave übertragen werden können. Das werde ich aber noch ausprobieren. Auch klar ist, wenn man mehrere ftduinos benutzt oder Kombinationen mit I/Os, dürfte es besser und einfacher gehen. Ich hab aber nur einen ftduino.
Es gibt ja auch die Shields für den UNO und Mega, wobei das leider momentan etwas zu sehr ins Geld geht. Obwohl das ehr leicht wird die auch mit RoboPro anzusprechen, weil es nur andere Pin-Nummern sind.

Evtentuell hat ja jemand schon mal die oben genannten Sachen gemacht und kann de weiterhelfen.

Mit freundlichen Grüßen
fishfriend
Holger Howey
ft Riesenräder PDF: ftcommunity.de/knowhow/bauanleitungen
TX-Light: Arduino und ftduino mit RoboPro

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

Re: ftduino I/O Erweiterungen

Beitrag von juh » 09 Jul 2022, 19:55

fishfriend hat geschrieben:
09 Jul 2022, 13:58
Ich dachte mir, ich frage mal nach, was ihr mit eurem ftduino so benutzt, um mehr I/Os zu bekommen.
Hallo Holger,

wenn Du bei I2C bleiben willst, gibt es eine ganze Reihe von Chips und boards, einfach mal nach I2C port/IO-extender/expander/controller suchen. Einen davon, den PCA9685, nutzt das Adafruit shield, das kannst Du prinzipiell also auch ohne Arduino an einen anderen Master hängen.

Ein beliebtes Board ist das PCF8574, dafür hat Peter ein ft-kompatibles Gehäuse gemacht. Von mir gibt es ein etwas aufwändigeres Projekt mit dem MCP23017.

Falls Du ungenutzte Arduinos rumliegen hast, kannst Du meine I2Cwrapper library ausprobieren, die aus dem AccelStepperI2C Projekt hervorgegangen ist. Die verwandelt einen Arduino/ESP32/ESP8266/ATtiny in einen I2C-slave bzw- I2C-target (ähnlich wie der Slave-Sketch für den ftDuino). Das dort enthaltene PinI2C Modul kann einen digitalen udn analogen I2C port extender ersetzen, bei Bedarf kann man aber auch Module mit anderen Funktionalitäten wie Servo-Ansteuerung mit dazu kompilieren.

vg
Jan

Benutzeravatar
MasterOfGizmo
Beiträge: 2720
Registriert: 30 Nov 2014, 07:44

Re: ftduino I/O Erweiterungen

Beitrag von MasterOfGizmo » 09 Jul 2022, 21:48

Wow, das klingt sehr cool.

Edit: JUHs Lösung klingt wirklich gut und preisgünstig und ergibt viel Sinn, wenn es nicht zu sehr ins Geld gehen soll.
Arduino für fischertechnik: ftDuino http://ftduino.de, ftDuino32 http://ftduino.de/32

Benutzeravatar
fishfriend
Beiträge: 1794
Registriert: 26 Nov 2010, 11:45

Re: ftduino I/O Erweiterungen

Beitrag von fishfriend » 15 Jul 2022, 10:47

Hallo...
Hab das mal von Suchen (ftduino gesucht) rüberkopiert:
von atzensepp » 14 Jul 2022, 23:28
Hallo Holger,

ich weiß nicht, was Du genau vorhast und wie Deine Probleme genau aussehen, so dass ich nur vermuten kann, was Du machst:

Auslesen von Sensoren
Berechnungen von Soll-Werten
Ansteuern von Motor-Shield über I2C
Serielle Verbindung zum Computer

Motor-Ansteuerung geht über PWM. Das belastet die CPU praktisch nicht, es sei denn Du machst PWM softwaremäßig.
I2C und Serial arbeiten normalerweise gut zusammen. Bei Serial muss man im Zusammenhang mit Interrupts und den verwendeten Timern etwas aufpassen, da sich das teilweise in die Quere kommen kann und sich die Serial-Schnittstelle dann verklemmen kann. USB-Kabel kurz abstecken und ggf. in anderen USB-Port stecken hat bei mir oft geholfen.

Für das Agile Eye habe ich eine Positions-Steuerung mit 2 Motor-Shields gebastelt, die 3 Absolutwertgeber ausliest und 3 DC-Motoren ansteuert.
Über Serial kann die aktuelle Lage ausgegeben und eingestellt werden. Die Lage-Regelung geht über PID-Regler. Das funktioniert eigentlich auch auf dem UNO inzwischen einwandfrei.

PS: Für ein sehr einfaches kooperatives Multitasking habe ich mir mal Folgendes angeschaut und ausprobiert:
https://github.com/MacLeod-D/CoopOS-Kurs-Deutsch
Also...
Ich hab versucht ein Adafruit Motorshield mit -deren- LIBs, an einem ftduino, zum laufen zu bekommen.
Ich kann -nicht- ein Motorshield-Objekt initialisieren. Alle Anleitungen, die ich bisher gelesen habe, zu diesem Problem, funkionieren nicht. Lib löschen, neu laden, aktualisieren... - am UNO gehts aber. Ich hab schon gedacht ob sich überschneidungen mit anderen Adressen ergeben oder ob die Motortreiber am ftduino genau so angesteuert werden und dadurch es zu einem Konflikt mit gleichen Variablennamen kommt.
Keine Ahnung, ich krieg es nicht zum laufen. Eventuell sitzt das Problem ja auch vor dem Bildschrim.
Ich hab da jetzt erstmal damit aufgegeben, da auch ein anderes Konzept, wie einen Uno als Slave, der ein Motorshield (Slave) am selben I2C anspricht, also ein Multimaster-Bus, momentan etwas zu weit gehen.
Wenn jemand mal ein funktionierendes Beispiel mit einem ftduino und einem Motorshield 2.3 hätte, würde ich mich sehr freuen das mal bei mir auszuprobieren.

Ich hab nun ein einfaches OLED-Dislay genommen und mal versuchsweise, in den Auswertungen der RoboPro-Befehle, Texte an das Display gesendet.
Das geht, ohne das die Kommunikation RoboPro-ftduino zusammenbricht. :-)
Der einfachste Weg für mich ist tatsächlich mehrere ftduinos zu nehmen. Auf die kommt ein I2C-Slave Programm, was dann die Daten hin und her schaufelt und die Daten verarbeitet. Kann ja sein dass es schon beim 2. Slave nicht mehr geht. Oder ob man sagt, dass die Aktualisierung der Daten nicht im 10ms Raster liegen. Dann schaltet ein Motor halt ein kleines bisschen später ab...
Mal schaun.

Ich finde es Interessant, das sich dann auch noch neue Baustellen auftun. Umschaltung Analogeingang 5k funktioniert nicht (mehr?). :evil:
Oder auch das mit den I2C Sensoren. Welche hab ich gerde da? Gibt es dazu mit ft Beispiele - Nein natürlich nicht. Hat der 3V oder 5V?
Mist der hat 3V . hab keinen Umsetzer da. OK nehmen wir einen Anderen. Der hat eine ganze Latte von Initialisierungen bis der läuft. OK nehmen wir einen anderen... Welche I2C Frequenz hat der den?... OK, zur Not programmiere ich eben einen UNO... Zum Glück hatte ich noch das Display.
Ja, die Problemchen der kleinen Leute.

Mit freundlichen Grüßen
fishfriend
Holger Howey
ft Riesenräder PDF: ftcommunity.de/knowhow/bauanleitungen
TX-Light: Arduino und ftduino mit RoboPro

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

Re: ftduino I/O Erweiterungen

Beitrag von juh » 15 Jul 2022, 14:05

Hallo Holger,

offen gesagt werde ich bei Deinen Posts teilweise nicht ganz schlau, ob und wozu genau Du Unterstützung suchst, weil da oft mehrere Themen zusammenkommen. Ggf. erst mal auf ein Problem konzentrieren und dort genauer schildern, was schief geht.
fishfriend hat geschrieben:
15 Jul 2022, 10:47
Ich hab versucht ein Adafruit Motorshield mit -deren- LIBs, an einem ftduino, zum laufen zu bekommen.
Ich kann -nicht- ein Motorshield-Objekt initialisieren. Alle Anleitungen, die ich bisher gelesen habe, zu diesem Problem, funkionieren nicht. Lib löschen, neu laden, aktualisieren... - am UNO gehts aber.
Ich kann z.B. mit dem Ziel ftDuino (im Board-Manager ausgewählt) problemlos die Beispiele aus dem Adafruit MotorShield v2 library Ordner, z.B. DCMotorTest kompilieren. Poste doch vielleicht mal Deinen code und die Fehlermeldung.

vg
Jan

Benutzeravatar
MasterOfGizmo
Beiträge: 2720
Registriert: 30 Nov 2014, 07:44

Re: ftduino I/O Erweiterungen

Beitrag von MasterOfGizmo » 15 Jul 2022, 14:33

juh hat geschrieben:
15 Jul 2022, 14:05
Ich kann z.B. mit dem Ziel ftDuino (im Board-Manager ausgewählt) problemlos die Beispiele aus dem Adafruit MotorShield v2 library Ordner, z.B. DCMotorTest kompilieren. Poste doch vielleicht mal Deinen code und die Fehlermeldung.
Es lässt sich auch kompilieren, wenn man die ftDuino-Bibliothek gleichzeitig einbindet Wenn man zwei Bibliotheken nutzen will, die z.B. den gleichen Interrupt-Handler zu nutzen versuchen kommt es zu Konflikten und Übersetzungsfehlern. Aber das ist hier anscheinend nicht der Fall.
Arduino für fischertechnik: ftDuino http://ftduino.de, ftDuino32 http://ftduino.de/32

Antworten