Hallo. Im Rahmen des JMRI Howto hatte ich ja beschlossen, einen Stand Alone Programmer mit Touch- Display selbst zu bauen. Der Programmer ist in etwa mit dem bekannten SPROG zu vergleichen, wenn man die Variante für einen zusätzlichen Raspberry Pi nimmt. Der “Pi-SPROG” kostet etwa 80 GBP und man braucht einen Raspberry Pi plus Display dafür. Für “meinen” DIY Programmer braucht man auch einen Raspberry Pi und ein Display, aber nur noch einen Arduino UNO (ca 2,50€) und ein Arduino Motorschild (ca 2,10€) zusätzlich. Als Raspberry Pi kann man die Version 3 und neuer (aktuell ist der Pi 5) verwenden. 2GB Ram sind notwendig, mehr schadet nicht, ist aber nicht erforderlich. Die ganz alten Modelle 1 und 2 sind nicht leistungsfähig genug. Auch ein Pi Zero wäre zu schwach. Ab dem Pi 3 hat der Raspberry Pi bereits WLan integriert, was bei den älteren Modellen noch nicht der Fall war. Da der Raspberry Pi ein europäisches Produkt ist (wenn auch weitestgehend aus chinesischen Teilen montiert), macht es in der Regel keinen Sinn, ihn ebenfalls in China zu bestellen. Zur Zeit sind die 2GB RAM Versionen vom Pi 3 nicht mehr zu bekommen. Es gibt nur noch 1 GB und 0,5 GB Versionen zu kaufen. Man muss also entweder eine 2 GB Variante des (viel schnelleren) Pi 4 kaufen oder sich auf dem Gebrauchtmarkt umschauen. Der Pi 3 ist inzwischen schon reichlich alt. Kein Wunder, das die Vorräte langsam zur Neige gehen.
Wie es der Zufall so will, habe ich aber einen Raspberry Pi 3b mit 2 GB Ram ungenutzt hier herum liegen. Mit ein wenig Aufwand kann ich auch einen Pi 4 mit 4GB frei machen, sollte mir der Pi 3 zu lahm für den Programmer sein.
Einen Arduino UNO und ein Motorschild ist ebenfalls mit Bestand und muss nicht angeschafft werden. Ich möchte den Programmer gerne mit einem 7 Zoll Touch Display ausstatten, damit man nicht immer einen Computer (-Bildschirm) anschließen muss und auch keine Tastatur oder Maus dafür braucht. Deswegen habe ich so ein Display bestellt. Das soll etwa bis Ende der Woche ankommen. Das Display hat im Bundle Angebot etwas über 20€ gekostet, incl. Versand und Steuern.
Bis das Display eintrifft, habe ich schon mal die DCC-EX Zentrale auf dem UNO aufgesetzt. Die genaue Beschreibung, wie man das macht, spare ich mir hier, da es fast genau so abläuft, wie bei der Zentrale für den Rollenprüfstand beschrieben. Einzig beim Erkennen des Arduino Boards erscheint hier etwas anderes:
Und weil der UNO kein WLan hat, kann man diese Option und die dazu gehörende Konfiguration auch nicht auswählen:
Von diesen beiden Kleinigkeiten abgesehen läuft das aber exakt genau so ab.
Da der Arduino normalerweise nicht über WLan verfügt, müsste man das extra nachrüsten, weswegen im Normalfall der ESP32 die bessere Wahl ist, da dieser bereits Wlan hat. In diesem Fall wird aber kein WLan gebraucht, da das der Raspbberry Pi übernimmt. Deswegen reicht auch ein UNO aus. Würde man WLan nachrüsten wollen, dann wäre der verfügbare Speicher zu knapp. Auch schon ohne die Wlan Ansteuerung belegt die Software etwa 95% des verfügbaren Speichers. Deswegen müsste man, wenn es aus was für Gründen auch immer kein ESP32 sein soll aber Wlan gebraucht wird, auf jeden Fall einen Arduino Mega nehmen, der dann genug Speicher bereitstellt. Hier wird aber definitiv kein Wlan gebraucht, also kann ich problemlos den UNO verwenden.
Der Aufbau der Hardware ist dafür einfacher als beim ESP32. Man muss keinen Widerstand an die Platine löten und keine Drahtbrücken setzen. Aber ganz ohne Modifikationen kommt man trotzdem nicht hin. Der Grund ist, das eine Modellbahn mit 12-18 Volt betrieben wird. Bei “normalen” Anwendungen für das Motorschild (z.B. Robotik) kommen fast immer 3-6 Volt Motoren zum Einsatz. Das Motorschild braucht natürlich eine eigene Stromversorgung, damit genug Leistung an die (Gleis-) Ausgänge abgegeben werden kann. Der µC kann diese Leistung keinesfalls bereit stellen. Bei den üblichen 6 Volt Motoren hat diese Versorgung eben 6 Volt. Dann kann man den Arduino auch aus der Stromversorgung des Motorschilds speisen. Bei etwa 15 Volt, wie für unseren Zweck nötig, brennt aber der Spannungsregler des UNO durch. Das Motorschild ist natürlich für solche Spannungen, wie wir sie benötigen, ausgelegt. Deswegen kann man auf der Unterseite des Motorschilds auch eine Lötbrücke durchtrennen, damit das Schild den Arduino nicht mehr mit Strom versorgt und somit auch den Spannungsregler nicht zerstören kann. Statt der Lötbrücke zu durchtrennen (was mir zu fummelig war), kann man auch wieder ein Beinchen abbiegen, damit es keine Verbindung mehr hat. Ganz so, wie wir es gleich dreifach beim ESP32 gemacht haben.
So kann man das völlig problemlos auch wieder rückgängig machen, wenn man das Schild noch mal für etwas anderes verwenden will. Statt das Beinchen abzubiegen, kann man auch einfach abknipsen, ganz wie beim ESP32 beschrieben. Egal welche der drei Methoden (Lötbrücke trennen, Beinchen abwinkeln oder abkneifen) man anwendet, dadurch wird er Arduino gegen die Überspannung geschützt. Ich denke, man erkennt auf dem Foto, das hier das letzte Beinchen an dem längeren Anschluss abgebogen werden muss, wieder von den Stromanschlüssen her gezählt. Oben auf dem Schild steht “Vin” an dem Pin. Ebenfalls wie beim ESP32 muss man den schwarzen Stromstecker auf dem Arduino flacher feilen und die Lötpunkte der Stromklemmen auf dem Schild so weit möglich einkürzen, damit es nicht zu wackeligen Steckverbindungen und somit Störungen kommt. Da wir den UNO später per USB mit dem Raspberry Pi verbinden, braucht er keine eigene Stromversorgung. Die erfolgt dann vom Pi über das USB Kabel.
Auf dem Raspberry Pi wird ein spezielles fertiges Image verwendet, welches ein Raspberry Pi Betriebssystem mit vorinstalliertem JMRI und einigen anderen, für diesen Zweck wichtigen Dingen ohne Installationsaufwand bereitstellt. Dazu besuchen wir die Seite des Entwicklers dieses Image. Hier etwa herunter scrollen bis “To use”. Dann folgt ein Link, über den man das aktuelle Image herunter laden kann. Die Datei ist 1,8 GB groß, wird also eine Weile zum Download brauchen. Hat man die Datei mit der Endung .xz (muss so sein) herunter geladen legt man eine Micro- SD Karte in einen Kartenleser ein. Die meisten Computer haben so etwas eingebaut. Falls nicht, SD Kartenleser für USB bekommt man für kleine einstellige Euro Beträge überall, wo es auch Computer- Zubehör gibt. Ein Beispiel von unendlich vielen.
Um das Image auf die Micro- SD Karte zu schreiben brauchen wir neben dem Kartenleser auch eine Software, die das für uns erledigt. Der Autor empfiehlt “Etcher“, was auch ich hier verwende. Es gibt aber unzählige andere, meist kostenlose Tools, die genau das erledigen können. Wer schon mal mit SD Karten zu tun hatte, wird seine Vorlieben haben. Ich verwende hier eben Etcher.
Die Bedienung ist einfach. Nachdem man Etcher herunter geladen und installiert hat startet man das Programm. Nun klickt man auf “Flash from file”, also ein vorab herunter geladenes Image schreiben. Wenn wir nun auf den blauen Knopf drücken, kommt ein Standard- Dateirequester, mit dessen Hilfe wir die zuvor geladene .xz Datei auswählen.
Sobald das erledigt ist, wird der nächste Knopf blau, “Select target”, also Ziel auswählen.
Neben der 32 GB SD Karte ist bei mir auch noch eine externe 2 TB Festplatte angeschlossen. Das ist bei mir notwendig, da ich dort selten genutzte Programme aufhebe, zu denen Etcher gehört. Aber die Festplatte ist Etcher verdächtig groß, weswegen sie mit einem Warnhinweis “Large Drive” versehen ist. Ausgewählt ist hier automatisch schon unsere SD Karte.
Im Beispiel oben hat sie 32 GByte, was heute schon eher klein ist. 16 GB reicht aber aus, damit alles funktioniert. Eine 32 GB Micro- SD Karte bekommt man für ca. 5€, manchmal sogar bei Aldi und Co. Im Beispiel- Link ist die 32 GB Karte mit 3,50€ sogar deutlich billiger als die 16 GB Variante, die 7,75€ kosten soll. Meist hat man so etwas aber ohnehin noch herum liegen. Besonders hohe Ansprüche werden in diesem Fall nicht gestellt. Man muss also nicht zwingend eine extrem teure High End Karte dafür kaufen. Wenn man so eine teure Karte über hat, spricht aber natürlich gar nichts dagegen, sie zu verwenden.
Wenn die passende Karte ausgewählt wurde, wird der letzte Knopf Blau, “Flash”. Wenn man da drauf drückt, wird das Image auf die karte geschrieben. Das wird eine Weile dauern, also etwas Geduld.
Sobald der Vorgang erfolgreich abgeschlossen ist, können wir Etcher wieder beenden und die SD Karte in den Raspberry Pi einlegen. Wenn der Pi nun Strom bekommt, startet er automatisch und führt JMRI aus.
Apropos Strom. Der Raspberry Pi hat zwar eine USB Buchse für die Stromversorgung, ist aber extrem pingelig, was die tatsächliche Spannung betrifft. Er erwartet zwingend 5,1 Volt. Mit den üblichen 5,0 Volt vom USB zickt er rum, stürzt ab oder startet erst gar nicht, selbst wenn die eigentliche Leistung locker ausreichen würde. Man sollte entweder ein Original- Netzteil oder einen Nachbau, der ausdrücklich 5,1 Volt liefert, verwenden. Mit normalen 5 Volt Netzteilen bekommt man das Ganze nicht stabil ans laufen. Sonst muss man zwingend einen genau auf 5,1 Volt eingestellten DC- DC Wandler verwenden. So kann man z.B. aus einem 15 Volt Netzteil mit genügend Leistung (absolutes Minimum sind 3 Ampere, dann kann man aber keine sehr stromhungrigen Loks programmieren) sowohl das Motorschild für den DCC Gleisstrom als auch den Raspberry Pi incl. dem per USB angeschlossenen Arduino versorgen und muss nicht mit 2 Netzteilen herum hampeln. Wenn ich den kompletten Aufbau montiere, mache ich entsprechende Fotos und Skizzen, wie man alles anschließt. Das wird aber wohl erst nächste Woche etwas werden.
Übrigens habe ich das Image mal mit dem Pi 3 über VNC getestet. Das Ganze funktioniert, ist mir aber definitiv zu lahm und träge. Also wird dann doch der Pi 4 mit 4GB zum Einsatz kommen und der Pi 3 wohl in Rente geschickt werden. Wenn ihr euch einen Raspberry für diesen Zweck anschafft, dann nehmt ab besten mindestens einen Pi 4.
Aus dem Pi 3 kann man wohl noch einen WiThrottle Adapter für eine Zentrale ohne Anschlussmöglichkeit für Funk Handregler machen. Als Decoder Programmer ist er (mir persönlich) aber zu lahm.
Wenn die weiteren Teile da sind, geht es hier weiter.