Zum Abschluss, zusammenfassend:

1. nodeMCU: Ausgang Low = 0V, Ausgang High = 3.3V
2. Arduno Uno: Ausgang Low = 0V, Ausgang High = 5V

3. Möglichkeiten Pegelanpassung von einem Arduino-Ausgang zum nodeMCU-Eingang:
einfacher Widerstand ca. 680kOhm bis 800kOhm, Spannungsteiler (vom Ausgang über ca. 4kOhm (4.7k) zum Eingang, von dort mit ca. 6kOhm (6.2k) gegen Ground), richtiger Pegelwandler.

Die Pegelanpassung vom nodeMCU zum Arduino ist nicht notwendig. Bei der Pegelanpassung vom Arduino zum nodeMCU, über Wiederstände, kann es zur Signalverfälschung kommen. Insbesondere Spannungsteiler geben Rechtecksignale nicht sauber weiter, das Signal gleicht dann eher einem abgerundeten Sägezahn. Das nodeMCU ist hier aber unempfindlich an den Eingängen, diese zeigen nach außen das Verhalten einer bistabilen Kippstufe, die den Zustand bei Überschreiten der Low- oder High-Spannungsgrenze ändert. Insofern nodeMCU-Pins bereits mit Widerständen beschaltet sind (in techn. Dokumentation nachschauen), sollte man das bei der Berechnung eines äußeren Spannungsteilers berücksichtigen. Die Möglichkeit, echte elektronische Pegelwandler einzusetzen, ist sicher die Sauberste, aber bei Verwendung von Fertigmodulen für Arduino etc. auch die kostspieligste Variante. Pegelwandler können dann sinnvoll sein, wenn man Logiksignale absolut sauber weitergeben muss, wie schnellere Taktsignale.

4. Serielle Kommunikation: Verbindung der Boards über normale Digital-I/O-Pins, dann mit SoftwareSerial.h.
5. Serielle Kommunikation: Verbindung der Boards über RX/TX-Pins, dann ohne SoftwareSerial.h unter Nutzung der normalen seriellen Schnittstelle, Pegelanpassung wie oben beschrieben möglich.

Die serielle Kommunikation ist mit einer Verbindung sowohl vom Arduino zum nodeMCU, als auch vom nodeMCU zum Arduino möglich. Oder beides, falls notwendig. Wird nur die Verbindung in eine Richtung hergestellt, kann auch nur in diese Richtung gesendet werden.