Willkommen zu meinem Technikblog, wo ich heute den Ideaspark ESP8266 in Kombination mit einem 0,96 Zoll (2,44 cm) OLED Display vorstelle. In diesem Beitrag wirst du eine Schritt-für-Schritt-Anleitung zur Programmierung dieses vielseitigen Mikrocontrollers finden.
Die Idee für diesen Beitrag entstand, nachdem ein aufmerksamer Leser mir seine Herausforderungen bei der Verwendung dieses Mikrocontrollers geschildert hat. Als Unterstützung für die Community habe ich daraufhin den Ideaspark ESP8266 mit dem 0,96 Zoll (2,44 cm) OLED Display erworben und innerhalb von 14 Tagen erhalten. Nun möchte ich mein erworbenes Wissen teilen und anderen dabei helfen, dieses faszinierende Hardware-Projekt erfolgreich umzusetzen.




Zwei ähnliche ESP8266 mit OLED Display habe ich dir bereits in den Beiträgen Heltec ESP8266 und OLED: Eine ideale Kombination für DIY-Projekte und Arduino Tutorial 61: NodeMCU ESP8266 mit OLED Display vorgestellt. Hier soll es sich jedoch um den Mikrocontroller der Firma Ideaspark drehen, denn dieser ist an einigen Punkten etwas anders.
Inhaltsverzeichnis
- Technische Daten des ESP8266 mit OLED Display von Ideaspark
- Bezug
- Aufbau des Mikrocontrollers
- Anschluss an den Computer
- Einrichten des ESP8266 in der Arduino IDE
- Programmieren des ESP8266 von Ideaspark
Technische Daten des ESP8266 mit OLED Display von Ideaspark
Auf dem Mikrocontroller ist, wie der Name es erahnen lässt, ein ESP8266 verbaut, in diesem Fall ein ESP-12S.
Eigenschaft | Spezifikation |
---|---|
Mikrocontroller | ESP-12S |
Betriebsspannung | 3,0V – 3,6V |
Betriebstemperatur | -20 °C ~ 85 °C |
Digital E/A Pins | 9 |
Interface | UART / HSPI / I2C / I2S / IR Remote Contorl / GPIO / ADC / PWM |
UART Baud rate | Support 300 ~ 4608000 bps, Default 115200 bps |
Antenne | PCB |
Frequenzbereich | 2412 ~ 2484MHz |
Sendeleistung | 802.11b: 16±2 dBm (@11Mbps), 802.11g: 14±2 dBm (@54Mbps), 802.11n: 13±2 dBm (@HT20, MCS7) |
Empfangs-empfindlichkeit | CCK, 1 Mbps: -90dBm, CCK, 11 Mbps: -85dBm, 6 Mbps (1/2 BPSK): -88dBm, 54 Mbps (3/4 64-QAM): -70dBm, HT20, MCS7 (65 Mbps, 72.2 Mbps): -67dBm |
Stromverbrauch | Continuous Transmission: Durchschnitt ~71mA, Spitze 500mA, Modem Sleep: ~20mA, Light Sleep: ~2mA, Deep Sleep: ~0.02mA |
Sicherheit | WEP / WPA-PSK / WPA2-PSK |
SPI Flash | 32Mbit |
Taktgeschwindigkeit | 80MHz/160MHz |
CPU | 32-bit |
Länge | 24mm |
Breite | 16mm |
Bezug
Den Mikrocontroller bekommst du günstig auf ebay.de für derzeit knapp 8 € inkl. Versandkosten. Aber auch auf aliexpress.com und anderen Plattformen aus dem asiatischen Raum findest du diesen recht günstig, jedoch mit deutlich längeren Lieferzeiten.
Lieferumfang
Bei meinem Paket war lediglich der Mikrocontroller in einer kleinen Plastikschale enthalten, du musst dir somit noch ein passendes Micro-USB-Kabel in entsprechender Länge kaufen.
Aufbau des Mikrocontrollers
Was besonders ins Auge fällt, ist das OLED Display, welches diesen Mikrocontroller, wie ich finde, besonders aufwertet.


Eigenschaften des 0,96″ OLED Displays
Kommen wir zunächst zu den technischen Daten des OLED-Displays:
- Größe: 0,96 Zoll (2,44 cm),
- Farbe: Gelb & Blau,
- Treiber: SSD1306,
- Betriebsspannung: 3.3V bis 5V,
- Betriebstemperatur: -30 °C bis 70 °C,
- Abmessung: 27 mm x 27 mm x 4 mm,
- Auflösung: 128 x 64 Punkte
Das verbaute OLED Display ist über I2C über die nachfolgenden Pins angeschlossen:
I2C Pin | GPIO | Pin Nummer |
---|---|---|
SDA | GPIO12 | 6 |
SCL | GPIO14 | 5 |
Anschluss an den Computer
Schließen wir jetzt einmal den Mikrocontroller mit einem Micro-USB-Kabel an den Computer an. Ich verwende ein Microsoft Windows 10 (mit aktuellen Updates) und dieser wird sogleich als „USB-SERIAL CH340“ erkannt (siehe Grafik).
Zeitgleich wird auf dem Display ein Text in gelb / blauer Schriftfarbe angezeigt.
Einrichten des ESP8266 in der Arduino IDE
Damit wir diesen Mikrocontroller mit unseren Programmen bespielen können, müssen wir den Boardtreiber installieren. Für den Boardtreiber wiederum müssen wir noch eine Quelle für diesen anlegen und genau das machen in den nächsten Schritten.
Schritt 1 – Quelle für den Boardtreiber eintragen
Im ersten Schritt müssen wir eine zusätzliche Quelle für den Boardtreiber in den „Zusätzlichen Boardverwalter URLs“ eintragen.
Die Adresse hier lautet:
https://arduino.esp8266.com/stable/package_esp8266com_index.json
Schritt 2 – Installieren des Boardtreibers über den Boardverwalter
Zum installieren des Boardtreibers öffnen wir den Boards Manager über das Icon links (1) und suchen dann nach „esp8266“ (2) in meinem Fall wurde nur ein Eintrag gefunden „esp8266 by ESP8266 Community“ an welchem die Schaltfläche „INSTALL“ (3) betätigt wird.
Wenn der Vorgang abgeschlossen ist, sollte der Text „<Versionsnummer> installed“ (4) sichtbar werden und die Schaltfläche „INSTALL“ zu „REMOVE“ (5) ändern.
Schritt 3 – validieren der Installation
Im Abschluss spielen wir nun ein kleines Programm auf den Mikrocontroller, um zu testen, ob die Installation korrekt verlaufen ist.
#define led BUILTIN_LED void setup() { //beginn der seriellen Kommunikation mit 9600 baud Serial.begin(9600); //definieren das der Pin der BUILTIN_LED als Ausgang dient pinMode(led, OUTPUT); } void loop() { //Ausgeben des Textes "Hallo Welt!" auf der seriellen Schnittstelle Serial.println("Hallo Welt!"); //aktivieren der LED digitalWrite(led, HIGH); //einlegen einer Pause von 500 Millisekunden delay(500); //deaktivieren der LED digitalWrite(led, LOW); //einlegen einer Pause von 500 Millisekunden delay(500); }
Programmieren des ESP8266 von Ideaspark
Nachdem der Treiber für den ESP8266 installiert wurde und wir geprüft haben, dass dieser korrekt arbeitet, können wir mit der Programmierung beginnen. Da dieser Mikrocontroller bereits über ein OLED Display verfügt, wollen wir jetzt mit einem Beispiel dazu starten.
Installieren der Bibliothek u8g2 für das OLED Display
Damit wir das verbaute OLED Display via I2C programmieren können, müssen wir zunächst eine Bibliothek installieren. Ich wähle hier u8g2 aus. Dazu klicken wir links auf den „Library Manager“ (1) und suchen danach „u8g2“ (2) aus den Suchergebnissen wählen wir im Eintrag „U8g2 by oliver“ die Schaltfläche „INSTALL“ (3) aus.
Wenn der Vorgang abgeschlossen ist, dann wir hier der Text „<Versionsnummer> installed“ (4) angezeigt und die Schaltfläche „INSTALL“ ändert sich zu „REMOVE“ (5).
Die Bibliothek u8g2 habe ich bereits in einigen anderen Beiträgen verwendet, ein großer Vorteil ist, dass diese recht klein ist und somit noch viel Speicher auf dem Mikrocontroller für das eigentliche Programm verbleibt.
Beispiel – „Hello World!“ auf dem OLED Display ausgeben
Wenn die Bibliothek installiert wurde, können wir nachfolgendes kleines Programm auf dem Mikrocontroller ausführen und es sollte dann die Textzeile „Hello World!“ angezeigt werden.
#include <Arduino.h> #include <U8g2lib.h> #ifdef U8X8_HAVE_HW_SPI #include <SPI.h> #endif #ifdef U8X8_HAVE_HW_I2C #include <Wire.h> #endif #define SDA_PIN 12 //GPIO12 / 6 #define SCL_PIN 14 //GPIO14 / 5 U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, SCL_PIN, SDA_PIN, U8X8_PIN_NONE); void setup(void) { u8g2.begin(); } void loop(void) { u8g2.clearBuffer(); u8g2.setFont(u8g2_font_ncenB08_tr); u8g2.drawStr(0,10,"Hello World!"); u8g2.sendBuffer(); delay(1000); }
Beispiel – Ausgeben von WiFi Netzwerken auf dem Display
Wollen wir nun mit der WiFi Schnittstelle nach vorhandenen Netzwerken suchen und diese dann auf dem Display ausgeben. Als Grundgerüst nutze ich hier zunächst das Beispiel aus der ESP8266 Bibliothek WiFiScan, denn dieses erzeugt bereits die Ausgabe auf der seriellen Schnittstelle.

Dieses müssen wir jetzt noch um die Ausgabe auf dem Display erweitern.
#include <ESP8266WiFi.h> #include <Arduino.h> #include <U8g2lib.h> #ifdef U8X8_HAVE_HW_SPI #include <SPI.h> #endif #ifdef U8X8_HAVE_HW_I2C #include <Wire.h> #endif #define SDA_PIN 12 //GPIO12 / 6 #define SCL_PIN 14 //GPIO14 / 5 U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, SCL_PIN, SDA_PIN, U8X8_PIN_NONE); void setup() { Serial.begin(115200); WiFi.mode(WIFI_STA); WiFi.disconnect(); delay(100); u8g2.begin(); } void loop() { String ssid; int32_t rssi; uint8_t encryptionType; uint8_t *bssid; int32_t channel; bool hidden; int scanResult; scanResult = WiFi.scanNetworks(/*async=*/false, /*hidden=*/true); if (scanResult == 0) { Serial.println(F("Keine WiFi-Netzwerke gefunden")); } else if (scanResult > 0) { //Zwischenspeicher und Display leeren u8g2.clearBuffer(); //Schriftgröße setzen u8g2.setFont(u8g2_font_ncenB08_tr); for (int8_t i = 0; i < scanResult; i++) { WiFi.getNetworkInfo(i, ssid, encryptionType, rssi, bssid, channel, hidden); printWiFiNetworkData(i, ssid.c_str()); Serial.printf(PSTR(" %02d: %s\n"), i + 1, ssid.c_str()); yield(); } //Absenden der Daten vom Zwischenspeichern an das Display u8g2.sendBuffer(); } else { Serial.printf(PSTR("WiFi scan error %d"), scanResult); } //5 Sekunden Pause zwischen den Scans delay(5000); } //Ausgeben der Daten zum WiFi Netzwerk auf dem OLED Display void printWiFiNetworkData(int idx, String name) { String msg = String(idx, DEC) + " " + name; u8g2.drawStr(0, idx * 15, msg.c_str()); }
Wenn ich nun nach draußen gehe, dann finde ich diverse WiFi-Netzwerke der Nachbarn.
Danke, dein Beitrag hat mir sehr geholfen.
in letzten Beispiel ist in Zeile 42 ( /Schriftgröße setzen) ein „/“ zu wenig.
Oh, vielen Dank für den Hinweis.
Habe ich gerade korrigiert.
Gruß,
Stefan
Danke für den interessanten Beitrag, es hat bei mir auf anhieb funktioniert…war mal wieder ein Erfolgserlebnis das ich gebraucht habe…..immer wieder lehrreich deine Beiträge.
MfG M. Jacke
ich bekomme ständig rote Fehlermeldungen mit denen ich nichts anfangen kann. Welches Board muss ich denn wählen?
Hallo Rüdiger,
ich habe den „NodeMCU 1.0 (ESP-12E) Module“ gewählt.
Gruß, Stefan