RE: Steuerung Bahnübergang mit Raspberry Pi 2

#1 von Axel67 , 03.10.2017 15:05

Hallo zusammen,

nachdem ich an anderer Stelle bei der Anlagenvorstellung meiner Modellbahn Gletschmodell schon angedeutet hatte, daß ich die Signalanlage meines Bahnübergangs mit dem Kleincomputer Raspberry Pi realisiert habe, möchte ich euch nun hier nähere technische Infos dazu mitteilen.



Aus technischer Neugier wollte ich dabei einen für mich neuen Weg gehen und den mir bislang nicht näher bekannten Kleincomputer Raspberry Pi 2 verwenden (die Version 3 gab es damals noch nicht). Als erstes hatte ich mir ein umfassendes Handbuch (ISBN 978-3-8362-3795-6) dazu gekauft sowie ein Breadboard und habe kleine Testschaltungen mit LEDs und Tastern aufgebaut. Als Betriebssystem habe ich mich für Raspbian, einem Linux Derivat speziell für den RasPi, entschieden. Als Programmiersprache kommt Python zum Einsatz.

Der RasPi sollte dabei sowohl die optische als auch die akustische Steuerung übernehmen. Es gab dabei 2 Ampeln mit jeweils einer gelben und einer roten LED anzusteuern und während die LEDs in Betrieb waren, sollte auch die Warnglocke über eine Lautsprecher ertönen. Die Auslösung der Signale erfolgt von beiden Seiten über Reflex-Optokoppler TFK 240 (Ersatz für CNY70), die zwischen Schiene und Zahnstange platziert wurden (siehe unten).


Nach dem Einbau zeigte sich, dass eine Auslösung nur dann erfolgte, wenn unter der Lok bzw. Wagen eine reflektierende Metallfläche war. Somit platzierte ich an der Unterseite der Loks und einigen Wagen jeweils ein Stück Doppelklebeband mit Alufolie.

Hier das Python Script, das ich geschrieben habe. Experten werden sicherlich noch viele Optimierungsmöglichkeiten sehen, aber als Anfänger war ich zufrieden, dass alles wie geplant funktioniert.

#!/usr/bin/python
# -*- coding: utf-8 -*-
#Steuerung für Signalisierung Bahnuebergang der Modellbahn Gletschmodell
#2 Optokoppler als Melder, sowie 2 Ampeln mit Gelb/Rotlicht sowie akustische Signale per mp3 File. Des weiteren ueber Taster weitere Geraeusche abspielbar.
import RPi.GPIO as GPIO
import time
import subprocess
import os
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
rot1=12
rot2=15
gelb2=11
gelb1=13
Melder1=16
Melder2=18
T1=29; global T1_an; T1_an=False
T2=31
T_Shutdown=40
GPIO.setup(gelb1, GPIO.OUT, initial=True);#True=bleibt aus
GPIO.setup(gelb2, GPIO.OUT, initial=True);
GPIO.setup(rot1, GPIO.OUT, initial=True);
GPIO.setup(rot2, GPIO.OUT, initial=True)
GPIO.setup(Melder1, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(Melder2, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(T1, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(T2, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(T_Shutdown, GPIO.IN, pull_up_down=GPIO.PUD_UP)
#Interrupts definieren:
def Ampel(channel):
if GPIO.input(Melder1)==GPIO.LOW or GPIO.input(Melder2)==GPIO.LOW:
print("Melder aktiv")
subprocess.Popen(["omxplayer","--loop","/home/pi/BUGlocke_lang.mp3"], stdin=subprocess.PIPE)
for i in range(3):
GPIO.output (gelb1, 0)
GPIO.output (gelb2, 0)
time.sleep(0.5)
GPIO.output (gelb1, 1)
GPIO.output (gelb2, 1)
time.sleep(0.5)
print("Blinklicht aus und Rotlicht mind. 8s an")
GPIO.output (rot1, 0)
GPIO.output (rot2, 0)
time.sleep(8)
while GPIO.input(Melder1)==GPIO.LOW or GPIO.input(Melder2)==GPIO.LOW:
print("Melder noch aktiv")
print("Melder beide aus. Restwartezeit laeuft...")
time.sleep(5)
print("Rotlicht aus")
GPIO.output (rot1, 1)
GPIO.output (rot2, 1)
time.sleep(0.5)
os.system('killall omxplayer.bin')
def Shutdown(channel):
os.system('sudo shutdown -h now')
def T1(channel):
print("Taster 1 gedrueckt")
subprocess.Popen(["omxplayer","/home/pi/Kuhglocken.mp3"], stdin=subprocess.PIPE)
def T2(channel):
print("Taster 2 gedrueckt")
subprocess.Popen(["omxplayer","/home/pi/Lokpfiff.mp3"], stdin=subprocess.PIPE)
GPIO.add_event_detect(16, GPIO.BOTH, callback=Ampel)
GPIO.add_event_detect(18, GPIO.BOTH, callback=Ampel)
GPIO.add_event_detect(40, GPIO.FALLING, callback=Shutdown,bouncetime=200)
GPIO.add_event_detect(29, GPIO.FALLING, callback=T1,bouncetime=2000)
GPIO.add_event_detect(31, GPIO.FALLING, callback=T2,bouncetime=2000)
for i in range (4):
GPIO.output (gelb1, 0)
GPIO.output (gelb2, 0)
GPIO.output (rot1, 0)
GPIO.output (rot2, 0)
time.sleep(0.1)
GPIO.output (gelb1, 1)
GPIO.output (gelb2, 1)
GPIO.output (rot1, 1)
GPIO.output (rot2, 1)
time.sleep(0.3)
try:
while True:
print("Schleife faengt an")
time.sleep(0.1)
except KeyboardInterrupt:
GPIO.cleanup()

Da wegen der Warnglocke sowieso ein Lautsprecher eingebaut wurde, kam mir die Idee, diesen auch für andere Geräusche zu nutzen. Somit baute ich weitere Taster ein, mit denen ich z.B. Geräusche während der Zugfahrt wie Kuhglockengeläut, Bachgeplätscher und Geräusche der Dampfloks und Schienenstösse auslösen kann. Ein dritter Taster dient zum Herunterfahren des Betriebssystems vor dem Abschalten des Stroms der Anlage.

Die entsprechenden Vorwiderstände habe ich auf einer Zusatzplatine untergebracht, die Huckepack auf den RasPi geschraubt wurde. Die verschiedenen Anschlussleitungen wurden steckbar gestaltet.



Über die eingebaute HDMI Schnittstelle lässt sich theoretisch ein Monitor anschliessen und mit den 4 vorhandenen USB Schnittstellen des RasPi lassen sich z.B. Tastatur und Maus direkt anschliessen. Über einen WLAN Adapter kann dann auch ein Zugriff ins WWW erfolgen, was aber hier nicht geplant war. Der WLAN Adapter wurde jedoch genutzt, um statt dem Anschluss von Tastatur und Maus den RasPi von meinem heimischen PC aus per WLAN anzusprechen. Dies erfolgt von meinem Windows PC aus über das Programm Putty. Damit kann man über ein Terminal Python Scripts erstellen und ändern sowie weitere Tätigkeiten ferngesteuert durchführen, ohne dass der RasPi an der Unterseite der Modellbahn zugänglich sein muss. Das Python Programm wird nun automatisch beim Hochfahren des RasPi, d.h. Einschalten des Stroms für die Modellbahn gestartet.

Zurückschauend kann ich sagen, dass die Nutzung eines RasPi 2 für diesen Zweck ideal ist. Man könnte natürlich einwerfen, dass der kreditkartengrosse PC absolut unterfordert ist, aber wer weiss, welche Ideen irgendwann noch dazu kommen und für 35€ ist der Preis auch noch sehr human. Alles weitere fand sich in der Elektroniker-Bastelkiste.

Bei meiner nächsten Modellbahn wird ein RasPi 3 samt einem Touchscreen weitere Aufgaben bekommen. Entsprechende Tests sind schon gestartet. Zu gegebener Zeit werde ich darüber berichten.

Optische und akustische Eindrücke des Bahnübergangs finden sich in meinem schon bekannten Youtube Filmchen hier.


Viele Grüße
Axel

San Romera - Inseldampfbahn am Mittelmeer:
https://sanromera.jimdo.com/

Der Bahnhof Gletsch im Modell:
https://gletschmodell.jimdo.com

Berninabahn:
https://mybernina.hpage.com/

Weinbergsbahn:
https://weinbergsbahn.jimdosite.com/


 
Axel67
InterRegioExpress (IRE)
Beiträge: 298
Registriert am: 17.03.2016
Ort: Nordschwarzwald
Gleise Peco
Spurweite H0e
Steuerung Roco Multimaus
Stromart DC, Digital


RE: Steuerung Bahnübergang mit Raspberry Pi 2

#2 von inet_surfer88 , 03.10.2017 16:45

Hallo Axel,

interessantes Projekt. Ich bin gerade dabei, auf Grundlage von einem Raspberry PI 3 eine Beleuchtungssteuerung für die Modellbahn zu Programmieren (ebenfalls Python). Ich verwende ein Businterface für das Selectrix-Format mit RS232-Schnittstelle. Der Raspberry steuert dann die Beleuchtung mit den entsprechenden Befehlen an die RS232. Der Raspberry startet nach dem Einschalten der Versorgungsspannung automatisch. Das Python-Programm will ich ebenfalls automatisch starten lassen. Ist derzeit noch nicht umgesetzt, kommt aber noch.
Was mir derzeit noch unklar ist wäre die Frage nach dem Ausschalten. Der Raspberry sollte ja "sauber" heruntergefahren werden. Einfach Spannung aus ist nicht gut.
Wie hast du das bei dir gelöst?


Gruß Rüdiger


Mit der Bahn ins Feriendorf


Der Technik-Thread rund um die Steuerung von DCC-Loks mit dem Selectrix-System
Klick hier


inet_surfer88  
inet_surfer88
CityNightLine (CNL)
Beiträge: 1.672
Registriert am: 15.11.2014
Spurweite H0
Steuerung Selectrix (Stärz)
Stromart DC, Digital


RE: Steuerung Bahnübergang mit Raspberry Pi 2

#3 von Axel67 , 03.10.2017 19:07

Hallo Rüdiger,

das freut mich, daß es noch mehr "Bastler" in diesem Bereich gibt. Wie ich schon erwähnt hatte, bin ich mittlerweile auch an den Planungen und Tests für meine nächste Modellbahn, bei der der RasPi 3 nicht nur die Zug- und Weichensteuerung, sondern auch weitere Aufgaben wie die Beleuchtungssteuerung übernehmen soll. Das wird jedoch noch dauern. Der erste Schritt ist die Verbindung des RasPi mit installiertem Rocrail (das läuft im Moment schon) über einen RS232 Pegelwandler mit einem Roco Booster 10764. Wenn mal die erste Lok fährt, werde ich dazu ein separates Thema eröffnen.
Bei meiner Bahnübergangssteuerung habe ich einen Taster angeschlossen, mit dem ich den RasPi per Python Script herunterfahren kann (siehe T_Shutdown im Python Script mit dem Befehl "sudo shutdown -h now"). Dies ist aus meiner Sicht eine einfache und saubere Lösung. In meiner nächsten Modellbahn werde ich das entweder auch über einen Taster lösen oder über den Touchscreen (da ich dort wahrscheinlich die grafische Benutzeroberfläche mit Raspbian Jessie nutzen werde).


Viele Grüße
Axel

San Romera - Inseldampfbahn am Mittelmeer:
https://sanromera.jimdo.com/

Der Bahnhof Gletsch im Modell:
https://gletschmodell.jimdo.com

Berninabahn:
https://mybernina.hpage.com/

Weinbergsbahn:
https://weinbergsbahn.jimdosite.com/


 
Axel67
InterRegioExpress (IRE)
Beiträge: 298
Registriert am: 17.03.2016
Ort: Nordschwarzwald
Gleise Peco
Spurweite H0e
Steuerung Roco Multimaus
Stromart DC, Digital


RE: Steuerung Bahnübergang mit Raspberry Pi 2

#4 von inet_surfer88 , 03.10.2017 23:01

Hallo Axel,

danke für den Tipp mit dem Taster. Ich hatte so etwas änliches schon im Internet gefunden. Aber das war mir zu aufwändig und zu kompliziert. Deine Variante mit der Einbindung in das Pytohn-Script gefällt mir da wesentlich besser. Das werde ich die Tage mal ausprobieren.

Ich hatte Tests mit dem Raspery 3 und iTrain gemacht. Lief an meiner kleinen Testanlage ohne Probleme. Allerdings soll der "Rechner" auch gleich noch nebenbei ein bischen Internet und Mail ermöglichen, damit ich nicht immer an meinen "richtigen" Rechner 2 Stockwerke tiefer muss, wenn ich beim Basteln schnell etwas nachschauen will. Und hier war der Raspberry dann doch etwas langsam. Deswegen habe ich mir für wenig Geld einen alten gebrauchten PC gekauft, auf dem jetzt iTrain läuft. Der Raspberry wird dann nur die Beleuchtung steuern.

Ich werde demnächst einen Steuerungs-Thread für meine neue Anlage eröffnen. Da werde ich meine Steuerung etwas ausführlicher vorstellen.

Ich bin schon auf deine Erfahrungen gespannt, was die Geschwindigkeit betrifft.


Gruß Rüdiger


Mit der Bahn ins Feriendorf


Der Technik-Thread rund um die Steuerung von DCC-Loks mit dem Selectrix-System
Klick hier


inet_surfer88  
inet_surfer88
CityNightLine (CNL)
Beiträge: 1.672
Registriert am: 15.11.2014
Spurweite H0
Steuerung Selectrix (Stärz)
Stromart DC, Digital


RE: Steuerung Bahnübergang mit Raspberry Pi 2

#5 von Bacchus , 04.10.2017 13:23

Hallo Axel,

ich bin derzeit in der Planung für eine grosse Anlage. Da ich ausschliesslich nicht digital fahren möchte, aber sowas wie den Schattenbahnhof mehr oder weniger automatisch betreiben möchte, habe ich mich auch für den RaspPi entschieden und teste derzeit einiges. Steuerung des Fahrstroms über passende Zusatzmodule, Ansteuerung von Servos (über Hardware-Module, die erstens mehr Ausgänge und zweitens hardware-basiertes PWM bieten), schalten von Licht - alles funktioniert damit relativ einfach. Was ich am überlegen bin: Anbindung von RFID. Leser sind mittlerweile ziemlich billig zu habe, die RFID-Chips klein und billig genug, um irgendwann jede Lok und jeden Waggon damit ausrüsten zu können. Aber das steht noch ein bisserl in den Sternen.
Derzeit läuft alles immer nur als temporärer Testaufbau und per SSH. Ich plane allerdings Touchscreen und Steuerung über eine webbasierte Anwendung, die ich selber schreiben möchte.

Wenn ich mal von Planung in die Bauphase kommen sollte, werde ich natürlich auch diese Basteleien im Detail gerne vorstellen.

Gruß,
Markus.


(c) bei Wein, Weib & Gesang

Mein Projekt: Grossanlage in Spur N
viewtopic.php?f=15&t=177970
Was mich dabei gerade aufhält:
RE: Was macht man mit...


 
Bacchus
InterRegio (IR)
Beiträge: 167
Registriert am: 29.06.2017
Ort: Berching
Spurweite H0, N
Stromart AC, DC, Analog


RE: Steuerung Bahnübergang mit Raspberry Pi 2

#6 von Axel67 , 06.10.2017 14:38

@Rüdiger: Bin gespannt auf weitere Details zu deiner geplanten Steuerung. Was meine eigenen Erfahrungen zum Thema Geschwindigkeit des RasPi angeht, werde ich zu gegebener Zeit natürlich berichten.

@Markus: Mein durch deinen Beitrag zum ersten Mal bewusst auf deinem Planungs-Thread gelandet. Da hast du ja einiges vor. Die Idee, deinen Schattenbahnhof mit einem RasPi zu steuern, finde ich sehr gut. Dazu noch RFID einzusetzen, ist ein interessanter Ansatz. Damit habe ich mich bislang noch nicht beschäftigt. Bin gespannt auf entsprechende Testerfahrungen, falls du das tatsächlich in Angriff nimmst.


Viele Grüße
Axel

San Romera - Inseldampfbahn am Mittelmeer:
https://sanromera.jimdo.com/

Der Bahnhof Gletsch im Modell:
https://gletschmodell.jimdo.com

Berninabahn:
https://mybernina.hpage.com/

Weinbergsbahn:
https://weinbergsbahn.jimdosite.com/


 
Axel67
InterRegioExpress (IRE)
Beiträge: 298
Registriert am: 17.03.2016
Ort: Nordschwarzwald
Gleise Peco
Spurweite H0e
Steuerung Roco Multimaus
Stromart DC, Digital


   


  • Ähnliche Themen
    Antworten
    Zugriffe
    Letzter Beitrag
Xobor Einfach ein eigenes Forum erstellen
Datenschutz