- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 10 von 17

Thema: nodeMCU an Arduino

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.645
    Hier erst meine 1-Wire-Lösung (mit 220k- und 470kOhm-Widerstand). Damit kann der Arduino Daten zum nodeMCU schicken:

    Ausgabe vom nodeMCU serial port:
    Code:
    Hello, world: 275!
    Hello, world: 276!
    Hello, world: 277!
    Hello, world: 278!
    Hello, world: 279!
    Hello, world: 280!
    Hello, world: 281!
    Hello, world: 282!
    Hello, world: 283!
    Hello, world: 284!
    meine Beschaltung:
    Klicke auf die Grafik für eine größere Ansicht

Name:	Schaltung1.jpg
Hits:	63
Größe:	70,3 KB
ID:	33641

    Code fürs nodeMCU:
    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
      if (mySerial.available()) {
        Serial.write(mySerial.read());
      }
    }
    und 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("!");
    }

    Nun muss es auch vom nodeMCU zum Arduino funktionieren, Daten zu übertragen

    Deshalb die Software auf den Geräten vertauscht und eine zweite Leitung, vom nodeMCU zum Arduino, hinzugefügt:
    Klicke auf die Grafik für eine größere Ansicht

Name:	Schaltung.jpg
Hits:	44
Größe:	78,8 KB
ID:	33642

    Ausgabe vom Arduino serial port:
    Code:
    Hello, world: 77!
    Hello, world: 78!
    Hello, world: 79!
    Code für nodeMCU:
    Code:
    #include <SoftwareSerial.h>
    
    SoftwareSerial mySerial(4, 5); // RX, TX for nodeMCU
    //SoftwareSerial mySerial(3, 2); // RX, TX for Arduino
    
      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("!");
    }
    Code für Arduino:
    Code:
    #include <SoftwareSerial.h>
    
    //SoftwareSerial mySerial(4, 5); // RX, TX for nodeMCU
    SoftwareSerial mySerial(3, 2); // RX, TX for Arduino
    
    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
      if (mySerial.available()) {
        Serial.write(mySerial.read());
      }
    }
    Funktioniert die Kommunikation nach den vorherigen Voraussetzungen auch per RX + TX - Pins

    Das musste ich auch noch wissen. Beide Verbindungskabel habe ich umgesteckt, so dass jetzt RX und TX vom Arduino genutzt werden können:

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

Name:	Schaltung2.JPG
Hits:	33
Größe:	56,2 KB
ID:	33643

    Die Pins am nodeMCU bleiben dieselben, an der Beschaltung hat sich dort nichts verändert.

    Damit ich die Verbindung hin und zurück testen kann, muss der Arduino nun Daten auf dem seriellen Port lesen und wieder ausgeben. Das nodeMCU schickt die Daten und wartet, bis sie zurückkommen.

    geänderter Code für Arduino:
    Code:
    //#include <SoftwareSerial.h>
    
    //SoftwareSerial mySerial(4, 5); // RX, TX for nodeMCU
    //SoftwareSerial mySerial(3, 2); // RX, TX for Arduino
    
    void setup() {
      // set the data rate for the SoftwareSerial port
      //mySerial.begin(4800);
    
      //der Arduino arbeitet nur noch über die norm. serielle Schnittstelle
      //die wir hier zur Kommunikation öffnen
      Serial.begin(4800);
      //und dann warten wir, bis das geklappt hat
      while (!Serial) {}
    }
    
    void loop() { // run over and over
      //der Arduino soll Daten vom nodeMCU empfangen und zurück schicken
      //deshalb schauen wir, ob was angekommen ist
      //und wenn, dann lesen wir das und schicken es zurück
      while(Serial.available()){
        Serial.write(Serial.read());
      }
    }
    geänderter Code für nodeMCU:
    Code:
     #include <SoftwareSerial.h>
    
    SoftwareSerial mySerial(4, 5); // RX, TX for nodeMCU
    //SoftwareSerial mySerial(3, 2); // RX, TX for Arduino
    
      int a;
    
    void setup() {
      
      // Open serial communications and wait for port to open:
      Serial.begin(115200);
      while (!Serial) {}
      Serial.println();
      
      // set the data rate for the SoftwareSerial port
      mySerial.begin(4800);
    }
    
    void loop() { // run over and over
      // Kontrollzähler
      a++;
      //nodeMCU verwendet hier andere Pins statt der echten RX, TX
      //weil die ser. Schnittstelle zur Ausgabe genutzt wird
      //deshalb Senden über Software Serial Port zum Arduino
      mySerial.print("Hello, world: ");
      mySerial.print(a);
      mySerial.println("!");
      
      //Arduino wird das empfangen und zurückschicken
      //deshalb warten wir mal kurz, bis was zurück kommt
      while(mySerial.available()==0){
        delay(1000);
        Serial.print(".");    //Zeigen, dass gewartet wird 
        mySerial.print(".");  //falls Verbindung getrennt wird, um aus der Schleife auszubrechen
      }
      
      //Schauen, ob auf dem Software Serial Port etwas angekommen ist
      //wenn ja, dann wird das eingelesen und zur Kontrolle ausgegeben
      //auf dem norm. seriellen Port
      while(mySerial.available()){ //solange Zeichen verfügbar
        char c=mySerial.read();     //ein Zeichen lesen
        Serial.print(c);       //Zeichen ausgeben
      }
    
    }
    Und nach etwas Fummelei funktioniert auch das, die Ausgabe vom nodeMCU serial port:
    Code:
    Hello, world: 16030!
    Hello, world: 16031!
    Hello, world: 16032!
    Hello, world: 16033!
    Hello, world: 16034!
    Hello, world: 16035!
    Hello, world: 16036!
    Hello, world: 16037!
    Hello, world: 16038!
    Hello, world: 16.....................
    Geändert von Moppi (16.09.2018 um 17:47 Uhr)

  2. #2
    HaWe
    Gast
    also geht es jetzt in beien Richtungen? auch gleichzeitig (voll-duplex) oder per Handshake, abwechselnd?

    (Ist aber sicher kein 1-Wire, das ist ein eigenes Protokoll, sondern Arduino-Serial = UART, eben einfache oder doppelte Richtung)

Ähnliche Themen

  1. html-Code für nodeMCU mit Arduino IDE + Wifi libs
    Von HaWe im Forum Arduino -Plattform
    Antworten: 7
    Letzter Beitrag: 14.08.2018, 18:30
  2. nodeMCU zu nodeMCU: keine Kommunikations-Verbindung mehr nach wenigen Minuten
    Von HaWe im Forum NodeMCU-Board und ESP8266, ESP32-Serie
    Antworten: 0
    Letzter Beitrag: 02.10.2017, 14:01
  3. Antworten: 1
    Letzter Beitrag: 26.06.2017, 09:06
  4. NodeMCU an Arduino-IDE, Fehler beim Kompilieren
    Von gkd im Forum NodeMCU-Board und ESP8266, ESP32-Serie
    Antworten: 5
    Letzter Beitrag: 28.05.2017, 22:21
  5. ESP8266/NodeMCU Kommunikationsprobleme
    Von thewulf00 im Forum NodeMCU-Board und ESP8266, ESP32-Serie
    Antworten: 5
    Letzter Beitrag: 30.03.2016, 05:04

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress