Philipp's Blog

Visual Studio Code + ESP8266

30 Juli 2017 | 4 Minuten Lesezeit

Ein Arduino bietet viele Möglichkeiten mit ihm zu kommunizieren. Jedoch ist es oft nicht einfach die passenden Sensoren zu finden, diese richtig anzusteuern und zu verkablen. In den meisten Fällen will man einfach nur einen Webrequest absetzen um eine Statusänderung zu senden oder abzufragen. Für solche Fälle bietet sich der ESP8266 an!

Was ist ein ESP8266?

Ein ESP8266 ist, wie ein Arduino, ein Microprozessor. Der Vorteil gegenüber einem Arduino ist, dass er eine Wlan Schnittstelle, mehr Prozessorleistung und Speicher hat. Ich kann empfehlen das Entwicklungsboard NodeMcu des Chips zu kaufen. Es gibt ihn zum Beispiel bei Ebay oder bekannten chinesischen Shops, wie z.B. Aliexpress oder Banggood. Diese Version hat die Stromversorgung schon geregelt, ein Chip für die serielle Kommunikation ist vorhanden und die Pins können direkt auf einem Breadboard gesteckt werden.

Es ist möglich Programme für den Chip u.a. in Python, Lua oder in C zu schreiben. Ich möchte euch gerne zeigen, wie man mit Visual Studio Code und dem Arduino Plugin Programme in C für den ESP8266 schreiben kann.

VS Code + Arduino Plugin + ESP8266

Wie Visual Studio Code und das Arduino Plugin installiert und für den Arduino konfiguriert werden habe ich bereits hier erklärt. Nun wollen wir es für den ESP8266 konfigurieren.

Serielle Kommunikation: CH340G Treiber

Für die serielle Kommunikation hat das NodeMcu Board bereits einen Chip verbaut, den CH340G. Für diesen werden Treiber benötigt:

Mac, Windows und Linux

ESP8266 in VS Code konfigurieren

Wenn man die Command Palette mit ⇧⌘P (Ctrl+Shift+P) öffnet und Arduino: Board Config aufruft, sieht man keinen ESP8266 in der Boards-Liste. Falls der ESP8266 doch erscheint und beim Upload folgender Fehler kommt, kann der Fehler mit dieser Anleitung auch behoben werden:

[Starting] Upload sketch - hello_world.ino
Loading configuration...
Initializing packages...
Preparing boards...
Error: esp8266: Unknown package
[Error] Exit with code=3

Damit er dort auftaucht, muss man eine neue Paketquelle hinzufügen. Dies geht, indem man in der Arduino: Board Manager auf Additional URLs klickt. Nun öffnen sich die User Settings. Dort kann nun "arduino.additionalUrls": "http://arduino.esp8266.com/stable/package_esp8266com_index.json" hinzugefügt werden.

Alternativ kann die Paktetquelle auch über die Arduino IDE hinzugeüfgt werden. Dazu muss die Arduino IDE gestarten werden und dort die Einstellungen geöffnen werden. Dort gibt es den Menüpunkt Additional Boards Manager URLs, in dem die Url http://arduino.esp8266.com/stable/package_esp8266com_index.json eingetragen wird. Additional Boards Manager URLs

Nun kann in der Arduino IDE unter Tools > Board: “XYZ” > Boards Manager nach dem ESP8266 gesucht wrden und das Board installiert werden. Arduino IDE Boardmanger

Jetzt kann in VS Code im Arduino: Board Config-Menü der ESP8266 ausgewählt und konfiguriert werden. In meinem Fall ist es NodeMCU 0.9 (ESP-12 Module). Je nach Modul müssen die Parameter angepasst werden. Der Punkt Upload Speed ist die Baudrate. Hier meine Konfiguration: NodeMCU 0.9 (ESP-12 Module) Config

Um schnell zwischen verschiedenen Boards zu wechseln, die man konfiguriert hat, kann man in der Command Palette Arduino: Change Board Type aufrufen und dort das passende Board auswählen.

Hello World

Nun erstellen wir wieder das Blink Beispiel:

void setup() {
  pinMode(13, OUTPUT); //GPIO 13 = Pin D7
}

void loop() {
  digitalWrite(13, HIGH);
  delay(1000);
  digitalWrite(13, LOW);
  delay(1000);
}

Und laden es auf den NodeMcu hoch.

LED verkabeln

Wie wir sehen, sehen wir nichts 😅. Da das NodeMcu Board, im Gegensatz zum Arduino, keine eingebaute LED hat müssen wir eine LED mit zwei Kabeln und einem Widerstand mit dem Board wie folgt verbinden: Schematics NodeMCU Hello World

Pin D7, der im Code GPIO 13 entspricht, wird mit der Anode, dem langen Beinchen, der LED verbunden. Dazwischen kommt ein Widerstand mit mindestens 275 Ω (Wir wollen nicht mehr als 12mA von einem Pin ziehen und der ESP8266 liefert 3,3V (Ohmsches Gesetz)). Ein höherer Widerstand geht natürlich immer, guckt einfach was ihr da habt. Die Kathode, das kurze Beinchen, der LED wird mit Ground verbunden.

Hier ein Bild der kompletten Pin Belegung vom NodeMCU Repository: NodeMCU DevKit Pins

Fazit

Hello World!

Schade, dass das Arduino Plugin noch nicht alle Möglichkeiten bietet, wie die Arduino IDE. Aber das Plugin ist ja auch noch eine Preview und man kann gespannt sein, was es noch für Möglichkeiten bieten wird.

Mehr Infos über Arduino für den ESP8266 und die neusten Versionen gibt es hier.