Beiträge von DB Nico

    Hallo :)
    Danke für eure Antworten.
    I
    Fliegenhals die Idee war es das jeder Arduino mit seinen Nachbarn kommuniziert.
    Es soll erstmal ein Bahnhof funktionieren, heißt Steuerung mit Außenanlage und danach sollen die anderen Bahnhöfe folgen. Die Anbindung der einzelnen Komponenten soll über multiplexer auf die arduinos eingebunden werden, so viel ich weiss. Ich sol erstmal den einen Bahnhof hinbekommen und weiss momentan nicht wie es am einfachsten und am besten ist. Ich brauche da dringend Hilfe aber es gibt momentan keine, außer von euch wofür ich sehr dankbar bin.
    Momentan versuche ich eine Lösung nur mit den Arduinos hinzubekommen aber selbst dort stoße ich schnell an meine Grenzen.

    Es ist alles sehr komplex und erfordert viel Zeit.

    @__deets__ leider kann ich euch nicht mehr sagen als mir gesagt wird. Ich habe auch nicht das Wissen um mit euch sinnvoll diskutieren zu können.
    Wie gesagt, ich bin momentan davon abgegangen eine Lösung mit PI und Arduino zu suchen, da ich überzeugt bin das der Arduino das allein besser händeln müsste.

    Hallo,

    ich habe mich lange nicht mehr gemeldet.

    Der Stand ist jetzt folgender:

    Zurzeit konzentriere ich mich auf die Arduino Programmierung. Dort soll nun alles hinterlegt werden damit der Arduino bei einen Befehlseingang vom Raspberry PI genau weis was er Tun soll.

    Der Raspberry ist nur dazu da einfache Befehle weiterzugeben die vorher Eingelesen werden. Jetzt ist nur die Frage, wie lese ich beim Raspberry Pi extern Befehle ein?

    z.B.: Der Zug soll von Dornbach bis Fheim in das Stumpfgleis einfahren. Dazwischen sind 3 Bahnhöfe. Jetzt gibt der Raspberry den ersten Befehl raus und nach Erhalt der Rückmeldung vom Arduino die weiteren Befehle bis der eingelesene Befehl abgeschlossen ist.

    Also gehen wir jetzt weg von einer grafischen Oberfläche und wollen die Befehle irgendwie einlesen lassen. Die Frage ist nur wie ich das am Besten mache.

    Jemand eine Idee?

    Ich habe dir mal ein Verschlussplan von Chausen angehangen. :)

    Aber wie setzte ich das auf den Raspberry um?

    Ich wollte erst eine Datenbank anlegen aber da muss ich ja erstmal einen Webserver installieren...

    Ich stehe da echt etwas auf dem Schlauch

    Warum ist der Taster am PI, und nicht am Arduino? Wozu ist das gut?

    Du musst mal klarziehen, warum was an welchem Geraet haengt, und welche Aufgabe das erfuellen soll. Der PI ist toll wenn es um grafische Oberflaechen und Monitore und Maeuse und Tastaturen und so geht. Einfache Tastendruecke abzufragen ist unnoetig kompliziert und da stinkt er gegen einen Arduiono voellig ab.

    Ich wollte nur den Befehlsempfang simulieren. Später gibt es dort keine Taster. Ich denke das ich auf den PI eine grafische Oberfläche nutzen werde.
    Ich möchte nur meinen Projektleiter was vorlegen.
    Würde sich für die grafische Oberfläsche nicht RocRail anbieten?

    Danke für deinen Tipp @__deets__ .
    Ich werde dort mal reinschauen ;)

    Ich bin jetzt auch davon abgegangen jeden Stellwerk ein Raspberry einzubauen. Es müsste mit den Arduino auch super laufen, da mir dort die Programmierung leichter fällt.

    Doch es gibt ja jede Wochen ein Protokoll zu diesen Projekt. Ich denke man hat einfach den Punkt Programmierung Unterschätzt.

    Man hätte diesen Punkt nebenbei von Anfang an parallel laufen lassen müssen. Und jetzt liegt es an paar Leuten das gut und schnell umzusetzen.

    Ich will es auch irgendwie schaffen. Das Projekt an sich macht mega viel Spaß und wenn es dann irgendwann umgesetzt ist, ist das auch eine super Sache.

    Ja es soll eine Modellbahn damit gesteuert werden.
    Man wollte bei den Projekt alle Stellwerkstypen in der PD nachstellen, um die Schulungsteilnehmern möglichst auf den weiteren Werdegang gut vorzubereiten.
    Da das Projekt aber schon sehr Fortgeschritten ist gibt es da leider keine Alternative. Demnächst soll schon aufgebaut werden (Grundplatte und Stellwerke) und in den nächsten Wochen soll auch die Programmierung stehen.

    Ich finde das sehr verwirrend. Nicht nur gibt es mehrere PIs von denen wierderum eine der Master ist, und dann die Arduinos als Slaves. Warum noch ein Master-PI, und warum dann mehrere Nicht-so-ganz-Master-PIs? Und wofuer die Arduinos, wenn die Tasten dann doch schon wieder am PI direkt haengen? Warum wird das nicht alles an den viel robusteren Arduino gehangen? Klingt alles deutlich komplizierter als notwendig.

    Und dann fehlt da natuerlich so manches, wie zB wie Arduino und PI kommunizieren, wie die PIs untereinander kommunizieren. Seriell, I2C, SPI, und WIFI oder LAN?

    Ich wuerde mir die ganze Ebene der PIs in der Mitte sparen.

    Die Kommunikation soll bis jetzt I2C laufen... aber ich bin mir sicher das es über Wlan besser wäre.
    Also würde es besser sein wenn es nur einen Master Raspberry Pi gibt und pro Stellwerk ein Ardunio?
    Wenn das möglich ist könnte man Ressourcen sparen.

    Das trifft es eigentlich ganz gut auf den Kopf.
    Wollte es etwas komplexer beschreiben aber deine Beschreibung passt perfekt zu den was wir vorhaben.

    Ich habe mir meinen Text von gestern auch nochmal durchgelesen... ich kann eure Aussagen verstehen.

    Am Freitag schicke ich euch was ich bis dahin geschafft habe.

    Momentan habe ich mich sehr auf den Arduino fixiert, da ich beim Raspberry nicht mehr weiter komme oder generell keinen Plan habe dies um zusetzten was der machen muss. Aber heute werde ich einen neuen Versuch wagen.

    Ok ich versuche euch das ganze Projekt nochmal näher zu bringen.

    Das Projekt soll für die Zukünftige Ausbildung Für FDL und LST MA werden, daher sehr realitätsnah.
    Den Gesamtaufbau habt Ihr von mir schon bekommen.
    Es gibt eine Zugleitstrecke (Strecke 1342) und 2 "normale Strecken.
    Die "Hauptbahnhöfe" sind daher Chausen, Fheim und Eburg.
    Chausen soll ein mechnanisches Stellwerk Simulieren, Fheim ein ESTW und Eburg ein GS II.
    Für jeden Bahnhof wurden die erforderlichen Dokemente erstellt.

    Wie stellen wir uns die Realisierung vor?

    Es gibt einen Master Raspberry und pro Bahnhof einen Raspberry(MASTER) geben der dort die Befehle an den Arduino Uno(SLAVE) erteilt. Dieser Arduino stellt die ganzen Komponenten(erstmal nur Weichen und SIgnale). Die Eingabe erfolgt durch Pulte. Für den Bahnhof Fheim und Eburg wurden Pulte angefertigt. Diese werden mit Taster versehen die die Eingänge vom Raspberry Pi sind. Dieser gibt dann den Befehl weiter zum Arduino und dieser stellt dann die Weichen und Signale um. Davor muss der Fahrtweg frei sein (durch drücken einen Tasters realisiert [später bei Fheim mit Achszählern und bei Eburg mit Iso Schiene realisiert]). Also der Ablauf: Befehlsempfang - prüfen des Fahrwegs - Weichen stellen - Fahrstraße festlegen - Fahrweg prüfen - Signal geht auf Fahrt. Jeder Schritt bedarf einer Eingabe durch 1 oder 2 Taster. Danach wird die Fahrstraße aufgelöst und das Signal geht auf Halt. Die Weichen bleiben in der Stellung. Anlage wartet auf den nächsten Befehl. Die Programmierung der beiden Bahnhöfe ist identisch, da wir beim ESTW die grafische Oberfläche erstmal weglassen. Es wird wie beim GS II mit einen Pult geschalten.

    In Chausen werden mechanische Hebel mit Schiebeschaltern realisiert. Der Bahnhofsblock wird mithilfe von Drucktastern und LEDs simuliert. Die Fahrstraßenfestlegung wird mit 3 Stufen Schalter realisiert die die 3 Stellungen des Fahrstraßenhebels wiederspiegeln.

    Dort ist die Abfolge so: Befehlsempfang - B1 prüfen des Fahrwegs - Weichen stellen - Fahrstraße festlegen - Befehl für die Fahrstraße an W2 senden - prüfen des Fahrtwegs - Weichen stellen - Fahrstraße festgelegt - Prüfen der Fahrstraße - Rückmeldung an B1 - Signal geht auf Fahrt.

    Wer gibt den Befehl?
    Jede Fahrt bekommt eine ID. Die ID muss beim Master Raspberry hinterlget sein. Er gibt nach Eingabe der ID nach und nach den anderen Raspberrys den Befehl welche Fahrstraße gerade gebraucht wird. Diese geben das dann den Arduino weiter und der wartet auf die Eingabe von außen. Danach muss eine Rückmeldung zum Master Raspberry kommen das die Fahrstraße eingestellt wurde und das Signal auf Fahrt gestellt ist. Die verschiedenen ID sind in einer Datenbank hinterlegt der den weiteren Ablauf festlegt.
    Gesamtablauf:

    ID Eingabe am Master Raspberry - Gibt Befehl weiter an den Bahnhof (Raspberry) - Befehlsempfang Fahrstraße XYZ - Abruf der benötigten Weichen und Signalen - Weitergabe an Arduino - Befehlsumsetzung - Rückmeldung an Raspberry Fahrstraße eingestellt und Signal auf Fahrt gestellt - Raspberry gibt an MAster Raspberry eine Befehlsbestätigung - MAster Raspberry bereit für nächste ID.

    So sol es erstmal am Anfang aussehen. Später kommen noch dazu:

    Zugbeeinflussung, Störungen, Mehrere Fahrten gleichzeitig

    Ich hoffe ich konnte euch das Projekt etwas genauer Beschreiben.

    Ich bin gerade über den Bahnhof Chausen und versuche den erstmal hinzubekommen.

    Ein Bahnhof soll ein ESTW simulieren das über ein Pult gesteuert wird. Ein anderes soll ein Mechanisches Stellwerk simulieren und die 2 anderen ein GS2 Stellwerk. Pläne sind alle schon vorhanden. Jetzt muss die Planung nur auf die Pulte übertragen werden und die Controller Programmiert werden.

    Programmablauf ist auch schon bekannt...nur die Umsetzung bereitet mir Schwierigkeiten.

    Hallo :)
    danke für den Denkanstoß @__deets__ .
    Ich habe mir dazu Gedanken gemacht und am Wochenende die Gesamtlogik betrachtet und einen Programmablaufplan erstellt.
    Diesen muss ich jetzt in Phyton umsetzten nur fehlen mir dazu die Skills. Leider muss ich diese Woche schon ein Ergebnis vorlegen. Die Stellwerkslogik soll schon funktionieren.
    Ich versuche mich gerade durch die ganzen Basics zu hangeln aber komme leider nicht weiter.


    Den Programmablaufplan kann ich hier leider nicht reinstellen weil er die Endung pap hat :/
    Sonst würde ich den euch gerne zeigen.
    Wenn jemand dennoch Interesse daran hat mir intensiver zu helfen, sende ich den gerne per eMail.
    Edit: Habe jetzt eine PDF angefügt.

    Fliegenhals das ganze soll sehr größ werden. Ich habe mal den Gesamtaufbau des Models im Anhang gelegt. Und dafür soll ich mit dem Raspberry Pi und den Arduino Uno die Stellwerkslogiken realisieren. Es soll am ende eine Schulungsumgebung für Fdl und LST werden. Diese Stellwerke sollen mit Pulten geschalten werden und darunter sollen die 2 Controller alles steuern.
    Aber erstmal soll ein Stellwerk funktionieren damit ich was vorzuweisen habe.

    aktivier_Taster (primary Key)IDbenötigte Schalter
    151, 2

    In der Funktion wo du die callback erhältst, ließt du die Tasternummer aus

    Die Tasternummer setzt du in die WHERE Klausel und sucht damit die aktivier_Taster

    Dadurch, da es ein primary Key ist, erhältst du genau einen Datensatz -> Die ID und die benötigten Schalter

    Die Ausgabe der Schalter jagst du durch eine split Funktion so dass es eine Liste mit Schaltern ergibt

    Und damit baust du die Logik zusammen auf welche Schalter du wartest

    Danke
    Ich arbeite an den Quellcode und wenn ich da weitergekommen bin poste ich den hier rein :)

    Ungefähr so sollte es am Ende auch sein. Nur ich möchte jetzt erstmal nur die Stellwerkslogik im Rapberry Pi simulieren.
    Der Raspberry gibt dann die Befehle an einen Arduino Uno weiter und der Stellt dann den Servo (Weiche) und die LED(Signal) um.
    Ich brauche jetzt bloß einen Ansatz wie ich aus der Datenbank mit der ID den Raspberry sage:" ID 5 aktiviert... warte auf Schalter 1 und 2.... gebe dann die Befehle weiter an Arduino das Servo und LED umgeschalten werden."

    Und das war ein Schreibfehler... sollte Gradzahl heißen

    Es ist ja nur der erste Schritt. Am Ende sollen hinter einer ID in der Datenbank mehrere Servos und LEDs stehen. Und es sollen mehrere Taster geben die unterschiedliche ID abrufen sollen.
    Ja das ist mir klar, nur wie baue ich das in den Quellcode ein?
    Wie rufe ich z.B wenn Taster 1 gedrückt ist die ID 5 von der Datenbank ab und die ID 5 gibt dem Raspberry vor welcher Servo und welche LED angesteuert werden müssen?
    Klar als Attribute in einer klasse wäre das möglich für diesen fall aber wenn ich 100 klassen habe mit jeweils 10 Attributen wird das irgendwann unübersichtlich.

    Hallo liebe Raspberry-Community,

    danke für eure schnelle Hilfe bei meinen ersten Testversuchen.
    Jetzt geht es bei meinen Projekt weiter und mir fehlen ein paar Denkanstöße wie ich es realisieren soll.
    Meine Aufgabe ist es eine Datenbank auf den Raspberry Pi zu hinterlegen oder abrufbar zu machen.
    Wenn ich einen gewissen Taster oder ähnliches betätige, soll die dafür in der Datenbank hinterlegte Abfolge erfolgen, wenn die dafür festgelegten Voraussetzungen erfüllt sind( z.B. Schalter 1 und Schalter 2 wurden betätigt).
    Im Grundzustand soll eine Rote LED brennen. Wenn der Taster betätigt wurde soll der Raspberry so lange warten bis die anderen 2 Schalter betätigt werden und dann soll ein Servo umlaufen (Gradzahl muss in der Datenbank hinterlegt sein). Wenn der Servo in der richtigen Stellung ist, soll die rote LED aus gehen und dafür die Grüne LED angehen. Wenn ich den Taster nochmal drücke, soll die Grüne LED ausgehen und die Rote LED wieder an.

    Wie realisiere ich das, dass der Respberry Pi Zero W mit der Datenbank (MySQL) dieses kleine Projekt realisiert?

    Bin leider ein Anfänger aber mir wurde das Projekt jetzt in den Schoss gelegt.

    Habt ihr kleine Hilfen für mich?

    Danke schon mal im voraus.

    PS.: Ich möchte nicht das ihr den ganzen Quellcode für mich schreibt. Aber mir vlt ein paar Hilfen gibt im Bezug auf die Datenbankabfrage.

    Grüßt euch :)

    durch die Coronakrise habe ich mich in ein Projekt "eingekauft. Dieses Projekt verlangt jetzt nach einer Lösung über die I2C kommunikation von Rapberry Pi zero und arduino uno.
    Dabei fungiert der Rapberry als Master und der Arduino als Slave.

    Ich habe schon sehr viele Videos gesehen und Beiträge gelesen aber ich komme einfach zur keiner Lösung.

    Momentan kommt die Fehlermeldung wenn ich einen Taster betätige: "TypeError: writeI2C() takes 0 positional arguments but 1 was given". Auch nach mehrfachen googlen stieß ich auf keine Lösung.

    Am Ende soll ein Rapberry Pi mehrere Slaves ansteuern. Aber mir wäre schon geholfen wenn es erstmal bei den einen funktioniert.

    Im Anhang findet ihr alles.

    Edit: aktualisierter Quellcode bei Raspberry hochgeladen