Der ESP8266 ist ja schon länger im Gespräch. Allerdings: wozu einen Arduino (ab $2,50) noch anhängen, der um die 32k Speicher hat und auf 16MHz läuft, wenn der ESP ($2,40) selber bis zu 4 MB Flash und 18 11 GPIOs bei 80 oder sogar 160 MHz hat? Seit ein paar Tagen gibt es einen Aufsatz für die Arduino IDE, wie es auch schon beim Teensy der Fall ist. Lohnt es sich wirklich?
Randnotiz: Je nach Board-Typ gibt es unterschiedliche Pins, die auf dem Breakout sind – minimum sind aber 4 (inkl. Rx (GPIO 3) und Tx (GPIO 1)). Eine Übersicht über die Pin-Namen gibt es im Bild.
Arduino IDE Umgebungen
Variante 1 (aktueller, aber eigenständig): Man läd sich eine zweite IDE herunter, die dann fertig gepackt ist: von GitHub laden
Variante 2 (schnell und einfach): Man läd sich nur die Hardware Library herunter und bindet die selber ein: ebenfalls auf GitHub verfügbar
Variante 3 (schnell, einfach UND aktuell): Arduino >= 1.6.5 öffnen, in den Einstellungen unten http://arduino.esp8266.com/stable/package_esp8266com_index.json
eintragen. Dann unter Tools > Board „…“ > Board Manager… auswählen, esp8266 anklicken und Install drücken. Um eine neue Version zu installieren den letzten Schritt bei Verfügbarkeit wiederholen.
Selber einbinden klingt ein bisschen schwerer, als es ist: ZIP herunterladen und entpacken. In dem Ordner befinden sich neben den Git-Dateien auch der Ordner esp8266com
. Den verschiebt man einfach in den Arduino-Ordner /hardware
– da wo auch die Sketche platziert sind (bei mir ist das ~/Dokumente/Arduino/hardware
). Meine Erfahrungen habe ich mit der 2. und 3. Variante gemacht. Die extra IDE habe ich mir auch installiert, der Aufwand ist es mir allerdings nicht wert, bei jedem Update die gesamte IDE zu ersetzen (Teensyduino nachzuinstalliern) anstatt einfach nur den einen Ordner zu überschreiben.
Programm schreiben
Nach dem Öffnen findet man eine neue Kategorie in der Boardauswahl, in der sich auch Generic ESP8266 board
befindet. In den Beispielen finden sich auch neue Sketche:
ESP8266WebServer
Ein einfaches Hello World Programm für die ServerfunktionESP8266mDNS
Server mit mDNS (gerätename.local
)ESP8266WiFi
Verschiedene Sketche: Scanner, Server und ein Client (normales WLAN Gerät, das sich in ein bestehendes Netzwerk einwählt). Inzwischen auch ein NTP-Client (Zeitsynchronisation über das Internet)
Ich habe bisher nur meine Briefkasten-Benachrichtigungen mit einem ESP-01 Modul programmiert und dazu auf dem Client-Sketch aufgebaut. Die Syntax ist Arduino-konform einfach, da jetzt alles eigene Librarys hat und die Kommunikation intern verläuft und nicht von einem Arduino nur mit AT-Kommandos über die serielle Schnittstelle.
Da die Beispiele selbsterklärend sind binde ich hier keinen Code mit ein – wer sich das trotzdem erst einmal angucken möchte, kann die Dateien auch auf GitHub einsehen. Die Pins lassen sich normal mit digitalWrite()/digitalRead()/pinMode()
entsprechend dem oben verlinkten Bild ansprechen, allerdings sind keinerlei PullUps/-Downs verfügbar, bedeutet I2C und Buttons muss man mit externen Widerständen versehen. Eins muss man aber lassen: die Pins wackeln nicht im Floating rum sondern halten ihren letzten Pegel, wenn sie als Eingang definiert sind und keinen Widerstand haben.
Verkabelung
Zum Programmieren muss man das ESP-Modul wie folgt verbinden:
- SC_PD/CHIP_EN auf VCC (dem Modul überhaupt erst mal sagen, dass es laufen soll)
- Tx und Rx über Kreuz an ein USB-Serial Modul
- VCC an 3,3V – der ESP ist nicht 5V Tolerant!
- GND natürlich mit der Masse verbunden
- GPIO0 muss zum Programmieren auf Masse gezogen werden
- RST kann offen bleiben, ich habe allerdings einen PullUp (10k) eingebaut
Als Platine ist das dann deutlich einfacher für mehrere Projekte:
Das Overlay habe ich auch als PDF mit verschiedenen Ansichten zum selber ausdrucken. Sollte exakt passen. Mein Platinenlayout ist geeignet für den ESP-01. Für andere Versionen muss das Layout verändert werden.
Beim Tx Pegel sollte man auch drauf achten, dass dieser nicht auf 5V läuft. Einige Adapter haben zwar einen Jumper, den man von 5V auf 3V3 umlöten kann, teilweise wird damit allerdings nur VCC und nicht der Datenpegel geändert. Allerdings wäre dies weitaus harmloser, als den ESP mit 5V an VCC zu versorgen. Die einfachste Abhilfe schafft ein Spannungsteiler mit zwei Widerständen, deren Werte etwa im Verhältnis 1:2 sind. Beispielsweise 1kΩ von TxUSB an RxESP und 2k2Ω von TxUSB an GND. Dadurch wird der Pegel auf 5V * 2k2Ω / (1kΩ + 2k2Ω) = 5V * 2.2 / 3.2 = 3,4V gesenkt.
Die USB-Serial Adapter gibt es zuhauf bei eBay, damit lassen sich dann auch Arduino Pro Minis programmieren (haben extra eine 6-polige Leiste für die Adapter). Sollte man allerdings keinen Adapter zur Hand haben und einen ESP und Arduino schon sein Eigen nennen können, gibt es Alternativen:
- Das vorliegende Modell ist ein Arduino Uno:
Den ATmega entfernen und den ESP mit Kabeln an 3.3V und GND nach obiger Beschreibung anschließen. Da die Tx und Rx Markierungen auf den ATmega328/168 zutreffen und nicht den 16u2 oder in den Billignachbauten den USB-Serial Wandler, müssen die Leitungen nicht gekreuzt werden. Bedeutet Tx vom Arduino and Tx am ESP, das gleiche Spiel auch bei Rx. - Hat man stattdessen einen Nano oder will den ATmega einfach nicht entfernen:
Den Arduino mit dem BareMinimum (also einem leereren Sketch) bespielen. Dann sollte die Kommunikation auch klappen. Verkabelung wie bei 1. - Hat man einen Leonardo oder Micro gestaltet sich das ganze schwieriger, aber nicht unmöglich:
Kurz gegoogelt und gefunden: einfach den im Artikel beschriebenen Sketch auf den Arduino spielen, Verkabelung muss hier jedoch wieder gekreuzt erfolgen.
Dabei sollte beachtet werden, dass der Standardpegel 5V beträgt, Tx muss also einen Spannungsteiler haben. Rx wird durch den Pegel des Tx der Gegenstelle, also dem des ESP definiert. Der Pegel von 3V3 reicht hier, um ein logisch HIGH zu erkennen. Hier wird also weder Pegelwandler, noch Spannungsteiler benötigt.
Programmierung
Die Kompilierung dauert etwas länger, als bei einem ATmega328 – es muss auch noch das normale ESP System mit eingebunden werden (ca. 200k groß) und der gesamte Flash überschrieben werden. Zeitlich ist es vergleichbar mit einem MEGA2560. Der Upload sollte dann mit „esptool“ anstatt avrdude in der kleinen Konsole unten vonstatten gehen. Hier bin ich allerdings erst einmal auf Feedback angewiesen – auf meinem Mac hat es nicht ganz reibungslos geklappt. Der folgende Fehler ist laut Forenbeiträgen jedoch wohl Mac-spezifisch, unter Windows sollte es klappen. Sollte der Upload abbrechen, so ist der ESP u.U. nicht im standard Bootloader. Dazu mit GP0 auf LOW einfach noch einmal Reset betätigen. Nach dem erfolgreichen Programmieren startet er das Programm unabhängig vom Pegel an GP0.
Probleme unter MacOSX (in alten Versionen)
Der Upload startet, wird allerdings mit einem Fehler quittiert (der sich auch bei Anderen reproduzieren lässt). Nach etwas googlen bin ich auf eine Workaround gestoßen. Ich habe allerdings das verlinkte pyesptool nicht in dem von ihm vorgeschlagenen Ordner eingebunden (setzt die Modifikation der Arduino IDE voraus und ist somit beim nächsten Update futsch), sondern in {Sketchordner}/hardware/esp8266com/esp8266/tools
platziert. In der platform.txt muss demnach eine Zeile geändert werden:
tools.pyesptool.path={runtime.hardware.path}
/esp8266/tools/pyesptool
Vorher stand dort {runtime.ide.path}
.
Man muss noch python-serial installiert haben (unter UNIX-Systemen mittels pip install pyserial
). Allerdings meckert er in der IDE dann beim Upload mit Programmer (vorher pyesptool
aus der Programmerliste auswählen), dass er serial
nicht importieren kann. Ich habe dann einfach das Kommando aus dem kleinen schwarzen Fenster kopiert und in der Kommandozeile direkt ausgeführt. Siehe da es klappt. Das wird wohl mit der Zeit noch besser, ist ja erst seit wenigen Tagen verfügbar.
Die Problematik besteht bei mir mit esptool v0.4.2
({esp8266com-Ordner}/esp8266/tools/macosx/esptool -v
)
Fazit: ja, es lohnt sich! Jetzt viel Spaß mit euren kleinen Strahlenmaschinen!
Hallo Luca,
ich bin Lehrer an der HTL in Wr. Neustadt und würde gerne das ESP8266 Modul einsetzen. Jetzt habe ich folgendes (wahrscheinlich Verständnis) Problem: Ich habe das Modul an ein Arduino Uno Board angeschlossen und habe den Sketch WiFiWebServer übertragen. Das hat nach einigen Versuchen (GPIO0 auf GND und kurz RST auf GND dann übertragen) auch funktioniert. Doch wie geht’s jetzt weiter. Funktioniert das ESP Modul nun stand allone oder wird der ATmega wieder gesteckt und kannn mit dem ESP kommunizieren?
Gibt es auch ein Beispielprogramm wo das ESP als Webserver arbeitet? Wenn ich nämlich das Sketch WifiWebServer hochlade kommt im Serial Monitor immer die Meldung: no myESP found, reconnect after 1s
Hallo Gerhard,
die direkte Programmierung des ESP ist ja der Ersatz für den externen Arduino. Ab sofort ist der ESP alleinig verwendbar, die AT-Befehle von externen Geräten werden nachfolgend ignoriert (könnte man softwaretechnisch wieder schreiben).
Um mit dem ATmega zu kommunizieren müssten entsprechende Funktionen für die serielle Kommunikation im Programm eingefügt werden – damit entweder der ESP dem ATmega oder umgekehrt sagen kann, was er jetzt machen soll. Dann sollte beim ESP allerdings Serial.begin(9600) z.B. aufgerufen werden – zumindest irgendetwas niedrigeres, damit er per SoftSerial angeschlossen werden kann. Das ermöglicht dann Kommunikation von ESP zu Arduino und Arduino zu PC. Der ESP könnte z.B. beim Verbinden seriell die Anzahl der aktuellen Clients übertragen und der Arduino könnte darauf dann in irgendeiner Weise reagieren.
Der ESP sollte mit dem Sketch ESP8266WiFi>WiFiWebServer über die serielle Schnittstelle eigentlich die Verbindungsinformationen ausspucken. Über die IP-Adresse im Browser mit xxx.xxx.xxx.xxx/gpio/0 oder /1 sollte sich eine LED an GPIO 2 an und ausschalten lassen.
Im Browser sollte man dann „GPIO is now high/low“ ausgespuckt bekommen. Den Text kann man natürlich gegen eine vollständige Webseite austauschen. Für einen richtigen Server lässt sich allerdings Heilloserer besser als Grundlage nutzen:
server.on(„/index.html“, []() {
server.send(200, „text/html“, htmlSeite);
});
server.on(„/script.js“, []() {
server.send(200, „text/javascript“, javascript);
});
Ansonsten kann ich die Meldung des reconnects aktuell leider nicht wirklich nachvollziehen.
Hallo!
Also der Spannungsteiler 100 zu 200 Ohm ist schon heftig. Da fließen ja 11 mA für nichts. Eine Zehnerpotenz höher tut’s auch reichlich…
Außerdem: laut Datasheet sind die IOs gegen Überspannung geschützt. Das 3,3 Volt-Limit ist eine Legende.
Hallo,
ja klar sind 100 und 200 sehr niederohmig, sollte so nicht wirklich verwendet werden.
Zu Zweiterem: sicher ist sicher. Ich habe die auch schon an normalem TTL-Level betrieben, trotzdem bleibt immer ein mulmiges Gefühl.
Hallo Luca,
das Programmieren (2. Variante und dann das Client Beispiel) scheint so weit geklappt zu haben, jedenfalls hat der Upload Prozess keinen Fehler gebracht und endete mit
esptool v0.4.3 – (c) 2014 Ch. Klippel
……………………………………………………………………..
starting app without reboot
espcomm_send_command: sending command header
espcomm_send_command: sending command payload
espcomm_send_command: receiving 2 bytes of data
closing bootloader
Doch im Serial Monitor in der Arduino IDE sehe ich statt der erwarteten Ausgaben („Connecting to …“ etc.) leider nur das hier:
tail 4
chksum 0x50
load 0x3ffe8000, len 2620, room 4
tail
Warum?
Wann sollte ich die Verbindung GPIO0GND entfernen? Muss ich (und wenn ja, wann genau) noch einen Reset des ESP8266 nach dem Upload durchführen? Welche Verbindungen kann ich jetzt überhaupt entfernen und welche braucht der ESP8266 um standalone das auf ihn geladene Programm auszuführen? Sind nur 3.3V und GND ausreichend?
Hallo Stefan,
IO0 zu GND musst du für den Produktivmodus entfernen, da sollte IO0 dann mit einem PullUp verbunden werden. Ansonsten verfällt er ja wieder in den Programmiermodus. CH_PD muss mit einem PullUp verbunden werden, Reset kann auch einen vertragen. Bei den größeren Modellen sollte des Weiteren noch IO15 mit einem PullDown versehen werden. Da die PullUps und -Downs ja alle mit 3V3 oder GND verbunden sind, kann ich deinem letzten Satz jedoch (grob) zustimmen.
Die Nachricht, die du dort siehst ist nach einem Reset. Aktuell habe ich mit meinem Testaufbau etwas zu kämpfen, da er sich je nach Programm regelmäßig zurücksetzt. Es kann auch sein, dass sich der USB-Serial Chip in der Zwischenzeit kurzzeitig verabschiedet, denn die Nachricht, die der ESP mir ausgespuckt hat ist länger gewesen, als deine. Dann musst du den Monitor schließen und wieder öffnen, beim Reset schmiert er dir eventuell wieder ab. Etwas rumexperementieren. Eine fertige Lösung die einwandfrei läuft habe ich bisher leider nicht. Zum Debugger ohne Konsole kann man auch GPIO1 (Tx) nehmen. Wenn man den auf LOW legt, leuchtet die blaue LED.
Den Beitrag werde ich auch noch überarbeiten müssen, da noch einiges dazu gekommen ist oder sich komplett verändert hat.
Hallo,
erstmal danke für diese verständliche Anleitung. Ich habe eine Frage zum Programmupload. Wird das esptool noch zum programmieren benötigt? Ich habe die neue IDE 1.6.5 wie auf github beschrieben installiert. Das esp modul ist auch unter Boards zu finden, auch die Beispiele sind da. Kompilieren klappt ohne Fehler, nur dieses esptool unter Programmer ist nicht da. Ich möchte zum programmieren einen Arduino
Uno verwenden. Brauche ich dieses Tool, was muss ich als Programmer auswählen?
Vielen Dank!
Hallo Ricky,
inzwischen ist es sogar noch einfacher geworden, dazu müsste ich allerdings den Beitrag mal in einer freien Minute ändern.
esptool ist inzwischen der Standard geworden und funktioniert zuverlässig – er muss nicht mehr extra unter den Programmern angewählt werden. Beim Programmieren einfach nur USB-Serial – beim UNO entsprechend den ATmega entfernen oder mit einem leeren Sketch bespielen.
Hallo Luca,
Danke für die schnelle Hilfe. Wenn ich also einen Uno zum programmieren nutze, den ATmega entferne und den richtigen Port auswähle, an dem mein Uno angeschlossen ist, dann brauche ich bei Programmer nichts ändern, da ich ja keinen anderen Programmer wie z.B.
FTDI oder AVR ISP oder ähnliches verwende. Ist das so richtig? Ich bin mir noch etwas unsicher, da ich bisher nur den Arduino Uno mit USB Kabel und Arduino IDE programmiert habe und ich mich mit dem Punkt Programmer noch garnicht beschäftigt habe.
Danke.
Hallo Ricky,
auf dem Uno ist ja – sofern es kein billiger Klon ist – noch der ATmega16u4, der allerdings letztendlich aber auch als USB-Serial agiert. Insofern ist es egal, ob du FTDI, CH340 o.ä. dran hast, du musst nur den Port auswählen. FTDI, CH340 und wie sie nicht alle heißen sind ja nur USB-Serial Chips, die auf anderen Boards (Nano etwa) verbaut sind müssen ebenfalls nicht gesondert ausgewählt werden, da sie sich als serielle Schnittstelle anmelden und den Arduino über den Bootloader programmieren.
Per ISP lässt sich der ESP des Weiteren nicht programmieren, da er AFAIK kein ISP unterstützt. Einen Vorteil würde ich nur darin sehen, dass GP0 nicht LOW sein müsste beim Boot (dadurch dass der Bootloader entfällt), während ich beim normalen Arduino die längeren Startzeiten und den Speicherverbrauch schon manchmal durch Programmierung über ISP übergehe.
Kurze Zeit hält er auch die 5V aus, die normal an den seriellen Pins anliegen, schön ist es allerdings nicht (schon einige mit einem X drauf hier liegen). Dafür dann Pegelwandler oder Spannungsteiler benutzen oder schneller arbeiten.
Hab den Artikel eben mal geringfügig bearbeitet im Abschnitt „Programmieren“ und Spannungsteiler.
Hallo Luca,
muss ich beim esp8266 esp-01 ein Firmwareupdate machen, um diesen mit der Arduino IDE nutzen zu können? Mir ist natürlich klar das man immer die aktuellste Firmware verwenden sollte.
Danke
Hallo Ricky,
beim Flashen wird anscheinend automatisch in den Flash die Firmware mit geschrieben (jedes Mal?), da das Programm erst bei glaube ich 0x0400 einsetzt. Arduino ist ja dafür geschaffen sich nicht um alles einen Kopf zu machen, von daher wird bei dem Port wohl auch daran gedacht worden sein.
Mehr weiß ich allerdings jetzt auch nicht, lese da auch nur grob aus der Glaskugel, die mir die Konsole bietet.
Hallo Luca,
ich werde morgen wenn ich wieder daheim bin die ersten Versuche starten. Das Modul ist heute angekommen. Du hast mir erstmal sehr geholfen. Ich werde dir auf jeden Fall berichten ob es geklappt hat.
Gruß Ricky
Hallo Luca,
nachdem ich mich die ganze Woche belesen habe und eben das Modul (was echt winzig ist) auspackte, musste ich natürlich gleich loslegen.
1. Meinen Arduino Uno(original) mit leerem Sketch bespielt.
2. ESP mit 3,3 V und Gnd aus einem Breadboard Netzteil versorgt.
3. Rx an Rx vom Arduino (nicht kreuzen).
4. Tx über Spannungsteiler (10k : 20k) an Tx vom Arduino.
5. GPIO zum Upload auf LOW
6. Upload wie gewöhnlich über Button gestartet.
Keine Fehlermeldung, alles hat geklappt.
Ich habe die Beispiel Sketche „Hello Server“ und „WIFI Scan“ getestet und freue mich schon auf tolle Projekte mit dem ESP-8266. Für mich lohnt es sich auf jeden Fall. Ich danke dir für diesen Artikel und deine schnelle Hilfe. Mach weiter so.
Gruß Ricky
Freut mich zu hören, dass es geklappt hat!
Wird in naher Zukunft auch noch mehr zum Thema ESP-Hardware geben, da ich gerade noch an einem Projekt schraube 😉 Mehr dazu, wenn alles beisammen ist!
Hallo Luca,
ich habe nun folgendes Problem. Wenn ich mein ESP-8266 nach erfolgreicher programmierung vom Arduino trenne, RX,Tx,Gnd läuft der ESP-8266 nicht mehr. Ich dachte ich könnte diesen programmieren und dann Standalone betreiben. Hast du einen Tipp wo mein Fehler liegen könnte?
Danke
Hallo Ricky,
hast du an CH_PD gedacht? Der muss ja weiterhin den ESP aktivieren.
Ja, ich habe alles auf einem Breadboard aufgebaut, ein Breadboard Netzteil verwendet und CH_PD auf HIGH gezogen. Ich bin etwas ratlos, aber werde am Wochenende erstmal weiter probieren.
Hallo,
Der Flash der Firmware funktioniert prima. Ich kann aber danach keine LUA Datei oder Verbindung herstellen ( auch bei gezogenen Upload Pin). Muss ich sonst noch was beachten?
Hallo Torsten,
nach dem Upload mit der Arduino IDE ist die Firmware für LUA ja wieder runter, von daher wirst du darüber auch nicht den Erfolg haben. Es sei denn, du nutzt die Kommandozeile, um mit esptool den ESP mit einer LUA-Firmware zu flashen.
Mit LUA habe ich mich noch nicht probiert, daher nur grobe Infos von meiner Seite möglich.
Glaube das hat noch nichts mit LUA-Firmware zutun.
Zum Upload der LUA Datei, ist ja GPIO0 getrennt, also dein Upload Pin gezogen.
Dabei bekomme ich keine Verbindung und der ComPort Verbindet und trennt sich in einer Endlosschleife. Habe schonmal mit dem Multimeter gemessen, kann aber keinen Lötfehler von mir finden.
Hast du noch eine Idee?
Es liegen auch CH_PD an Vout+ 3,4V an, keine Ahnung was da schief läuft.
Hallo Luca,
ich habe aus der cloud den flasher heruntergeladen und in das ESP8266 esp-3 eingespielt.
Im Arduino Serial Monitor 9600 bd bekomme ich bei Eingabe AT und AT+RST, GMR immer nur: ready, vendor …
Kann das ein boot Problem sein ? (CH_PD = 3,3V, GPIO0 = 3,3 V,
GPIO15 = GND:)
Beste Grüße,
Gerry
Hallo Gerry,
also bei dem Flasher weiß ich gerade nicht genau, was du meinst. Wahrscheinlich das IDE-Addon oder die komplette IDE. Wobei, wenn du von AT-Befehlen sprichst, kann es das wohl nicht ganz sein. Sobald du über Arduino ein Programm hochlädst, hast du die programmierte Umgebung, da reagiert er nur auf AT, wenn du ihm das so gesagt hast.
AT-Befehle funktionieren nur mit der Standard-Firmware. Das regelmäßige Zurücksetzen/Absturz+Reset kenne ich von Zugriffen auf „verbotene Register“ beim ESP, also etwa Pin 7-11.
AT+RST setzt ihn ja zurück, daher wirst du dann auch diese Zeichenkette mit vorher irgendwelchen zufälligen Zeichen erhalten.
Die Pins habe ich nicht fest an die Level angeschlossen, sondern jeweils mit 10k, sodass diese auch noch Handlungsspielraum haben.
Ansonsten wüsste ich spontan gerade nichts wirklich, aber manchmal sind die schon etwas bockig.
Hi,
Cooles tutorial! Ich hab mal ein einfaches Tutorial für ESP-07 und ESP-12 gemacht da hat man ein paar gpios mehr zur verfügung:
https://youtu.be/8J7zflVO8K0
Hi Luca,
nachden nun meine ESP angekommen sind, bin ich auf der Suche nach brauchbaren Info’s hier hängen geblieben. Danke für die Superseite. Eigentlich will ich 2 ATmega über 2 ESP verlinken. Die Verbindung der Module ging recht problemlos. Nur der Datenaustausch über die AT-Befehle will mir einfach nicht gelingen. Vielleicht geht das ja auch gar nicht mit den ESP über die AT-Befehle!? Könntest Du mir bitte den Weg etwas ebnen und mir ein paar Denkanstöße liefern?
vielen Dank
Bernd
Hallo Bernd,
da du ja hauptsächlich mit dem Atmel arbeiten willst und den ESP nur als Slave nutzen willst, wäre der Beitrag von Hubert wohl interessanter für dich… Inzwischen gibt es auch Libraries, die die AT-Kommandos in leserlichen Befehlen zur Verfügung stellen (über den Library Manager ist eine von Adafruit verfügbar).
Bisher hatte ich Komplikationen damit, sowohl einen Server, als auch einen Client mit dem selben ESP gleichzeitig aufzusetzen. In deinem Fall würde ich den einen als Master definieren, der sich beim Client beim anderen anmeldet. Von da an, kann der Client regelmäßig Daten pollen oder auch pushen (POST-Request), während Daten des anderen nur bei einer Anfrage des Clients mit übertragen werden können.
Hallo Luca,
Vielen Dank für die Antwort. So wie du schreibst, hatest du auch schon diese Probleme. Es lassen sich zwar beide ESP verbinden, aber Datentransfer ist ein ganz anderes Thema. Die Atmels sind da nicht das Problem, die machen bei mir was sie sollen.
Ich werde mich mal bei Hubert umsehen. Nochmals vielen Dank
Hallo! Ich habe folgendes Problem:
Ich möchte einen neuen ESP8266 nutzen, auf dem also noch nichts lief. Den habe ich mit Rx über einen Spannungsteiler an Tx eines Arduino Nano angeschlossen. Den Tx des ESP direkt an den Rx des Nanos. Die Spannungsversorgung von 3V und GND nehme ich von 2 Batterien AAA. Alternativ habe ich da auch schon einen weiteren Nano zu nehmen, was jedoch nichts ändert. GPIO0 auch auf GND und CH_PD an Vcc gelegt. So weit so gut. Die blaue und rote LED blinken, da bin ich schon mal beruhigt:-)
Sobald ich über die Arduino IDE einen Sketch raufbringen möchte, fliegt er jedoch im letzten Schritt raus mit den Meldungen:
warning: espcomm_sync failed
error: espcomm_open failed
Und hier mal die Einstellungen der Arduino IDE 1.6.5:
Platine: Generic ESP8266 Module
Flash Mode: DIO
Flash Frequency: 80 MHz
Upload Using: Serial
CPU Frequency: 80 MHz
Flash Size: 512K (64K SPIFFS)
Reset Method: ck
Upload Speed: 115200
Programmer: Arduino as ISP
Gegooglet habe ich schon ne Menge aber ein funktionierendes Rezept habe ich nicht gefunden. Was kann ich daraufhin tun?
Hallo Christoph,
hast du den Nano mit dem Bare Minimum Sketch bespielt? Desweiteren muss der USB-Serial Wandler mit dem ESP gekreuzt werden. Da die Pins des USB-Serial bereits gekreuzt an den Atmel auf dem Nano gehen, musst du hier Tx mit Tx und Rx mit Rx verbinden.
Beste Grüße
Luca
Hallo und danke schon mal!
ich habe nun daran weiter gebastelt und komme noch immer nicht weiter. Der Nano ist leer, das ist also nicht das Problem. Ich denke eher dass es vlt mit dem Reset zu tun hat. Meine Reihenfolge bisher ist:
GPIO 0 dauerhaft auf GND. Starte ich das Hochladen, setze ich während des Kompilierens den Reset-Pin einmal kurz auf Vcc und dann nicht mehr. Dann blinkt die blaue Lampe beim Hochladen mehrmals auf und am Ende kommt die Fehlermeldung und die Lampe bleibt aus. Tx des ESP-01 soll direkt an Tx des Nanos und Rx des ESP-01 an Rx des Nanos hast du geschrieben. Ist das so wirklich in Ordnung? Die Tx-Spannung habe ich dann auf 3V runtergebracht, es gab jedoch auch hier wieder die gleiche Fehlermeldung. Ist der Umgang mit Programmierpin (vorerst immer auf GND lassen – bis Hochladen Erfolg haben würde) und Resetpin (kurz auf Vcc während Kompilieren) okay?
Hallo Christoph,
RESET sollte grundsätzlich mit einem PullUp an Vcc betrieben werden. Zum Reset benötigt es einen Low Pegel (also vorher ein mal kurz auf GND, egal ob während des Kompilierens oder davor, letzteres besser).
Da es blinkt, scheint die Verkabelung richtig zu sein (Tx blinkt nur beim Empfang von entsprechenden Daten). Es kann allerdings sein, dass die Verbindung TX(ESP) zu RX(Nano) nicht ganz klappt. Da wäre die vorige Kommunikation zu interessant.
Okay jetzt habe ich Reset erstmal dauerhaft per Pull-Up Widerstand an VCC. Bevor ich hochladen und kompilieren lasse, lege ich den Pin einmal kurz an GND. Programmierpin bleibt dauerhaft an 1. Lege ich Tx an Tx und Rx an Rx leuchtet die blaue LED durchgehend. Lege ich Tx an Rx und andersrum, leuchtet die LED nur beim Hochladen mehrmals auf. Egal wie ich bisher versuche, die Fehlermeldung bleibt. Woran könnte es denn noch liegen?:-/
Hallo,
ich habe exakt das gleiche Problem.
Hast du es lösen können?
Hallo Luca,
welche Version der Arduino IDE benutzt Du?
Bei mir -V1.6.5- fehlt esptool.
beim googlen fand ich keinen Lösungsansatz
Hallo Andreas,
sowohl mit der 1.6.5 als auch mit der 1.6.7 funktionierte es bei mir.
Welche Methode hast du gewählt?
Hei Luca
Herzlichen Dank!
Du hast mir sehr weitergeholfen!
Weiter so 😀
Grusss
aus der Schweiz
Hey Luca,
vielen Dank für die tolle Anleitung. Es hat soweit auch alles gut geklappt. Ich kann die Benutzeroberfläche „Arduino Steuerung“ im Browser aufrufen und der Aufrufzähler funktioniert. Sobald ich allerdings auf „Absenden“ klicke, erscheint eine leere Seite im Browser und in der Adressleiste steht „about:blank“. Es wird dann auch nichts geschaltet. Dieses Verhalten zeigt sich auf unterschiedlichen Geräten und verschiedenen Browsern. Hast du vielleicht eine Idee, woran das liegt?
Viele Grüße
Heiko
Hallo Heiko,
ich weiß jetzt gerade nicht, ob du das mit der Anleitung von Hubert verwechselst, weil ich habe kein derartiges Programm in meinem Beitrag. Da müsste ich dich an ihn bzw. seinen Artikel verweisen.