ich möchte in mein Modelbaubereich (Eisenbahn) mein Digital Singal DCC auslesen, es gibt einige DCC Monitore aber möchte mich selbst in die Sache einarbeiten.
Läuft ja Super, nur verstehe ich den Code nicht, und ein einfaches Tutorial zu NmraDcc find ich auch nicht's.
Mir würde es am Anfang reichen, wenn ich erstmal nur die Bytes auslesen kann.
Selber Lerne ich nicht durchs Lesen, sondern wenn ich Probieren kann oder wie fange ich am besten an, da ich auch noch AC Digital habe, wird die Sache etwas eingeschrängt.
Sory nein um Gottes willen, Stummi schön und gut aber klare Antworten suche ich wo anders.
Aus diesem Forum ist das der einzige Code der bei mir Funktioniert, daher die Frage wie man diesen oder neu Schreiben kann und oder wie man am Besten Anfängt überhaupt diese Bibliothek aufzubauen, so für mich, als verständnis, da her habe ich geschrieben, das es mir reichen würde, am anfang nur das Singal zu Empfangen, überhaupt was zu sehen...
das es mir reichen würde, am anfang nur das Singal zu Empfangen,
überhaupt was zu sehen...
Wie gesagt: nimm ein digitales Speicheroszilloskop und miss, was auf der DDC-Leitung los ist. Das, was du da siehst, wirst du dann anschließend in der Software entschlüsseln und auswerten müssen.
Dieser Monitor ist auf Anhieb gelaufen.
Vielleicht hilft es den To.
Durch einfache Änderungen können auch einzelne Adressen und Adressgruppen selektiert werden.
Wenn ich suche finde ich das vielleicht auch....
Dies sollte natürlich vorhanden sein
#include <NmraDcc.h>
Wie gesagt: nimm ein digitales Speicheroszilloskop und miss, was auf der
DDC-Leitung los ist.
Ein kleiner Logikanalysator im Gegenwert eines Kantinenessens würde auch schon einmal weiter helfen, wenn die Hardware zur Pegelumsetzung bereits funktioniert und ein DSO nicht zur Verfügung steht.
Den Code habe ich auch, versuche gerade diesen auseinnader zunehmen und unbrauchbares zulöschen um zu sehen, was passiert, die Version 1 oder noch früher wäre Hilfreicher, da diese meist kleiner sind und nicht so viel schnick schnack haben....
Nur verstehe ich den Code nicht, und ein einfaches
Tutorial zu NmraDcc find ich auch nicht's.
Mir würde es am Anfang reichen, wenn ich erstmal nur die Bytes auslesen
kann.
QMaik,
nutze den Code so wie er ist!
Nichts löschen!
Wenn er funktioniert mit deiner Hardware kannst du mit dem Cod und den Monitoranzeigen den Cod und das DCC Signal besser verstehen.
AcK Hardware brauchst du nicht, aber ich würde es mit aufbauen, da das Teil später zum richtigen Decoder umgestrickt werden kann.
Der Orginalcod ist einfach zu erweiter um Adressen zu selektieren.
Da deine Zentrale wer weis wie viele Adressen sendet.
Vor einiger Zeit mal aufgebaut mit ACK und zusätzliche Portausgabe zum Test.
Max 2Std.
Die Leuchtdioden waren zum test und jetzt glaube ich sie werden durch F0-F4
geschaltet.
Müsste erst suchen was ich für eine Geändertes Prog ich eingeladen habe.
Noch einen Lokdecoder von 2017 glaube ich.
Mit 17 Ausgaben, alles leicht anpassbar.
Auch zur Steuerung von Anzeigen, Soundmodul usw.
Das Modul hat keine Fremdspannung wird direkt von der DCC Spannung versorgt.
War mal ein Experiment.
A6 mit Poti
A7 mit Taster z.B.Adresse auf 3 setzen
Alles Materialien welche so rumlagen, bis auf den Arduino der is modern;-))
Habe den Code nun auseinander gekommen um bestimmte bereiche zu Verstehen, der erste Versuch hat auch gleich geklappt und bekomme nun den BIN Code angezeigt.
Da ich hier mit einem Nano Arbeite wäre meine Frage, wie kann ich dies um Stellen (auch vom Schlaltplan) auf ein ESP32
Da ich hier mit einem Nano Arbeite wäre meine Frage, wie kann ich dies
um Stellen (auch vom Schlaltplan) auf ein ESP32
Glaube ich habe jetzt bei deinen Hinweis zu stummi gesehen das man am ESP32 DCC Monitor arbeitet.
Zum aufsetzen auf die Schiene und mit Bluetooth anzeige zum Handy/PC
Wollte ich auch schon machen , aber es ist beim Wollen geblieben.
Jetzt kann ich ja warten bis du es gemacht oder gefunden hast.;-))
Das hab ich soweit nicht verfolgt, das dort an ESP32 gearbeitet wird.
Am Strom kann es nicht liegen (ESP 3.3V) das der ESP keine Daten Empfängt, es muss was mit den Digital Port sein, da ich gerade um steige von Arduino zu ESP muss ich eben so dies lernen, das es andere Anschlüsse hat.
Aber wieso kommt nicht beim ESP an:
Warum überhaupt ein ESP? Der ist reichlich oversized. Oder brauchst du
WLAN oder BT?
Das hat schon Vorteile.
Anschluss an Schiene und Kommunikation über Bluetooth.
Man könnte auch einen MP3 Player anschließen und alles Ansagen lassen.
Habe ich vor Jahren am Lockdecoder gemacht.
Is aber mehr oder weniger ein AHA Effekt bei Ausstellungen.
Ein ESP Bietet schon vorteile, Speicher CPU schon größer und Preisgünstiger, für die weitere Verarbeitung am Code kann ich ein besseres zusammen Spiel bauen wenn der DCC Input gehen würde.
Habe nun viele PIN durchprobiert, aber keine Ausgabe, laut NmraDcc soll ESP32 Unterstützt werden.
es lag nicht am Code oder ESP, an Arduino IDE, der zeigt mir nicht die Inputs an, Starte ich das ganze über Putty, bekomme ich meine Singale, IDE 1.8 oder 2 können den Input von ESP nicht anzeigen, hmm, ok, gibt es eine alternative zu diesem IDE (Windows oder Linux)?
Dein DCC_Monitor läuft nur Beschränk auf dem ESP, da er die Werte min() und max() nicht verarbeiten kann, wenn ich den Buffer abschalte, läuft das Script. Nun überlege ich, die Werte in einer array zu Speichern und bei Unterschiede diese neu Anzeigen und geändert werden, der erste Versuch klappt ja aber wenn sich der Wert ändert, zeigt er es nicht an, bin es von PHP/Perl gerwohnt das man offene array hat, hier bei C++ muss man eine feste Größe angeben, aber weiß ich vorher, wieviele Lok's zum einsatzt kommen?!?
Hattest du schonmal geschaut nach deiner ersten Version, die würde mich wirklich Interessieren, die aus dem Forum kann man nicht gebrauchen, da die hälfte fehlt...
Nein, erstmal ging es um einen 10-beinigen Logikanalysator mit USB Schnittstell als Alternative zum Oszi. Damit kommt man für einen Bruchteil des Preises deutlich weiter, wenn es um Zeitverlauf und Verständnis der Daten von der Schiene geht:
https://www.ebay.de/itm/275942918330
IDE 1.8 oder 2 können den Input von ESP nicht anzeigen
Bei mir schon. Man muss allerdings den richtigen ESP mit den richtigen Einstellungen auswählen. Dazu gehört auch, ob die GPIO-Pins nach Espressif oder nach Wemos&Co numeriert sein sollen.
Nach einer guten Woche Lesen/Verstehen und Handeln, bekomme ich es immer noch nicht hin, DCC ohne Libraries auszulesen.
Versucht habe ich mich an:
https://rudysmodelrailway.wordpress.com/2015/10/23/dcc-sniffer-packet-analyser-with-arduino/
zu halten und mehrere Verschiedene Versionen ausprobiert aber bekomme hier gar kein Signal über den Nana, wenn ich es über den Uno Probiere, sehe ich, bei geschlossenden Monitor, das meine LED im Takt Blinkt, öffne ich den Monitor, scheint das Script stehen zu bleiben, selbt ein Input kann ich nicht ausführen.
Warum das ganze ohne NMRA, da ich auf die Bibliothek Verzichten möchte und nur die Lok Adressen auslesen möchte und diese in einer Array speichern.
Entweder bin ich zu alte dafür oder ich hab es nicht verstanden...
Ich habe keine Ahnung von DCC und habe hier nur oberflächlich gelesen. Es ging darum, dass nach dem Öffnen des seriellen Monitors der Arduino-IDE die Verbindung hängt, mit Putty aber funktioniert? Kann es sein, dass der Reset, den der serielle Monitor beim Öffnnen auslöst (DTR) und damit das bereits auf dem Uno laufende Programm unterbricht, die Kommunikation durcheinander bringt? Mag sein, dass ich mit meiner Vermutung auf dem völlig falschen Gleis bin :-)
das mit dem Monitor Stört mich nicht, das Problem in der IDE konnte ich lösen (DCC Monitor von Stumi) aber das angehängte Script läuft gar nicht und genau das würde mich Interessieren.
nochmal überlegt, ob es vielleicht am Schaltplan liegt
...oder an der Schaltung. Aber da könnte und sollte man nun einfach mit einem Oszilloskop die Signale messen.
Ich verstehe beim besten Willen nicht, warum manche meinen, ohne ein solches Messgerät serielle Protokolle entschlüsseln zu können. Und: weil das hier ein zutiefst analoges Signal mit einer sehr analogen Signalaufbereitung ist, reicht ein 10€ Logikanalyzer nicht aus.
Da bei mir genau dieser Schaltplan perfekt mit meinem Sketch funktioniert, muss der Fehler wohl entweder an deiner Verdrahtung oder deinem Sketch liegen.
BTW: genauso solche nicht oder eingeschränkt funktionierenden Sketche wie der von dir verwendete haben mich veranlasst selber einen zu schreiben!
Bei einem derartigen pillepalle Signal wundert es mich ersthaft, wie man sich so lange damit beschäftigen kann, ohne zu irgendeinem verwertbaren Ergebnis zu kommen. Man muss nur zwischen 56 und >100µs unterscheiden, die Bits einsammeln, Pakete draus machen und die dann dekodieren. Das ist jetzt auch zu Fuß nicht wirklich schwer und das geht in der Tat auch ohne Oszilloskop, wenn man eine UART zum Debuggen am PC beispielsweise nutzt und sich Zählwerte und den Empfangspuffer von den eingesammelten Bits ausgeben lässt. Der Rest ist dann nur noch Fleißarbeit.
Das ist dann so ähnlich wie "Autofahren nach Gehör": wenn es scheppert oder nicht mehr weitergeht, dann weiß man erst mal nicht, woran es denn jetzt schon wieder klemmt.
Genau das sehen wir hier: es geht schon eine Woche nicht weiter. Und keiner weiß warum.
und das geht in der Tat auch ohne Oszilloskop, wenn man
... nicht grade blutiger Anfänger ist. Und ich habe mir schon früh in meiner Elektronikkarriere ein Oszi gekauft obwohl mich das deutlich mehr gekostet hat als eine Eitrittskarte zu einem Konzert.
Oder andersrum: wer heute meint, ein Oszi wäre "zu teuer" für sein Elektronikhobby, der sollte irgendein wirklich billiges Hobby aussuchen wie z.B. Instafilmchen anschauen.
Ich glaube, das Modelleisenbahn nicht gerade günstig ist und ich in einem so einen Gerät den kosten nutzen Facktor nich nicht sehe für aktuell einmalige Sache. Zudem wird es mich auch nicht zu Lösung bringen.
Das man zwischen 50 und 120µs Suchen/Arbeiten muss weiß ich, meine Frage ist, wie kann ich es als Script umsetzen...
Ich glaube, das Modelleisenbahn nicht gerade günstig ist und ich in
einem so einen Gerät den kosten nutzen Facktor nich nicht sehe für
aktuell einmalige Sache. Zudem wird es mich auch nicht zu Lösung
bringen.
Zum Glauben geht man in die Kirche.
Oszilloskope / Logikanalyser mit USB-Anschluss bekommt man für 10 Euro (+ Versandkosten) bei diversen (in Deutschland ansässigen) Händler / Chinaimporteuren.
Ansonsten musst du dich halt durch den Quellcode hangeln bis du ihn verstanden hast.
Das man zwischen 50 und 120µs Suchen/Arbeiten muss weiß ich, meine Frage
ist, wie kann ich es als Script umsetzen...
Für sowas verwendet man ja auch integrierte Hardware.
DCC u.a. Digitalformate stammen aus den 1980ern, und mit Arnold waren die Sachen auch schon in Spur N verfügbar (in Zusammenarbeite mit Märklin).
(Mini-) Trix hatte das Selectrix-Digitalsystem.
Damals waren die Controller noch wesentlich leistungsschwächer, und die Firmen haben es trotzdem hinbekommen.
Da bleibt mir nur, dir viel Glück zu wünschen. Du wirst es brauchen.
Genau das meinte ich mit meinen Ausführungen, die Du weiter oben kritisch angemerkt hast. Aber es ist weniger das Glück, das der Kollege braucht, als eher den Willen, sich im Detail mit der Materie zu beschäftigen.
Ich vestehe die ganze Frage nicht.
Wenn man DCC bei google eingibt, dann ist der Artikel recht dünn. Hat aber unten Links auf die DCC Seite.
Dort gibt es komplette Specs. z.B. das hier
Damit kann man seine eigene Erkennung schreiben, ganz ohne C++, wenn es denn sein muss.
Apropos C++: so neu ist die Sprache auch nicht, ich benutze die seit 1991. Hätte man sich einarbeiten können. Dann könnte man auch Stummis Code verstehen. Der ist auch keine Raketenwissenschaft.
Ja Maik,
das wäre super. Aber es hat wahrscheinlich keiner solche Projekte.
Doch alle wollen mitreden!
Ich habe auch so etwas vor und suche vergebens. Fündig wird man
z.B. bei der PIC-Fraktion oder im Stummis-Modellbahnforum. Auch bei
den Arduinos gibt es solche Beispiele. Leider benutzen diese Biblios.
Ich würde es aber lieber mit den AVRs machen und in Bascom. Mir ist
aber schon klar, dass BASCOM das Problem sein wird. Aber wenn man
Assemblercode einbaut sollte es wohl machbar sein.
Heißt "sich selber einarbeiten" für dich nur "kopierten Code einsetzen"?
Wie wäre es denn, wenn du dir (nachdem du dich vergewissert hast, dass deine Hardware funtkioniert) mal das Gesamtpaket in Teilaufgaben zerlegst und erst mal das Timing anschaust und versuchst die Bits 0 und 1 zu unterscheiden (= OSI Layer 1):
Nun ja, wenn's AVR sein soll ... Ist schon über 20 Jahre alt, den AT90S1200 gibt's nicht mehr, aber prinzipiell sollte das leicht auf einen neueren Typ zu portieren sein. Die eigentliche Dekodierlogik steckt fast ausschließlich in der Interrupt-Routine für externen Interrupt.
Aber es hat wahrscheinlich keiner solche Projekte.
Doch alle wollen mitreden!
Ich arbeite gerade an einer DCC-Zentrale, die RailCom-fähig ist, siehe github: https://github.com/ukw100/FM22. Die Dokumentation ist aber noch nicht fertig, ist harte Arbeit.
Dazu gehört auch ein abgesetzter, autark arbeitender lokaler RailCom-Detektor, der beliebig viele Loks auf bis zu 256 Gleisstrecken erkennen und lokalisieren kann, um deren Aufenthaltsort zu bestimmen.
Als Abfallprodukt ist dabei auch ein DCC-Decoder entstanden, der nicht nur die RailCom-Signale in den Lücken der DCC-Frames erkennen soll, um die Loks zu lokalisieren, sondern auch noch DCC-Befehle entgegennehmen und ausführen kann, wie zum Beispiel die Ansteuerung einer WS2812-LED-Kette, um Modellbahngebäude, Laternen etc. zu beleuchten.
Langer Rede kurzer Sinn: Der Code des lokalen Railcom-Detektors und damit auch des DCC-Decoders ist noch nicht auf github, ich könnte ihn aber vorzeitig zur Verfügung stellen. Allerdings für ein STM32F401 Blackpill, nicht für AVR und auch nicht für ESP.
Zum Problem des TO: Auch mein Code wird ihm nicht weiterhelfen. Da hat Lothar schon recht: Da muss der TO selbst durch. Man kann nicht alle Wünsche durch Abkupfern erfüllen.
Mal eine Frage an die Fachleute:
Maik hat einen Schaltplan für die Eingangsbeschaltung des Sniffers eingestellt. Habe ihn hier nochmals kopiert.
Meine Frage ist aber warum werden 2 unterschiedliche Optokoppler verwendet?
So unterschiedlich sind deren Daten ja nicht und bei der Frequenz ist das DCC-Protokoll ja noch zu beherrschen.
Danke!
Der obere ist ein schneller OK, der das DCC-Signal an den Nano weitergibt.
Der untere dient nur zur Erzeugung von ACK-Impulsen. Das ist vollkommen zeitunkritisch; da tut es auch ein billiger langsamer Standard-OK.
Die ACK-Impulse werden auf dem Programmiergleis benötigt, um CVs der Dekoder durch eine Zentrale auszulesen. Das ist hier prinzipiell sinnbefreit, da es hier ja nur ein Monitor ist und kein Dekoder.