ESP32 + optická závora + stepper: počítadlo kusů a dávkovač
2026-04-11
Tohle je užitečný základ pro počítání kusů na lince, dílenský dávkovač nebo kontrolní přípravek. Optická závora detekuje průchod materiálu, OLED ukazuje počitadlo a stav zařízení a ESP32 podle potřeby vygeneruje impulsy pro driver krokového motoru.
Doporučené zapojení
- OLED SSD1306: SDA → GPIO21, SCL → GPIO22
- Optická závora / endstop: výstup → GPIO34, napájení podle typu senzoru
- Driver A4988 / DRV8825: STEP → GPIO25, DIR → GPIO26, GND společná s ESP32
- Krokový motor: samostatné napájení driveru, ne tahat motor z 3V3 větve
Logika počítání
Nejčistší je počítat až kompletní cyklus přerušení paprsku → návrat do klidu. Tím omezíš falešné dvojité pulzy, které vznikají při chvění dílu nebo rušení. Teprve po potvrzeném průchodu zvýšíš čítač a podle režimu provedeš další akci — třeba posun o definovaný počet kroků.
Proč OLED a ne jen sériová linka
Na stole stačí Serial Monitor, ale v zařízení nebo na přípravku je malý OLED výrazně praktičtější. Na první pohled vidíš:
- počet kusů,
- stav vstupu ze senzoru,
- počet kroků na cyklus,
- chybový stav nebo menu nastavení.
Ukázka kostry programu
constexpr int PIN_SENSOR = 34;
constexpr int PIN_STEP = 25;
constexpr int PIN_DIR = 26;
volatile bool beamBroken = false;
uint32_t pieces = 0;
void pulseSteps(uint16_t steps) {
for (uint16_t i = 0; i < steps; ++i) {
digitalWrite(PIN_STEP, HIGH);
delayMicroseconds(500);
digitalWrite(PIN_STEP, LOW);
delayMicroseconds(500);
}
}
void loop() {
static bool lastState = false;
bool state = digitalRead(PIN_SENSOR) == LOW;
if (state) beamBroken = true;
if (!state && lastState && beamBroken) {
++pieces;
beamBroken = false;
pulseSteps(200);
}
lastState = state;
}
Praktická rizika
- Rušení od motoru — driver a motorová větev umí rozhodit senzor i displej.
- Blokující generování kroků — ve větším projektu je lepší přejít na časovač nebo neblokující stavový automat.
- Nespolehlivá závora — levné čidlo může mít šum. Ověř osciloskopem nebo aspoň logickým analyzátorem.
- Napájení — společná zem ano, ale motor napájej samostatně a rozumně filtruj.
Kde se to hodí
Počítání kusů, jednoduchý posuv, odměřování malých dávek, navádění dílu v přípravku nebo malé poloautomatické pracoviště. Není to náhrada za PLC, ale pro prototyp a dílenský nástroj je to rychlé a dobře škálovatelné řešení.