Warum einen Vorwiderstand zwischen Arduino RX und ESP8266 TX verwenden?

Ich habe dies in mehreren Schaltplänen gesehen, von denen ich annehme, dass sie professionell sind, da sie für beliebte Open-Source-Produkte bestimmt sind.

Arduino zu ESP RX TX

Aber ich kann nicht herausfinden, warum zwischen dem RX-Pin des Arduino und dem TX-Pin des ESP8266 ein 470-Ohm-Widerstand in Reihe geschaltet ist. Kann jemand bitte erklären? Warum diesen spezifischen Wert wählen, da ich den gleichen Widerstandswert sehe, der in vielen Schaltplänen zwischen dem Arduino und dem ESP8266 verwendet wird?

Ich habe auch über die Notwendigkeit des Potentialteilers nachgedacht, aber dann habe ich etwas recherchiert und festgestellt, dass ein Logikpegel-Shifter zwischen dem Arduino TX und der ESP8266 RX-Datenleitung erforderlich ist. Aber ich kann nichts über den 470-Ohm-Vorwiderstand finden.

Es könnte nur sein, Reflexionen zu verwalten. Für einen echten Serienabschluss erscheint der Wert aber zu hoch und für einen UART ist so etwas eher nicht nötig. Es könnte einfach sein, die Anstiegs- und Abfallzeiten zu verlangsamen, um das Rauschen zu bewältigen.
which i assume are professional since they are for popular open-source products- roflmao :P Sie wären überrascht von den $%&#%*, die sogar in kostenpflichtige kommerzielle Produkte einfließen - Open Source hat eine noch breitere Palette von "Qualität".
@brhans Erinnern Sie sich an die fehlerhafte Ausrichtung des Arduino-Shield-Headers, die sich aus Gründen der Abwärtskompatibilität in jedem nachfolgenden Arduino ausgebreitet hat?

Antworten (2)

Die Widerstände sind da, weil die RX/TX-Pins am Arduino-Prozessor für mehrere Funktionen verwendet werden und auch 5-V-Signale verwenden:

  1. Der 470-Ohm-Widerstand auf der Empfangsleitung ist dafür vorgesehen, wenn der ESP8266 den Arduino antreibt - er wird auch von einer USB-zu-Async-Brücke (FTDI FT232 oder ähnlich) angesteuert, die die Leitung auch über einen Widerstand treibt. Auf dem Uno ist es ein 1K-Widerstand, daher muss die ESP8266-Einspeisung geringer sein, aber hoch genug, um einen übermäßigen Strom zu vermeiden, wenn der FT232 den Prozessor mit aktiviertem ESP8266-Ausgang antreibt. Dies könnte während der Programmierung des Arduino auftreten.

  2. Der 1k/2,2k-Teiler auf der TX-Leitung soll das 5-V-Signal vom Arduino auf den maximalen Pegel von 3,3 V reduzieren, den der ESP8266 benötigt. Die Widerstände müssen niedrig genug sein, um Signale bis zur maximalen Geschwindigkeit durchzulassen, aber hoch genug, um leicht vom Arduino angesteuert zu werden.

Wenn der ATmega328 über USB programmiert wird, muss der ESP8266 TX-Ausgang hochohmig sein (z. B. indem er im Reset gehalten wird), damit der FT232 mit dem ATmega328 kommunizieren kann.

Vielleicht ... aber im Allgemeinen sind Projekte, die versuchen, den Hardware-UART eines ATmega328 Arduino zu verwenden, um einen ESP8266 anzuschließen, zunächst schlechte Ideen, da sie das serielle Debuggen nicht verfügbar machen.
@ChrisStratton Einverstanden - Ärgerlicherweise hat der ATmega328 auf den meisten Arduino-Boards nur einen einzigen UART, der die Dinge kompliziert - ein weicher UART könnte mit einigen Einschränkungen verwendet werden.
Erstmal danke an alle für die hilfreichen Antworten. Es wird sehr geschätzt. Um sicherzugehen, dass ich es richtig verstanden habe - der Zweck des 470-Ohm-Widerstands besteht darin, das spezielle Szenario zu vermeiden, in dem der Rx des Arduino als Ausgang statt als Eingang eingestellt ist und ein hoher (potentiell für den Arduino schädlicher) Strom auftreten würde fließen vom Tx des ESP8266, wenn er vom FT232 FTDI USB 3,3 V 5,5 V zum seriellen TTL-Adapter mit Strom versorgt/programmiert wird. Wenn also der FTDI nicht angeschlossen ist, besteht die Gefahr eines hohen / schädlichen Stroms für den Arduino nicht, da der ESP8266 nur mit 3,3 V versorgt wird?
@WiredMaker - es hängt davon ab, welches Arduino-Modell Sie verwenden. Beim UNO ist der FTDI fest mit 1k Vorwiderständen verbunden. Was benutzt du?
Ich verwende einen Arduino Nano v3.
Aus den Schaltplänen des Nano geht hervor, dass Tx und Rx jeweils mit 1k-Widerständen in Reihe geschaltet sind. content.arduino.cc/assets/NanoV3.3_sch.pdf
@WiredMaker - Ja, das gleiche wie das Uno, auf das ich mich zuvor bezogen habe. Diese 1k-Widerstände stammen vom FT232 zum Atmega328. Wenn also der ESP8266 mit der MCU kommuniziert, muss er in der Lage sein, die 1k-Widerstände zu übersteuern (daher ein niedrigerer Wert als 1k), und wenn der FT232 während der Programmierung über USB mit der MCU kommuniziert, ist dies der Fall notwendig, dass der ESP8266 seine Ausgänge hochohmig hält (indem er zum Beispiel zurückgesetzt bleibt).

Dies liegt wahrscheinlich daran, dass die Entwickler davon ausgehen, dass Arduino-Benutzer Fehler machen werden, da es sich um ein Lehrmittel handelt. Wenn der Benutzer die Pins so konfiguriert, dass sie beide als Ausgänge eingestellt werden und einer HIGH und einer LOW ist, liegt ein Kurzschluss vor. Die 470 Ω Widerstand begrenzt den Kurzschlussstrom, damit nichts beschädigt wird.

Ich habe es gefunden! Es ist der letzte Absatz im offiziellen Arduino-Tutorial: arduino.cc/en/Tutorial/DigitalPins Und dieser Teil erklärt, wie OUTPUT auf HIGH oder LOW gesetzt werden kann: arduino.cc/reference/en/language/functions/digital-io/…