Forum: Mikrocontroller und Digitale Elektronik Welche Firmware


von ESP8266 (Gast)


Lesenswert?

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?

von Stefan F. (Gast)


Lesenswert?

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.

von Michael U. (amiga)


Lesenswert?

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

von ESP8266 (Gast)


Lesenswert?

OK dann weiß ich erstmal bescheid. Dann werde ich wohl erstmal mal bei C 
Varinate bleiben da ich mit Lua auch noch nicht vertraut bin.
Vielen Dank

von Michael U. (amiga)


Lesenswert?

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

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
Noch kein Account? Hier anmelden.