ESP32 / ESP8266 MicroPython: Automatické připojení k WiFi

Níže uvedený článek je článek přeložený ze stránek dfrobot.com.

Úvod:

Cílem tohoto návodu je vysvětlit, jak je možné nastavit automatické připojení k WiFi bez nutnosti zadávat stále dokola všechny příkazy. Odpovědi jednotlivých příkazů se mohou mírně lišit v závislosti na použitém čipu. Kód je ale funkční jak na ESP32 tak ESP8266.

Zkusíme dva způsoby. V prvním naimportujeme funkci z modulu a použijeme jí vždy, když se chceme připojit. V druhém způsobu nastavíme automatické připojení po startu.

Všechny články o MicroPython a ESP32/ESP8266 najdete na https://chiptron.cz/articles.php?cat_id=23

Tento článek vyžaduje funkční zařízení se zprovozněným MicroPythonem (viz předchozí návody). Pro připojení k WiFi manuálně, využijeme příkazy z tohoto návodu.

Připojení při zavolání funkce:

Tento způsob připojení má výhodu, že k připojení dojde až v okamžiku, kdy to skutečně potřebujeme. Nejprve si nadefinujeme funkci connect, která bude obsahovat příkazy k připojení.
def connect():

# sem napíšeme zbytek kódu

Následně provedeme import modulu network, který je potřebný pro práci s WiFi. Také si uložíme naše přístupové údaje do dvou proměnných. Na základě těchto údajů se zkusíme připojit a zkontrolovat stav připojení.
import network

ssid = „názevWiFi“

password = „hesloKWiFi“

station = network.WLAN(network.STA_IF)

if station.isconnected() == True:

print(„Already connected“)

return

Pokud připojeni nejsme, tak provedeme samotné připojení pomocí zadaných přihlašovacích údajů.
station.active(True)

station.connect(ssid, password)

Jelikož může připojení chvíli trvat, tak v kódu počkáme, dokud se zařízení skutečně nepřipojí. Do čekací smyčky je nutné dát příkaz pass, který se používá, pokud je smyčka prázdná. Můžete si také všimnout špatného způsobu čekání pomocí nekonečné smyčky. Pokud tedy budou například špatné přihlašovací údaje, tak to bude donekonečna čekat a nikdy se to nepřipojí. Pro jednoduchost ale řekněme, že nám to nevadí.
while station.isconnected() == False:

pass

print(„Connection successful“)

print(station.ifconfig())

Celý kód bude tedy vypadat následovně:

def connect():

import network

ssid = „názevWiFi“

password = „hesloKWiFi“

station = network.WLAN(network.STA_IF)

if station.isconnected() == True:

print(„Already connected“)

return

station.active(True)

station.connect(ssid, password)

while station.isconnected() == False:

pass

print(„Connection successful“)

print(station.ifconfig())

Pro nahrání kódu otevřete příkazovou řádku, jděte do adresáře, kde jste si script uložili a spusťte následující příkaz (zaměňte COM port a název scriptu za vámi použitý):
ampy –port COM5 put ConnectWiFi.py

Pro kontrolu, že se script skutečně nahrál do zařízení, se do zařízení připojíme (například pomocí Putty) a spustíme následující příkazy:
import os

os.listdir()

Obrázek 1 – Zobrazení souborů

Nyní si jednoduše naimportujeme modul a zavoláme jeho funkci.

import ConnectWiFi
ConnectWiFi.connect()

Obrázek 2 – Zkouška připojení

Jen pro potvrzení naší pojistky proti opětovnému připojení zavoláme poslední příkaz znovu. Mělo by nám to odpovědět, že je zařízení již připojeno.

Obrázek 3 – Zkouška ochrany

Automatické připojení po startu:

Jak je možné si všimnout v předchozí části, ve složce existuje i soubor boot.py. Tento script se spustí vždy při startu systému a již obsahuje kód, který bychom neměli odstraňovat. Můžeme k němu ale něco přidat.

Můžeme ale využít ještě jiného způsobu. V závěru scriptu boot.py se zkusí spustit script main.py. Standardně není vytvořen, ale my si ho můžeme ručně vytvořit. Vytvořte tedy soubor s názvem main.py (pozor, zde je důležité mít název shodný s tímto návodem). Vložte do něj tyto dva řádky:
import ConnectWiFi

ConnectWiFi.connect()

Soubor nahrajeme na desku pomocí následujícího příkazu (zaměňte COM port za vámi použitý):
ampy –port COM5 put ConnectWiFi.py

Pomocí příkazu os.listdir() si můžeme ověřit, zda byl soubor nahrán. Pro kontrolu funkčnosti stačí resetovat napájení desky. Zařízení by se mělo restartovat a automaticky připojit k WiFi.

Obrázek 4 – Výpis po startu

Pokud zkusíme zařízení znovu připojit ručně, měly bychom dostat chybovou hlášku, že je zařízení již připojeno.

Obrázek 5 – Kontrola připojení

Originální článek je dostupný zde.

Sdílejte článek:

Související články

laskakit.cz LILYGO® T-HMI ESP32-S3 2.8 ST7789V IPS WiFi Modul LILYGO® T-HMI je multifunkční modul navržený pro různé HMI (Human-Machine Interface) aplikace.

Toto je první díl ze tří – úvodního kurzu Micropython na ESP32.

– Změny v Micropythonu si vynucují změnu octopus() – Opakování a podrobnější doplnění – LED – nejjednodušší knihovna pro testování – web_server() – Webový editor IDE (integrated development environment) – Některé další vychytávky – Drobné projekty – examples V minulých…

I když jsou prázdniny, distributoři stále makají a naskladňují jednu zajímavou novinku vedle druhé.

– ROBOTboard (HW) – Octopus open source knihovny (FW) – Nastavení zařízení a periferií – ds: device setting > pinouts – ios: input-output setup – Upgrade systému – Displeje – Tlačítka – Mechatronika – Čidla a vstupy – Shrnutí V…

Plánujete vylepšit zařízení novějším Wi-Fi modulem s ESP32-C3 namísto staršího a slabšího modulu s ESP8266? Ač je ESP32-C3F (s ESP32-C3) rozměrově kompatibilní s ESP12F (s ESP8266), záměna není tak jednoduchá – prostá výměna modulů.