====== Serielle Kommunikation vom ESP8266 zum Arduino ====== [[uebung:itt11:beispielcode_esp8266|zurück zur Übersicht]] ===== ESP8266 ===== /* * Verwendung des 2. seriellen Anschlusses auf dem NodeMCU 1.0 * TX: D4 * RX: nicht existent, transmit only * * TX mit RX am anderen Board verbinden * GND mit GND am anderen Board verbinden */ int count = 0; String data = ""; void setup() { Serial.begin(38400); delay(100); Serial.print("Setup ..."); Serial1.begin(38400); Serial.println(" done."); } void loop() { data = "t:" + String(24.2) + ";h:" + String(47) + ";c:" + String(count); count++; Serial1.println(data); Serial.println(data); delay(3000); data = "t:" + String(23.9) + ";h:" + String(46) + ";c:" + String(count); count++; Serial1.println(data); Serial.println(data); delay(3000); data = "t:" + String(23.7) + ";h:" + String(45) + ";c:" + String(count); count++; Serial1.println(data); Serial.println(data); delay(3000); } ===== Arduino ===== /* * Arduino als Empfänger für Daten an der seriellen Schnittstelle * Dateneingang über Pin RX * * RX mit TX am anderen Board verbinden * GND mit GND am anderen Board verbinden */ String data; int index = 0; void setup() { Serial.begin(38400); /*while (!Serial) { // wait for serial to connect }*/ Serial.println("Setup done."); } void loop() { if (Serial.available()) { double temp; double hum; int count; // von der seriellen Schnittstelle einlesen data = Serial.readString(); data.trim(); // Nachricht am Semikolon aufteilen String first = data.substring(0, data.indexOf(";")); String remaining = data.substring(data.indexOf(";") + 1, data.length()); String second = remaining.substring(0, remaining.indexOf(";")); String third = remaining.substring(remaining.indexOf(";") + 1, remaining.length()); // Nachricht nach Temperatur und Luftfeuchte auswerten if (first.substring(0, 2) == "t:") { temp = first.substring(first.indexOf(":") + 1, first.length()).toDouble(); } if (second.substring(0, 2) == "h:") { hum = second.substring(second.indexOf(":") + 1, second.length()).toDouble(); } if (third.substring(0, 2) == "c:") { count = third.substring(third.indexOf(":") + 1, third.length()).toDouble(); } // Ausgabe Serial.print("Temperatur: "); Serial.print(temp); Serial.print(", Luftfeuchte: "); Serial.print(hum); Serial.print(", Zähler: "); Serial.println(count); } } [[uebung:itt11:beispielcode_esp8266|zurück zur Übersicht]]