ESP32 – jak na Wi-Fi v MicroPython?
Po delší době se opět vracíme k našim hrátkám s modulem ESP32 pod taktovkou programovacího jazyka MicroPython. V několika následujících článcích bychom se rádi (konečně!) zaměřili na připojení modulu ESP32 k síti Wi-Fi a dále bychom rádi ukázali, jak vytvořit z modulu ESP32 jednoduchý server vracející webovou stránku, nebo jak vytvořit z modulu ESP32 klienta, který načte data z jiného serveru.
V tomto úvodním článku bychom se nejdříve zaměřili na to, jak se připojit k Wi-Fi síti.
ESP32 a přístup k Wi-Fi (aneb Tak trochu úvodem…)
Desky ESP32 mají vestavěný Wi-Fi modul, který jim otevírá dveře k téměř neomezeným možnostem připojení. Modul ESP32 lze připojit k jakémukoli přístupovému bodu, kterým může být router, ale může kupříkladu fungovat i jako hotspot a poskytovat přístupový bod dalším zařízením. Postupně bychom si měli ukázat, jak v MicroPythonu (v prostředí Thonny IDE) vytvořit programy pro připojení k Wi-Fi síti a jak modul ESP32 nastavit buď jako stanici (STA), nebo jako přístupový bod (AP).
Než budeme pokračovat, je třeba si trochu zopakovat základní úvod do všech tří režimů Wi-Fi, které pro tento článek potřebujeme znát. Pokud některý čtenář již tuto znalost má, kupříkladu z některého dřívějšího článku, může následující odstavce přeskočit, nebo jej brát jako rychlé základní opakování.
Režimy Wi-Fi modulu ESP32
Na modulu ESP32 lze Wi-Fi používat ve třech různých režimech:
- Stanice (STA)
- Přístupový bod (AP)*)
- Přístupový bod + Stanice (AP+STA)
*) | Správně bychom měli říkat „Soft-AP“. Protože deska ESP32 nemá možnost kabelového připojení k síti, ale podporuje pouze bezdrátové sítě, takže se zpravidla pak tomuto přístupovému bodu říká tzv. Soft Access Point (Soft-AP). |
Režim stanice (STA)
Prvním režimem modulu ESP32 je pracovní režim stanice (STA). Je to poměrně časté použití, kdy se modul připojí do zadané sítě přes nějaký přístupový bod (např. wi-fi router) a je jen jedním z mnoha možných připojených zařízení. Situaci znázorňuje následující obrázek:

S tímto řešením se poměrně často setkáváme při řešení různých situací v inteligentní domácnosti, kdy modul ESP32 v roli nějakého čidla (meteostanice, bezdrátový teploměr, řídicí jednotka rolet, ústředna alarmu apod.) se připojuje do naší domácí Wi-Fi sítě. Připojení k domácí síti pak umožňuje např. spojení s Internetem, tedy vzdálený přístup k modulu ESP32 odkudkoliv.
Režim přístupového bodu (AP)
Trochu jiná je situace v případě konfigurace modulu ESP32 jako tzv. přístupového bodu (AP). V tomto případě modul ESP32 zpravidla vytváří svou vlastní Wi-Fi síť, ke které se naopak ostatní zařízení připojují. Lze říci, že modul ESP32 se v tomto případě chová jako tak trochu jako router nebo hotspot. Situaci nám opět demonstruje následující obrázek.

Pro představu možného užití režimu AP si můžeme představit modul ESP32 v roli ústředny domácího alarmu. Tato ústředna je svou lokální Wi-Fi sítí přístupovým bodem (AP) pro ostatní bezdrátová čidla umístěná v hlídaném prostoru (pohybové čidlo, laserová závora, čidlo otevření dveří…). Jednotlivá bezdrátová čidla se do této lokální sítě pochopitelně připojují v režimu stanice (STA).
Režim AP+STA
Posledním režimem Wi-Fi desky ESP32 je přístupový i staniční bod (AP+STA). Asi již chápeme, jak toto nastavení bude fungovat – deska ESP32 je jedním svým Wi-Fi modulem v roli STA připojena k nějaké Wi-Fi síti, ale zároveň pomocí svého druhého Wi-Fi modulu vytváří svou lokální síť, ve které je přístupovým bodem AP dalším zařízením.
Opět obrázek řekne více, než jakýkoliv dlouhosáhlý popis.

Když jsme v předešlé ilustraci pro použití režimu AP zmínili domácí alarm, jistě nás napadlo, že by bylo dobré, aby stav alarmu nebyl jen řešen lokálně v rámci hlídaného prostoru, ale aby byl celý tento systém připojen k Internetu. A to je přesné užití režimu AP+STA. Režim AP vytváří lokální Wi-Fi modulu ESP32, který slouží jako přístupový bod pro bezdrátová čidla, ale zároveň modul ESP32 je stanicí (STA) připojenou k routeru místní Wi-Fi sítě, která zprostředkovává připojení k Internetu. Uživatel pak může prostřednictvím WLAN sítě vzdáleně sledovat stav alarmu, ale třeba i jednotlivých čidel.
Nastavení Wi-Fi režimů modulu ESP32 v MicroPython
Pokud jsme si objasnili, jak fungují jednotlivé režimu Wi-Fi a za jakých podmínek je budeme používat, postupně se podíváme, jak je v jazyce MicroPython můžeme naprogramovat.
Ještě než se pustíme do dalšího textu, měli bychom si objasnit jednu věc ohledně služeb síťového připojení. A to jsou pojmy server a klient. Spojením klienta a serveru vznikají sítě typu klient-server, kde jeden počítač nabízí své služby – tzv. server, a druhý počítač tyto síťově služby na základě svých dotazů využívá – tzv. klient. Toto dělení je tedy podle typu poskytovaných služeb (klient, server), nikoliv podle způsobu připojení do sítě (AP, STA), jak se někdy chybně uvádí! Role klient nebo server se obecně vůbec neodvíjí od způsobu připojení k síti (AP nebo STA). V následujících ukázkách si ukážeme, jak vytvořit připojení v režimu stanice STA a AP, a až v dalších článcích na tomto způsobu připojení zkusíme vytvořit jak server, tak klienta.
Režim stanice (STA) v MicroPython
Pro přístup k nějaké existující Wi-Fi síti pochopitelně potřebujeme znát její název (SSID) a platné přístupové heslo. Tyto údaje si na začátku programu uložíme do konstant ssid
a pwd
. Dále budeme využívat služeb z knihovny network
, tak si ji musíme do našeho programu importovat.
Rázem nyní rozumíme prvním řádkům, které budou v každém následujícím programu.
Dále uvedený program ukazuje nastavení modulu ESP32 do režimu STA. Pro naši ukázku si zprvu uvedeme základní program pro připojení, který lze najít v různých webových tutoriálech. První řádky programu asi tušíme, na ty zbylé se podíváme postupně až za výpisem kódu:
import network
ssid = 'nazev wi-fi site'
pwd = 'heslo wi-fi site'
mynet = network.WLAN(network.STA_IF)
if not mynet.isconnected():
mynet.active(True)
mynet.connect(ssid, pwd)
ip = mynet.ifconfig()[0]
print(ip)
Po připojení knihovny network
a nastavení konstant (ssid
a pwd
) vytvoříme objekt připojení k Wi-Fi a nastavíme u něj režim STA:
mynet = network.WLAN(network.STA_IF)
Následuje podmínka, která otestuje, zda již modul není připojen (například z předchozího spuštění programu). Pokud modul ESP32 není připojen, dojde k aktivaci síťového spojení:
if not mynet.isconnected():
mynet.active(True)
Následuje samotnéu připojení k existující Wi-Fi síti (parametry jsou jméno sítě a heslo)
mynet.connect(ssid, pwd)
Po úspěšném připojení je do proměnné ip
načtena lokální IP adresa modulu ESP32, která je pak následně vypsána příkazem print
.
ip = mynet.ifconfig()[0]
print(ip)
Napíšeme program v prostředí Thonny IDE a spustíme jej. Při prvním spuštění nás ale asi překvapí následující výstup (viz obr.), kde se zobrazí IP adresa v podobě samých nul.

Pokud spustíme program znova, je IP adresa v obvyklé podobě 192.168.×××.×××
.
Jak je to možné?
Na vysvětlení se podíváme zpět do kódu a uvědomíme si, že příkaz connect()
je příkazem asynchronním. To znamená, že spustí nějakou připojovací sekvenci, kdy se vyhledána požadovaná síť a řeší se autorizace přístupu. To celé nějakou dobu trvá, ale kód programu se u asynchronního příkazu na tuto dobu nezastaví a běží stále dál! Okamžitě se tedy načte se IP adresa, ale ta ještě není vůbec přiřazena, neboť připojování stále probíhá. Následuje výpis proměnné s IP adresou, což ale skončí výpisem adresy 0.0.0.0
.
Mezitím, co se podivuje nad tímto výstupem, se modul ESP32 k síti připojí a my spustíme program znovu. V tu chvíli je modul ESP32 připojen a podmínka testující připojení vůbec nespustí sekvenci přihlašování (odsazený kód za podmínkou). Jen se načte IP adresa, která je ale již známa, a vypíše. Vše vypadá O.K.
Takže tento ukázkový kód, byť je na první pohled jednoduchý a často se uvádí jako ukázka připojení k Wi-Fi, je tak trochu zavádějící. Pro své projekty se jím moc inspirovat nebudeme! 😕 Prostě jej musíme trochu předělat!
import network
import time
ssid = 'nazev wi-fi site'
pwd = 'heslo wi-fi site'
mynet = network.WLAN(network.STA_IF)
if not mynet.isconnected():
mynet.active(True)
mynet.connect(ssid, pwd)
while not mynet.isconnected():
print('.', end="")
time.sleep_ms(200)
print()
ip = mynet.ifconfig()[0]
print(ip)
První řádky programu začneme (skoro) úplně stejně až k podmínce testující připojení. Na místě, kde v podmínce nastane přihlášení k Wi-Fi síti, přidáme podmíněnou čekací smyčku, která poběží, dokud se modul ESP32 úspěšně nepřihlásí do Wi-Fi sítě. Aby uživatel viděl, že se zatím „něco“ děje, jsou postupně do výstupu vykreslovány tečky. Všimněte si speciálního tvaru příkazu print
s parametrem end=""
, který zařídí, aby po vytištění jednotlivé tečky nedošlo k odřádkování jako u běžného příkazu print
. (To se někdy hodí i v jiných situacích. 😉)
Aby se nevypisovaly tečky do výstupu zbytečně rychle, je čekací smyčka doplněna zpomalujícím příkazem time.sleep_ms
. Kvůli tomuto příkazu je pak do úvodu programu přidáno připojení knihovny time
. Pochopitelně, pokud bychom si výpis teček při čekání na připojení odpustili, mohli bychom jak příkaz time.sleep_ms
, tak knihovnu time
zcela vynechat.
Po ukončení připojování (a vypisování teček) již běží program jako v předešlém případě. Tedy je načtena IP adresa, která je v tu chvíli už známa, a vypsána do výstupu. Program tedy funguje při první spuštění a výstup vypadá následovně:

Nastavení pevné IP adresy:
V našem předešlém programu byla IP adresa modulu ESP32 přidělena přístupovým bodem naší Wi-Fi sítě. Budeme-li se chtít na tento modul dotazovat, musíme tuto IP adresu v síti znát. Ale jak máme tuto adresu jistit, pokud modul bude zapojen v nějakém zařízení a nebude připojen k prostředí Thonny, kde si ji můžeme ve výstupu přečíst? Nebo jak se jiné zařízení má dotazovat na modul ESP32, když jeho IP adresa je plně v režii připojovacího bodu dané Wi-Fi sítě? Jedním z řešení je tuto IP adresu modulu ESP32 vnutit napevno.
Pevné nastavení IP adresy na hodnotu 192.168.8.99
ukazuje následující úprava předešlého kódu programu – přidaný kód je zvýrazněn.
import network
import time
ssid = 'nazev wi-fi site'
pwd = 'heslo wi-fi site'
mynet = network.WLAN(network.STA_IF)
if not mynet.isconnected():
mynet.active(True)
mynet.ifconfig(('192.168.8.99', '255.255.255.0',
'192.168.8.1', '8.8.8.8'))
mynet.connect(ssid, pwd)
while not mynet.isconnected():
print('.', end="")
time.sleep_ms(200)
print()
ip = mynet.ifconfig()[0]
print(ip)
Pozor na dvojitou závorku v příkazu mynet.ifconfig
! Příkaz samotný totiž potřebuje jako jeden ze vstupních parametrů celou strukturu určující IP adresu, masku podsítě, adresu brány a adresu DNS. To je celá ta vnitřní závorka. Pokud byste to chtěli mít zapsané korektněji, lze tento příkaz zapsat i takto:
mynet.ifconfig(config=('192.168.8.99', '255.255.255.0',
'192.168.8.1', '8.8.8.8'))
A kdybychom chtěli mít celý kód napsaný trochu přehledněji, asi bychom zvolili celý zápis následujícím způsobem, kde bychom
nastavení sítě vložili do proměnné ipinfo
a předsunuli až k ostatním konstantám Wi-Fi připojení:
import network
import time
ssid = 'nazev wi-fi site'
pwd = 'heslo wi-fi site'
ipinfo = ('192.168.8.99', '255.255.255.0',
'192.168.8.1', '8.8.8.8')
# IP addresa, maska podsite, adresa brany a DNS serveru
mynet = network.WLAN(network.STA_IF)
if not mynet.isconnected():
mynet.active(True)
mynet.ifconfig(ipinfo)
mynet.connect(ssid, pwd)
while not mynet.isconnected():
print('.', end="")
time.sleep_ms(200)
print()
ip = mynet.ifconfig()[0]
print(ip)
Režim přístupového bodu (AP) v MicroPython
Pokud jsme zvládli připojení v režimu STA k nějaké existující Wi-Fi síti, zkusíme nyní modul ESP32 naprogramovat tak, aby sám vytvořil svou Wi-Fi síť a stal se přístupovým bodem (AP).
Vyjdeme z programu, který se opět velmi často vyskytuje na internetu, jako taková klasická ukázka vytvoření AP:
import network
ssid = 'ESP32-AP-test'
pwd = 'heslo-pro-pristup'
mynet = network.WLAN(network.AP_IF)
mynet.active(True)
mynet.config(essid=ssid, password=password)
while not mynet.active():
pass
print('Hura, AP vytvoren!')
ip = mynet.ifconfig()[0]
print(ip)
Připojení knihovny network
a nastavení názvu a hesla Wi-Fi sítě v úvodu je nám asi jasné. Jen připomeňme, že nyní jsou heslo a název sítě parametry Wi-Fi, kterou teprve modul ESP32 vytvoří (Nikoliv té naší domácí, ke které jsme se v přešlých odstavcích připojovali!)
Nastavení modulu ESP32 do režimu AP provádí příkaz:
mynet = network.WLAN(network.AP_IF)
Podobně jako v případě STA se síťové spojení aktivuje příkazem:
mynet.active(True)
Následující příkaz mynet.config
nastaví název a heslo přístupového bodu:
mynet.config(essid=ssid, password=password)
Následující smyčka je opět smyčkou čekací, tentokráte na vybudování Wi-Fi sítě. Na rozdíl od připojování stanice k existující Wi-Fi síti, je tento proces relativně rychlý, proto nyní nevypisujeme žádné tečky. Příkaz pass
, který se v těle cyklu vykonává, je prázdný příkaz.
Po úspěšném vytvoření Wi-Fi sítě je vypsána na výstupu zpráva a IP adresa právě vzniklého přístupového bodu (AP).
Vezmeme-li kupříkladu mobilní telefon a spustíme na něm vyhledání Wi-Fi sítí, měla by se nám mezi všemi okolními Wi-Fi objevit i ta modulu ESP32 (právě vybudovaná). Její název by měl být ESP32-AP-test
.
Následující obrázek ukazuje situaci ve Wi-Fi manageru mobilního telefonu.

Pozorný čtenář si možná na obrázku něčeho všiml!
Zkusíme se přihlásit k síti ESP32-AP-test
. Mělo by se to okamžitě podařit. Jediná věc, která v tuto chvíli bude asi trochu nestandardní, bude hláška upozorňující, že zvolená Wi-Fi síť nemá přístup k Internetu. Ale to asi není nic překvapivého, modul ESP32 je nyní v režimu AP, takže opravdu k internetu přístup nemá.

Stále Vás nic nezarazilo?
A co například to, že jsme vůbec nemuseli na mobilním telefonu zadat heslo pro přístup k AP?!
Pokud nás tedy už při výpisu všech Wi-Fi sítí nevarovala absence ikonky zámečku u jména sítě ESP-AP-test
, tak nyní bychom měli zbystřit. Máme tedy ve výše uvedeném programu (v tom ukázkovém programu z internetu!) nějakou chybu?
Bohužel ANO!
Ani tento ukázkový program není zcela správně! Příkaz mynet.config()
má totiž kromě parametrů essid
, password
(a mimo jiných dalších) i pro nás velmi důležitý parametr authmode
. Ten však v tomto programu není zadán, a proto se při vykonávání příkazu dosazuje defaultní hodnota 0, která ale znamená „bez hesla“ (tedy vybudování Wi-Fi sítě bez autorizace heslem). Následující tabulka ukazuje možné hodnoty parametru authmode
a jejich předdefinované konstanty, které můžeme využívat.
Parametr | Hodnota | Konstanta | Popis |
---|---|---|---|
authmode= |
0 | AUTH_OPEN |
bez hesla |
1 | AUTH_WEP |
metoda WEP (Wired Equivalent Privacy) | |
2 | AUTH_WPA_PSK |
metoda WPA (Wi-Fi Protected Access) | |
3 | AUTH_WPA2_PSK |
metoda WPA2 (Wi-Fi Protected Access) | |
4 | AUTH_WPA_WPA2_PSK |
obě metody WPA i WPA2 |
- Poznámka:
- Z parametrů příkazu
mynet.config()
stojí ještě za zmínku parametrhidden
, kterým lze název Wi-Fi sítě zobrazovat (hodnota0
), nebo naopak skrýt (hodnota1
). Skrytí názvu lze kupříkladu využít pro bezdrátové spojení čidel, které mají potřebné informace (název a heslo) svého AP nastavené a tak není třeba ve veřejném prostoru ukazovat jméno sítě a vyzývat tak k možnému připojení uživatele, o kterého AP nestojí.
Takže abychom dosáhli skutečné autorizace při přístupu k našemu přístupovému bodu (AP) vytvořeného z modulu ESP32, doplníme do příkazu mynet.config
parametr authmode
(opět ve výpisu zvýrazněno). Nyní by měl program dělat to, co bychom od něj očekávali.
import network
ssid = 'ESP32-AP-test'
pwd = 'heslo-pro-pristup'
mynet = network.WLAN(network.AP_IF)
mynet.active(True)
mynet.config(essid=ssid, password=password, authmode=network.AUTH_WPA_WPA2_PSK)
while not mynet.active():
pass
print('Hura, AP vytvoren!')
ip = mynet.ifconfig()[0]
print(ip)
Na mobilním telefonu, který opět použijeme pro vyhledání přítomných Wi-Fi sítí, pak uvidíme síť ESP-AP-test
s ikonkou zámečku a při pokusu o přihlášení budeme vyzváni k zadání požadovaného hesla (alespoň při prvním připojení, kdy heslo není v mobilu pro danou síť uloženo).

- Speciální domácí úkol:
- Pochopitelně, stejně jako u režimu STA, lze i u režimu AP nastavit pevnou IP adresu. Zkuste poslední kód programu pro nastavení režimu AP upravit tak, aby přístupový bod modulu ESP32 měl pevnou IP adresu – například:
192.168.8.99
.
Skener Wi-Fi sítí
Na samý závěr článku si ukážeme aspoň jeden „praktický“ program využívající Wi-Fi připojení modulu ESP32 pochopitelně naprogramovaný v jazyce microPython. Našim úkolem bude načíst a vypsat přehled všech okolo dostupných Wi-Fi sítí. Modul ESP32 nastavíme do režimu STA a využijeme z knihovny network
funkci scan()
, která vrací seznam dostupných sítí včetně jejich parametrů.
Nejdříve se podíváme na kód programu, který si následně vysvětlíme.
import network
mynet = network.WLAN(network.STA_IF)
mynet.active(True)
print("Skenuji Wi-Fi site, prosim cekejte...")
print("")
authmodes = {0: "open", 1: "WEP", 2: "WPA-PSK", 3: "WPA2-PSK", 4: "WPA/WPA2-PSK"}
# authmodes = ["open", "WEP", "WPA-PSK", "WPA2-PSK", "WPA/WPA2-PSK"]
for (ssid, bssid, channel, RSSI, authmode, hidden) in mynet.scan():
print("* {:s}".format(ssid))
print(" - Auth: {} {}".format(authmodes[authmode], '(hidden)' if hidden else ''))
print(" - Channel: {}".format(channel))
print(" - RSSI: {}".format(RSSI))
print(" - BSSID: {:02x}:{:02x}:{:02x}:{:02x}:{:02x}:{:02x}".format(*bssid))
print()
V první části, jak jsme naznačili, načteme knihovnu network
a přepneme modul ESP32 do režimu STA. Oproti předchozím kódům nepotřebujeme žádné přístupové údaje, neboť se k žádné z nalezených sítí nebudeme přihlašovat. V následující části využijeme funkci scan()
, která vrací seznam dostupných sítí. Její výsledky budeme postupně procházet cyklem for
.
for (ssid, bssid, channel, RSSI, authmode, hidden) in mynet.scan():
Jelikož funkce scan()
vrací n-tici parametrů (tzv. tuple) můžeme tyto hodnoty v cyklu rovnou dosadit do n-tice vytvořené z proměnných: (ssid, bssid, channel, RSSI, authmode, hidden)
. To je taková asi trochu zvláštní pythonovská konstrukce. Cyklus tedy při první iteraci načte do této n-tice informace první nalezené sítě, které následně vypíšeme na výstup.
print("* {:s}".format(ssid))
print(" - Auth: {} {}" .format(authmodes[authmode], '(hidden)' if hidden else ''))
print(" - Channel: {}" .format(channel))
print(" - RSSI: {}" .format(RSSI))
print(" - BSSID: {:02x}:{:02x}:{:02x}:{:02x}:{:02x}:{:02x}" .format(*bssid))
V kódu můžeme vidět další z možného formátování výstupu programovacího jazyka Python. Metoda format
v Python se používá k formátování řetězců. Zde je vysvětlení jednotlivých řádků:
print("* {:s}".format(ssid))
Tento řádek vytiskne obsah proměnné ssid
na místo zástupného znaku {:s}
. Přítomost znaků {}
říká, kam se vloží hodnota, která bude vložena do řetězce. Dvojtečka :
označuje začátek specifikátoru formátu, který určuje, jak se hodnota proměnné vloží. Například znak s
je specifikátorem formátu, který říká, že hodnota by měla být formátována jako řetězec.
print(" - Auth: {} {}".format(authmodes[authmode], '(hidden)' if hidden else ''))
Tento řádek má za úkol vytisknout autentifikační režim načtené sítě. Funkce scan()
vrací pouze číslo daného režimu. Pro převod na textovou reprezentaci využíváme strukturu (klíč: hodnota), kterou jsme si vytvořili v proměnné authmodes
(před cyklem **)). Kupříkladu hodnotě 0
odpovídá nezabezpečená síť tj. "open"
. Tato hodnota se vkládá do vypisovaného textu do místa prvního zástupného znaku {}
(zde kupříkladu není stanoven žádný specifikátor formátu – to není povinné!).
**) |
Až si vyzkoušíte funkčnost programu, můžete původní deklaraci proměnné |
Za zmínku v uvedeném řádku však především stojí i podmíněná konstrukce (tzv. ternární operátor), která vkládá text do místa druhého zástupného znaku {}
. Pokud se podíváme na druhý argument metody format
, vidíme if
podmínku uvnitř formátovacího řetězce. Asi nás napadne, že tato konstrukce kontroluje hodnotu proměnné hidden
a v závislosti na její pravdivosti vloží buď řetězec '(hidden)'
, nebo prázdný řetězec ''
. Zvláštní je ale především tvar: '(hidden)' if hidden else ''
, kdy je nejdříve hodnota, která se má vložit, a až pak podmínka jejího vložení. Část else
má tvar, který by se dal předpokládat.
Ostaní řádky výpisu jsou obdobné, zaměříme se už jen na ten poslední:
print(" - BSSID: {:02x}:{:02x}:{:02x}:{:02x}:{:02x}:{:02x}" .format(*bssid))
Tento řádek vytiskne BSSID (Basic Service Set Identifier), což je MAC adresa bezdrátového přístupového bodu, ve formátu šestnáctkových čísel oddělených dvojtečkami. Výraz {:02x}
je zástupný znak pro šestnáctkový formát s minimální šířkou dvou číslic. Konkrétně: hodnota 02
udává minimální šířku 2 číslice, doplněno nulou zleva (pokud je třeba); x
stanovuje šestnáctkovou soustavu. Argument *bssid
metody format
je tzv. „rozbalovací“ operátor, který bere jednotlivé složky bssid
(očekává se, že bssid
je seznam nebo n-tice (tuple) obsahující 6 prvků) a předává je jako argumenty metodě format
.
Po vypsání všech údajů dané Wi-Fi sítě dojde k odřádkování a cyklus for
poktračuje svou další iterací, dokud mu „nedojdou“ položky v seznamu sítí načteném funkcí scan()
. Následujcí obrázek ukazuje test výše uvedeného programu v REPL prostředí Thonny.

Závěrem
V dnešním úvodním článku jsme si ukázali, jak lze na modulu ESP32 pracovat s Wi-Fi v prostředí programovacího jazyka MicroPython. Pochopitelně doposud je výsledek našeho snažení poměrně omezený. Zatím jsme zvládli jen nastavit modul ESP32 jako stanici (STA) a připojit se k domácí Wi-Fi, případně nastavit modul ESP32 jako přístupový bod (AP), který vytváří svou vlastní Wi-Fi pro připojení jiných zařízení.
Upozornili jsme na úskalí některých ukázkových programů, které se v souvislosti s problematikou připojení modulu ESP32 k Wi-Fi v programovacím jazyce MicroPython na internetu objevují. Snad alespoň v tomto čtenář shledal přidanou hodnotu tohoto úvodního tutoriálu.
Nezmínili jsme třetí možnost, tj. možnost současného vytvoření AP a STA. Experimentuchtivý čtenář ale jistě zkusí výše uvedené programové kódy zkombinovat tak, aby dokázal vytvořit dvě struktury (např. mynet_STA
a mynet_AP
), které budou jedna STA a druhá AP. A pokud se mu to nepodaří, nechť příliš nesmutní. Rádi bychom se k tomu vrátili v některém z dalších článků, až v MicroPythonu zvládneme modul ESP32 naprogramovat jako jednoduchý server nebo jako klient. Protože dokud nebudeme dostatečně ovládat jednotlivé dílčí nastavení, a dokud nebudme umět ve Wi-Fi síti dělat něco „kloudného“, nemá cenu se pouštět do kombinace STA+AP.