← zpět

ESP32 + OLED + relé: jednoduchý řídicí modul

2026-04-11

Ilustrační zapojení ESP32, OLED SSD1306 a relé modulu
Ilustrační zapojení pro jednoduchý řídicí modul s ESP32, I²C OLED displejem a relé výstupem.

Tohle je jednoduchý, ale použitelný základ pro menší řídicí modul. ESP32 obsluhuje OLED displej přes I²C, čte tlačítka nebo vstupy, a podle stavu sepne relé. Takový základ se hodí pro test bench, prototyp ovladače, jednoduchou automatizaci nebo servisní přípravek.

Co článek řeší

  • rozumné základní zapojení bez zbytečné magie,
  • volbu pinů pro OLED a relé,
  • na co si dát pozor u napájení a rušení,
  • kostru firmwaru pro rychlý rozjezd.

Doporučené zapojení

  • OLED SSD1306 128×64, I²C: VCC → 3V3, GND → GND, SCL → GPIO22, SDA → GPIO21
  • Relé modul: IN → GPIO27, GND → GND, VCC → 5 V / VIN podle typu modulu
  • Napájení ESP32: přes USB nebo stabilní 5V větev do VIN
Pozor: hodně levných relé modulů není ideálních pro přímé řízení z 3.3 V logiky. U některých modulů bude vstup fungovat spolehlivě, u jiných ne. Když je to hraniční, použij tranzistorový stupeň nebo modul ověřený pro 3.3 V logiku.

Proč zrovna tyhle piny

GPIO21 a GPIO22 jsou na ESP32 běžně používané pro I²C a vyhneš se tím zbytečnému boji s periferiemi. GPIO27 je pro relé v pohodě, protože to není boot pin a není to pin, který by dělal zmatek při startu. Pro jednoduchý projekt je to bezpečnější volba než nahodilé používání pinů jen podle toho, co zrovna vyšlo na breadboardu.

Napájení a stabilita

Největší problém podobných malých sestav nebývá kód, ale napájení a rušení. Jakmile relé sepíná indukční zátěž, můžeš si přitáhnout špičky, které rozhodí reset nebo OLED. Proto má smysl držet se těchto pravidel:

  • napájecí vodiče k ESP32 držet krátké,
  • relé a logiku mít na společné zemi, ale rozumně vedené,
  • na napájení dát lokální filtraci, typicky 100 nF + 47 až 220 µF podle sestavy,
  • u skutečné zátěže řešit i odrušení na straně kontaktů, ne jen na desce.

Jednoduchá kostra programu

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

constexpr int PIN_RELAY = 27;
constexpr int PIN_SDA   = 21;
constexpr int PIN_SCL   = 22;

Adafruit_SSD1306 display(128, 64, &Wire, -1);

void setup() {
  pinMode(PIN_RELAY, OUTPUT);
  digitalWrite(PIN_RELAY, LOW);

  Wire.begin(PIN_SDA, PIN_SCL);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(SSD1306_WHITE);
  display.setCursor(0, 0);
  display.println("ESP32 ridici modul");
  display.println("OLED + rele");
  display.display();
}

void loop() {
  digitalWrite(PIN_RELAY, HIGH);
  delay(1000);
  digitalWrite(PIN_RELAY, LOW);
  delay(1000);
}

Co bych v ostré verzi doplnil

  • watchdog-safe smyčku bez zbytečně dlouhých blokujících delay(),
  • detekci chyby OLED a fallback režim bez displeje,
  • oddělenou vrstvu pro logiku zařízení a zvlášť vrstvu pro UI,
  • ukládání nastavení do NVS / Preferences,
  • jasně definované stavy výstupů po rebootu.

Kde se to reálně hodí

Takový modul je dobrý jako základ pro spínání ventilátoru, testovací přípravek, jednoduchý dávkovač, dílenský hlídač teploty nebo stavový panel stroje. Na malé zakázkové automatizace je to rychlé řešení, pokud se nepodcení napájení, EMC a bezpečnost výstupní části.

Verdikt

Jako rychlý prototyp je kombinace ESP32 + OLED + relé výborná. Na stole to běží rychle a levně. V reálném zařízení ale rozhoduje hlavně čisté napájení, správná volba relé modulu a dobře ošetřený firmware. Když se tohle nepodcení, je to velmi použitelný základ pro další vývoj.