6
ESP32 Pico-Board ESP32 Addon 128x32 I²C OLED Vers. 1.0 © by Erik Bartmann, Juni 2018

OLED – // · OLED – 5 OLED Der ESP32-Code ür einen ersten Test kann ein in der SSD1306-Library enthaltener Sketch herhalten, der jedoch noch leicht modifiziert werden muss

  • Upload
    others

  • View
    15

  • Download
    0

Embed Size (px)

Citation preview

Page 1: OLED – // · OLED –  5 OLED Der ESP32-Code ür einen ersten Test kann ein in der SSD1306-Library enthaltener Sketch herhalten, der jedoch noch leicht modifiziert werden muss

OLED – https://erik-bartmann.de/

ESP32 Pico-Board

ESP32 Addon

128x32 I²C OLED Vers. 1.0

© by Erik Bartmann, Juni 2018

Page 2: OLED – // · OLED –  5 OLED Der ESP32-Code ür einen ersten Test kann ein in der SSD1306-Library enthaltener Sketch herhalten, der jedoch noch leicht modifiziert werden muss

OLED – https://erik-bartmann.de/ Seite 2

1 2 8 x 3 2 OLED

n diesem ESP32-Addon wollen wir

uns einem OLED-Baustein widmen,

das es ermöglicht, Texte und Grafiken

mit einer Auflösung von 128x32 Pixel

darzustellen. Es handelt sich dabei um

ein Modul [1] von Adafruit [2], das

eine monochrome,

also einfarbige

Anzeige in Grau,

ermöglicht. Die

Ansteuerung erfolgt

über den I2C-Bus mit

zusätzlichem Reset-

Anschluss, einer

Spannungsversorgung von

3,3V und ist für unser ESP32-Picoboard

bestens geeignet. Das Display kann

ohne die sonst erforderlichen Pullup-

Widerstände sofort an den I2C-Bus des

ESP32-Picoboards angeschlossen

werden, da der Treiber interne Pullup-

Widerstände aktiviert. Das

funktioniert jedoch nur

dann reibungslos,

wenn keine weiteren

Busteilnehmer

vorhanden sind.

Sollte das dennoch

einmal der Fall sein, sind

externe Widerstände angeraten.

I

Page 3: OLED – // · OLED –  5 OLED Der ESP32-Code ür einen ersten Test kann ein in der SSD1306-Library enthaltener Sketch herhalten, der jedoch noch leicht modifiziert werden muss

OLED – https://erik-bartmann.de/

3 OLED

Erforderliche Libraries evor wir jedoch das OLED innerhalb der Arduino-IDE nutzen können, sind zwei

zusätzliche Libraries erforderlich. Die erste dient der Unterstützung des

Treiberbaustein SSD1306 [3] und ermöglicht eine Kommunikation über I2C- bzw. SPI-

Bus. Der zweite nennt sich Adafruit-GFX-Library [4] und beinhaltet die

Kernfunktionalitäten zur Darstellung grundlegender Grafikelemente wie z.B. Kreise,

Rechtecke, Linien und Texte. Beide Libraries sind sehr einfach in die Arduino-IDE zu

integrieren. In einem speziellen Arduino-Addon habe ich die Vorgehensweise

detailliert beschrieben.

Der Schaltungsaufbau und der Schaltplan ehen wir uns jetzt den Schaltplan zur Ansteuerung des OLED an unserem ESP32-

Picoboard an. Ich nutze dazu mein ESP32-Pico-Discoveryboard [5], mit dem der

Aufbau sehr schnell und ohne Probleme funktioniert.

Abbildung 1 Das OLED auf dem ESP32-Pico-Discoveryboard

Das OLED habe ich auf das kleine Breadboard aufgesteckt und mit fünf flexiblen

Steckbrücken mit dem ESP32-Picoboard verbunden. Die Anzeige ist in dieser

Anordnung zwar um 90 Grad gedreht, doch für Tests kann das sicherlich vernachlässigt

werden, denn das ganze Discoveryboard kann man ja auch drehen. Der Schaltplan

schaut wie folgt aus.

B

S

Page 4: OLED – // · OLED –  5 OLED Der ESP32-Code ür einen ersten Test kann ein in der SSD1306-Library enthaltener Sketch herhalten, der jedoch noch leicht modifiziert werden muss

OLED – https://erik-bartmann.de/

4 OLED

Abbildung 2 Der Schaltplan zur Ansteuerung des OLED

Ich sagte bereits, dass zur korrekten Ansteuerung des I2C-Busses zwei externe Pullup-

Widerstände gehören, die wie folgt angeschlossen werden.

Abbildung 3 Die beiden Pullup-Widerstände am I2C-Bus des ESP32

Page 5: OLED – // · OLED –  5 OLED Der ESP32-Code ür einen ersten Test kann ein in der SSD1306-Library enthaltener Sketch herhalten, der jedoch noch leicht modifiziert werden muss

OLED – https://erik-bartmann.de/

5 OLED

Der ESP32-Code ür einen ersten Test kann ein in der SSD1306-Library enthaltener Sketch herhalten,

der jedoch noch leicht modifiziert werden muss.

Abbildung 4 Der Beispiel-Sketch für das OLED

Zur korrekten Ansteuerung muss natürlich noch der richtige Reset-Pin angegeben

werden, der in meinem Fall Pin 10 ist. Hier ein Auszug aus dem Sketch.

...

#include <SPI.h>

#include <Wire.h>

#include <Adafruit_GFX.h>

#include <Adafruit_SSD1306.h>

#define OLED_RESET 10

Adafruit_SSD1306 display(OLED_RESET);

...

Ich habe die entsprechende Zeile in Rot hervorgehoben. Eine zusätzliche Anpassung ist

wohl aufgrund eines Timing-Problems erforderlich. In der setup-Funktion muss für die

korrekte Initialisierung eine kurze Pause eingelegt werden. Ich habe die Stelle wieder

in rot markiert.

...

void setup() {

Serial.begin(9600);

delay(100);

display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

...

Frohes Frickeln

F

Page 6: OLED – // · OLED –  5 OLED Der ESP32-Code ür einen ersten Test kann ein in der SSD1306-Library enthaltener Sketch herhalten, der jedoch noch leicht modifiziert werden muss

OLED – https://erik-bartmann.de/

6 OLED

Web-Links [1]: https://www.adafruit.com/product/931

[2]: https://www.adafruit.com/

[3]: https://github.com/adafruit/Adafruit_SSD1306

[4]: https://github.com/adafruit/Adafruit-GFX-Library

[5]: https://www.erik-bartmann.de/?Projekte___ESP32_Discovery-Board

Das ESP32-Praxisbuch

https://www.elektor.de/das-esp32-praxisbuch

https://www.erik-bartmann.de/