Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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.
Port forwarding znamená, že kedykoľvek niekto zvonku (z internetu) zašle požiadavku na určitý port routera, bude táto požiadavka presmerovaná na ESP-32. Napríklad ak má ESP-32 IP adresu 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.
Blikanie dvoma LED diódami cez webový server a webového klienta

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
Súčiastky môžeme osadiť do nepájivého poľa nasledujúcim alebo podobným spôsobom:
Internet vecí s ESP32

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é 35x (1.35 kB)
Aplikácia je vrátane zdrojových kódov v jazyku C++

 

Predchádzajúci článok
Mód hlbokého spánku na module ESP-32
Všetky články v sekcii
Internet vecí s ESP32
Preskočiť článok
(neodporúčame)
Webový server na module ESP-32 druhýkrát - Sprevádzkovanie serveru
Článok pre vás napísal Adam Hudeczek
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Autor se věnuje zejména programování mikrokontrolerů a tvorbou a provozem webových stránek a webových aplikací.
Aktivity