NanoESP Updaten

Das NanoESP-Board, auch als Pretzelboard bekannt, ist nun schon vor einer ganzen Weile erschienen. Dennoch bekomme ich immer noch Mails von Leuten, die Hilfe benötigen oder Fragen haben. Zuletzt erreicht mich eine Mail mit der Frage, ob man die Firmware des ESP8266 Chips auf einen neueren Stand bringen könnte. Der für das WLAN zuständige Mikrocontroller hat eine AT-Firmware aus dem Jahre 2015 und mittlerweile gibt es verbesserte Versionen der AT-Firmware.  Das Problem ist allerdings, dass der Flash-Speicher Chip, auf dem sich die Firmware zum ESP-Controller befindet, nur eine Kapazität von 4 Mbit (also 512 kB) hat und deswegen nicht mit allen neueren Firmware Versionen kompatibel ist. Dennoch habe ich nach einigem Recherchieren eine Firmwareversion gefunden, die kompatibel ist und zudem neue Möglichkeiten bereitstellt. Deswegen finden Sie hier eine Anleitung, wie Sie das Board updaten können.

Der Updatevorgang

Im ersten Schritt benötigen Sie ein Tool, mit dem es möglich ist, die neue Firmware auf den Flash-Speicher des ESP8266-Moduls hochzuladen. Sie finden ein passendes Programm auf der Herstellerseite unter

https://www.espressif.com/en/support/download/other-tools

und dort beim Punkt Flash Download Tools (derzeit Version V3.6.5). Laden Sie die Zip-Datei herunter und entpacken Sie es an geeigneter Stelle um anschließend die darin enthaltene EXE-Datei zu starten. Es öffnet sich zunächst ein Terminal Fenster und nach kurzer Wartezeit haben Sie vier Button zur Auswahl. Entscheiden Sie sich für den Button mit der Beschriftung ESP8266 Download Tool. Sie gelangen in ein weiters Fenster, wie auf dem unteren Bild zu sehen. In diesem Fenster können Sie nun die neue Firmware-Datei in dem auf dem Bild grün hervorgehobenen Feld auswählen. Die neue Firmware können Sie hier herunterladen. Es handelt sich um die Datei NanoESP_FW_11062019.bin.

Firmware11062019

 

Geben Sie außerdem in dem Textfeld rechts daneben die Adresse 0x00000 ein und übernehmen Sie auch die restlichen Einstellungen von dem Bild. Außerdem muss das Häkchen links neben dem Dateifeld gesetzt sein. Bevor Sie nun aber mit Klick auf Start den Uploadvorgang beginnen können, müssen Sie zunächst noch ein paar Vorbereitungen am Board treffen.

Das Firmware Upload Tool

Sie können die Firmwaren nämlich nicht einfach auf den WLAN-Chip laden, denn Sie haben in der Regel nur die Möglichkeit, den ATmega328p-Chip zu Programmieren. Mit einem kleinen Trick können Sie aber dennoch den Controller direkt erreichen. Bauen Sie dazu folgende Schaltung auf:

Die Schaltung für den Upgradevorgang

Diese Schaltung wirkt auf den ersten Blick etwas seltsam. Zunächst besteht eine Drahtbrücke von GND zu RESET. Dadurch bleibt der ATmega328P dauerhaft resetet und funkt nicht dazwischen. Dann gibt es Drahtbrücken von RX und TX, also den Anschlüssen der Seriellen Schnittstelle, zu den Pins D12 und D11. Das hat den Grund, dass die Pins 11 und 12 mit den Seriellen Pins des ESP8266 verbunden sind, um diesen über eine Software-Serielle-Schnittstelle ansprechen zu können. Hier wird nun also der USB-to-Serial Chip statt mit dem ATmega328p direkt mit dem ESP8266 verbunden. Dadurch können Sie nun auch direkt ein Programm auf das WLAN-Modul hochladen.

Der rechte Teil der Schaltung sieht noch seltsamer aus. Es gibt an dieser Stelle auch keine richtigen Steckplätze aber mit etwas Fingerspitzengefühl kann es reichen, den schwarzen Draht lose in den Kontakt zu legen. Sie müssen nämlich den Pin IO0 des ESP8266-Chips auf LOW setzen, damit der Chip in den Boot-Modus geht und Sie eine neue Firmware einspielen können. Anschließend müssen Sie den ESP8266 resetten, indem Sie das braune Kabel kurz mit dem auf dem Bild unter dem losen Ende liegenden Pin (auf dem Board mit NRST beschriftet) verbinden.

Da das Board nun im Boot-Modus ist, können Sie im Download Tool den Button Start drücken, um den Upload Vorgang zu starten. Der grüne Balken sollte nun durchlaufen bis schließlich das Wort FINISH erscheint. Damit sollte die neue Firmware hochgeladen sein.

Das Problem ist nun allerdings, dass das Board in dem aktuellen Zustand eine Baudrate von 115200 verwendet. Die Software-Serielle-Schnittstelle arbeitet aber nur zuverlässig bis zu einer Baudrate von 19200. Aber auch dafür gibt es Abhilfe. Trennen Sie zunächst alle Drahtverbindungen, um den NanoESP in den normalen Betriebszustand zu versetzen. Trennen Sie ausserdem das Board einmal kurz komplett vom USB-Kabel, um die beiden Controller zu resetten. Öffnen Sie dann den Arduino Sketch Reinitialisation, der sich ebenfalls in dem eben heruntergeladenen Verzeichnis befindet. Laden Sie das Programm anschließend über den Upload-Button auf den NanoESP (Einstellungen wie richtigen Prozessor und Com-Port beachten). Bei dem Sketch handelt es sich um das Programm, das sich auch im Auslieferungszustand auf dem Board befindet. Es sorgt dafür, dass am WLAN-Modul einige wichtige Voreinstellungen vorgenommen werden, unter anderem die Baudrate. Hat alles wie gewünscht funktioniert, leuchtet die LED 13 (auf der Platine mit D3 beschriftet) im Anschluss dauerhaft. Damit haben Sie nun ein Board wie im Auslieferungszustand – nur mit neuerer Firmware.

Zusätzlich zu der Verbesserten Performance gibt es nun auch ein paar neue Befehle, die Sie ausprobieren können. Dazu können Sie das Programm P01_SoftwareSerial aus dem Zip-Ordner öffnen und hochladen.  Anschließend öffnen Sie den Seriellen Monitor und stellen eine Baudrate von 19200 ein. Zudem muss die Option NL und CR im unteren Dropdown Menü ausgewählt sein.

WPS

Ein neuer Befehl den ich vorstelle nennt sich WPS. Die meisten Router unterstützen nämlich die sogenannte WPS (Wi-Fi Protected Setup) Funktion, über die Geräte eine Verbindung zum Router herstellen können, ohne zuvor die WLAN-Daten wissen zu müssen. Dazu geben Sie zunächst den Befehl

AT+WPS=1

ein, um den WPS-Modus auf dem Board zu starten. Anschließend gehen Sie zum Router und drücken Sie dort die WPS-Taste. Sie haben dafür meistens bis zu zwei Minuten Zeit. Router und Board versuchen sich nun zu finden und eine Verbindung aufzubauen. War dies erfolgreich erscheint im Seriellen Monitor die Meldung:

wps success,connecting ap …

Falls es beim ersten Versuch nicht funktioniert hat, probieren Sie den Vorgang erneut.

SSL/TLS

Ein neuer Standard für das sichere Kommunizieren mit Webservern lautet HTTPS. Wenn Sie die Webseite http://example.com aufrufen, meldet Ihr Browser wahrscheinlich, dass die Verbindung nicht gesichert ist. Wenn Sie die Webseite https://example.com aufrufen, wir ihr Browser keine Sicherheitsbedenken melden. Der Unterschied liegt vor darin, dass ein weiteres Verschlüsselungsprotokoll zwischen TCP und HTTP verwendet wird. Dieses Protokoll heißt TLS (engl. für Transportsicherheit) beziehungswiese SSL (Secure Sockets Layer). Wenn Sie die neue Modul-Firmware auf dem Board installiert haben, können Sie dieses sichere Protokoll testen.

SSL ist recht Ressourcenhungrig, da es ein komplexes Verschlüsselungsprotokoll mit Zertifikaten ist. Das bedeutete im ersten Schritt müssen Sie den für SSL verfügbaren Speicher des Boards hochsetzen. Dies geschieht mit dem Befehl:

AT+CIPSSLSIZE=4096

Sie stellen also rund 4 kB des Arbeitsspeichers des WLAN-Moduls für die SSL-Kommunikation bereit. Beim resetten des Boards ist der Speicher aber wieder beim alten Wert. Die nächsten Schritte sind fast identisch zu den vorherigen, mit der Ausnahme, dass Sie beim Verbindungsaufbau statt TCP SSL angeben und sich der Port von 80 auf 443 ändert:

AT+CIPSTART=“SSL“,“www.example.com“,443

Mit der neuen Firmware können Sie auch einen neuen Sende-Befehl ausprobieren, nämlich

AT+CIPSENDEX=200

Er ist dem schon bekannten Befehl sehr ähnlich mit dem Unterschied, dass es möglich ist dem Modul mitzuteilen, dass die Nachricht auch vor dem Erreichen der zuvor angegebenen Zeichenanzahl zu Ende ist und gesendet werden kann. Der Vorteil ist, dass man die Zeichen seiner Nachricht nicht genau abzählen muss, sondern einfach schätzt wie viele Zeichen maximal verwendet werden und abschließend ein „\0“ einfügt, um das Ende zu kennzeichnen. Sie können also nach dem CIPSENDEX Befehl mit einer maximalen Nachrichtenlänge von 200 die folgenden Zeilen eingeben:

GET / HTTP/1.1[Enter]

Host:www.example.com[Enter]

[Enter]

[Enter]

\0[Enter]

 

Und schon erhalten Sie eine Antwort vom Webserver über einen gesicherten Kommunikationskanal.

Eine vollständige Liste der AT-Befehle der SDK Version V2.0.0 ist als PDF dem in dem ZIP-Ordner enthalten.

 

6 Kommentare

  1. Daniel

    Hallo,

    bei mir klappt das Update nicht. ich bekomme immer mur ….._____….._____
    und das bis ich stop drücke. Dann steht da ESP8266 Chip sync error esp_sync_blocking.
    Was mache ich falsch?
    Grüße Daniel

    Antworten
  2. Walter Kiefer

    Hallo Herr Kainka,

    nach dem Update habe ich diverse Verbindungsprobleme.
    Keine Verbindung zu diversen AP’s möglich, Fehlermeldung Fail1 oder Fail4.
    Einrichten eines AP wird über die Schnittstelle mit OK quitiert, der AP ist aber nicht sichtbar (Handy oder PC).
    Nach dem die SDK Version V1.4.0 geladen habe funktionieren wieder alle Verbindungen. Ich habe die selbe Erfahrung mit der SDK Version V2.0.0 von der Espressif Webseite gemacht.

    Mit Freundlichen Grüssen
    WKI

    Antworten
    1. Johannes

      Hallo Herr Kiefer,

      ich habe das gleiche Problem. Leider weiß ich nciht wie ich wieder zurück auf SDK Version V1.4.0 komme. Können Sie mir da bitte helfen?

      Vielen Dank

      Antworten
  3. Bohuslav Moravec

    Hallo Herr Kainka,
    ich habe bei Franzis das NODE-ESP-Board gekauft und nun wollte ich es testen.
    Ich habe es über ein USB Hub an meinem PC angeschlossen. Das Teil verbraucht 0,15A aber es geschieht nichts.
    Laut Einseitigen Anleitung sollte eine LED leuchten. Macht sie aber nicht. :-(
    Es sollte eigenes WLAN erzeugen. In einem von meines Handys (ein altes S3) sag ich auch kurz etwas von ESP, aber bis ich mich verbinden konnte, war es weg. :-((
    – iST DAS GERÄT DEFEKT GEKOMMEN? Gibt es eine Möglichkeit es zu testen? Kann ich es bei Franzis reklamieren?
    Bitte um Hilfe.

    Bohu

    Antworten
    1. Fotospenzer

      Hallo, ich hatte das gleiche Problem. Es lag am USB Kabel. Ein anderes Kabel benutzt und alles war perfekt.

      Antworten

Schreiben Sie einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.