- SF800 Solar Speicher Tutorial         
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
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Zitat Zitat von fcn200 Beitrag anzeigen
    funktioniert wunderbar.. habe das schon früher mal getestet gehabt.


    Gut. Wenn also die Ausgabe vom nodeMCU zum Terminal funktioniert, dann mal bitte diesen Code auf das nodeMCU übertragen und ausprobieren:

    Code:
    #include <SoftwareSerial.h>
    SoftwareSerial mySerial(4, 5); // RX, TX
    
    void setup() {
      
      // Open serial communications and wait for port to open:
      Serial.begin(115200);
      while (!Serial) {}
      
      // set the data rate for the SoftwareSerial port
      mySerial.begin(4800);
    }
    
    void loop() { // run over and over
      delay(1000);
      Serial.print(": ");
      if(mySerial.available()){
        Serial.print(" - ");
        Serial.write(mySerial.read()); 
      }
    }
    Nun muss ja was in Deinem Terminalfenster erscheinen. Das, was dort im Terminalfenster erscheint, bitte kopieren und hier mitteilen, damit wir die Ausgabe sehen.
    Mach das bitte einmal, wenn der Arduino mit dem nodeMCU verbunden ist und einmal nur mit dem nodeMCU, ohne dass der Arduino damit verbunden ist.

    MfG
    Geändert von Moppi (04.04.2019 um 20:11 Uhr) Grund: Korrektur

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    01.04.2019
    Beiträge
    25
    Zitat Zitat von Moppi Beitrag anzeigen
    dann mal bitte diesen Code auf das nodeMCU übertragen und ausprobieren:

    Code:
    #include <SoftwareSerial.h>
    SoftwareSerial mySerial(4, 5); // RX, TX
    
    void setup() {
      
      // Open serial communications and wait for port to open:
      Serial.begin(115200);
      while (!Serial) {}
      
      // set the data rate for the SoftwareSerial port
      mySerial.begin(4800);
    }
    
    void loop() { // run over and over
      delay(1000);
      Serial.print(": ");
      if(mySerial.available()){
        Serial.print(" - ");
        Serial.write(mySerial.read()); 
      }
    }
    Nun muss ja was in Deinem Terminalfenster erscheinen. Das, was dort im Terminalfenster erscheint, bitte kopieren und hier mitteilen, damit wir die Ausgabe sehen.
    Mach das bitte einmal, wenn der Arduino mit dem nodeMCU verbunden ist und einmal nur mit dem nodeMCU, ohne dass der Arduino damit verbunden ist.

    MfG
    Für mich zum Verständnis:
    ein weiterer Code auf dem Arduino ist nicht erforderlich?
    und welche pins muss ich verbinden?

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    @fnc200

    Nur der Code soll auf das nodeMCU. Arduino den Code drauf, wie gehabt und die Pins verbinden, wie gehabt. Und dann einmal mit Verbindung zum Arduino und einmal ohne Verbindung zum Arduino. Es soll jetzt darum gehen, was das nodeMCU im Terminalfenster ausgibt. Das es dort was ausgibt und das also richtig funktioniert, schriebst Du ja schon.

    Wegen der Verwirrung, nochmal der Code für Arduino:

    Code:
    #include <SoftwareSerial.h>
    SoftwareSerial mySerial(3, 2); // RX, TX
      int a;
    
    void setup() {
      // set the data rate for the SoftwareSerial port
      mySerial.begin(4800);
    }
    
    void loop() { // run over and over
      delay(3000);
      a++;
      mySerial.print("Hello, world: ");
      mySerial.print(a);
      mySerial.println("!");
    }
    Bitte die Pins verwenden, so, wie ich sie auch hatte. Pin#2 (der neben TX am Arduino) an Pin#D2 vom nodeMCU. GND an GND. Ob Du Spannungsteiler da rein baust oder nicht oder auch einen Widerstand oder gar nichts. Du kannst auch einen 10k-Widerstand (oder 1k) vom Pin#2 Arduino an Pin#D2 reinsetzen (warum?- siehe Link unten zur Pegelwandlung, da steht was zu 5V-tolleranten Eingängen).

    - - - Aktualisiert - - -

    Nochmal was zur Pegelwandlung:

    https://www.mikrocontroller.net/articles/Pegelwandler

    Mehr kann man da jetzt kaum noch dazu sagen.

    MfG
    Geändert von Moppi (04.04.2019 um 22:14 Uhr)

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    01.04.2019
    Beiträge
    25
    Zitat Zitat von Moppi Beitrag anzeigen
    @fnc200

    Nur der Code soll auf das nodeMCU. Arduino den Code drauf, wie gehabt und die Pins verbinden, wie gehabt. Und dann einmal mit Verbindung zum Arduino und einmal ohne Verbindung zum Arduino. Es soll jetzt darum gehen, was das nodeMCU im Terminalfenster ausgibt. Das es dort was ausgibt und das also richtig funktioniert, schriebst Du ja schon.

    Wegen der Verwirrung, nochmal der Code für Arduino:

    Code:
    #include <SoftwareSerial.h>
    SoftwareSerial mySerial(3, 2); // RX, TX
      int a;
    
    void setup() {
      // set the data rate for the SoftwareSerial port
      mySerial.begin(4800);
    }
    
    void loop() { // run over and over
      delay(3000);
      a++;
      mySerial.print("Hello, world: ");
      mySerial.print(a);
      mySerial.println("!");
    }
    Bitte die Pins verwenden, so, wie ich sie auch hatte. Pin#2 (der neben TX am Arduino) an Pin#D2 vom nodeMCU. GND an GND. Ob Du Spannungsteiler da rein baust oder nicht oder auch einen Widerstand oder gar nichts. Du kannst auch einen 10k-Widerstand (oder 1k) vom Pin#2 Arduino an Pin#D2 reinsetzen (warum?- siehe Link unten zur Pegelwandlung, da steht was zu 5V-tolleranten Eingängen).

    - - - Aktualisiert - - -

    Nochmal was zur Pegelwandlung:

    https://www.mikrocontroller.net/articles/Pegelwandler

    Mehr kann man da jetzt kaum noch dazu sagen.

    MfG

    Ergebnis:

    Klicke auf die Grafik für eine größere Ansicht

Name:	AusgabeMitArduinoVerbunden.jpg
Hits:	10
Größe:	34,5 KB
ID:	34082

    Klicke auf die Grafik für eine größere Ansicht

Name:	AusgabeOhneArduinoVerbunden.jpg
Hits:	8
Größe:	34,4 KB
ID:	34083

    - - - Aktualisiert - - -

    Bei einem weiteren Versuch, den empfangenen Text außerhalb der if-bedingung auszugegeben erhalt ich folgende Ausgabe:
    Klicke auf die Grafik für eine größere Ansicht

Name:	Zwischenablage01.jpg
Hits:	9
Größe:	38,5 KB
ID:	34084

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Man kann leider auf den Bildern kaum etwas erkennen. Kopiere doch mal den Text aus dem Terminalfenster und mach kein Bildschirmfoto!


    Aufgabe war: Arduino den Code drauf, wie gehabt und die Pins verbinden, wie gehabt. Und dann einmal mit Verbindung zum Arduino und einmal ohne Verbindung zum Arduino.

    Wenn ich dazu die schlecht lesbaren Bilder interpretiere, sieht es so aus, dass Du:

    a) im ersten Fall keinen Arduino abgeschlossen hattest.
    b) im zweiten Fall der angeschlossene Arduino nichts sendet oder das nodeMCU nichts empfängt

    Dein dritter Fall. Wo kommt das "08:58:27.013 ->" her? Kann ich nicht zuordnen, habe ich noch nie gesehen. Die "-1" ist allenfalls der Status von mySerial.read(), wenn keine Daten vorhanden sind.

    Du hattest irgendwann mal geschrieben, das beim nodeMCU nur so Kästchen im Terminalfenster angezeigt werden, mehr käme nicht an. Ich meine das passiert, wenn die Baudrate im Terminalfenster nicht richtig eingestellt ist.
    Jetzt, kommt gar nichts an, weder Kästchen noch sonst was.

    Ich fasse das noch mal zusammen:

    - Du hast alles richtig angeschlossen, sprich, im Zweifel nur zwei Drähte von Gerät A nach Gerät B
    - Du hast die Software richtig aufgespielt

    Es gibt jetzt genau zwei Möglichkeiten, weil ich bei Dir nicht vorbeikommen kann, um es zu zeigen:

    1. Letzter Strohhalm: Du lädst in der Tat eine andere Bibliothek für
    "SoftwareSerial.h", HaWe hatte ja einen Link dazu gegeben, in dem Code für das nodeMCU.
    2. Das nodeMCU funktioniert nicht richtig, Du probierst es mit einem anderen Modul.

    Die letzte Möglichkeit wäre, dass der Arduino an den Ausgängen eine Macke hat. Dann muss der durchgecheckt werden, bzw. nimmst Du einfach einen anderen Atmega328P-PU mit richtigem Bootloader. So einen bekommt man bei Conrad zusammen mit einem Quarz.


    MfG



    Geändert von Moppi (05.04.2019 um 16:51 Uhr)

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    01.04.2019
    Beiträge
    25
    Zitat Zitat von Moppi Beitrag anzeigen
    Man kann leider auf den Bildern kaum etwas erkennen. Kopiere doch mal den Text aus dem Terminalfenster und mach kein Bildschirmfoto!

    bei den ersten beiden Bildern (mit und ohne Arduino verbunden) ist die Ausgabe leer,
    bei dem dritten Bild bekomme ich in etwa so was hier"

    : -1
    : -1

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Zitat Zitat von fcn200 Beitrag anzeigen
    bei den ersten beiden Bildern (mit und ohne Arduino verbunden) ist die Ausgabe leer,
    bei dem dritten Bild bekomme ich in etwa so was hier"

    : -1
    : -1
    Die Ausgabe ist nicht leer. Kann sie auch nicht sein.
    Zu der "-1" habe ich ja schon was geschrieben. Macht keinen Sinn, einen Puffer auszulesen in dem nichts drin steht (also außerhalb der IF-Bedingung).

    ------------------------------------------------------------------

    Nachtrag:

    Es gibt ein Beispiel, von SoftwareSerial für den Arduino.
    Das befindet sich bei mir in einem Verzeichnis "... \avr\libraries\SoftwareSerial\examples\SoftwareSer ialExample". Darin gibt es eine Datei "SoftwareSerialExample.ino".
    Dort kann man auch mal reinschauen und sich damit beschäftigen.

    Das nodeMCU hat 2 Pins, die für nichts anderes vorgesehen sind, als für Ein-/Ausgaben. Das sind GPIO4 (D2) und GPIO5 (D1). Daran habe ich mich bei den ersten Gehversuchen (die ich hier im andern Thread dokumentiert habe) gehalten, um keine Überraschungen zu erleben. Wenn die Kommunikation über GPIO4 nicht funktioniert, kann man sie also auf jeden Fall noch über GPIO5 ausprobieren. Statt den Arduino dann mit "D2" des nodeMCU zu verbinden, kann man den dann also mit "D1" verbinden und muss das in der Software dann anpassen. Müsste man für das nodeMCU dann z.B. schreiben: SoftwareSerial mySerial(5, 4); // RX, TX
    Der Arduino UNO hat mehr freie Ein-/Ausgänge, mit denen man das auch noch versuchen könnte.

    Es gibt noch eine andere Möglichkeit, die ich damals auch beschrieben habe und die ebenfalls funktionierte. Nämlich Daten vom Arduino über die normale serielle Hardwareschnittstelle an das nodeMCU zu übertragen.
    Beschrieben ist das unter "Funktioniert die Kommunikation nach den vorherigen Voraussetzungen auch per RX + TX - Pins". Den Link dazu habe ich ich als erste Antwort in diesem Thread hier schon gegeben. Man könnte das Beispiel auch umkehren und Daten über die serielle Hardwareschnittstelle des nodeMCU zum Arduino schicken und dort dann per SoftwareSerial empfangen; so würde man die "SoftwareSerial.h" auf dem nodeMCU zunächst umgehen.
    Geändert von Moppi (06.04.2019 um 06:51 Uhr)

Ä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
  •  

fchao-Sinus-Wechselrichter AliExpress