Der ESP8266 NodeMCU ist ein kleiner Mikrocontroller, welcher GPIOs hat und darüber sich per WLAN mit dem Internet verbinden kann. Dies und der geringe Preis macht ihn gegenüber bspw. Arduinos sehr interessant. In kommenden Tutorials wollen wir die günstigen ESP8266 Module nutzen, um Daten per Wifi Verbindung an den Raspberry Pi zu senden, welcher als „Herzstück“ agiert.
In diesem Tutorial geht es um die Einführung sowie den generellen Aufbau und ersten Start mit einem ESP8266 NodeMCU.
Zubehör
Vom ESP8266 gibt es verschiedene Modelle, wobei der günstigste (ESP-01) lediglich vier GPIO Pins hat. Für minimale Anwendungen sollte dies ausreichen. Falls mehr Hardware-Pins gebraucht werden, so ist der ESP-12 die bessere Wahl. Letzteren gibt es auch als „Development Board“, was Adapter überflüssig macht.
Bevor wir starten, solltest du dir klar machen, welche Version für dich geeignet ist. Dieses und alle kommenden Tutorials werden mit beiden Versionen kompatibel sein.
- Das NodeMCU ESP-12 Modul hat eben den Vorteil, dass es per MicroUSB Kabel angeschlossen werden kann und einen Reset Knopf hat. Solltest du nur das Modul ohne Development Board (bspw. aus Platzgründen), so kann man dies auch separat erwerben.
Falls du kein integriertes Board hast, brauchst du folgendes:
- ESP-01
- FT232 USB-TTL Adapter
- Mini USB Kabel (kein micro)
- Jumper Kabel
- Breadboard
Falls du das Beispiel am Ende nachbauen möchtest, solltest du außerdem ein paar LEDs da haben.
Aufbau & Verkabelung
Zunächst einmal müssen wir den ESP8266 an einen USB Port unseres Computers anschließen. Beim Development Board reicht es ein micro USB Kabel anzuschließen. Ohne solch ein Board müssen wir den USB-TTL Adapter nutzen. Dafür ist es wichtig, dass wir die Pinbelegung unseres ESP Moduls kennen.
Für die beiden ESP-01 und ESP-12 habe ich hier einmal die Pinbelegung eingefügt:
Eine Belegung aller Modelle (ESP-05, ESP-07, usw.) findest du übrigens hier.
Nun müssen wir das Modul an den FT232 USB Adapter anschließen. Dieser hat 6 Pins, wovon wir 4 nutzen werden. Die Beschriftung der Pins ist nicht direkt sichtbar, da sie zwischen dem Jumper und den eigentlichen Pins ist.
Mit Jumper Kabeln werden folgende Pins des ESP8266 NodeMCU Moduls zunächst an den USB-TTL Konverter angeschlossen:
ESP8266 | FT232 USB-TTL Serial Adapter |
---|---|
VCC | VCC |
CH_PD | VCC |
TXD | Tx |
GND | GND |
RXD | Rx |
GPIO 0 | GND (temporär) |
Der Anschluss von GPIO0 an GND ist übrigens nur wichtig, wenn geflasht wird. Nachdem die Firmware erfolgreich geflasht wurde, kannst du die Verbindung dieses Pins zu GND trennen.
Firmware flashen
Verbinde den USB Adapter zunächst an deinen PC. Der ESP8266 sollte automatisch erkannt werden und die Treiber unter Windows 7/8/10 automatisch installiert werden.
Anschließend benötigen wir das NodeMCU Flasher Tool. Es gibt hiervon eine 32Bit und 64Bit Version, welche entsprechend dem Betriebssystem heruntergeladen werden muss.
Starte das Programm und wähle den entsprechenden Port aus, an dem der ESP82166 angeschlossen ist. Normalerweise wird dieser automatisch erkannt (solange nicht mehr als ein Modul angeschlossen ist). Nach Prüfung drücke auf Flash(F) und warte, bis der Vorgang vollendet ist. Die Mac-Adresse sollte direkt angezeigt werden:
Das Development Team ist wohl dabei, das Tool auch für Linux und Mac verfügbar zu machen. Falls du die Firmware eines Tages updaten willst, kannst du hier weitere Informationen dazu finden.
Beispielsweise kannst du von hier eine Custom-Firmware (mit mehr standardmäßig enthaltenen Bibliotheken (wie http, etc.) laden. Diese liegt im „.bin“ Dateiformat vor und kann im „Config“ Tab anstelle der vordefinierten Firmware verwendet werden. Achte gleich beim Verbinden darauf, dass die Baudrate bei diesen Custom-Builds 115200 und nicht 9600 ist (sofern du sie verwendest).
Sobald die Firmware erfolgreich übertragen wurde, kannst du GPIO0 von GND trennen und das Flashing Tool schließen.
Verbindung zum ESP8266
Der ESP8266 NodeMCU Mikrocontroller lässt sich mittels der Sprache LUA programmieren (diese kommt übrigens auch in unserem automatischen Telegram-Skript vor). Um den Programmcode auf diesen zu übertragen, müssen wir zunächst eine serielle Verbindung aufbauen. Am einfachsten geht dies mit der Hilfe eines Tools.
Hierfür nutze ich das „ESPlorer“ Tool, welches in Java geschrieben wurde und somit auf allen Betriebssystemen genutzt werden kann. Lade dies zunächst auf der Entwicklerseite herunter und entpacke es.
Unter Windows Betriebssystemen reicht es die zugehörige „ESPlorer.bat“ zu starten.
Im rechten Tab ist wieder die Auswahl des Ports vorhanden. Wähle hier den entsprechenden Port (bei mir ist dies COM5) mit Baudrate 9600 (in früheren Versionen war diese bei 115200). Klicke nun auf den Button Open.
Üblicherweise tut sich erst einmal nicht viel, bis auf diesen Text:
PORT OPEN 9600 Communication with MCU..
Du musst den Mikrocontroller zunächst neustarten. Bei einem Development Board reicht das Drücken des Reset Buttons. Ohne Board muss der RST Pin (Belegung siehe oben) kurz mit GND verbunden werden. Danach erscheint folgende Meldung:
Got answer! Communication with MCU established. AutoDetect firmware... Can't autodetect firmware, because proper answer not received (may be unknown firmware). Please, reset module or continue. Self adjust flash size. NodeMCU 0.9.5 build 20150318 powered by Lua 5.1.4 lua: cannot open init.lua >
Du hast es nun geschafft! Hier können nun bereits Befehle per LUA eingegeben werden, welche dann einmalig ausgeführt werden. Du kannst bspw. folgendes ganz unten eingeben:
print("Hello World")
Natürlich ist es auch möglich den Programmcode direkt nach dem Starten ausführen lassen. Dazu muss der Code in eine „init.lua“ Datei geschrieben werden, wozu wir aber gleich noch kommen.
Übrigens: Theoretisch ist es ebenfalls möglich sich per Putty oder Arduino IDE bzw. jedem Programm, das eine serielle Verbindung aufbauen kann, zu verbinden. Das ESPlorer Tool ist meiner Meinung nach aber die komfortabelste Möglichkeit.
Erster Test – Server
Die NodeMCU Seite hat einige Beispiele (unten), wovon wir zwei gleich einmal ausprobieren wollen.
Beim eerste Beispiel handelt es sich um einen kleinen Webserver, welcher unter der lokalen IP Adresse des ESP8266 läuft. Dazu muss dieser natürlich zunächst mit dem WLAN verbunden werden.
In der linken Seite des ESPlorer kannst du folgenden Code kopieren:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
wifi.setmode(wifi.STATION) --wifi.sta.config("SSID","password") wifi.sta.config {ssid=SSID, pwd=SSID_PASSWORD} -- a simple http server srv=net.createServer(net.TCP) srv:listen(80,function(conn) conn:on("receive",function(conn,payload) print(payload) conn:send("<h1> Hello, NodeMcu.</h1>") end) end) |
Hierbei müssen natürlich die WLAN Daten (SSID = Name, Passwort) mit denen deines Netzwerks ersetzt werden.
Drücke anschließend auf „Send to ESP“ (ggf. musst du die Datei vorher lokal speichern).
Um nun die IP Adresse herauszufinden, kannst du im in der rechten Ansicht unten folgendes eingeben:
1 |
print(wifi.sta.getip()) |
Dies gibt eine Ausgabe wie folgende:
192.168.1.77 255.255.255.0 192.168.1.1
Die erste angegebene IP Adresse, ist jene innerhalb des lokalen Netzwerks. Falls sich dein Rechner ebenfalls in diesem Netzwerk befindet, so kannst du diese IP einfach in deinen Browser eingeben und folgendes sollte erscheinen:
Sobald du dies aufrufst, sollte der Log im rechten Fenster des ESPlorer auch etwas ausgeben.
Falls du die Datei in den Autostart packe willst, so speichere sie unter „init.lua“ und übertrage sie auf den ESP.
Solltest du sie eines Tages löschen wollen, so geht dies wie folgt (Dokumentation):
file.remove("init.lua")
ESP8266 NodeMCU GPIO schalten
Zum Schluss wollen wir noch von den GPIOs Gebrauch machen und eine LED leuchten lassen.
Achte darauf, dass die GPIO Nummerierung, wie auch beim Raspberry Pi, nicht mit der Pinbelegung übereinstimmt. So gilt bspw. beim ESP-01 GPIO0 = Pin3 und GPIO2 = Pin4. Im Code geben wir die Pin Nummerierung an. Die Belegung kann hier nachgelesen werden.
IO index | ESP8266 pin | IO index | ESP8266 pin |
---|---|---|---|
0 | GPIO16 | 7 | GPIO13 |
1 | GPIO5 | 8 | GPIO15 |
2 | GPIO4 | 9 | GPIO3 |
3 | GPIO0 | 10 | GPIO1 |
4 | GPIO2 | 11 | GPIO9 |
5 | GPIO14 | 12 | GPIO10 |
6 | GPIO12 |
Beim ESP-12 NodeMCU sollte beachtet werden, dass die D-Pins (D0, D1, usw.) nicht die GPIO Nummern darstellen, sondern die IO/Pin Nummerierung:
Mit folgendem Skript kannst du eine LED an GPIO2 blinken lassen (langes Ende der LED an den GPIO, kurzes Ende an GND):
1 2 3 4 5 6 7 8 9 |
pin = 4 -- GPIO2 gpio.mode(pin,gpio.OUTPUT) while true do gpio.write(pin,gpio.HIGH) tmr.delay(1000000) gpio.write(pin,gpio.LOW) tmr.delay(1000000) end |
Auf der Referenzseite von NodeMCU findest du weitere kleine Beispiele.
Welche Projekte (insbesondere im Bezug auf den Raspberry Pi) soll ich als nächstes umsetzen?
60 Kommentare
Hallo und danke für Klärung,,
Mini oder Micro? Ich bin verwirrt:
• Das NodeMCU ESP-12 Modul hat eben den Vorteil, dass es per MicroUSB Kabel angeschlossen werden kann und einen Reset Knopf hat. Solltest du nur das Modul ohne Development Board (bspw. aus Platzgründen), so kann man dies auch separat erwerben.
Falls du kein integriertes Board hast, brauchst du folgendes:
• ESP-01
• FT232 USB-TTL Adapter
• Mini USB Kabel (kein micro)
• Jumper Kabel
• Breadboard
Aufbau & Verkabelung
Zunächst einmal müssen wir den ESP8266 an einen USB Port unseres Computers anschließen. Beim Development Board reicht es ein micro USB Kabel anzuschließen.
der NodeMCU ist ein ESP-12 auf einem Board (Titelbild) mit Micro USB. der Adapter für den ESP-01 ist Mini USB.
Super Sache,
ich hab den ESP-12 schon länger rumliegen, habs aber immer wieder verschoben.
Hast du vllt einen gute Infoquelle zum Thema micropython flashen, oder taugt das nix? kann ja schon nur bedingt mit python umgehen, aber mit lua garnicht.
Oder sollte ich mir noch lua kenntnisse aneignen?
MfG Hauschi
Lua ist sehr ähnlich zu Python. Ich würde auch deshalb bei Lua bleiben, weil die aller meisten Codebeispiele in Lua sind. Da wirst du dir keinen Gefallen tun, wenn du jedes Mal alles übersetzen musst.
Hallo,
benötigt man für den ESP-01 zwingend den FT232 USB-TTL Adapter oder kann man das auch
mit einem NodeMCU ESP-12 Modul machen?
Gruss Ingo
Ja für den ESP-01 ist ein Adapter nötig. Beim NodeMCU Board mit ESP-12 nicht. Ohne Board wäre ein Adapter wiederum nötig.
Moin Felix,
nur mal so ne kurze Frage…
beim RPi hat man ja grundsätzlich das stromausfall Problem. Also SD Karte im eimer und so weiter, stimmt es daß der ESP grundsätzlich sozusagen stromausfall resistent ist?
Das würde ja bei einigen Ideen gewisse vorteile haben, zb. akku betrieb oder kleinere outdoor geschichten wie Temperaturmessung oder was man auch immer für geistesblitze verfolg.
Ich zum beispiel will nur so zum spaß mal nen 1-Flaschen Bierkühler mit nem Peltierelement und nem ds18b20 bauen. 🙂
MfG Hauschi
Der ESP hat seinen Speicher onBoard und kann daher nicht ausgewechselt werden. Resistent ist Hardware selten. Nach einem Stromausfall rebootet er ganz normal.
Hallo Felix,
In erster Linie mal vielen Dank für die vielen tollen Tutorials! Wegen dieser Website habe ich mir meinen ersten Raspberry zugelegt und es gewagt mich als teockener Beginner in die Programmierwelt zu stürzen. In meinen Kopf habe ich mir eine komplett heimautomatisierung gesetzt mit mehreren Basis Abteilungen. Dazu sollen sowohl Heizung wie auch 433 Steckdosen und elektrische Rollläden gehören. Hierfür scheinen die NodeNCU Boards perfekt zu sein. Mein Wunsch Tutorial wäre eine wifi Kommunikation zwischen RPi und NodeNCU Boards Inkl. Steuerung vom Smartphone.
Danke dir und mach weiter so!
Kevin
Hallo Kevin,
hab ein paar Wochen Geduld, das ist bereits in Planung 🙂
LG, Felix
Hallo Felix,
Super Tutorial mal wieder! Hab mir gleich mal so ein Board bestellt läuft super.
Mir ist aufgefallen das du noch mit einer alten Firmware arbeitest. Auf Git Hub gibt es eine Version aus diesem Jahr: https://github.com/nodemcu/nodemcu-firmware/releases
Vielleicht kannst du das ja noch in deinem Tutorial anpassen 🙂
Mach weiter so!
In den kommenden Tutorials werden fast ausschließlich Custom Builds verwendet, die die entsprechenden Module beinhalten und auf der letzten Firmware aus dem Master Branch basieren 🙂
Ich habe von diesem, vorallem auf Grund der Größe, erwartet dass auch die Programmierung mittels der Arduino IDE gezeigt wird. Naja, darum folge ich mittlerweile lieber kleineren Blogs.
Vielleicht wird die Programmierung mittels Arduino IDE hier irgendwann mal gezeigt.
Bin gespannt ob überhaupt mein Kommentar freigegeben wird
Hi Ben,
klar, wieso sollte dein Kommentar denn nicht freigegeben werden? Ich fand den ESPlorer am einstiegsfreundlichen und arbeite auch selbst lieber damit, weshalb ich diesen vorgestellt habe. Falls Zeit ist, werde ich vielleicht auch ein Tutorial zur Nutzung mit der Arduino IDE und dem ESP8266 machen.
Dennoch danke für deine ehrliche Meinung 🙂
LG, Felix
Hallo Felix,
Wenn ich das als Laie richtig verstehe ist dieser ESPxx als Verlängerung der GPIO Pins auf dem Raspi gedacht. Nur dann eben per Wlan! Richtig?
Ich Würde gerne ein Raspi3 mit 3 Abgesetzten 7 Segment Anzeigen (alle 3 zeigen nur die Uhrzeit XX-XX-XX an)
laufen lassen und störe mich an den Kabeln.
Wäre das damit dann möglich?
Was ich nicht ganz kapiere ist wie korrespondiert den der Raspi mit dem ESP? Oder Läuft der Eigentliche Python bzw. in dem Fall Lua komplett auf dem ESP.
Hallo Robert,
Dazu kann er dienen, aber muss nicht. Du kannst ihn auch als eigenständigen Microcontroller nutzen und z.B: nur Daten austauschen.
Wie du die beiden kommunizieren lässt steht dir frei (Server-Server, MQTT, usw.), ebenso die Progammiersprache auf dem Pi. Auf dem ESP empfehle ich Lua (würde aber auch im Arduino-C++ gehen).
Sorry wenn ich nochmal nachhake,
Läuft der Python bzw. LUA Code für die Uhr dann auf dem Raspi oder ESP? Oder wie muß ich mir das Vorstellen.
Je nachdem wie du es umsetzt. Du kannst etweder den gesamten Code auf dem ESP setzen (Lua) oder aber den Pi als „Steuerung“ nehmen und dem ESP eine Nachricht übermitteln, was zu tun ist. In jedem Fall wirst du den ESP programmieren müssen, die Frage ist ebe, ob der Raspberry Pi auch vor kommt. Wenn du etwas Geduld hast kannst du den Newsletter abonnieren, denn in ca. 2 Wochen kommt ein Tutorial, das genau jene Kommunikation zeigt.
Super!
Danke vielmals. 2 Wochen kann ich warten. Bis dahin Spiele ich damit etwas rum und Versuche einiges. Bringt Erfahrung 🙂
um mit 7 Segment-Anzeigen mehrere Zeitanzeigen zu bauen benötigt man den Raspi nicht. Aufwand ist viel zu gross. Das kann ein ESP8266 auch allein und standalone. Einen Script für den ESP8266 schreiben (LUA), am WLAN-Router anmelden, die Uhrzeit aus dem Internet laden und die Zeit anzeigen …. fertig. Ich würde keine 7 Segment-Anzeigen nehmen sondern LCD Character-Displays … das ist ergeblich einfacher und man könnte auch noch das Datum mit Wochentag anzeigen (Es gib 2 zeilige Character Displays , 2 Zeilen a 40 Character für wenig Geld bei e-bay) und die leuchten auch noch schön (grün oder weiss oder gelb oder rot). Billiger als mit einem Raspi ist das mit dem ESP8266 billiger auch noch. Programmieraufwand … vielleicht 1-2 Stunden.
Dir steht es ganz frei, mit was du es umsetzen willst. Du findest jedenfalls hier zu beidem Tutorials (Raspberry Pi + 7 Segment Anzeige sowie ESP8266 und LCD Display).
Ach! Vergessen!!
esp8266 mit CH340 oder CP2102 ? Unterschied?
Hallo Felix,
muss ich den Jumper auf dem FT232 USB-TTL Adapter von 5V auf 3,3V stellen, um den ESP nicht zu grillen, oder ist das nicht nötig?
Gruß Ingo
Hi,
vielen Dank für dieses Tutorial. Ich habe nur eine kleine Bemerkung. Beim „flaschen“ RX soll mit TDX und TX mit RDX verbindet werden, nicht ungekehrt wie angegeben.
MFG
Alberto
Hi,
ich habe dein Code-Snippet mal probiert und bleibe immer an folgendem Fehler hängen:
> wifi.setmode(wifi.STATION)
> –wifi.sta.config(„SSID“,“password“)
> wifi.sta.config {ssid=“1″, pwd=“2″}
stdin:1: bad argument #1 to ‚config‘ (string expected, got table)– a simple http server
> srv=net.createServer(net.TCP)
stdin:1: only one tcp server allowedsrv:listen(80,function(conn)
conn:on(„receive“,function(conn,payload)
print(payload)
conn:send(“ Hello, NodeMcu.“)
end)
end)
>
>
=wifi.sta.getip()
=wifi.sta.getip()
nil
>
Interessanterweise geben mir die Beispiele mit wifi.sta.config auf den readme-Seiten von nodemcu auch immer den gleichen Fehler aus. (String expected, got table)
Versionen: NodeMCU 0.9.5 build 20150318 powered by Lua 5.1.4
Weiß jemand Rat?
ok, mit dem Beispiel wifi.sta.config(„SSID“, „password“) funktioniert die Syntax plötzlich.
Beantwortet aber noch nicht meine eigentliche Frage, warum die Syntax aus deinem Beispiel und auf den readme-Seiten mit den geschweiften Klammern (als table dann?) für mich nicht funktioniert.
Seit dem neusten Firmware Update ist die Syntax (mit deinen Daten natürlich):
Du scheinst eine ältere Firmware zu nutzen:
—NodeMCU – Ausgabe zufälliger Zeichen über die serielle Schnittstelle nach manuellem Reset—
Ich experimentiere seit kurzem mit einem NodeMCU und Arduino IDE.
Dazu habe ich einige Standard-Sketches (Blinkende LED, Serial.Print, etc.) hochgeladen und ausführen lassen.
Dabei ist mir aufgefallen, dass nach manuellem Reset mittels Taster auf dem NodeMCU zunächst immer zufällige Zeichen über die serielle Schnittstelle ausgegeben werden.
Meine Hardware: NodeMCU ESP 8266 12E AMICA mit 9600 baud, CP2102.
Sketch zur seriellen Ausgabe:
void setup() {
Serial.begin(9600);
Serial.println(„Hallo“);
Serial.println(„Hallo1“);
Serial.println(„Hallo2“);
}
void loop() {}
Ausgabe auf dem seriellen Monitor nach Hochladen des Sketches mit Arduino IDE:
Hallo
Hallo1
Hallo2
es wird also alles so ausgegeben, wie erwartet.
Ausgabe auf dem seriellen Monitor nach manuellem Reset auf dem NodeMCU-Board:
□] □9□□Hallo
Hallo1
Hallo2
Nach dem manuellen Reset werden zunächst zufällige Zeichen ausgegeben gefolgt von der programmierten seriellen Ausgabe.
Ein weiterer Versuch mit einem modifizierten Sketch (ohne Funktion):
void setup() {}
void loop() {}
Nach Hochladen des Sketches mit Arduino IDE: keine Ausgabe auf dem seriellen Monitor, wie erwartet.
Nach manuellem Reset auf dem NodeMCU-Board: auf dem seriellen Monitor werden umittelbar nach dem Reset zufällige Zeichen ausgegeben. z.B.: □ □1□□
Hat jemand eine Erklärung für die zufällige Zeichenausgabe nach manuellem Reset?
Wie kann man diese (ungewünschte) Ausgabe verhindern?
LG Michi
Ist die Baudrate passend zur geflashten? Solche Zeichen kommen oft durch eine falsche Baudrate.
Kann man mit dem Board auch den WS2801 LED-Streifen ansteuern? Wenn ja wie? (link)
Ja, dazu habe ich aber noch kein Tutorial geschrieben (lediglich für den Raspberry Pi). Vielleicht in Zukunft, falls Interesse besteht 🙂
Hätte daran ebenfalls Interesse!
Klasse Tutorial, habe allerdings ein Problem: ESPlorer schließt sich einfach so wenn ich auf „Open“ klicke. Es wird danach eine Datei mit einem errlog erstellt, 638 Zeilen lang. Kann ich das gute Stück irgendwie auf Werkseinstellung zurücksetzen?
Du kannst das Verzeichnis neu laden und entpacken. Ansonsten würde ich den Entwickler (auf Github) mal anfragen.
Und gibt es eine Möglichkeit den ESP zurückzusetzen?
Firmware neu flashen.
Hast du zwischenzeitlich eine Lösung gefunden? Ich habe das gleiche Problem:
HalloFelix,
habe das Problem das ich einen Neuen ESP8266 habe und den nicht Flashen kann….
Habe ihn mit USB verbunden…. und bekomme keine verbindung
Hast Du eine Idee?
Gruß Ingo W.
Was genau funktioniert nicht (Fehlermeldung, etc.)? Manche ESP’s aus China sind auch einfach defekt (meiner Erfahrung und der von anderen nach)
Hallo,
is es tatsächlichj richtig RX mit RX und TX mit TX zu verbinden? Ich habe das flashen nur hinbekommen, wenn ich RX mit TX und TX mit RX verbunden habe.
LG Leon
Hallo,
richtig tolle Seite und klasse Tutorials. Ich bin auf dem Gebiet RasPi absoluter Neueinsteiger.
ich habe noch einige der ESP-12 hier herum liegen. Besteht die Möglichkeit auch eine WLAN Verbindung per WPA Enterprise (Benutzername und Passwort) aufzubauen?
Gruß
Sven
Kann mir jemand erklären was es mit den Modulen beim Firmware erstellen aufsich hat, ich dachte der Code kommt vom erstellten bzw. programmierten Code.
Würde das heißen das wenn man eine Firmware erstellt zb. ohne WIFI das der ESP dann auch kein WiFi könnte?
Hallo,
ich habe eine verrückte Beobachtung gemacht:
Ich nutze einen Nodemcu 1.0 und habe ihm in der Fritzbox einen Name gegeben und die Fritz-Box angewiesen immer die gleiche IP-Adresse zu vergeben. Nach meinen Tests habe ich den NODEMCU dorthin verbaut, wo er gebraucht wird. Allerdings hatte er plötzlich eine andere IP – und nach ausführlicher Kontrolle habe ich festgestellt, dass er eine andere MAC-Adresse hat. Die Adresse hat sich von B4:E6:2D:25:5D:49 zu 86:16:F9:25:5D:49 geändert. Komisch, dass die letzten 3 Bytes identisch geblieben sind. Oder ist das normal?
mfg
Gerd
Hallo,
ich bin gerade dabei einen ESP8266 Wetterstation Außenposten zu bauen, wie du in einem deiner Tutorials erklärt hast. Ich habe einen ESP8266, der exat so aussieht, wie auf dem Titelbild gezeigt. Brauch ich da jetzt auch noch so einen FT232 USB-TTL Adapter, oder reicht es, wenn ich den ESP8266 einfach per microUSB Kabel an meinen PC anschließe? Ich verstehe irgendwie nicht, wie ich an den Port rankomme um die Firmware zu flashen:( Wenn ich den ESP8266 per microUSB Kabel an meinen PC anschließe, und das NodeMCU Flasher Tool öffne, weiß ich dann nicht, welchen Port ich da eintragen soll.
Bin auch noch ziemlicher Neuling auf dem Gebiet und hoffe sehr das mir hier jemand helfen kann:)
Ich hatte beim Flashen einen Fehlermeldung und habe lange gesucht um diese zu beheben. Weil ich auch nur in englischsprachigen Foren Lösungen gefunden haben, möchte ich das Ergebnis hier schreiben, Felix, ich hoffe, du hast nichts dagegen.
Die Lösung für Ubuntu (unter Windows sollte sie analog funkionieren):
Fehlermeldung war:
line 25, in import serial
ImportError: No module named serial
Zum Flashen ist Python2.x notwendig, kann aber sein, dass ESPTOOL schon unter Python3 funktioniert. Wenn nicht, dann muss Python2.x (in meinem Fall war es 2.7) zu Python3 nachinstalliert werden.
Zur Behebung des Fehlers muss pyserial als Python-Anwendung nachinstalliert werden:
sudo pip install pyserial
Sollte der Befehl pip noch nicht installiert sein, diesen installieren mit:
sudo apt install python-pip
Aufruf des Flash-Befehls:
Wechseln in usr/share/esptool (oder wo immer auch esptool.py zu finden ist
Befehl:
sudo /usr/bin/python2.7 esptool.py –port /dev/ttyUSB0 write_flash 0x00000 path zur „nodemcu-master-8-modules-2018 – Bibliothek/Bibliothekname“
Viel Erfolg
Hannes
Beim Befehl zum Flashen hab ich einen Bindestrich vor Port vergessen, der Befehl lautet richtig:
.
sudo /usr/bin/python2.7 esptool.py –-port /dev/ttyUSB0 write_flash 0x00000 path zur „nodemcu-master-8-modules-2018 – Bibliothek/Bibliothekname“
Hallo, ich hätte auch eine Frage dazu.
Ich habe eigentlich ein Relaisboard angeschlossen an meinen Wemos D1 mini. Um eigentlich nur eine kleine Last zu Schalten. Den Türöffner.
Ginge das auch einfacher? Nur über das Wemos? Dann würde ich das Reliasmodul sparen.
Grüsse
Das solltest Du nicht tun, Du wirst die I/O-Ports überlasten.
Nimm einen Transistor, am Besten einen N-Kanal-Mosfet.
Es gibt tausende Tutorials, Google hilft.
Nachtrag:
Ich nehme an, dass der Türöffner eine induktive Last ist. Also musst Du noch ein paar Kleinigekiten wie eine Freilaufdiode berücksichtigen.
Ist eine schöne Übung- danach weißt Du wie man eine Last mit einem Transistor schaltet!
Nochn Nachtrag
(Ich sollte wirklich nicht schneller schreiben als denken)
Falls der Türöffner mit Wechselstrom betrieben wird (Klingeltrafo), dann ist die einfachste Lösung tatsächlich ein Relais. Sonst muss man mit Optokopplern und Triacs rumbauen, dass ist ziemlich aufwendig.
Ein Relais kann man auch ohne fertigen Relaisbaustein selber anschließen.
Dazu ist es aber erforderlich, noch einen Transistor zum Antreiben und eine Freilaufdiode dazuzunehmen.
Die Ausgänge am ESP8266 liefern laut Datenblatt nur 12mA maximal, wenn ich das richtig gelesen habe. Also muss man eigentlich für jede Anwendung das Signal verstärken, da geht nicht mal eine LED, die brauchen typisch 20mA, Relais mit 3.3V brauchen etwa 50 bis 100mA.
Bei (etwas) höherem Strom geht der Ausgang wahrscheinlich nicht sofort kaputt, aber irgendwann sicher.
Hallo Felix,
ich möchte mit dem ESP8266 ein Relais schalten, als Relais verwende ich das gleiche wie von dir in einem vorherigen Tutorial vorgestellte 5v Relais von Azdelivery. Nun ist es leider so dass das Relais die anden in pin angelegte 3.3v immer als 0 bzw gnd interpretiert, und nicht Schaltet bzw immer eingeschaltet ist. Gibt es eine Möglichkeit über Anpassung des Codes ZB.: gpio.LOW und gpio.OFFEN dieses Problem zu beheben. Oder muss ich einen Transistor schalten der den in pin des ESP auf gnd setzt. Auf jeden Fall schaltet das Relais nur wenn der in Pin mit Gnd verbunden wird.
Hallo Benjamin,
etwas genauer sollte Deine Frage schon gestellt sein. Welches Relais ist es? KY-019 vielleicht? Das wäre ein 5V-Relais. Also VCC sollte dann auch mit 5V beschaltet sein. Bei manch einem schalten die Dinger auch bei kleinerer Spannung, was ich aber noch nicht getestet habe. Ist auch unsicher. Die Steuerspannung von der MCU sollte aber reichen. Du schreibst auch, es schaltet nicht bzw. es ist immer eingeschaltet. Irgendwie ein Widerspruch. Zum einen schreibst Du, das die 3,3V als 0 bzw. GND interpretiert werden, dann dürfte es nicht schalten. Dann sagst Du, es schaltet nur, wenn der Signalpin mit GND verbunden ist. Das wäre aber dann ein anderes Relais. Ein bisschen konkreter solltest Du sein. Es gibt etwa 10 Varianten dieser Relais. Sehen auf den ersten Blick alle irgendwie ähnlich aus.
Hallo,
Ich habe schon einige Projekte mit Hilfe Deiner Tutorials erfolgreich abgeschlossen. Bei diesem muss Ich aber passen. Alles funktioniert soweit, aber das erste Programm will partout nicht.
wifi.sta.config {ssid=“ssid“, pwd=“pass“} ergibt immer einen Error
lua: init.lua:1: bad argument #1 to ‚config‘ (string expected, got table)
Ich habe den Befehl mal nach der NodeMCU Documentation geändert:
station_cfg={}
station_cfg.ssid=“ssid“
station_cfg.pwd=“pass“
station_cfg.save=false
wifi.sta.config(station_cfg)
Gibt die gleiche Fehlermeldung aus. Google gibt da nichts brauchbares her.
Kannst Du oder jemand der hier mitliest, mir da weiterhelfen?
Hallo Felix,
Danke erst einmal für Dein Tutorial und die Arbeit und Zeit die Du da für Anfänger wie mich reinsteckst 🙂
Kann es sein, das in Deiner Tabelle (Anschluss FTDI/ESP8266) ein Fehler ist: TXD auf TX und RXD auf RX … funktioniert nämlich nicht. Nach vielen endlosen Versuchen habe ich dann mal Internet „recherchiert“ und gelesen, das TX/RX immer über Kreuz müssen, also TXD auf RX und RX auf TX. Ausprobiert und läuft 🙂
Hallo
ESPlorer über die ESPlorer.bat starten funktioniert nicht, kann mir jemand helfen?
Danke
Hallo stehe gerade vor dem selben Problem, konnten Sie es lösen?
Habe genau das gleiche Problem.
Sollte es jemand gelöst haben, wäre ich sehr froh über Rückmeldung.
Ich stucke gerade etwas bei der sache mit der led
wenn ich auf meinem board eine schleife ausführe (was ja in dem obrigen script der fall ist)
startet mein board einfach neu.
ich habs auch schon mit nem anderen gpio pin versucht, auch mal ohne led. Immer selbes problem:
Das dingen startet sobald ich eine schleife in lua baue einfach neu.
Hallo.
Eigentlich ist hier alles wirklich gut beschrieben, aber eine Stelle verstehe ich nicht. Mit was soll der ESP8266 denn geflasht werden? Die Info finde ich leider nirgendwo. Einfach das Dev-Board mal per USB an den (Linux-)PC angeschlossen sorgt zwar dafür, dass eine LED auf dem ESP8266 blinkt, aber im ESplorer wird mir kein Port angezeigt oder so. Was muss ich denn auf den ESP8266 bringen?
Der ESP sollte automatisch erkannt werden. Falls nicht, halte den RESET Knopf beim Anschließen gedrückt. Ich hatte aber auch schon einen ESP der überhaupt nicht erkannt wurde, aber das ist meiner Erfahrung nach die Ausnahme.