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)
ja klar, wenn da irgendwelche Beschaltung mit am Pin ist muss man das mit einrechnen
Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
nicht.
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.
Ergänzung/Anregung zu Ceos´ Beitrag:.. Eingänge am nodeMCU schon mit einem Pull-Up- oder Pull-Down-Widerstand versehen sind? Diese Widerstände müssten sicherlich eingerechnet werden.
Die Frage hatte ich mir auch mal gestellt und Klärung bringt das Datenblatt. ABER beim - beispielsweise - mega328p stehen im Datenblatt unter [Common DC Characteristics .. I/O Pin Pull-up Resistor] Werte von 20 kΩ Min. und 50 kΩ Max. Ähhhhh - und was nehme ich dann? (Anm.: ich bin manchmal recht pingelig, auch neugierig)
Ich hatte bei meinem Controller das DMM genommen und einen Pin als Eingang mit PullUp konfiguriert. Ergebnis (grad nochmal am nano-Clone gemessen) a) Spannung ist 5,01 V, Kurzschlussstrom ist 14 mA. *gg* Not bad - die 35,8 k sind ja fast haarscharf die Mitte! Bei DEM GEMESSENEN Pin!
Ciao sagt der JoeamBerg
die internen Pull-Ups sind absolute Schätzeisen und nur da um dir für I2C oder andere LowActive High Impedance Signale den externen PullUp zu schenken
Da UART aber PushPull macht, kannst du darauf gut verzichten.
Das Erlebnis mit den Sägezähnen sollte bei Push Pull ebenfalls extrem minimal ins Gewischt fallen (Am Oszi mag man eine minimale Verscheleifung sehen aber sonst sollte das keinen Einfluss haben)
Was Pegelwandler angeht, ich habe hier einen ganz simplen Chip, einen 74HCT132E, das ist ein 4 NAND-Gate mit Schmitt Trigger Eingängen. So kann man zumindest sauber und in deutlich höherer Frequenz im Vergleich zu einer Transistorstufe von 3V auf 5V umsetzen ohne Verschleifung (Ich habe es mit einem Oszilloskop vermessen und treibe die Daten-/Clockleitung meiner 5V APA102 @4MHz von einem ATXMega bei 3.3V aus an, dank der 2 Extra Gates sogar mit Enable und ohne Invertierung)
Chips aus der 74er Reihe mit Schmitttriggern gibt es viele und vielleicht auch Varianten mit 2 Richtungen bzw. Spannungsstufen, die kosten i.d.R. auch nicht viel und gibt es meist sogar noch im Breadboard freundlichem PDIP Gehäuse
Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
nicht.
Doch noch nicht Ende.
Auf der Suche nach Schnittstellen tun sich noch Möglichkeiten auf, das nodeMCU direkt mit dem Arduino/Atmega zu verbinden. Das nodeMCU-Board kann mit 3.3V versorgt werden und die IOs können direkt verbunden werden:
Verbunden über die SPI-Schnittstelle. Ich fand einen Beitrag dazu im Netz. Leider ist dann mein Rechner runtergefahren, weil ich das nodeMCU mit der Versorgung falsch angeschlossen habe und alles am USB angeschlossen war, deshalb keine Quelle an dieser Stelle. Dort kam auch die Frage nach dem 3.3V-Logikpegel, mit der Antwort, der 8266 sei gegenüber 5V an den Eingängen tolerant und würde dadurch nicht zerstört.
Vielleicht ist es aber doch besser, dann den Atmega auch mit 3.3V zu betreiben.
-----------------------------------------------------------------------------------
Dazu noch mal ein Nachtrag von mir:
Also das Datenblatt gibt es nicht her, es ist auch bekannt, dass dort nur 3.3V stehen, die man als Input an einem nodeMCU anlegen soll. Allerdings sollen Schutzdioden vorhanden sein, die nur nicht überlastet werden dürfen. Hierzu mal folgender Text eines Users:
"It is true, and the data sheet even eludes to the fact, that the GPIO are 5V tolerant but here's the rub. The pins have protection clamping diodes on the pins that protect the circuitry from over voltage. The problem is that they usually can only take 20-25ma of current. If you want to use these pins with 5V it is best to include a series resistor. This technique has been used many times in some uncomfortably puckering situations. One ap-note I read from Atmel many years ago used an AVR input pin to sense the AC line directly to get the mains line frequency as a time base for a digital clock. They actually put a several meg ohm resistor on one of the I/O lines and plugged it into the wall!! On that processor The current was limited to 25ma max so as long as the series resistor limited the current to less than 25 ma all was fine.
I use a similar technique on my ESP designs to interface the 5V 315mhz receivers to the ESP8266. I run everything through 10K ohm resistors and it all works happy."
Quelle: http://www.letscontrolit.com/forum/viewtopic.php?t=1882
Sieht so aus, dass eine Widerstandsbeschaltung am Eingang durchaus praktikabel ist. Das hatten wir hier ja schon woanders durch, wo dann auch Widerstandsnetzwerke als Vorschlag kamen. Sicherer wird es wohl sein, zumindest einen Vorwiderstand an den IOs des nodeMCU zwischen zu schalten, wenn einem das dann doch zu heiß ist, direkt 5V-Signale an die Eingänge zu legen.
MfG
Moppi
PS: Danke @Searcher, der mich auf die SPI-Schnittstelle aufmerksam machte!
Geändert von Moppi (14.10.2018 um 18:59 Uhr)
Lesezeichen