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.
