ESP32 / ESP8266 MicroPython: Automatické připojení k WiFi
- March 17 2019
- ESP32, ESP8266, NodeMCU , Wemos, RTLDuino...
- 1833x Přečteno
Ú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.