Hey! Ich habe einen gebrauchten Geldscheinleser NV9 USB+ in Verwendung und plötzlich funktioniert er nicht mehr. Ich bin der Meinung, dass ich nur Softwareänderungen gemacht habe... Kurzform: Ich bekomme keine Daten am ESP32 (Serial, RX-Port) mehr, aber der Leser reagiert auf alle Befehle, die ich via TX (Serial ESP32) sende. Programmiert habe ich den ESP32 mit der Arduino IDE. Eingeleitet ist der Code mit "Serial2.begin(300, SERIAL_8N2, 4, 17);" Die Baudrate, der Serial-Typ 8N2 und die Ports sind korrekt (4 RX vom ESP mit TX1 des Lesers und 17 TX/ESP mit RX5 des Lesers verbunden. Kabel sind auf Kabelbruch geprüft. Die Pins habe ich auch schon testweise getauscht, aber das Verhalten ändert sich nicht. Einen anderen ESP32 habe ich auch getestet. Er kann meine Befehle seriell empfangen (z.B. Sperren von einzelnen Scheinen), liefert aber keine Rückmeldung, dass Schein x gesperrt oder welcher Schein eingelegt wurde. Im Code, wo die Rückmeldungen sein sollten, kommt einmal zum ESP-Start eine 0 und das war's. Früher kamen sämtliche Codes (Welche Banknote, Status,...), die ich auswerten konnte: if (Serial2.available()) { byte byteInNoteAcceptor = Serial2.read(); Serial.print("---IN-"); Serial.print(byteInNoteAcceptor); Serial.println("---"); } Kann ich die RX/TX PINs messen? Konkret wenn ja, was ich wo messen müsste und welches Ergebniss sollte ich erhalten? Zum Messen hätte ich ein Siglent SDM3065X-SC da und theoretisch ein altes OWON SDS7102V, wobei ich eher ein Noob bin und nur rudimentäres Hobby-Halbwissen habe - ich weiß wo der Ein-Schalter ist. ;D Vielleicht hat ja der ein oder Andere eine Idee für mich, was ich wie messen könnte. Ein (SMD)Bauteil selbst zu tauschen, sollte nicht das Problem sein. :-) Wobei ich die große Hoffnung habe, dass im Leser nur ein Kondensator, Transistor o.ä. kaputt ist. :-/ VLG
An S. schrieb: > Kann ich die RX/TX PINs messen? Konkret wenn ja, was ich wo messen > müsste und welches Ergebniss sollte ich erhalten? Im Ruhezustand haben Tx und Rx HIGH Pegel, die kannst du mit einrm Multimeter messen. Mit einem Oszilloskop kannst du die LOW Pegel und die Qualität der Signalwechsel kontrollieren. Mit einem Logic Analyzer kannst du die Signale aufzeichnen und Dekodieren. Mit dem Eingang eines UART Adapters kannst du die Signale mit-lesen. Wer mit Seriellen Schnittstellen hantiert, sollte sich diese Werkzeuge besorgen und sich damit (an einem funktionierenden System) vertraut machen, damit man nicht im Blindflug unterwegs ist. Für 60€ kann man das alles schon bekommen.
:
Bearbeitet durch User
Bei mir: #include <HardwareSerial.h> HardwareSerial SerialGPS ( 2 ); const byte rx2Pin = 22; const byte tx2Pin = 27; SerialGPS.begin(9600,SERIAL_8N1,22,27);
Das Siglent ist doch schon ein halbes Oszi. Auf schnelle Rate stellen in der Trenderkennung und mal am TX Pin der Datenquelle (Geldscheindings) messen, während sie antworten soll.
:
Bearbeitet durch User
Ich habe wie folgt gemessen: OHNE Verbindung zwischen ESP und Leser: ESP32 TX17 3,23V ESP32 RX4 3,22V (oder <5mV wenn PullUP - deaktiviert) LESER TX1 40mV LESER RX5 4,01V Wenn Leser und ESP32 jeweils mit passendem RX-TX verbunden sind, kann ich folgende Spannungen messen: ESP32 TX17 - Leser RX5: 3,26V ESP32 RX4 - Leser TX1: 3,29V (ohne PullUP <5 mV) An diesen Code (in dem Video) hatte ich mich initial gehalten, der auch lange funktionierte... https://www.youtube.com/watch?v=M2E2yWcKJfc Ein neues Banknoten-Set (mit Firmware) habe ich auch geflasht und die Programmierkarte (Serial/SIO, 300 baud...) habe ich auch höchstvorsorglich neu durchgeschoben. Ohne Erfolg. Die SIO Schnittstelle scheint ja auch korrekt konfiguriert, denn sonst würde er ja meine befehle tendenziell auch nicht annehmen können. :-/ VG
Rüdiger B. schrieb: > Bei mir: > #include <HardwareSerial.h> > HardwareSerial SerialGPS ( 2 ); > > const byte rx2Pin = 22; > const byte tx2Pin = 27; > SerialGPS.begin(9600,SERIAL_8N1,22,27); Da frag ich mich, warum Konstanten mit Namen angelegt werden (rx2Pin/tx2Pin), wenn die in der nächsten Zeile dann schon wieder nicht mehr verwendet werden ...
Matthias S. schrieb: > Auf schnelle Rate stellen in > der Trenderkennung und mal am TX Pin der Datenquelle (Geldscheindings) > messen, während sie antworten soll. Bei 2V, Aperture 0,5PLC, Input 10M im TrendChart sprang er bei 0-0,1V rum - nur am TX vom Leser verbunden. Auch wenn ich ein Schein reinwerfe und er per Serial eine Dezimalzahl (1 für ein 5er) senden müsste. Gleiche Einstellung und mit TX vom ESP verbunden. Sobald ich Befehle Serial2.write(...); sende, kann ich im Chart einzelne Peaks sehen und das Level liegt bei 3,3V. Ist TX am RX des ESPs dran, sind es ca. kontinuierliche 3V (Range von 2V auf 20V), wobei ich in dem Chart keine Peaks sehen kann. VG Ps: Am Rande: Kannst Du mir ein LA für Noobs empfehlen? Können die auch I2C auslesen? Im Traum habe ich schon ein SDS2204XHD oder SDS3034XHD gesehen.
:
Bearbeitet durch User
Harald K. schrieb: > Da frag ich mich, warum Konstanten mit Namen angelegt werden > (rx2Pin/tx2Pin), wenn die in der nächsten Zeile dann schon wieder nicht > mehr verwendet werden ... cut and paste und dann ein Error falscher Typ.
An S. schrieb: > Bei 2V, Aperture 0,5PLC, Input 10M im TrendChart sprang er bei 0-0,1V > rum - nur am TX vom Leser verbunden. Klingt danach, dass das entweder ein Open-Collector-Ausgang ist (sieht man bei UART-Anwendungen selten) oder der Ausgangstreiber defekt ist.
Also, LESER TX1 40mV da ist schon mal was faul. Den ESP kannst du ja einfach testen indem du TX mit RX verbindest. Dein Leser scheint auch nicht mit 3.3V zu arbeiten, sonst währen da am RX nicht 4V zu messen. Das ist auf dem Weg vom Leser zum ESP nicht so gut. Allerdings würde da eher der ESP Schaden nehmen. Wie werden die beiden Teile mit Strom versorgt? Datenleitung verbunden aber ein Schaltungsteil ohne Strom sollte auch vermieden werden. Sascha
Also. Beim ESP habe ich die Pins mal testweise getauscht und auch beim zweiten ESP gehts ja nicht. Spannungsversorgung: Großteils hing er an einem Schaltnetzteil mit 12V und 5V Ausgang. Die Spannungen passen. Zum Testen hängt der Leser an einem UNI-T UDP3305S-E Labornetzteil. Die max. Ampere (vom Schaltnetzteil abgelesen) passen auch zum Datenblatt und zum früheren Verhalten. Der ESP ist zuletzt/aktuell per USB angeschlossen und es existiert und existierte immer eine GND-Verbindung zwischen dem ESP und dem Leser. Zu den Interface Logic Levels habe ich folgendes in der Doku gefunden: - Inputs Logic Low 0-0,5V / Logic High 3,7-12V - Outputs with 2k2pullup Logic Low +0,6V / Logic High Pull-up Voltage of Host Interface - Maximum Current Sink 50 mA per Output Habe nochmal den Widerstand zwischen GND / 12V Anschluss und den jeweiligen RX/TX PINs gemessen, wo der Leser natürlich aus und keine Leitung angeklemmt ist: GND - RX: 4,9k GND - TX: OL 12V - RX: 330k 12V - TX: OL Müsste ich gemäß der Manual (siehe oben) zwischen 12V und TX nicht 2,2K messen können? Oder ist das ein irrglaube meinerseits? VG und an allen zwischendurch einen großen Dank für Eure Hilfe und vielen guten Tips!
Der PullUp muss eigentlich extern angelegt werden. Z.B. bei dir an TXD vom Prüfer und 3.3V vom ESP.
An S. schrieb: > Inputs Logic Low 0-0,5V / Logic High 3,7-12V Damit ist die Ansteuerung mit 3.3V aus dem ESP32 schonmal ausserhalb der Spezifikation und das Funktionieren reine Glückssache. An S. schrieb: > Outputs with 2k2pullup Logic Low +0,6V / Logic High Pull-up Voltage of > Host Interface Also hat das Gerät tatsächlich einen Open-Collector-Ausgang, braucht also einen Pullup. An S. schrieb: > Müsste ich gemäß der Manual (siehe oben) zwischen 12V und TX nicht 2,2K > messen können? Sie meinen damit eher, dass die Gegenstelle diesen Pullup haben muss. Und wenn Du den eingebaut hast, ist die Frage, ob der Ausgang die Spannung beim Senden runterzieht oder nicht. Am besten mal mit dem Oszi angucken, die Ruhelage ist High-Pegel, und jedes Byte beginnt mit einem Low-Pegel (Startbit).
An S. schrieb: > LESER TX1 40mV Kaputt oder (ungewöhnlich) open-collector. Da er virher funktionierte und jetzt nucht nehr ist er vermutlich kaputt. Kann man mit Pullup und Oszilloskop schnell prüfen.
:
Bearbeitet durch User
Sherlock 🕵🏽♂️ schrieb: > Kaputt oder (ungewöhnlich) open-collector ... ... oder Open-Collector ohne Pull-Up.
Ich werde morgen mal ein 2,2K (?) Pullup zwischen 3.3V und dem RX des ESPs werfen. Den SW-Pullup nehme ich dann raus? Ich muss gerade passen, ob ich einen SW-Pullup zu Anfang drin hatte - ein HW-Pullup definitiv nicht. VG
An S. schrieb: > Den SW-Pullup nehme ich dann raus? Was ist ein "SW-Pullup"? Ein Widerstand in einer elektronischen Schaltung ist immer HW. Ob du den rausnehmen willst, kannst du selbst entscheiden. Wie stark würde sich wohl der Gesamtwiderstand ändern, wenn der parallel zu 2.2kΩ liegt und wäre das ein nennenswerter Unterschied für die Funktion? Wenn du allerdings nur 40mV misst, wo eigentlich H-Pegel vorhanden sein soll, ist wohl kein Pull-Up aktiv (oder der Ausgang wird falsch gesteuert). Wie groß wäre denn dein "SW-Pullup"?
:
Bearbeitet durch User
Im Handbuch Seite 13 steht, dass die Ausgänge Open Collector sind. Mach einfach einen Pullup von z.B. 10k dran und guck' was passiert. Oder du probierst mal auf dem RX-Pin der Softserial vorher den eingebauten Pullup zu aktivieren. Soviel ich weiss, gibt es extra für ESPs eine eigene Softserial-Lib, möglicherweise bietet diese von Hause aus einen solchen Parameter (im Gegensatz zur Standard-Soft-Serial) Ich verwende den Note Acceptor auch, allerdings mit Arduino Nano, da gab es diese Probleme noch nie. Vielleicht ist der ESP da "kritischer" als die Arduinos. https://www.coinoperatorshop.com/media/products/NV9%20Manual%20Deutsch.pdf
:
Bearbeitet durch User
Rainer W. schrieb: > An S. schrieb: >> Den SW-Pullup nehme ich dann raus? > > Was ist ein "SW-Pullup"? > Ein Widerstand in einer elektronischen Schaltung ist immer HW. Ein per Software aktivier/deaktiverbarer (eingebauter) Pullup am Pin des Mikrocontrollers. Als ob das so schwer zu verstehen wäre ...
Frank E. schrieb: > Ein per Software aktivier/deaktiverbarer (eingebauter) Pullup am Pin des > Mikrocontrollers. Als ob das so schwer zu verstehen wäre ... Deshalb bleibt es trotzdem Hardware. Frank E. schrieb: > Oder du probierst mal auf dem RX-Pin der Softserial vorher den > eingebauten Pullup zu aktivieren. Ein Open-Kollektor Ausgang für eine serielle Schnittstelle ist schon etwas exotisch. Da würde ich mir nur bedingt Hoffnungen machen, dass die Softserial da irgendetwas vorhält. Allenfalls kann man nach dem Öffnen der Schnittstelle den Pull-Up am Pin aktivieren. Eine Aktivierung des Pull-Ups vorher wird vermutlich von der Initialisierung überschrieben.
:
Bearbeitet durch User
Ihr seid einfach nur GEIL! Vorab: Es funktioniert wieder alles. Ihr habt so auf den Input-PullUp rumgeritten, so dass es mir nicht aus den Kopf ging. Scheinbar habe ich bei irgendeinem Udate versehentlich und unbemerkt meinen SW-PullUP gelöscht. Im Rahmen der Recherche/Fehlersuche, habe ich den natürlich wieder ergänzt - korrekter Syntax/Pin. Nun ja, jetzt war ich nochmal auf den Dachboden, habe ein 10k rausgesucht und habe mich nochmal vor den Code gesetzt. Wir fiel auf, dass ich dummerweise den SW-PullUP-Befehl erst NACH dem Connect [Serial.begin()] eingefügt habe. Nach der Änderung (Reihenfolge) bekam ich sofort wieder Meldungen von dem Geldscheinleser. Zur HW/SW Diskussion: Ich will mich mangels Fachwissen nun nicht so weit aus dem Fenster lehnen, aber es ist doch höchstwahrscheinlich klar, was ich damit meine. Vermutlich, ich weiß es nicht, sind IM Chip auch die passenden Widerstände, dessen Verbindungen SW-seitig (de)aktiviert werden. Und wenn es Chip-Intern anders gelöst ist, ist es auch super. Ich habe auch schon mal gehört, dass externe PullUP/DOWNs besser sein sollen, aber ob das stimmt, weiß ich genauso wenig. FAZIT: Der "fehlende" (zuletzt falsch programmierte) pullUP-Widerstand war die Ursache und IHR SEID GEIL! :-D VIELEN VIELEN DANK FÜR DIE SUPER TIPPS! PS: Heute kam das neue Oszilliskop zur Fehlersuche, das noch im mittlerweile geöffneten Karton liegt. Und falls ich euch nie mehr mit Fragen auf den Keks geh', hat meine Frau den Preis herausgefunden... :-D
:
Bearbeitet durch User
An S. schrieb: > Ich habe auch schon mal gehört, dass externe PullUP/DOWNs besser sein > sollen, aber ob das stimmt, weiß ich genauso wenig. Grund 1) Die internen Pull-Widerstände haben ungefähr 50 kΩ. Wenn da lange Leitungen (> 20cm) dran hängen, dann bilden diese zusammen mit der Leitungs-Kapazität einen Tiefpass, der die Signale erheblich verändert. Grund 2) Kontakte (von Tastern, Schaltern, Relais, ...) brauchen meisten einen gewissen Mindest-Strom, um langfristig fit zu bleiben. Bei zu wenig Belastung werden sie irgendwann unzuverlässig. Wenn das Datenblatt keine Angabe enthält, hat sich als "Hausnummer" für kleine Schalter 1 mA als Mindest-Strom bewährt. Die Pull-Widerstände liegen dann typischerweise im Bereich von 1 kΩ bis 4,7 kΩ. Grund 3) Hochohmig abgeschlossene Leitungen reagieren empfindlicher auf Radiowellen, als niederohmige. Gegen Radiowellen (mit Frequenzen die erheblich höher als das Nutzsignal sind) helfen auch Kondensatoren.
Vielen Dank für die sehr ausführliche Antwort. Ich werde, wenn ich Platinen planen sollte, künftig darauf achten, dass ich einen externen Pull-UP einplane. Gilt gleiche Argumentation auch für PullDOWNs oder nur für PullUPs? :-)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.