ESP8266 / ESP-07 programmieren

30. Oktober 2016 at 18:21
Print Friendly, PDF & Email

Der ESP8266-07 bietet keinen USB-Anschluss für die Programmierung.
Ein kleiner Adapter erleichtert die Verbindung zum FTDI Programmer.

Ein paar Hinweise:

  • Ein einigen Tutorials werden die PINs einfach mit Masse bzw. Vcc verbunden.
    Grundsätzlich sollte dies aber immer mit einem Pull-Up bzw. Pull-Down Widerstand erfolgen
  • Das weiße Adapter-Board auf dem Bild unten, besitzt bereits zwei Widerstände für CH_PD und CPIO15.
    Demnach braucht man nur noch zwei Widerstände (10k) als Pull-Up für GPIO0 sowie REST

 

esp-07_programmer

 

Für die Programmierung verwende ich Eclipse mit dem Plugin von baeyens.

Die Parameter für den ESP-07 sind etwas umfangreicher als bei einem ESP-12 oder arduino.
Wichtig ist der Parameter FlashSize. Mit der Einstellung “512k (128k SPIFFS)” kann man zwar ein einfaches Blink-Programm hochladen. Wenn man dann aber OTA verwendet, wird die Firmware des ESP-07 korrupt.
Dann hilft nur noch der ESP8266Flasher, welcher wieder eine Original-Firmware ausspielt.

esp8266_eclipse_project1

 

Für die Programmierung sind folgende Schritte notwendig:

  • Jumper GPIO0 kurschließen (bzw. GPIO0 auf Masse ziehen)
  • FTDI Programmer per USB mit PC verbinden
  • Ggfs. kurz RESET des Moduls
  • In eclipse: Upload Sketch (Ausgabe s.u.)
  • Jumper GPIO0 entfernen
  • RESET

[codesyntax lang=”text”]

Starting reset using DTR toggle process
Toggling DTR
Continuing to use COM4
Ending reset


Launching C:\arduino2016\sloeber\arduinoPlugin\packages\esp8266\tools\esptool\0.4.9/esptool.exe -cd ck -cb 115200 -cp COM4 -ca 0x00000 -cf E:\Daten\Arduino\workspaceSloeber\ESP-07_OTA/Release/ESP-07_OTA.bin 
Output:
Uploading 259360 bytes from E:\Daten\Arduino\workspaceSloeber\ESP-07_OTA/Release/ESP-07_OTA.bin to flash at 0x00000000
................................................................................ [ 31% ]
................................................................................ [ 62% ]
................................................................................ [ 94% ]
..............                                                                   [ 100% ]
0.4.9/esptool.exe finished
upload done

[/codesyntax]

 

Die Größe des Flash-Speichers lässt sich einfach ermitteln. Es gibt zwei Funktionen, aber nur “getFlashChipRealSize” ist relevant. Unten kann man sehen, das zwei verschiedene Werte ausgegeben werden. Die Ausgabe erfolgt übrigens in Byte, z.B. 524288 für 512k.

[codesyntax lang=”text”]

Flash Chip ID        1327328
Flash Chip Size (wrong)524288
Flash Chip Real Size   1048576

[/codesyntax]

[codesyntax lang=”c”]

#include "Arduino.h"

#define DEBUGGING(...) Serial.println( __VA_ARGS__ )
#define DEBUGGING_L(...) Serial.print( __VA_ARGS__ )

#define LED_PIN 2 // PIN2 = GPIO2

int iFlashChipId,iFlashChipSize,iFlashChipRealSize;

void setup() {
// initialize digital pin xxx as an output.
  pinMode(LED_PIN, OUTPUT);
  Serial.begin(115200);
  DEBUGGING("ESP8266-07 blink");

  iFlashChipId       = ESP.getFlashChipId();
  iFlashChipSize     = ESP.getFlashChipSize();
  iFlashChipRealSize = ESP.getFlashChipRealSize();
  DEBUGGING_L("Flash Chip ID          ");
  DEBUGGING(String(iFlashChipId,HEX));
  DEBUGGING_L("Flash Chip Size (wrong)");
  DEBUGGING(String(iFlashChipSize,HEX));
  DEBUGGING_L("Flash Chip Real Size   ");
  DEBUGGING(String(iFlashChipSize,HEX));

}

[/codesyntax]

 

Bei mir gab es noch ein weiteres Problem mit der platform.txt. Folgende Änderung muss vorgenommen werden:

Ersetze -DARDUINO_BOARD=”{build.board}” mit -DARDUINO_BOARD=\”{build.board}\”

Dann erscheint beim Aufruf des Compilers -DARDUINO_BOARD=\”ESP8266_ESP01\”.
Wenn dort -DARDUINO_BOARD=ESP8266_ESP01 steht, bekommt man Fehlermeldungen.