Guten Tag!
Ich habe von einem Bekannten das WLAN-Modul ESP8266 geschenkt bekommen.
Es wird im Internet einiges darüber berichtet, "wie einfach" es doch
sein soll, damit per WLAN mit Geräten (PCs, Smartphones,..) per WLAN zu
kommunizieren.
Ich habe nun ein wenig im Internet recherchiert, das Ganze ist ein
32-bit-Controller mit WLAN-Funktion. Der Preis ist äußerst attraktiv, da
der vollwertige uC samt Platine nicht mehr als 2 € kostet.
Nun geht es darum, dass ich das Modul möglichst einfach testen möchte,
in dem ich es zunächst einfach in mein WLAN einbinden möchte.
Laut diverser Foren kann man dann das Modul per AT-Kommandos steuern.
Ist dies bereits im Auslieferungszustand so der Fall? Oder muss dafür
zunächst eine Firmware geflasht werden?
Nun das Problem:
Ich habe gelesen, dass das Modul zunächst mit einer Firmware geflasht
werden muss, da der Controller selbst im Auslieferungszustand nicht
geflasht ist.
1) Ich habe einen USB-to-seriell-Wandler (RS232). Besteht die
Möglichkeit, den ESP8266 an diesen Wandler anzuschließen, um ihn zu
flashen?
Somit müssten dann die Tx und Rx Pins entsprechend gekreuzt an die RS232
des Wandlers angeschlossen werden. Was muss noch beachtet werden?
2) Welche Firmware benötige ich im einfachsten Falle um den Chip
WLAN-fähig und AT-Kommando-fähig zu machen?
3) Wie kann ich selbst die Firmware des Moduls verändern um z.B. eine
LED an den GPIOs des Chips anzuschließen, die bei einem bestimmten
Befehl ein/aus geht?
Mir fehlen die grundlegenden Herangehensweisen, um dieses kleine Modul
möglichst einfach wlan-fähig zu machen.
Das Modul soll mein WLAN-Netz und meinen Schlüssel übermittelt bekommen,
woraufhin es in meinem WLAN sichtbar sein soll.
...denn "so einfach" wie es im Internet beschrieben wird, ist es wohl
doch nicht.
Könnt ihr mir helfen?
Vielen Dank!
JK schrieb:> 1) Ich habe einen USB-to-seriell-Wandler (RS232). Besteht die> Möglichkeit, den ESP8266 an diesen Wandler anzuschließen, um ihn zu> flashen?
Nur, wenn Dein USB-Seriell-Wandler keine RS232-Pegel liefert, wie es
eine normale serielle Schnittstelle üblicherweise macht.
Der ESP8266 erlaubt maximal 3.3V Signalpegel. Das wird --nicht ganz
korrekt-- als "3VTTL" bezeichnet.
Wenn Dein USB-Seriell-Adapter RS232-Pegel liefert, musst Du einen
Pegelwandler wie den Max3232 dazwischensetzen und den, wie auch den
ESP8266, mit 3.3V versorgen.
> 3) Wie kann ich selbst die Firmware des Moduls verändern um z.B. eine> LED an den GPIOs des Chips anzuschließen, die bei einem bestimmten> Befehl ein/aus geht?
Es gibt eine Portierung der Arduino-Umgebung für den ESP8266. Ein
Stichwort hierfür dürfte "nodemcu" sein.
Um schnell und einfach mit dem ESP8266 was zu erreichen besorgt man sich
am Besten eine Platine wo der USB-Seriell wandler schon mit drauf ist.
Dann bracuht man nur das USB-Kabel anschließen und hat gleich Strom und
Seriell.
Ich fand es auch recht unsinnig den ESP mit AT-Befehlen zu steuern -
besonders vom AVR aus - wenn doch der ESP-µC viel leistungsfähiger ist.
Ich bin dann bei den Wemos oder NodeMCU Boards gelandet.
>Die gefühlten 3 Mrd. ESP8266 Guides waren unergiebig, ja?
Vermutlich ist genau das der Grund, weshalb es gefühlte 3 Mrd. gibt und
nicht ein einziges, was einem weiterhilft.
Ich jedenfalls habe kein einziges brauchbares Tutorial gefunden, was vom
Auspacken des Platinchens bis hin zur WLAN-Fähigkeit erklärt, wie man
Schritt für Schritt vorzugehen hat.
Ich habe übrigens einen Arduino Uno...mit dem soll es laut Tutorials
auch möglich sein, den ESP zu flashen.
Aber auch hier: keine ergiebige Erklärung im Netz, die aufzeigt, wie man
das Ding nun flasht.
JK schrieb:> ...denn "so einfach" wie es im Internet beschrieben wird, ist es wohl> doch nicht.
Doch, genauso einfach ist es... Man muß sich nur evtl. ein wenig
breitflächiger in das Thema ESP, NodeMCU und LUA einlesen...
Zunächst einmal hast du recht, der ESP hat den Controller schon mit an
Board, das macht den Chip für IoT auch so interessant. Kleiner Preis,
krasse Möglichkeiten.
Schade daß du nicht erwähnst, welches Modul du von deinem Bekannten
bekommen hast... es gibt nämlich sehr viele davon. Ich arbeite zur Zeit
mit dem ESP 12F.
Als Firmware verwende ich NodeMCU. Die Software schreibe ich in LUA.
Wie das Modul mit der Firmware geflasht werden kann findet man recht
ausführlich unter: http://www.esp8266.com/viewtopic.php?f=23&t=11328
Hier kannst du dir ganz einfach und kostenlos eine Customized-Firmware
generieren lassen: https://nodemcu-build.com/
Die Funktionen und Befehle der Firmware kannst du dir unter
https://nodemcu.readthedocs.io/en/master/ durchlesen.
Ist das Modul mit NodeMCU geflasht, brauchst du auch keine AT-Befehle
mehr. Du kanns LUA-Skripte programmieren (als Editor finde ich hier
Notepad++ ganz nützlich) und dann mittels ESPlorer
(https://esp8266.ru/esplorer/) auf das Modul schreiben.
und schon blinkt es ;-)
JK schrieb:> Nun geht es darum, dass ich das Modul möglichst einfach testen möchte,> in dem ich es zunächst einfach in mein WLAN einbinden möchte.> Laut diverser Foren kann man dann das Modul per AT-Kommandos steuern.> Ist dies bereits im Auslieferungszustand so der Fall? Oder muss dafür> zunächst eine Firmware geflasht werden?
Die AT-Firmware ist m.W.n. die Standardfirmware, mit der die reinen
ESP-Module (wie ESP-12, ESP-01 etc.) üblicherweise ausgeliefert werden.
Anders sieht es möglicherweise aus, wenn Du ein komplettes Board wie das
NodeMCU-DevKit, WeMos D1, "Witty" o.Ä. hast.
Sicher bin ich mir da aber nicht, weil ich die AT-Firmware nie benutzt
habe und meine Module immer sofort mit einer neuen Firmware bespielt
habe.
> Nun das Problem:> Ich habe gelesen, dass das Modul zunächst mit einer Firmware geflasht> werden muss, da der Controller selbst im Auslieferungszustand nicht> geflasht ist.
Da man nie genau weiss, ob ein ESP8266-Modul mit einer Firmware
ausgeliefert wird, und wenn ja, mit welcher Firmware-Version, macht es
meiner Meinung nach Sinn, die ausgelieferte Firmware gar nicht erst zu
nutzen, sondern die konkret gewünschte Firmware einfach selbst
aufzuspielen.
> 1) Ich habe einen USB-to-seriell-Wandler (RS232). Besteht die> Möglichkeit, den ESP8266 an diesen Wandler anzuschließen, um ihn zu> flashen?> Somit müssten dann die Tx und Rx Pins entsprechend gekreuzt an die RS232> des Wandlers angeschlossen werden. Was muss noch beachtet werden?
Wie rufus schon gesagt hat: Wichtig ist, dass besagter Wandler keine
echten RS232-Pegel (üblicherweise -12V und +12V) verwendet, sondern 0V
und 3.3V.
Um das Flashen der Firmware möglichst einfach zu machen, sollte der
Wandler ausserdem idealerweise die Signalleitungen RTS und DTR
bereitstellen.
> 2) Welche Firmware benötige ich im einfachsten Falle um den Chip> WLAN-fähig und AT-Kommando-fähig zu machen?
Die AT-Firmware. Die hat (soweit ich das verstehe) aber halt den
Nachteil, dass man da immer noch einen zusätzlichen Controller (z.B.
Arduino/AVR) o.Ä. benötigt - da der ESP8266 ja aber eh bereits einen
vglw. leistungsstarken Controller enthält, benutzt man die AT-Firmware
üblicherweise einfach gar nicht.
> 3) Wie kann ich selbst die Firmware des Moduls verändern um z.B. eine> LED an den GPIOs des Chips anzuschließen, die bei einem bestimmten> Befehl ein/aus geht?
Indem Du gerade NICHT die AT-Firmware verwendest, sondern wahlweise
- die NodeMCU-Firmware flashst, und den ESP8266 dann in LUA
programmierst
- die Arduino-Umgebung für den ESP8266 nutzt, dort ein Programm für den
ESP8266 schreibst, das dann in eine entsprechendes Firmware-File
kompiliert wird, das dann geflasht werden kann
Hallo zusammen,
danke erstmal für die ausführlichen Antworten auf meine Fragen.
Jetzt wird einiges klarer.
Ich habe mir nun in eBay folgenden "Flash-Adapter" gekauft:
http://www.ebay.de/itm/172332035459
Damit hoffe ich, den ESP entsprechend flashen zu können.
Grüße
JK schrieb:> Ich habe mir nun in eBay folgenden "Flash-Adapter" gekauft:
Achtung: Bei diesem Adapter vorher prüfen, wie herum Du den ESP-01
draufsteckst. Ich meine, in irgendeinem Beitrag hier gelesen zu haben,
dass dies bei diesem Adapter nicht dokumentiert ist und dieser
nicht-intuitiv gesteckt werden muss: nämlich derart, dass der ESP-01
über der Adapter-Platine "schwebt".
Aber wie gesagt: Vorher prüfen, z.B. durch Messen, wo an diesem Adapter
die 3,3V Betriebsspannung und wo GND anliegt.
>Aber wie gesagt: Vorher prüfen, z.B. durch Messen
Ja, das werde ich auf jeden Fall machen, bevor ich ihn aufstecke.
Ich bin gespannt, wenn ich ihn geliefert bekomme :-)
Grüße
Mach Dir erstmal klar, in welcher Programmiersprache Du den Prozessor
programmieren willst:
Mit AT-Befehlen: Die Firmware ist schon drauf
Mit C/C++: Dann kannst Du die Arduino-Software holen und sie um das
nötige Plugin erweitern
Mit LUA: wurde ja schon kurz hier erwähnt
Mit Python: schau nach Mikropython
Je nachdem brauchst Du dann die entsprechende Firmware.
Einfacher ist es mit einem NodeMCU erstmal Erfahrungen zu sammeln.
Der hat von Haus aus LUA drauf. Kannst dann aber auch entsprechend mit
einer Firmware zu Mikropython oder C (Arduino) wechseln.
Bei Dir vor Ort findest Du vielleicht auch noch ein Fablab. Bei denen
sind die Teile auch sehr aktuell. Mit viel Glück gibt es dann auch noch
einen Workshop dazu.
Frank M. schrieb:> nicht-intuitiv gesteckt werden muss: nämlich derart, dass der ESP-01> über der Adapter-Platine "schwebt".
richtig - wird blöderweise als "Verlängerung nach hinten" gesteckt.
>> Aber wie gesagt: Vorher prüfen, z.B. durch Messen, wo an diesem Adapter> die 3,3V Betriebsspannung und wo GND anliegt.
mein Exemplar exakt dieses Moduls hat wunderbare 3.3V geliefert - mehr
aber auch nicht. Für's Flashen fehlt irgendwie ein "Flashtaster", eine
"Automatik" (DTR) konnte ich nicht erkennen, jedenfalls habe ich es
nicht geschafft, damit zu flashen.
mit diesem Ding - gibt's auch bei Ebay - klappte es auf Anhieb:
https://www.tindie.com/products/blkbox/esp8266-esp-01-programming-and-development-board/
Ansonsten würde ich aber auch empfehlen, wenn man eh' was bestellen
muss, für den Einstieg einfach gleich einen "Wemos D1 mini" zu nehmen.
Per USB anstecken, Arduino-IDE starten, per Boardmanager das
ESP8266-Paket laden, Modul auswählen und Blink-Sketch hochladen... :)
Nochmals zusammenfassend.
Ich habe nun von folgender Seite die Firmware heruntergeladen:
>Wie das Modul mit der Firmware geflasht werden kann findet man recht>ausführlich unter: http://www.esp8266.com/viewtopic.php?f=23&t=11328
Dieses soll ich mit ESPlorer flashen, richtig?
Wie aber connecte ich dann von diesem besagten USB-Adapter den GPIO0 auf
Masse bzw. ziehe in auf 3.3 V wenn der ESP auf diesem Sockel steckt?
Was kann dann die besagte Firmware? Schön, dass der Chip dann geflasht
ist. Was kann ich damit dann aber anfangen, damit ich mit dem Teil ins
WLan komme?
>Mit AT-Befehlen: Die Firmware ist schon drauf
Also...das heißt, dass ich das frisch ausgepackte Platinchen mit
entsprechendem Pegelwandler (3.3V) direkt mit AT-Befehlen füttern kann,
ohne etwas flashen zu müssen?
Das käme mir sehr gelegen.
Ich möchte in einfachster Weise eine WLAN-Verbindung zu diesem Modul
herstellen, egal wie.
Nimm als Anfänger den NodeMCU .
Der Wird in der Arduino IDE aufgelistet.
Damit ersparst du dir viele Fehlschläge.
Ich bin jetzt auch umgestiegen auf den NodeMCU , obwohl die anderen
Dinger nach längerem Hantieren/Fehlschlägen funktionieren.
Ich brauche funktionelle Hardware.
Gruss
JK schrieb:> Vermutlich ist genau das der Grund, weshalb es gefühlte 3 Mrd. gibt und> nicht ein einziges, was einem weiterhilft.
Dachte ich erst auch. Allerdings hatte ich ein Art Breakout-Board
verwendet und als ich beim GPIO0 seltsame 1,8V gemessen hatte habe ich
mal auf der Unterseite nachgesehen. Dicker fetter Lötklecks drauf, der
hat die Freunde bestimmt ein paar Cent extra gekostet. Danach ging es
dann wie in den 3 Mrd Anleitungen beschrieben.
Zur NodeMCU: Mittlerweile scheint man nur noch die Module mit CH34x
USB/Ser zu finden. Könnte mir denken, dass die in manchen Anleitungen
gepriesenen Module mit "FTDI" drauf eines Tages den Betrieb einstellten
und man diese Module deshalb nicht mehr kriegt. So muss man halt
schauen, dass man einen sauberen Treiber kriegt, was wohl nicht bei
allen Quellen der Fall ist.
Jan L. schrieb:> mein Exemplar exakt dieses Moduls hat wunderbare 3.3V geliefert - mehr> aber auch nicht. Für's Flashen fehlt irgendwie ein "Flashtaster", eine> "Automatik" (DTR) konnte ich nicht erkennen, jedenfalls habe ich es> nicht geschafft, damit zu flashen
Ich setze genau diese Adapter als Flash Adapter ein.
Die Nachrüstung eines Tasters auf der Rückseite ist kein echtes Problem.
Taster drücken und mit gedrücktem Taster in den USB stecken.
Taster los lassen.
Der ESP ist jetzt im Flashmodus.
Ok Danke für eure Tipps und Beiträge!
Also nochmal:
Ist der ESP von Haus aus AT-Kommando-fähig geflasht?
Ich möchte so wenig Aufwand wie nur möglich, um das Ding zum Laufen zu
kriegen. Ich habe keine Lust auf Basteleien, da ich auch in der
Elektronik nicht allzu afin bin und ich von einer Hardware wie dieser
einfach voraussetze, dass sie funktioniert...schön und gut, wenn da
drauf ein ach so leistungsstarker Mikrocontroller werkelt. Für mich ist
das aber erstmal völlig irrelevant, da ich weiß, dass man sich
(besonders im uC-Bereich) sehr schnell verzetteln kann und Fehler
begeht, die einen missmutig stimmen.
Deshalb wäre es mir am liebsten, wenn man das Ding erstmal "einfach" mit
AT-Kommandos über den jeweiligen USB-Konverter speist.
Gruß
JK schrieb:> Ist der ESP von Haus aus AT-Kommando-fähig geflasht?
Von Haus aus kommt er als das, wofür er entwickelt wurde: Als Modul, um
serielle Signale über WLAN zu übertragen, also als WLAN-Modem. Deshalb
diese AT-Befehle.
Allerdings kann es natürlich schon mal sein, dass ein speziell für
NodeMCU gebautes Modul auch schon eine NodeMCU Firmware an Bord hat.
Die Originalfirmware eignet sich also bestens, um beispielsweise einen
Arduino damit zu koppeln. Willst du allerdings den Arduino weglassen und
den Controller vom ESP programmieren, dann brauchst du eine andere
Firmware, beispielsweise ebendieses NodeMCU.
>Von Haus aus kommt er als das, wofür er entwickelt wurde: Als Modul, um>serielle Signale über WLAN zu übertragen
Genau, und mehr brauche ich nicht.
Ich möchte folgendes Szenario:
PC (Terminal) -- USB -->|<--- ESP8266 (AT-Kommandos)
>dann brauchst du eine andere>Firmware, beispielsweise ebendieses NodeMCU.
Ok, verstanden.
Dann werde ich einen Teufel tun, das funktionierende System zu
vermurksen. Ich spreche von meinem Wissensstand und keinesfalls von
Leuten, die Ahnung davon haben. :)
Danke u. Gruß
JK schrieb:>>Von Haus aus kommt er als das, wofür er entwickelt wurde: Als> Modul, um>>serielle Signale über WLAN zu übertragen> Genau, und mehr brauche ich nicht.> Ich möchte folgendes Szenario:>> PC (Terminal) -- USB -->|<--- ESP8266 (AT-Kommandos)
Das macht irgendwie gar keinen Sinn. Du wärst mit einem normalen
USB-WLAN-Adapter besser beraten.
Der ESP soll vom Arduino über die serielle Schnittstelle gesteuert Daten
an ein Gegenstück im WLAN (PC, Smartphone, Tablet, ...) senden und
empfangen. (Oder eben autonom als Controller mit WLAN arbeiten)
Die meisten werden mit NODEMCU ausgeliefert.
Besorg dir einen USB Wandler für 3V und leg los.
Mit der Firmware kannst du mit AT Commandos arbeiten.
Software runterladen und los geht es. Da reicht
sogar ein Terminal Programm aus.
> Ist der ESP von Haus aus AT-Kommando-fähig geflasht?
Der ESP Chip enthäkt von Haus aus nur einen Bootloader. Die Firmware
muss in einem separaten Flash-Speicher bereitgestellt werden. Der
Bootloader kann dazu verwendet werden, das Programm über die serielle
Schnittstelle in den Flash Speicher zu übertragen. Das kann der Chip
schon von Hause aus. Mehr aber auch nicht.
Firmen, die Module mit diesem Chip herstellen, laden meistens auch eine
Firmware drauf. Und das ist meistens die AT-Firmware, aber nicht immer.
Der Händler sollte dazu eine Angabe in seinem Shop machen.
Schlimmstensfalls erhälst du ein Modul mit einer unerwünschten Firmware.
Die kannst du mit dem Bootloader austauschen. Im SDK vom Chiphersteller
befindet sich das dazu nötige Windows Programm, sowie bereits
vorkompilierte Binär-Images der AT-Firmware.
Allerdings ist das nicht trivial zu bedienen, weil der Chip mit
unterschiedlichen Quarzen und Flash Speichern bestückt werden kann.
Diese Infos muss man im Firmware-Upload-Programm richtig einstellen.
Und du solltest berücksichtigen, dass die AT-Firmware des aktuellen SDK
mindestens 1Megabyte (8Mbit) Flash Speicher benötigt. Die meisten ESP-01
Module sind jedoch nur mit 512kB (4Mbit) Flash ausgestattet.
Frage lieber vorher den Händler, ob da auch wirklich die AT Firmware
drauf ist.
Die ich bis jetzt hier hatte haben die Firmware drauf gehabt.
Ist aber auch nicht schlimm wenn nicht, das Flashen ist
auch nicht das große Problem, selbst für
einen Anfänger nicht.
otto schrieb:> Nimm als Anfänger den NodeMCU .> Der Wird in der Arduino IDE aufgelistet.
Genauso gut funktioniert der ESP-01 in der Arduino IDE. Als Board muss
"Generic ESP8266 Module" ausgewählt werden. Man braucht allerdings den
zusätzlichen USB-Seriell Wandler mit 3.3V Ausgang.
Die verschiedenen NodeMCU-Boards sind da zweifelsohne einfacher, aber
für viele Anwendungen auch unnötig groß - von den Kosten mal ganz zu
schweigen ;-)
Mit ebay 401009563436 und 201540310622 für 5€ kanns unkompliziert sofort
losgehen.
Michael U. schrieb:> wer nicht solange warten will:
Wobei diese WeMos D1 Module eine interessante Huckepacktechnik für
diverse Sekundärmodule haben. Das Relaismodul sollte man allerdings
keinesfalls für 230V verwenden, das Layout schlägt alles, was ich bisher
gesehen habe. http://www.ebay.de/itm/291999742898
e-d schrieb:> -kompakt, klein und bereit für "Spielereien"..
Finde ich so wie gezeigt etwas unpraktisch, wenn man nicht nur die
LED/Lichtsensoren als Peripherie verwenden will. Man kommt steckbar an
keine weiteren Pins ran, ohne das CH34x Board zu entfernen, das aber für
die Programmierung per USB erforderlich ist. Muss dann also für
Programmierung immer umstecken, oder die zwei Module mit komplementärer
Stecktechnik auf ein eigenes Board montieren.
Michael U. schrieb:> Mir sind im letzten halben Jahr keine Module mehr begegnet, die nicht> mindestens 1MB (8MBit) Flash hatten,
Die nennen sich ESP8266-01S
Die blauen, bei Ali und in der Bucht. sind alle 512kByte Dinger.
Wie Sand am Meer werden die noch angeboten.
Die Schwarzen sind besser, den da ist der Footprint ok, um 32MBit Flash
unter zu bringen.
Denn auch mit 8MBit ist es noch recht/zu eng für OTA Updates.
Und ein bisschen SPIFFS ist meist auch nicht schlecht.
Ich stopfe da vevorzugt *.css *.htm *. js Dateien rein.
Auch Images...
Halt das ganze statische Gedöns, was so ein Webserver ausliefern soll,
wenn der Tag lang ist.
A. K. schrieb:> Arduino F. schrieb:>> Und ein bisschen SPIFFS ist meist auch nicht schlecht.>> Wozu braucht man die eigentlich?
SPIFFS ist einfach ein Dateisystem für den integrierten Flash-Speicher,
in das man beliebige Dateien ablegen kann.
Für NodeMCU zwingend nötig, weil da unter Anderem auch die Programme
selbst als Dateien im SPIFFS-Dateisystem abgelegt werden. Bei Arduino
hingegen wohl nur dann nötig, wenn die Verwendung eines Dateisystems aus
irgendeinem Grund nützlich erscheint - wie z.B. für statische Dateien,
die man mit einem integrierten HTTP-Server ausliefern möchte.
Frank M. schrieb:> Achtung: Bei diesem Adapter vorher prüfen, wie herum Du den ESP-01> draufsteckst. Ich meine, in irgendeinem Beitrag hier gelesen zu haben,> dass dies bei diesem Adapter nicht dokumentiert ist und dieser> nicht-intuitiv gesteckt werden muss: nämlich derart, dass der ESP-01> über der Adapter-Platine "schwebt".Jan L. schrieb:> richtig - wird blöderweise als "Verlängerung nach hinten" gesteckt.Beitrag "Pinout USB-TTL converter"
Dem Bild nach wohl eher nach "vorne". Wobei das wohl so genau ist wie
die Aussage, wo das andere Ufer ist...
Lutz schrieb:>> richtig - wird blöderweise als "Verlängerung nach hinten" gesteckt.>> Beitrag "Pinout USB-TTL converter">> Dem Bild nach wohl eher nach "vorne". Wobei das wohl so genau ist wie> die Aussage, wo das andere Ufer ist...
Oops, stimmt, sieht so aus - habe ich dann vermutlich mit dem blkboard
verwechselt, das ich letztlich dann benutzt habe...