Schritt-für-Schritt Anleitung: ESP8266 mit PlatformIO in Visual Studio Code programmieren

In diesem Artikel erkläre ich euch, wie ihr ein ESP8266 mit PlatformIO programmieren könnt. Erfahrt, wie ihr schnell und einfach ein ESP8266 Board in Betrieb nehmt und es effizient überwacht. Bevor ihr beginnt, stellt sicher, dass ihr unter Ubuntu die Pakete python3 und python3-venv installiert habt.

sudo apt install python3 python3-venv

Auswahl an ESP8266 Boards für die PlatformIO Programmierung

Installation und Konfiguration von Visual Studio Code und PlatformIO

Ausgehend davon, dass ihr bereits VS Code installiert habt rate ich euch zum Anlegen eines neuen Profils. Ich habe mir angewöhnt für unterschiedliche Programmiersprachen eigene Profile in VS Code zu nutzen. Dies reduziert die Anzahl der Extensions und steigert dadurch die Übersichtlichkeit und Performance der Entwicklungsumgebung.

Zum Erstellen eines neuen Profiles navigiert zu File -> Preferences -> Profiles -> Create profile…
Möchtet ihr Extensions von anderen Profilen kopieren könnt ihr auch ein Profil als Kopiervorlage nehmen. Ich wähle jedoch „None“ aus und klicke auf „Create„.

Neues Profil in VS Code erstellen
Neues Profil in VS Code erstellen

Als nächstes werden wir das PlatformIO Extension installieren. Sucht im Marketplace nach PlatformIO und installiert die Erweiterung.

Installieren der PlatformIO Extension
Installieren der PlatformIO Extension

Nach der Installation sollte in der Leiste ganz unten ein neues Icon in Form eines Hauses verfügbar sein. Dieses Icon ruft den Startbildschirm der PlatformIO Erweiterung auf.

PlatformIO Startbildschirm
PlatformIO Startbildschirm

Ist euer Board per USB verbunden solltet ihr dieses unter Devices bereits sehen. Bei mir war dies zu Beginn leider nicht der Fall und ich musste das Paket „brltty“ deinstallieren (siehe Fehlerbehandlung).

Übersicht der gefundenen Geräte
Übersicht der gefundenen Geräte

Erstellen und konfigurieren eines PlatformIO Projektes für das ESP8266 Board

Im Startbildschirm der Erweiterung können wir ein neues Projekt über „New Project“ anlegen. Es gibt mehrere ESP8266 Boards zur Auswahl. Ich fuhr immer am besten mit dem „WeMos D1 mini Pro (Wemos)“ und hatte nie Probleme.

Erstellung eines Projektes
Erstellung eines Projektes

Nach Abschluss der Erstellung sollte die Umgebung etwa so aussehen:

Die Baudrate für das Monitoring setze ich in der platformio.ini manuell auf 115200 (Standard 9600). Ich fixiere die Baudrate diese um später in der Applikation auf den gleichen Wert setzen zu können.

Baudrate für Monitoring setzen
Baudrate für Monitoring setzen

ESP8266 mit PlatformIO programmieren und flashen (hochladen)

Bevor mit der eigentlichen Programmierung des ESP8266 mit PlatformIO begonnen wird, schlage ich vor, ein Beispielprogramm auf den ESP8266 zu flashen, um zu testen, dass alles funktioniert. Der angeführte Beispiel Code lässt die integrierte LED auf dem Board blinken. Öffnet die main.cpp im src Ordner wie folgt.

#include <Arduino.h>

void setup() {
    //Zum Testen der Verbindung setzen wir die integrierte LED als OUTPUT
    pinMode(LED_BUILTIN, OUTPUT); 
}

void loop() {
    //LED aus
    digitalWrite(LED_BUILTIN, LOW);
    //500ms warten
    delay(500);
    //LED an
    digitalWrite(LED_BUILTIN, HIGH);
    delay(500);
}

Wählt in der Vertikalen Navigation links PlatformIO aus und startet den Task Upload. Das Projekt wird kompiliert und auf das Board hochgeladen.

ESP8266 mit PlatformIO programmieren und hochladen
Bauen und hochladen

Monitoring der seriellen Ausgabe auf dem ESP8266

Unser Beispiel Code bringt die LED zum Blinken. Der Code beinhaltet noch keine Ausgabe. Damit wir etwas im Monitoring sehen können, wird der Code wie folgt erweitert:

#include <Arduino.h>
void setup() {
  //Zum Testen der Verbindung setzen wir die integrierte LED als OUTPUT
  pinMode(LED_BUILTIN, OUTPUT);

  Serial.begin(115200);
}

void loop() {
  //LED aus
  Serial.println("LED aus");
  digitalWrite(LED_BUILTIN, LOW);
  //1000ms warten
  delay(1000);
  //LED an
  Serial.println("LED an");
  digitalWrite(LED_BUILTIN, HIGH);
  delay(1000);
}

Zum Bauen und Hochladen des Projektes nutzen wir statt „Upload“ die Schaltfläche „Upload and Monitor„. Das Projekt wird compiliert und hochgeladen. Anschließend öffnet sich im Terminal die Verbindung zum Board und zeigt die Ausgaben an.

Upload and Monitoring
Upload and Monitoring

Fehlerbehandlung

Während des Projekte hatte ich drei Probleme mit der Verbindung per USB zum ESP8266 Board.

Verbindung konnte überhaupt nicht hergestellt werden

Ich konnte zunächst überhaupt keine Verbindung zum Board herstellen. Mein Rechner reagierte nicht auf das Einstecken des USB Kabels. Grund dafür war tatsächlich das USB Kabel. Nach Austauschen des Kabels funktionierte es. Seltsamerweise funktioniert das „defekte“ USB Kabel bei anderen Devices.

Broken Pipe

Im /var/log/syslog bekam ich eine „broken pipe“ Fehlermeldung. Konkret:

brltty: USB control transfer error 32: Datenübergabe unterbrochen (broken pipe)

Nach kurzer Recherche wurde empfohlen das brltty Paket zu deinstallieren.

sudo apt remove brltty

Nachdem Deinstallieren ist ein Neustart nötig!

UserSideException: [Errno 13] could not open port /dev/ttyUSB0

Dieses Problem tritt aus Berechtigungsgründen auf. Euer Benutzer hat nicht die Berechtigung um auf den USB Port zuzugreifen. Ob ich hier die korrekte Lösung habe weiß ich nicht. Als Workaround funktioniert folgendes:

sudo chown $(whoami) /dev/ttyUSB0

Dieser Befehlt sorgt dafür, dass euer aktueller Benutzer Beseitzer der USB Schnittstelle werdet.

Beitrage der gleichen Kategorie

Gosund SP 111

Tasmota (Theo-Arends-Sonoff-MQTT-OTA) ist eine kostenfreie Open Source Firmware die als Alternative auf IoT Geräten mit ESP8266 Chip installiert werden kann. Der Vorteil dieser Open Source Firmware ist die Transparenz und Anpassung der Konfiguration nach eigenen Zwecken. Während die Geräte von Sonoff, Gosund oder auch Zigbee mit einer sehr restriktiven und mit Vorbehalt behafteten Firmware ausgeliefert […]

4ch Relais Tasmota

In diesem Artikel möchte ich euch zeigen, wie ihr ein 4-Fach Relais mit Tasmota konfiguriert und steuern könnt. Das Relais habe hier gekauft. Schritt 1 – Flashen des ESD-01 Das Relais kommt mit einem ESD-01 Modul. Bitte flasht dieses Modul zuerst mit Tasmota. Ich habe das Flashen bereits in einem anderen Artikel beschrieben. Schritt 2 […]

0 Kommentare

Bitte tragt euren Namen ein.
Bitte tragt eure Email-Adresse ein.
Top