Ich habe ein NodeMCU-Board v3.2 mit dem ESP8266-Chip. Nun würde ich damit gerne einen WLAN Access-Point starten, und dann von meinem Laptop/Computer die integrierte LED auf dem Board ein-/ausschalten. Leider scheitere ich gerade an dieser einfachen Aufgabe, und hoffe mir kann jemand helfen. Als Bastel-Einsteiger auf diesem Gebiet habe ich erstmal nach Beispiel-Code gesucht, und das hier gefunden: http://shelvin.de/esp8266-die-blaue-led-per-html-seite-vom-iphone-umschalten/ Macht laut Beschreibung genau das, was ich will. Den Code konnte ich auch fehlerfrei übersetzen und mit der Arduino-IDE auf die NodeMCU laden. Der WLAN-AccesPoint startet, ich sehe das auf meinem Laptop. Ich kann mich damit verbinden und auch im Browser die Seite mit der IP-Adresse aufrufen. Das klappt bis hier alles, und ich sehe im Browser auch die Buttons. Also es ist schon erstaunlich wie weit ich auf die Schnelle gekommen bin, bloß wenn ich auf einen Button klicke, ist die Enttäuschung groß, denn mit der LED passiert ... nichts. Vermutlich ist dieser Teil im Code entscheidend: "a h ref=\"?pin=LEDEIN\". Was passiert denn da? Oder ist die LED an GPIO16 irgendwie blockiert?
Um die Anzahl der Fehlerquellen zu reduzieren, könntest Du zunächst mal die LED ohne WLAN/Webserver ansteuern, sie z.B. einfach blinken lassen. Dann weißt Du, daß der Teil, der die LED ansteuert, korrekt funktioniert. Als nächstes kannst Du versuchen, die Interaktion mit der Webseite auszuprobieren. Definiere Dir einen Zähler, den Du als Wert sowohl auf der Webseite ausgibst als auch durch Klick auf den Knopf erhöhst. Lädst Du danach die Webseite neu, müsste der Zählerwert entsprechend größer geworden sein. Dann weißt Du auch, ob der Aufruf über den Knopf in der Webseite funktioniert. Dazu musst Du diesen Codeabschnitt ändern:
1 | if (sCmd.length()>0) { |
2 | sResponse += "Parameter:" + sCmd + "<BR>"; |
3 | if(sCmd.indexOf("LEDEIN")>=0) { // LED einschalten |
4 | digitalWrite(BUILTIN_LED, 0); |
5 | }
|
6 | if(sCmd.indexOf("LEDAUS")>=0){ // LED ausschalten |
7 | digitalWrite(BUILTIN_LED, 1); |
8 | }
|
9 | }
|
und die digitalWrite-Aufrufe ersetzen durch z.B. meinzaehler++ und meinzaehler--. Diesen Zaehler gibst Du auf die gleiche Art und Weise aus wie den auf der Webseite schon integrierten Aufrufzähler "zaehler".
Vielen Dank! Minimalcode um die LED blinken zu lassen (ohne WLAN) geht. Also ist D0 bzw. GPIO16 zumindest schonmal der richtige Port. Nur mit WLAN funktioniert die LED komischerweise nicht. Hat schonmal jemand genau diesen Beispielcode auf seiner NodeMCU getestet? Der schon vorhandene Aufrufzähler zählt auch hoch, und das mit dem Zähler über die Buttons probiere ich bei nächster Gelegenheit noch aus.
gfunk schrieb: > Minimalcode um die LED blinken zu lassen (ohne WLAN) geht. Also ist D0 > bzw. GPIO16 zumindest schonmal der richtige Port. Den steuerst Du auch mit "BUILTIN_LED" an? > und das mit dem Zähler über die Buttons probiere ich bei nächster > Gelegenheit noch aus. Nun, vielleicht liegt ja der Fehler genau dort. Wenn die Auswertung der URL-Parameter hier nicht richtig funktioniert, wird digitalWrite nicht aufgerufen -- und dann kann Deine LED auch nicht gesteuert werden. Sofern Du eine serielle Konsole hast, kannst Du auf der ja mal die kompletten URL-Parameter ausgeben, und an den Stellen, wo die LED gesteuert werden sollte, enstprechendes.
:
Bearbeitet durch User
Hier hast du ein funktionierendes Beispiel zum abgucken: http://stefanfrings.de/esp8266/index.html#tcpsketch
Danke für den Link, das ist ja eine sehr gute Seite! Aber der Code macht doch was ganz anderes, oder?
gfunk schrieb: > Aber der Code macht > doch was ganz anderes, oder? Der Code schaltet eine LED an und aus auf Befehl übers Netzwerk. Was du noch hinzufügen müsstest, ist ein rudimentäres HTTP Protokoll und eine HTML Seite (anstelle dieser Plain-Text Umsetzung).
Hallo zusammen, ich habe heute ein WordClock Projekt dazu gefunden und auch schon mit einem Wemod D1 mini getestet. Ich denke das dürfte sich mit den Bedürfnissen des TO decken. https://github.com/roggenrohl-inge/wordclock VG, Mathias
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.