SoftwarSerial , Standard Bibliothek
- - - Aktualisiert - - -
Wie schreibe ich das im Code beim arduino bzw node mcu board über welchen pin er senden soll?
SoftwarSerial , Standard Bibliothek
- - - Aktualisiert - - -
Wie schreibe ich das im Code beim arduino bzw node mcu board über welchen pin er senden soll?
1. ist die SoftwareSerial - Standard Bibliothek nicht für den NodeMCU geeignet, weil er durch seine internen WiFi Tasks das Software (bitbang) UART stört.
https://github.com/arduino/Arduino/issues/8733
https://github.com/plerup/espsoftwareserial
2. Hardware-Serial geht automatisch über RX und TX, während die Pins für Softwareserial im Code definiert werden. Schau dir mal Moppis Code an.
https://www.arduino.cc/en/Reference/SoftwareSerial
Arduino: SoftwareSerial mySerial(3, 2); // RX, TX
nodeMCU: SoftwareSerial mySerial(4, 5); // RX, TX
Arduino: Pin#2 = TX
nodeMCU: Pin D2 = GPIO4 = RX
Zum Senden von Arduino auf nodeMCU muss der Pin#2 des Arduino, mit dem Pin D2 des nodeMCU verbunden werden. Der Funktion mySerial() wird beim nodeMCU die GPIO-Nummer übergeben.
Übrigens könnte man auch andere Pins bei den Geräten verwenden. Aber ich beziehe mich hier auf das Beispiel mit den Bildern, dass ich oben schon verlinkt habe.
Geändert von Moppi (01.04.2019 um 20:43 Uhr)
@Moppi:
auf nodeMCU (ESP8266, das ist KEIN Arduino!) werden spezielle angepasste SoftwareSerial Versionen empfohlen, weil die für die Standard-Aduinos oft nicht korrekt funktionieren, auch wenn es manchmal ausnahmsweise funktionieren mag .
Wäre das nicht so, würde sich niemand die Mühe machen, spezielle angepasste SoftwareSerial Versionen für nodeMCUs und ESP32 zu schreiben
ja, das ist doch genau der Sinn von SoftwareSerial!
Achte auch auf die genauen Pin-Nummern beim nodeMCU!
Pin 4 ist NICHT pin D4 (sondern D2!
Pin 5 ist NICHT pin D5 (sondern D1)!
Pins 4+5 zu nehmen ist aber sehr ungünstig, weil normalerweise I2C darüber läuft (SDA+SCL).
Zum Testen OK, aber später würde ich Pins D3(0)+D4(2) oder auch D6(12) bzw. D7(13) u/o D8(15) nehmen
(Aber Pins D5 bis D8 sind evtl. für SPI wichtig, wenn man's braucht).
Bild hier
Quelle:
https://lastminuteengineers.com/esp8...uino-tutorial/
Geändert von HaWe (01.04.2019 um 21:13 Uhr)
@HaWe
Es mag sein, dass zig Versionen irgendwelcher Geschichten für verschiedene Boards existieren.
Ich habe alle Installationen für nodeMCU vorgenommen, wie das hier im Forum mal beschrieben war (klick hier). Das ist eine ziemlich gute Beschreibung, mit allem was man zunächst benötigt. So habe ich es gemacht, so verwende ich es, so funktioniert es bis jetzt. Mit welcher Version welcher Bibliothek für Arduino und nodeMCU funktioniert denn das nicht? - Verstehe jetzt Dein Problem hier nicht!
Da ja auch alles vorhanden ist:
Bilder auf denen man alles erkennen kann (also wo welche Drähte von wo nach wo gehen, an welchen Pin welchen Boards), warum was wie angeschlossen wurde, der Quelltext in aller Kürze, das alles in den verschiedenen Varianten (vom nodeMCU zum Arduino, vom Arduino zum nodeMCU; per SoftwareSerial und per serieller Hardware-Schnittstelle; Kommunikation nur vom Arduino zum nodeMCU und umgekehrt, sowie Kommunikation vom Arduino zum nodeMCU und gleichzeitig vom nodeMCU zum Arduino); Erläuterungen zur Pegelanpassung zwischen nodeMCU und Arduino
und
weil das alles funktioniert und nicht nur zusammengeschrieben ist,
ziehe ich mich jetzt hier zurück.
MfG
Geändert von Moppi (01.04.2019 um 21:39 Uhr)
dass die Standard-Bibliotheken mit nodeMCU oft nicht funktionieren, ist z.B. in diesem Topic erwähnt:
https://www.roboternetz.de/community...l=1#post650110
Aus diesem Grunde - und weil sich Bugs oft erst im Laufe der Zeit zeigen - wurden angepasste Versionen entwickelt (und ständig weiter entwickelt).
Es mag ausnahmsweise auch mit deinem speziellen Programm funktionieren, was aber nicht für alle Fälle generell gilt.
Geändert von HaWe (01.04.2019 um 21:59 Uhr)
Geändert von HaWe (02.04.2019 um 14:02 Uhr)
Lesezeichen