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 networkPomocou 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()- Výsledkom bude zoznam sietí s informáciami ako: - SSID siete
- MAC adresa rozhrania
- sila signálu
- číslo kanála
 
- Ak sa teda chceme k niektorej z nich pripojiť, potrebujem poznať SSID siete a heslo pre prístup k nej. Samotné pripojenie vykonáme pomocou volania metódy - .connect()nad objektom- wlan:- >>> wlan.connect('SSID', 'password')
- Po (ne)úspešnom pripojení môžeme overiť stav pripojenia volaním metódy - .isconnected(), ktorá vráti hodnotu- True, ak sme sa úspešne pripojili alebo hodnotu- False, ak nie. Nastavenie pripojenia vieme overiť volaním metódy- .ipconfig():- >>> wlan.isconnected() True >>> wlan.ipconfig('addr4') ('192.168.1.128', '255.255.255.0')
- Len pre úplnosť je možné dodať, že MAC adresu zariadenia môžeme získať takto: - >>> wlan.config('mac') b'`\x01\x94\x1b\xf7\xb1'
- Od tohto momentu je mikrokontrolér pripojený a môžeme s ním vykonávať sieťové operácie. 
Upozornenie
V staršej dokumentácii sa dá stretnúť aj s metódou
.ifconfig(), ktorá pracuje podobne, ako metóda
.ipconfig(). V dokumentácii je však označená ako zastaraná
a nie je odporúčané ju ďalej používať.
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)Poznámka
Zariadenie môžeme samozrejme aktivovať hneď po jeho vytvorení. V tom
prípade sa ale vytvorí WiFi sieť s predvolenými parametrami,
ako napr. SSID s hodnotou pico123.
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
- použiť treťostranové knižnice. zoznam je na stránke Awesome Micropython. odporúčam použiť niečo serióznejšie ako napr. MicroDot
Odpojenie zariadenia
Po skončení komunikácie je dobré sa odpojiť od WiFi siete. To je možné dosiahnuť dvoma metódami:
- .disconnect()- Odpojí sa od aktuálne pripojenej bezdrôtovej siete.
- .deinit()- Okrem toho, že dôjde k odpojeniu od aktuálne pripojenej bezdrôtovej siete, sa WiFi modul ešte aj vypne. Tým dôjde k zníženiu spotreby.
Ďalšie zdroje
- MicroPython libraries: network- network configuration - dokumentácia k modulunetwork