Die kleinen ESP-01 Module und ähnliche eignen sich prima als WLAN Schnittstelle für bestehende Mikrocontroller Projekte. Die Kommunikation zum Mikrocontroller findet in der Regel seriell statt,
unter Verwendung der vorinstallierten AT Firmware.
Die Einsteiger Boards Arduino Nano V3 und Arduino Uno R3 sind mit einem ATmega328 bestückt, der leider nur eine serielle Schnittstelle hat, die bereits mit dem USB Anschluss belegt ist. Viele Webseiten empfehlen daher die Nutzung von SoftwareSerial für die Kommunikation zum ESP Modul. Dazu muss man das ESP Modul vor dem Einbau auf eine niedrige Baudrate konfigurieren, empfohlen wird 9600 Baud. Das gefällt mir nicht.
Deswegen habe ich meine Projekte etwas anders aufgebaut. Meine Implementierung kann problemlos mit den normalen 115200 Baud senden, aber nicht empfangen. Für den Empfang teile ich mir den echten UART des Mikrocontrollers für beide Schnittstellen. Der AVR kann Texte abwechselnd vom USB-UART und vom ESP-Modul empfangen.
Dazu habe ich eine logische UND Verknüpfung bestehend aus R3 und D1 aufgebaut. Im Ruhezustand liegen die Tx Ausgänge vom USB-UART und ESP-Modul beide auf HIGH Pegel. Wenn eine der beiden Quellen die Leitung auf LOW zieht, sieht der AVR Mikrocontroller an seinem Rx Eingang einen LOW Pegel. D2 beschützt den ESP vor Überspannung (vom USB-UART kommen 5V).
Für die andere Richtung dienen R1 und R2 als Spannungsteiler, um die 5V vom AVR Mikrocontroller auf 3,3 Volt herunter zu bringen.
Das ESP Modul braucht eine separate Spannungsversorgung weil der Spannungsregler auf dem Arduino Board zu schwach ist. Der Kondensator C3 soll möglichst nahe beim ESP sitzen, am Besten direkt auf das Modul löten.
Der angehängte Code kann mit und ohne Arduino Framework benutzt werden. PD2 muss als Ausgang mit HIGH Pegel konfiguriert werden. Eigentlich ist das ein total trivialer Ansatz, aber da er sonst nirgendwo empfohlen wird, habe ich mich dazu entschlossen, ihn doch zu veröffentlichen.
Ich habe diese Kombination aus ESP und Arduino nie verstanden. Mach alles im ESP, fertig.
Ich meine, versteht ihr Arduino-Bastler überhaupt den Leistungsunterschied? Ein 32-Bit ESP8266 mit einer Taktrate von 80 MHz oder mehr, damit ein 8-Bit AVR mit 16 MHz ein bisschen im Netz rummachen kann, warum? Von ESP32 gar nicht zu reden.
Dessen ADC Fallstricke hat wie den Einfluss des WLAN auf selbigen, der an den Grenzen nichtlinear ist und das teils strapping Pins sind oder die maximale Spannung von 1V beim 8266, einige GPIO mit dem flash geteilt sind und der in der Regel einfach wenig sicher nutzbare GPIO hat.
5, in Worten FÜNF der GPIO am ESP8266 sind ohne Klimmzüge sicher nutzbar.
GPIO 4 (D2), GPIO 5 (D1), GPIO 12 (D6), GPIO 13 (D7) und GPIO 14 (D5).
Das reicht für viel, aber wahrlich nicht alles!
Es gibt Gründe dafür, das so zu machen. Da können wir Arduino bastler nix für das du die nicht erkennen kannst.
12 sind es bei dem, GPIO 16, 17, 18, 19, 21, 22, 23, 25, 26, 27, 32 und
33.
Aber der rauschende ADC und die restlichen Fallstricke bleiben halt
bestehen.
Es gibt die eierlegende Wollmilchsau halt in der Realität nicht.
Bitte bleibt beim Thema. Es geht um ESP Module an Arduino Uno oder Nano,
nicht um Alternativen.
Ich verstehe den Sinn dahinter zugegeben auch nicht
Ja, es mag ein paar Sonderfälle geben, genauere ADC usw - aber hierfür gibt es dann auch spezielle IC, über I2C usw angebunden - nochmal um ein vielfaches genauer
Nicht ESP an Arduino, andersrum wird, wenn es denn unbedingt sein muss - ein Schuh draus --> Arduino an ESP
Wer nutzt denn in Bastlerkreisen noch den ESP-01? Der ist bzw war für Großprojekte wo die paar IOs gereicht haben und man jeden Cent sparen wollte
Zeig gerne ein Projekt das der ESP nicht alleine hinbekommt, er die Unterstützung eines Arduino braucht?`
Die Grundlage das so zu machen, wäre zb. das ich halbwegs präzise Werte aus einem ADC irgendwo hin weit weg transferieren müsste. Den genaueren ADC des kleineren MCU und dessen Leistung zur Messung heranziehen und den ESP als Gateway Verwenden.
Den Vorschlag "Alles auf dem ESP" zu machen, habe ich mit meinem Argumenten nur relativieren wollen, das geht je nach Projekt mal mehr oder weniger gut.