Hallo ich benutze zur Zeit den ESP8266 mit der Standardfirmware ??? und
programmiere ihn in C mit der Arduino Software dies funktioniert auch.
In vielen Beispielen wird aber mit Lua programmiert. Laufen die
Programme damit stabieler oder was ist der Vorteil? Welche Firmware ist
besser?
Ich glaube, das kann man so pauschal nicht beantworten.
Ich habe bisher nur die Standard AT Firmware ernsthaft verwendet, aber
viel zu den beiden Alternativen gelesen. Ich fasse mal zusammen, zu
welchen Schlüssen ich gekommen bin:
Die AT Firmware lief anfangs sehr instabil. Die aktuell verkauften
Module haben aber Version 0.40 aus dem SDK 1.3 oder Version 0.50 aus dem
SDK 1.4. Diese beiden Versionen laufen sehr stabil. Ich hatte in 3 Tagen
Dauertest auf zwei Modulen keinen einen einzigen Absturz.
Die AT Firmware sendet und empfängt Daten im 100ms Raster. Daraus folgt,
dass du maximal 10 Pakete pro Sekunde senden oder empfangen kannst. Eine
weitere wesentliche Einschränkung ist der Half-Duplex Betrieb. Die
Firmware kann nur abwechselnd senden und empfangen. Wenn du gerade einen
AT Befehl absetzt, um etwas zu senden, und dabei gleichzeitig etwas
empfangen wird, dann geht was verloren. Mal ignoriert das Modul den
Sende-Befehl, mal verwirft es die empfangenen Daten.
Daraus ergibt sich folgende Empfehlung: Deine Anwendung sollte
empfangene Pakete bestätigen, so wie das Modul auch jeden AT Befehl mit
OK bestätigt. Nach jedem gesendeten paket sollte der Absender auf die
Bestätigung durch den Empfänger warten, was typischerweise 100-500ms
dauert. Solange sollte man schon warten. Erst danach das nächste Paket
senden. Und man sollte vermeiden, auf mehreren Verbindungen gleichzeitig
etwas zu senden. Wenn der Sender vom Empänger kein OK zurück bekommt,
soll er die Sendung wiederholen.
Wenn du dich daran hälst, bekommst du eine zuverlässige
Datenübermittlung hin - allerdings recht langsam. Überlege Dir, ob die
Performance mit der konkreten Anwendung harmoniert.
Das SDK ermöglicht Dir, eigene Anwendungen auf dem ESP-Chip selbst
laufen zu lassen. Debugging ist allerdings schwierig und die Anwendung
muß einige Regeln einhalten, damit der Speicher nicht überlauft und der
Watchdog nicht auslöst. Daran scheitern einige Entwickler. Ich denke
aber, dass es sich durchaus lohnen kann, nämlich wenn man besonders
kompakte Geräte ohne zusätzlichen µC bauen möchte und die I/O Leitungen
des ESP Chips für die Anwendung ausreichen.
Das SDK wird in C programmiert.
Das SDK hat zwei Varianten der Basis-Firmware. Eine mit RTOS und eine
ohne. Die RTOS Variante soll mehr Perfomance bieten, aber weniger stabil
laufen. Ist wohl noch nicht ausgereift. Ob das wahr ist, kann ich nicht
beurteilen.
Apropos Performance: Wenn man sich von der AT Firmware trennt und für
den ESP eine eigene Anwendung schreibt, die direkt auf dem Chip läuft,
hängt man nicht mehr an diesem lästigen 100ms Intervall. Dann sind 50
Kilobytes pro Sekunde machbar. Mit der AT Firmware schaffst du höchsten
10 Kilobytes pro Sekunde. Aber: Zeitweise Aussetzer mit langen
Übertragungszeiten sind auch damit nicht auszuschließen. Ich denke, das
liegt in der Natur der WLAN netze, dafür kann weder der Chip noch dessen
Firmware etwas.
Dann gibt es noch diese Lua Firmware (nodeMCU). Ich habe es so
verstanden, dass diese Firmware einen Script-Interpreter enthält.
Nachdem die Firmware auf den Chip geladen ist, kann man anschließend ein
oder mehrere Lua Script in den Flash Speicher laden, um sie auszuführen.
Die Lua Sprache soll sehr komfortabel und leicht zu erlernen sein. Der
Größte Haken dieser Firmware scheint die begrenzte RAM Größe zu sein.
Das ganze Script muss mitsamt Kommentaren ins RAM Passen. Da bleibt dann
nur noch wenig RAM für die Anwendung selbst frei. Viele Entwickler
kritisieren dies.
Ich kann mir allerdings gut vorstellen, dass jemand, der µC mit weniger
als ein Kilobyte RAM programmieren kann, auch mit der LUA Firmware ganz
gut zurecht kommen dürfte.
Für meine konkreten Anwendungen reichte die AT Firmware bisher immer.
Ich habe meine Anwendungen auf externen µC laufen lassen, weil:
- Die ESP-01 Module so schön billig sind aber wegen zu wenig I/O eine
externe Erweiterung brauchen.
- Ich mit AVR's und deren Programmierung schon vertraut bin, so muss ich
die Programmierung des ESP nicht erlernen (reine Faulheit, gebe ich zu).
- Ich einen Hardware Debugger für AVR besitze, aber keinen für den ESP
Chip habe.
- Ardunino Nano Module fast nichts kosten, dafür aber schon einen USB
Anschluss haben, auf den ich Debug Meldungen ausgebe. Dass ich dann ein
Modul mehr auf meiner Platine habe, ist mir ziemlich egal. Auf die paar
Quandratzentimeter kommt es mir nicht an.
Aber meine Bewegründe sind von nicht kommerzieller Natur. We mit dem
Ding Geld verdienen will, würde sicher völlig anders entscheiden.
Hallo,
ESP8266 schrieb:> Hallo ich benutze zur Zeit den ESP8266 mit der Standardfirmware ??? und> programmiere ihn in C mit der Arduino Software dies funktioniert auch.> In vielen Beispielen wird aber mit Lua programmiert. Laufen die> Programme damit stabieler oder was ist der Vorteil? Welche Firmware ist> besser?
der ESP hat in dem Sinn keine Standardfirmware, nur seinen
ROM-Bootloader.
Die Standardfirmware in dem Sinn ist das von Espressif gelieferte SDK.
Natürlich gibt es darin fertige Module, die nur eingebunden werden und
nicht weiter bekannt sind (WLAN z.B.).
Dieses SDK benutzen aber alle, egal ob LUA, Du in der ArduinoIDE, das
ESP-Basic, daß es gibt, die AT-Thinker-Software usw.
Ich programmiere den ESP auch aus der ArduinoIDE, C oder C++ oder einer
bunten Mischung daraus (ist ja nur Hobby...).
Stabilität wird ja oft angesprochen. Hier laufen 6-9 ESPs mit MQTT,
teilweise Webserver, ein ICECast-Streaming-Client, alles
Experimetierphase.
Alle Module laufen mit meiner Software seit inzwischen 3-4 Wochen
stabil.
Fast alle Module hier sind per OTA updatebar.
Manchmal etwas sehr lahme Reaktion des einen Webservers, auf dem ESP
läuft aber noch einige, u.a. mein RFM12 für die alten Sensorren im
Interrupt usw.
WLAN-Reconnects gibt es nur dann, wenn hier mal wieder Hochbetrieb im
Umfeld ist (Wochende und alle Nachbarn müssen im Internt kramen), dann
hackt aber auch mein Notebook im WLAN.
Also belib bei Deiner Kombination, wenn Du das in Gang bekommst, was Du
vorhast.
PS: ArduinoIDE 1.6.7 und ESP 2.0.0 sind im Moment offenbar stabil, mit
ESP 2.1.0 gibt es definitv noch ein paar Bus, auch die IDE1.6.8 hat mich
mit irgendeiner Sache genervt.
Gruß aus Berlin
Michael
Hallo,
Stefan U. schrieb:> Aber: Zeitweise Aussetzer mit langen> Übertragungszeiten sind auch damit nicht auszuschließen. Ich denke, das> liegt in der Natur der WLAN netze, dafür kann weder der Chip noch dessen> Firmware etwas.
ich hatte durch meine Streamplayer Sache Gelegenheit, mir das reale
WALN-Verhalten genauer anzuschauen.
Hier sind bis zu 20 WLAN-Netze in erreichbarer Nähe, es ist also
ziemlich egal, auf welchem Kanal ich mich mit dem Router rumtreibe.
Die ganze Woche über keinerlei Probleme, kontinuierlicher Stream mit
192kBit ohne jede (erkennbare) Verzögerung. Ich habe mit jeweils den
zeiger des Playbuffers (20kB) ausgeben lassen, wenn der Fillzeiger auf
den Anfang gesetzt wurde. Er kam immer hinterher, Play war im ersten
2k-Block des Buffers. Zum Abend passierte es alle 10-20s, daß Pakete
verzögert ankamen oder quittiert wurden. Play war dan im 2.-3. 2k-Block.
Aufholen war kein Problem, nach 2 Durchläufen des Loop war er wieder
oben.
Am Wochenende vergrößerten sich die Verzögerung, Play lief bis auf
12-14k des Buffers runter, wurde aber noch ohne Aussetzer aufgeholt.
Es passierte dann aber, das die Verzögerung so groß wurde, daß die 20k
leerliefen und es Aussetzer gab.
Es gibt zu diesen Zeiten dann auch den Zustand, daß er in 3m Entfernugn
vom Router mit -48dBm connectet, kaum Pakete bekommt und nach 2 Minuten
aus dem WLAN fliegt und reconnect. Ein verscheiben des ESP-Module um 5cm
und drehen um ein paar Grad ergab dann plötzlich eine völlig stabile
Verbindung...
Der Kram lag ohne Probleme seit ein paar Tagen dort und spielte bis
dahin.
Das ist WALN in real, mit dem Notebook merke ich es auch, nur da dauert
eben mal ein Seitenaufbau etwas länger, das nimmt man garnicht wahr und
Audio-Sreaming geht auch problemlos, weil der verfügbare Ram einen viel
größeren Buffer zuläßt. Videostreaming ist zu solcehn Zeite bei mir
völlig unmöglich.
Gruß aus Berlin
Michael