Práca s WiFi modulom

scan WiFi sietí, pripojenie k WiFi, vytvorenie prístupového bodu

Práca so sieťou na doske Raspberry Pi Pico W/H

Ak je doska s mikrokontrolérom vybavená sieťovým modulom, môžeme ju využiť na bezdrôtovú komunikáciu. Dosky Raspberry Pi Pico 1 a 2 W, rovnako ako mikrokontroléry z rodiny ESP, majú integrovaný Wi‑Fi modul, takže umožňujú pripojenie do siete bez káblov.

Mikrokontrolér môže fungovať nielen v režime klienta, ale aj ako prístupový bod (Access Point). V tomto režime môže poskytovať rôzne sieťové služby pre ostatné zariadenia. Môže napríklad slúžiť ako webový server s používateľským rozhraním pre ovládanie pripojených akčných členov alebo poskytovať jednoduchú stránku s údajmi zo senzorov.

Modul network

Pre prácu so sieťou mámem v jazyku MicroPython k dispozícii modul network, pokiaľ doska, na ktorej je mikrokontrolér osadený, obsahuje sieťový modul. Pred začiatkom práce ho teda importneme:

>>> import network

Pomocou funkcie hostname() je možné nastaviť alebo získať názov hostiteľa, ktorý bude zariadenie identifikovať v sieti. Tento názov sa použije pre všetky sieťové rozhrania:

>>> network.hostname('thsensor')
>>> network.hostname()
'thsensor'

Vytvorenie WiFi klienta

Najprv vytvoríme WiFi sieťové rozhranie, ktoré bude pracovať v režime pracovnej stanice (z angl. station interface) a aktivujeme ho:

>>> wlan = network.WLAN(network.STA_IF)
>>> wlan.active(True)

Po vytvorení môžeme urobiť sken WiFi sietí, ktorú sú v dosahu:

>>> wlan.scan()

Funkcia do_connect()

Na stránkach dokumentácie jazyka MicroPython môžete nájsť pomocnú funkciu do_conenct(). Pre vlastné použitie si ju môžete rozlične upraviť, ako napr. takto:

def do_connect(ssid, password):
    import network
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    if not wlan.isconnected():
        print('connecting to network...')
        wlan.connect(ssid, password)
        while not wlan.isconnected():
            pass
    print('network config:', wlan.ifconfig())

Vytvorenie prístupového bodu

V prípade, že chceme vytvoriť prístupový bod, vytvoríme objekt sieťového rozhrania s parametrom network.AP_IF:

iface = network.WLAN(network.AP_IF)

Následne nastavíme potrebné vlastnosti rozhrania a teda prístupového bodu podľa potreby pomocou metódy .config(). Metóda obsahuje niekoľko voliteľných parametrov. Ich zoznam závisí od typu sieťovej technológie, ovládača a portu MicroPythonu. Pre viac konkrétne možnosti sa treba pozrieť do dokumentácie modulu network, prípadne do dokumentácie konkrétnej dosky, napr. Pico W a Pico 2 W. Tým najpodstatnejším nastavením je však určite názov vytváranej WiFi siete a heslo pre prístup k nej. To je možné nastaviť pomocou parametrov ssid a key:

iface.config(ssid='valhala', key='WifiOfTheGods')

Nakoniec už len sieťové rozhranie aktivujeme:

iface.active(True)

Po pripojení do vytvorenej WiFi siete klientom zavolaním

iface.ifconfig()

sa zobrazia nastavenia sieťového rozhrania. Jeho predvolená IP adresa bude 192.168.4.1 a klient dostane IP adresu 192.168.4.16. Tieto predvolené hodnoty je však samozrejme možné zmeniť.

Webové rozhranie

Odpojenie zariadenia

Po skončení komunikácie je dobré sa odpojiť od WiFi siete. To je možné dosiahnuť dvoma metódami:

Zistenie stavu

Pomocou metódy sieťového rozhrania .status() je možné zistiť stav sieťového spojenie. V prípade, že sa jedná o WiFi rozhranie, metóda vráti jednu z nasledujúcich hodnôt:

Ďalšie zdroje

  1. MicroPython libraries: network - network configuration - dokumentácia k modulu network

  2. class WLAN – control built-in WiFi interfaces