5. diel - Webový server na module ESP-32 druhýkrát - Sprevádzkovanie serveru
V minulej lekcii, Webový server na module ESP-32 , sme začali pracovať na webovom serveri, ktorý poskytuje modul ESP-32.
V dnešnom tutoriále Internetu vecí s ESP-32 dokončíme
náš webový server. Máme už pripravené zapojenie, vysvetlili sme si, ako
server funguje a nezostáva než sa pustiť do toho hlavného - do slučky
loop()
, ktorá bude vykresľovať HTML stránku servera a reagovať
na povely používateľa.
Slučka loop()
Najrozsiahlejšia a nezložitejšia časť celého programu bude funkcia
loop()
, v ktorej sa bude odohrávať všetko podstatné. Poďme si
ju teda postupne popísať:
V tejto časti kódu sme si vytvorili premennú pre klienta a podmienku, ktorej telo sa vykoná iba ak bude existovať akýkoľvek pripojený klient, ušetrí to totiž energiu a výpočtový výkon modulu. Teraz si poďme ukázať cyklus, ktorý sa stará o čítanie URL adresy a podľa jej obsahu rozsvecuje resp. zhasína LED diódy. Tento cyklus vložíme do vyznačeného miesta v predchádzajúcej časti kódu:
V cykle sa najskôr zistíme, či sme z URL adresy dostali čitateľné byty. Pokiaľ áno, do reťazca si uložíme celý riadok URL adresy, vďaka ktorému zistíme, ktorú LED diódu chceme rozsvecovať resp. zhasínať. Tento cyklus má teda v našom programe nenahraditeľnú úlohu a zaisťuje nám správny chod programu. Zaň doplníme pár riadkov kódu pre prípad, že nebude nastavený žiadny aktívny klient:
Funkcia zpracujPozadavek()
Náš cyklus však potrebuje na svoju prácu funkciu
zpracujPozadavek()
, poďme si ju teraz vytvoriť: Funkcia
zpracujPozadavek()
vždy porovnáva obsah URL obsah a podľa neho
určuje, čo sa má na mikrokontroléri vykonať. My v tomto prípade budeme iba
meniť stav LED diód na doske, uchováme si ho do premennej a informáciu o
zmene vypíšeme na sériový monitor.
Funkcia zobrazHTML()
Nakoniec vytvoríme funkciu zobrazHTML()
. Funkcia bude
obsahovať celú štruktúru HTML stránky. Poďme teda na vec:
Stránka obsahuje dve tlačidlá, vďaka ktorým budeme ovládať LED diódy a tiež obsahuje informáciu o stave diódy. Pridáme si aj základné CSS štýly, nech stránka nie je tak smutne čiernobiela. Tlačidlá sa dynamicky menia v závislosti na aktuálnej hodnote na LED dióde (zapnuté/vypnuté) a podľa toho menia farbu.
Dáta do URL adresy posielame cez odkaz pri jednotlivých tlačidlách, je teda na nás, akú adresu odkazu si vymyslíme, musíme si však dať pozor na správne vyhodnotenie podmienky na začiatku cyklu.
Vyskúšanie serveru
Celý program máme hotový a nezostáva nič iné, len ho vyskúšať. Teraz, keď projekt skompilujeme a nahráme, je dôležité zistiť si v sériovom monitore IP adresu servera:
Túto IP adresu vložíme do prehliadača na zariadení a zobrazí sa nám táto stránka:
Vždy po kliknutí na príslušné tlačidlo sa zmení farba pozadia tlačidla a zmení sa hodnota na LED diódach. Vzhľad stránky bude vyzerať takto:
Dnes sme teda zvládli trochu rozsiahlejší projekt, v ktorom sme si vyskúšali webový server na module ESP-32. Z tohto tutoriálu je to už všetko. Zdrojové kódy vrátane zapojenia sú k dispozícii na stiahnutie nižšie.
V nasledujúcej lekcii, SPI Flash File System pre webový server na ESP-32 , sa zoznámime s SPI Flash File System pre webový server na module ESP32 a predvedieme si ho na príklade
Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.
Stiahnuť
Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami
Stiahnuté 55x (2.4 kB)
Aplikácia je vrátane zdrojových kódov v jazyku C++