4. diel - Webový server na module ESP-32
V minulej lekcii, Mód hlbokého spánku na module ESP-32 , sme si popísali mód hlbokého spánku na module ESP-32 a predviedli sme si ho na praktickej ukážke.
V nasledujúcom tutoriále Internetu vecí s ESP-32 si najskôr stručne popíšeme, ako funguje webový server a aké možnosti konfigurácie na module ESP-32 je možné využiť. Nakoniec si začneme pracovať na programe, kde otestujeme funkčnosť webového servera pomocou LED diódy.
Čo je to a ako funguje webový server?
Na túto otázku je veľmi dôležité si odpovedať, aby sme mali vôbec tušenie, ako s ním neskôr pracovať. Veľmi jednoducho je webový server miesto, kde sú uložené, spracovávané a zobrazované webové stránky. K webovému serveru sa najčastejšie pristupuje cez webový prehliadač, ktorému sa tiež hovorí webový klient. Prakticky to funguje tak, že prehliadač vyšle serveru požiadavku, ktorý server nejakým spôsobom spracuje a výsledok pošle späť do prehliadača. O túto komunikáciu sa stará protokol Hypertext Transfer Protocol, skrátene HTTP resp. HTTPS.
V prípade, že server dostane požiadavku, ale nie je schopný mu vyhovieť, vracia chybové hlášky a kódy, napr. známy 404, keď nenájde požadovanú stránku.
Webový server na ESP-32
Ako už vieme z minulosti, ESP-32 obsahuje okrem iného aj Wi-Fi modul, ale to nie je všetko. Nielen že sa vie ESP-32 pripojiť k sieti a chovať sa ako webový server, dokáže dokonca vytvoriť vlastnú sieť, čím dovoľuje zariadeniam pripájať sa priamo naň a dovoľuje im tiež prístup k jeho webovým stránkam. Modul dokáže operovať v troch režimoch: Station (STA), Soft Access Point (AP) a oba zároveň. Poďme si ich teraz predstaviť bližšie:
Režim Station (STA)
V tomto režime sa ESP-32 pripojí na existujúcu Wi-Fi sieť, napr. hosťovanú na bezdrôtovom routeri atď. Dostane teda svoju IP adresu a je možné na ňom v tejto chvíli hosťovať webový server. Práve tento režim využijeme na konci lekcie pri praktickom príklade.
K webovému serveru majú prístup iba zariadenia, ktoré sa nachádzajú v rovnakej sieti ako ESP-32.
Režim Soft Access Point (soft-AP)
Ak použijeme tento režim, ESP-32 vytvorí svoju vlastnú sieť a bude sa správať ako húb alebo router. Líšia sa však iba v tom, že ESP-32 nemá rozhranie na pripojenie Ethernet kábla, práve preto sa tomuto režimu hovorí Soft Access Point.
Keďže je výkonnosť ESP-32 obmedzená, nemožno k nemu pripojiť viac ako päť zariadení naraz.
ESP-32 sieti pridelí SSID (názov siete) a IP adresu, cez ktorú je možné pristupovať k webovým stránkam mikrokontroléra zo všetkých pripojených zariadení.
Pripojenie k ESP-32 z internetu
Mikrokontrolér ESP-32 sám o sebe nie je navrhnutý tak, aby bol priamo prístupný odkiaľkoľvek na svete. Aby bol náš webový server hosťovaný na ESP-32 dostupný z verejného internetu, je potrebné vykonať niekoľko ďalších krokov:
- mikrokontrolér musí byť pripojený v režime STA k miestnej Wi-Fi sieti, ktorá má prístup na Internet,
- na routeri, ku ktorému je ESP-32 pripojený, musí byť nastavené presmerovanie portov (port forwarding),
- pri dynamickej IP adrese (čo je bežné), je potrebné využiť služby ako je DynDNS alebo No-IP, ktoré nám umožnia mať stále doménové meno namapované na našu aktuálnu IP adresu. To znamená, že namiesto toho, aby sme sa pokúšali pripojiť cez IP adresu, použijeme doménové meno.
192.168.1.100
a webový server beží na porte 80
, na
routeri nastavíme, aby všetka prevádzka na porte 8080
bola
presmerovaná na 192.168.1.100:80
.
Celý proces potom vyzerá takto:
- užívateľ kdekoľvek na svete zadá do prehliadača adresu www.mujesp32jenajlepsi.cz
- doménový názov www.mujesp32jenajlepšie.sk sa preloží na IP adresu prostredníctvom systému doménových mien (DNS). Ak využívame službu ako je DynDNS alebo No-IP, táto služba sa postará o aktualizáciu dynamickej IP adresy,
- používateľ sa teraz pokúsi pripojiť na túto IP adresu na porte
8080
, - náš domáci router má nastavený port forwarding, takže akonáhle príde
požiadavka na porte
8080
, presmeruje túto požiadavku na internú IP adresu ESP-32 (napr.192.168.1.100:80
). - ESP-32, ktorý beží ako webový server na porte
80
, teraz dostane túto požiadavku a môže naň reagovať - napríklad odoslaním webovej stránky.
Keď už sme sa zoznámili s princípom webového servera a ako s ním je možné pracovať, poďme si teraz začať pracovať na programe, kedy pomocou webového prehliadača budeme rozsvecovať a zhasínať dve LED diódy.
Potrebné súčiastky a schéma zapojenia
Pre tento projekt budeme okrem samotného modulu ESP-32 potrebovať tieto súčiastky:
- 2x 5mm LED diódy
- 2x 330Ω rezistory
- nepájivé pole
- prepojovacie vodiče
Hlavička programu
Všetky súčiastky máme osadené a môžeme sa teda postupne vrhnúť na kód. Keďže sa už jedná o väčší projekt a budeme používať zložitejšie príkazy, budeme kód dopĺňať po menších celkoch a priebežne si ho vysvetľovať. Začnime teda hlavičkou:
Najprv si teda zahrnieme
knižnicu WiFi.h
, ktorá nám umožní pracovať s Wi-Fi modulom na
ESP-32. Potom si vytvoríme premenné, ktoré budú obsahovať
názov siete a heslo k danej sieti a taktiež
nastavíme serveru port 80
. To je defaultný port, na ktorom
webové servery bežia. Potom si nadefinujeme dôležité hardvérové
informácie, a to na akých pinoch máme pripojené LED diódy.
Čísla pinov v programe sa musia zhodovať s piny použitými v obvode, inak program nebude fungovať a LED diódy nebudú reagovať na impulz.
Nakoniec ešte pripravíme časové premenné dôležité na pravidelné
vyhodnocovanie, či je klient stále pripojený. Teraz sa môžeme vrhnúť do
funkcie setup()
:
Sériovému monitoru
nastavíme hodnotu 115200
Baudov, nastavíme piny ako výstup a
rovno im nastavíme hodnotu 0
, to aby diódy zostali zhasnuté.
Potom sa ESP-32 pripojí k sieti, ktorú sme uviedli v hlavičke a pokiaľ sa
úspešne k sieti pripojí, informáciu vypíše do sériového monitora.
Tým máme prvú časť webového servera hotovú. Schéma a zdrojový kód sú v archíve v prílohe lekcie.
V budúcej lekcii, Webový server na module ESP-32 druhýkrát - Sprevádzkovanie serveru , dokončíme program na sprevádzkovanie webového servera a ukážeme si jeho funkčnosť.
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é 40x (1.35 kB)
Aplikácia je vrátane zdrojových kódov v jazyku C++