Upload
others
View
15
Download
0
Embed Size (px)
Citation preview
OLED – https://erik-bartmann.de/
ESP32 Pico-Board
ESP32 Addon
128x32 I²C OLED Vers. 1.0
© by Erik Bartmann, Juni 2018
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
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
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
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
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/