- 3D-Druck Einstieg und Tipps         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 74

Thema: Serielle Kommunikation zwischen Arduino Uno R3 und NodeMCU 12-E

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    HaWe
    Gast
    Zitat Zitat von fcn200 Beitrag anzeigen
    Hat leider auch nichts gebracht.
    Man sieht zwar das der Arduino sendet (TX-led blinkt in regelmäßigen Abständen ), aber auf Seiten des NodeMCU Boards kommtnichts an

    - - - Aktualisiert - - -

    Beim Programmieren ist mir noch Folgendes aufgefallen:

    Ich lasse mir vom Arduino zur Kontrolle auf der Konsole den gesendeten Wert (10.0) ausgeben, jedoch taucht dort auch in regelmäßigen Abständen der Wert "0.00" auf, der aber ürsprünglich gar nicht gesendet wird:
    Klicke auf die Grafik für eine größere Ansicht

Name:	ergebnis.JPG
Hits:	1
Größe:	20,9 KB
ID:	34065
    das Massekabel ist unverzichtbar, du scheinst also mehrere Fehler drin zu haben.
    Probier mal einfach nur moppis codes aus, bevor du noch mehr eigene Fehler reinbaust.

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    01.04.2019
    Beiträge
    25
    Zitat Zitat von HaWe Beitrag anzeigen
    das Massekabel ist unverzichtbar, du scheinst also mehrere Fehler drin zu haben.
    Probier mal einfach nur moppis codes aus, bevor du noch mehr eigene Fehler reinbaust.
    Habe ich bereits, auch mit Massekabel.
    ergebnis bleibt das selbe, kein Datenempfang beim NodeMCU Board..

  3. #3
    HaWe
    Gast
    Zitat Zitat von fcn200 Beitrag anzeigen
    Habe ich bereits, auch mit Massekabel.
    ergebnis bleibt das selbe, kein Datenempfang beim NodeMCU Board..
    dann poste mal deinen genauen Code für beide Boards (in code tags), dann muss moppi gucken, denn der code äuft ja bei ihm - oder ggf jemand anderes, der sich da auskennt.

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    01.04.2019
    Beiträge
    25
    Zitat Zitat von HaWe Beitrag anzeigen
    dann poste mal deinen genauen Code für beide Boards (in code tags), dann muss moppi gucken, denn der code äuft ja bei ihm - oder ggf jemand anderes, der sich da auskennt.
    NodeMCU:
    Code:
    #include <SoftwareSerial.h>
    SoftwareSerial NodeMCU (4,5);
    void setup(){
    Serial.begin(9600);
    NodeMCU.begin(4800);
    }
    
    void loop(){
           while(NodeMCU.available()){
                 float f = NodeMCU.parseFloat();
                 Serial.println(f);
           }
    }

    Arduino:
    Code:
    #include <SoftwareSerial.h>
    SoftwareSerial ArduinoUno(3,2);
    
    void setup(){
       Serial.begin(9600);
       ArduinoUno.begin(4800);
    }
    
    void loop(){
         float i = 10;
         Serial.println(i);
         ArduinoUno.print(i);
         delay(1000);
    }

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    40
    Beiträge
    3.416
    Code:
    void loop(){
           while(NodeMCU.available()){
                 float f = NodeMCU.parseFloat();
                 Serial.println(f);
           }
    }
    Da gruselt es mir, das ist eine klassische Falle für ein deadlock

    "never ever loop in loop() without escape route"

    mach da mal lieber ein if draus und mach es wie in der arduino doku

    Code:
    if(SWS.available > 3)
    wenn du aus irgendwelchen Gründen nur Bytesalat empfängst (Baudratenfehler z.B.) den dein parseFloat nicht versteht, kommst du nie aus der while raus, damit wird die loop() nie beendet und andere Prozesse im Hintergrund können nicht bearbeitet werden

    PS: "> 3" habe ich gewählt, weil eine float Zahl mindestens aus 3 Zeichen für "0.0" besteht
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  6. #6
    HaWe
    Gast
    du solltest doch erst mal moppis code verwenden, weil der doch nach seiner Aussage funktioniert, und du hast doch behauptet, dass du ihn verwendest -
    aber das ist doch nicht moppis code, oder?

    außerdem las ich gerade, dass ein Levelshifter von nodeMCU 3.3V auf Arduino 5V verwendet werden soll, da die beiden Boards ja mit verschiedenen Spannungen laufen: Bei Moppi kam dieser Hinweis auch erst ganz am Ende seines Topics.

    Code:
    Arduino TX --|   ( 5V Level )
                 |
                33k
                 |
                 |---- ESP RX ( 3.3V Level)
                 |
                47k
                 |
                GND
    du brauchst nur diesen Levelshifter Arduino TX -> ESP RX, nicht anders herum!

    @Ceos:
    zum Testen würde ich erst mal mit Buchstaben und Ints anfangen, solange es noch nicht klappt,
    aber moppis Code funktioniert ja offenbar zum Testen - dann kann man das ja immer noch mal ändern, wenn es erstmal überhaupt funktioniert wie es soll!

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    40
    Beiträge
    3.416
    ann kann man das ja immer noch mal ändern, wenn es erstmal überhaupt funktioniert wie es soll!
    Wenn es ein Baudratenfehler ist, wäre das schon eine Erklärung das er nichts empfängt, denn dann wäre der NodeMCU im deadlock
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    01.04.2019
    Beiträge
    25
    Zitat Zitat von HaWe Beitrag anzeigen
    du solltest doch erst mal moppis code verwenden, weil der doch nach seiner Aussage funktioniert, und du hast doch behauptet, dass du ihn verwendest -
    aber das ist doch nicht moppis code, oder?

    außerdem las ich gerade, dass ein Levelshifter von nodeMCU 3.3V auf Arduino 5V verwendet werden soll, da die beiden Boards ja mit verschiedenen Spannungen laufen: Bei Moppi kam dieser Hinweis auch erst ganz am Ende seines Topics.

    Code:
    Arduino TX --|   ( 5V Level )
                 |
                33k
                 |
                 |---- ESP RX ( 3.3V Level)
                 |
                47k
                 |
                GND
    du brauchst nur diesen Levelshifter Arduino TX -> ESP RX, nicht anders herum!

    @Ceos:
    zum Testen würde ich erst mal mit Buchstaben und Ints anfangen, solange es noch nicht klappt,
    aber moppis Code funktioniert ja offenbar zum Testen - dann kann man das ja immer noch mal ändern, wenn es erstmal überhaupt funktioniert wie es soll!
    Genau dies habe ich versucht, exakt so wie beschrieben.
    Nur die Ausgabe vom NodeMCU Board... bleibt nach wie vor leer..

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Zitat Zitat von HaWe Beitrag anzeigen
    dann poste mal deinen genauen Code für beide Boards (in code tags), dann muss moppi gucken, denn der code äuft ja bei ihm - oder ggf jemand anderes, der sich da auskennt.
    Wenn ich neue Dinge anfange und eine Anleitung habe, baue ich die Schaltung so, wie sie in der Anleitung drin ist. Zur Not nehme ich sogar noch dieselben Farben für die Verbindungskabel. Dann nehme ich exakt den Code aus der Anleitung und schaue mir das Ergebnis an.

    Und noch mal was zur Bibliothek, @HaWe. Du hast natürlich nicht unrecht, es steht im Netz so geschrieben. Ich habe aber nie eine andere Version installiert, sondern habe die vom Arduino genommen. Es gibt wohl bei den unterschiedlichen Versionen teils Probleme mit den Geschwindigkeiten, vom nodeMCU (>80MHz). Ich konnte aber keine Probleme feststellen, ich verwende im Code auch nur 4800, als Geschwindigkeit. Aber die Geschwindigkeit ist ja egal, jedenfalls für grundlegende Sachen.

    Wieder zurück: wenn ich das dann erfolgreich nachgebaut und ausprobiert habe, dann erst gehe ich dran und fange an, Dinge nach meinen Vorstellungen zu verändern. Gerade wenn man Anfänger ist, im Programmieren und Hardwarebereich, erleidet man jede Menge Probleme, wenn man von den Vorgaben abweicht. Das fängt bei Massekabeln zwischen den Geräten an, geht weiter bei evtl. Spannungsteilern die ich einbaue, wo keine sind, geht weiter mit anderen Softwarebibliotheken und anderen Geschwindigkeiten (hier Kommunikation), zieht sich dann über Schreibfehler (Syntax) im Quellcode und hört evtl dann auf, weil ich nicht mehr weiter weiß. Deshalb habe ich schon ganz zu Anfang geschrieben, dass er nochmal von vorn anfängt. Alles abbauen, durchatmen, Kaffee holen, die Bilder ausdrucken oder wie auch immer, den Code kopieren in einen eigenen Sketch, die Schaltung exakt nachbauen. Da ist nichts dran. Eine Masse-Leitung und ein Kommunikationskabel und 5 Zeilen Code. Wenn es dann noch nicht funktioniert, muss man sehen, woran das liegt. Da gibt es dann ja u.U. verschiedene Gründe.
    Wenn der Testaufbau erfolgreich war, kann man Änderungen vornehmen. Aber dann auch bitte eine nach der andern! nicht zwei oder drei auf einmal und wundern warum es nicht funktioniert.
    Beim Aufspielen des Sketch auf das nodeMCU un den Arduino muss man wohl auch aufpassen, dass man die richtigen Geräte auswählt. Weiß der Teufel, was da noch alles für Fehler zustande kommen können.

    Aller Anfang ist leider schwer, das musste jeder irgendwann mal lernen. Aber da hilft nur Mühe geben und zu versuchen, die Dinge zu verstehen. Ist ja schließlich über mehrere Seiten alles beschrieben und diskutiert worden, kann man also in Ruhe lesen. Wenn man Dinge nicht versteht, muss man dann gezielt fragen, warum das eine so ist und das andere so. Aber Geduld ist das wichtigste und der Glaube daran, dass man es hinbekommen wird.


    So ein Thema hatten wir schon mal, dass jemand meinte die Übertragung von UDP-Paketen mit dem nodeMCU wäre ein Problem. Da waren es letztlich ähnliche Fallstricke, wie ich eben geschrieben habe, die zum Misserfolg führten.

    Zur Pegelanpassung:

    Zitat Zitat von HaWe Beitrag anzeigen
    ich denke: auf beiden Bildern falsch angeschlossen.
    Siehe mein Schema oben.
    Nein, nicht falsch angeschlossen auf dem Bild, dass ich vom Aufbau gemacht habe. Der Grund steht im Thread, kann man nachlesen. Es gibt für einen Versuch hier vier Möglichkeiten: nur mit Widerstand den Pegel anpassen, mit Spannungsteiler den Pegel anpassen, mit gekauftem Pegelwandler den Pegel anpassen und gar nicht den Pegel anpassen. Alle Möglichkeiten haben bei mir funktioniert. Keine der Möglichkeiten ist "falsch", man muss nur wissen, wie man sie einsetzt.





    MfG

    - - - Aktualisiert - - -

    Zitat Zitat von fcn200 Beitrag anzeigen
    Laut der Anleitung hier nicht:
    Klicke auf die Grafik für eine größere Ansicht

Name:	Zwischenablage01.jpg
Hits:	8
Größe:	72,3 KB
ID:	34068

    An D2 ist er dran, genau wie bei mir:
    Klicke auf die Grafik für eine größere Ansicht

Name:	20190403_172229.jpg
Hits:	8
Größe:	71,4 KB
ID:	34069
    Sehe ich das falsch, dass beide Widerstände keine Verbindung miteinander haben? Sieht vielleicht auch nur so aus.
    Im Übrigen hatte ich 220k und 470k in Reihe (weil ich keine 680k bis 700k hatte), kann nicht genau erkennen, was Du für Werte genommen hast.
    Vom Arduino kommen bei HIGH-Pegel 5V, die über den Widerstand (680k) fließen. Nach dem Widerstand (oder eben den zwei in Reihe) müssen dann zwischen 2.7V und 3.2V anliegen. Liegen dort weniger an, könnte es mit dem nodeMCU zu Schwierigkeiten bei der Pegelerkennung kommen. Ich bin nicht sicher, aber die Grenze müsste bei 2.5V liegen, da sollte man sicher drüber bleiben.
    Zur Not und ohne Gewähr: das Kabel vom Arduino-Ausgang direkt mit dem D2 des nodeMCU verbinden, ohne was dazwischen (bei mir hat es so auch funktioniert, Erklärung dafür steht im Thread). Also einfach GND mit GND und den zweiten Draht, statt über Widerstände, direkt an D2 des nodeMCU.


    Spannungsteiler:

    Das kam damals von Ceos:
    also 5V TX -> 4kOhm -> 3.3V RX + 6kOhm -> GND
    Wenn ich mich recht entsinne, funktionierte das auch.

    MfG
    Geändert von Moppi (04.04.2019 um 13:28 Uhr) Grund: Korrektur

  10. #10
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    25.12.2018
    Beiträge
    459
    Ich verfolge den Thread nun schon eine Weile und werde das Gefühl nicht los, dass hier relativ ziellos rumgefrickelt wird.

    Meine Frage dazu: Woran erkennst du eigentlich, dass es nicht funktioniert? Du hast oben geschrieben, du erhältst nur "Platzhalter". Was soll das sein? Die netten Quadrate, die ein Serial Monitor anzeigt, wenn er die Signale nicht richtig versteht?
    Du sendest die Daten vom Arduino zum ESP und dann von dort weiter zum Serial Monitor auf dem PC... Woher weißt du, dass der Fehler in der Übertragung zwischen Arduino und ESP liegt?

    Wie wäre es, wenn du das Problem erstmal systematisch eingrenzt.
    Arduino an den PC und testen, ob die Signale überhaupt gesendet werden. Mit geringen Baudraten anfangen.
    Mit einer LED sollte man sehen können, ob überhaupt Signale auf die Leitung gegeben werden. (an der Hardwareschnittstelle des Arduino ist ja auch eine dran).
    Mit Loopback-Kable schauen, ob der PC an sich selbst Daaten schicken kann.
    Anschließen ESP an den PC und schauen, ob Signale an den ESP gesendet werden können. In einem Testprogramm einfachen Code schreiben, der mit einer LED anzeigt, ob ob ein Dateneingang registriert wird. Später ASCII Codes senden und die LED entsprechend dem Code blinken lassen, um zu sehen, was ankommt.
    Dann die beiden Geräte direkt verbinden und schauen, ob die Daten dann ankommen (wieder mit LED-Blinken zur Prüfung)
    Erst dann den Code so abwandeln, wie du ihn brauchst.
    Ich nehme an, einen Logicanalyzer oder Oszi hast du nicht. Sonst könnte man es sich noch einfacher machen.

    Seitenlang immer wieder zu betonen "ich hab alles richtig gemacht, aber es geht trotzdem nicht" ist halt wenig ergiebig.

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. nodeMCU an Arduino
    Von Moppi im Forum NodeMCU-Board und ESP8266, ESP32-Serie
    Antworten: 16
    Letzter Beitrag: 14.10.2018, 09:30
  2. Kommunikation zwischen Arduino und Matlab
    Von BraucheHilfe im Forum Arduino -Plattform
    Antworten: 8
    Letzter Beitrag: 13.06.2016, 10:11
  3. Antworten: 0
    Letzter Beitrag: 26.02.2014, 07:09
  4. Serielle Kommunikation zwischen 2 Attiny24
    Von Torben22 im Forum AVR Hardwarethemen
    Antworten: 6
    Letzter Beitrag: 02.01.2009, 18:16
  5. Serielle Kommunikation zwischen zwei Atmels...
    Von tobimc im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 17
    Letzter Beitrag: 24.07.2004, 20:01

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen