↩ Alle projecten en sketches This page in English
ESP8266 · ESP32 · SH1106

SH1106-display: NTP-klok met ESP8266 of ESP32

SH1106 OLED-display (1.3 inch) met NTP-klok
SH1106 (blauwe tekst) op AliExpress — 1.3 inch OLED-display, aangestuurd via I2C

Een iets groter OLED-display dan de SSD1306, eveneens via I2C, met dezelfde code bruikbaar op ESP8266 én ESP32.

Wat heb je nodig?

SH1106-display + ESP8266 | ESP32

Dit is een iets groter display (1.3"), eveneens eenvoudige aansluiting via dezelfde pinnen als I2C. In vergelijking met de SSD1306-code hierboven hebben we hier de gebruikte bibliotheek gewijzigd, en het interval voor tijdsynchronisatie weggelaten. Ook deze code kan zonder wijzigingen zowel op de ESP8266 als op de ESP32 gezet worden. Uiteraard moet SCL en SDA naar resp. D1 (GPIO5) en D2 (GPIO4) [ESP8266] of naar 22 en 21 [ESP32].

Verbindingen:

ESP32 ---> SDD1306 / SH1106
===========================
GND  --------> GND
3V3  --------> VCC
G21  --------> SDA
G22  --------> SCL
===========================
ESP8266 -> SDD1306 / SH1106
===========================
GND  --------> GND
3V3  --------> VCC
D2   --------> SDA
D1   --------> SCL

Sketch:

#include <WiFiManager.h>      // https://github.com/tzapu/WiFiManager/
#include <Adafruit_SH110X.h>  // https://github.com/adafruit/Adafruit_SH110X
#include <Fonts/FreeSansBold12pt7b.h>
#include <Fonts/FreeSansBold18pt7b.h>

WiFiManager myWiFi;  
Adafruit_SH1106G display = Adafruit_SH1106G(128, 64, &Wire, -1);  // GND -> GND, 3V3 -> VCC, esp32: G21 -> SDA, G22 -> SCL
struct tm tInfo;  // https://cplusplus.com/reference/ctime/tm/          esp8266: D1 -> SCL,  D2 -> SDA

void setup() {
  Serial.begin(115200);       // watch serial monitor in case of new WiFi-connection
  display.begin(0x3C, true);  // Address 0x3C default
  display.setTextColor(1);    // white = 1, black = 0
  display.setFont(&FreeSansBold12pt7b);
  myWiFi.autoConnect("SSD1306_ESP");  // connect ESP to new wifi via GSM or PC if new WiFi-connection
  configTzTime("CET-1CEST,M3.5.0,M10.5.0/3", "be.pool.ntp.org");
}

void loop() {
  getLocalTime(&tInfo);  // sntp sync at startup & every hour from then on (esp8266) - every 3 hours (esp32)
  display.clearDisplay();
  display.drawRect(0, 0, 128, 40, 1);
  display.setFont(&FreeSansBold18pt7b);
  display.setCursor(4, 31);
  display.printf("%02d:%02d", tInfo.tm_hour, tInfo.tm_min);
  display.setFont(&FreeSansBold12pt7b);
  display.printf(":%02d", tInfo.tm_sec);
  display.setCursor(4, 63);
  display.printf("%02d-%02d-%04d", tInfo.tm_mday, 1 + tInfo.tm_mon, 1900 + tInfo.tm_year);
  display.display();
}
Geen ingesteld synchronisatie-interval In tegenstelling tot de SSD1306-sketch is hier geen expliciet SNTP-interval ingesteld. Op de ESP8266 blijft dat op de standaardwaarde van 1 uur, op de ESP32 op 3 uur.

Meer displays met de ESP8266 / ESP32

Benieuwd naar andere displays? Bekijk het volledige overzicht met o.a. TM1637, SSD1306, ST7735, ST7789, e-paper en geïntegreerde displays zoals de Lilygo T-Display en de Waveshare ESP32-S3.