# Bat-Sense Operator Controller Firmvér pre prenosné ovládacie zariadenie založené na platforme **M5Stack**, slúžiace ako diaľkový ESP-NOW operátorský ovládač pre meracie zariadenie **Bat-Sense**. --- ## 📋 Prehľad projektu Tento projekt implementuje robustnú, stavovým automatom riadenú firmvérovú architektúru určenú pre nízkoenergetické (low-power) embedded zariadenia. Slúži ako konzola na správu celého životného cyklu merania, pričom s podriadeným zariadením komunikuje bezdrôtovo pomocou vlastného protokolu **Nano Bus (Nbus)** cez vrstvu **EspNowSerial**. --- ## 🛠️ Hlavné vlastnosti * **Stavový automat (State Machine):** Čistá architektúra riadená plánovačom `StateRunner`, ktorá spravuje 6 na sebe nadväzujúcich stavov: * `STATE_LOCK` – Uzamknutý / neaktívny stav * `STATE_TARGET` – Yameranie cieľa * `STATE_START` – Inicializačná štartovacia sekvencia * `STATE_RUN` – Aktívny beh merania s vizuálnou animáciou * `STATE_STOP` – Ukončenie meracieho cyklu * `STATE_CANCEL` – Prerušenie / zrušenie operácie * **ESP-NOW Komunikácia:** Rýchly bezdrôtový prenos príkazov a paketov v reálnom čase pomocou vrstvy `NbusBroadcastComm` s overovaním integrity pomocou CRC8. * **Optimalizovaná správa napájania:** Periodický monitoring batérie pomocou FreeRTOS časovačov a podpora prechodu do úsporného režimu. * **Kompaktná konfigurácia:** Všetky konštanty (farby, fonty, hardvérové piny, časovanie, Nbus parametre) sú zjednotené v jednom centrálnom súbore `all_config.h` pre rýchlejšiu kompiláciu a lepšiu udržiavateľnosť. * **Doxygen dokumentácia:** Zdrojový kód je plne zdokumentovaný štandardizovanými Doxygen komentármi. --- ## 📂 Architektúra projektového repozitára ```text ├── all_config.h # Centrálna konfigurácia (hardvér, farby, časovanie, Nbus) ├── main.cpp # Hlavný vstupný bod firmvéru (Arduino setup/loop) ├── device/ # Správa hardvéru, displeja a ESP-NOW ├── drawer/ # UI renderovanie, kreslenie ikon, textov a batérie ├── nbus/ # Nano Bus protokol a ESP-NOW broadcast komunikácia ├── states/ # Logika stavového automatu │ ├── state_runner.h # Plánovač a riadenie prechodov medzi stavmi │ ├── state_interface.h # Abstraktné rozhranie pre stavy (IState) │ └── state_impl.h # Implementácie jednotlivých stavov (Lock, Target, Start, Run, Stop, Cancel) └── data_structures/ # Dátové štruktúry (PhaseCmd, StateTx, IconStruct)