ESP8266 – Wifi konfigurace trochu jinak

espwifisetupPo nástupu Arduina do oblasti WiFi modulků s ESP8266 se objevila záplava projektů, které je možné doma snadno realizovat. Drtivá většina z nich ale není příliš uživatelsky přívětivá co se týče konfigurace bezdrátového připojení – pokud si prohlédnete zdrojový .ino soubor a někde v záhlaví objevíte řádky ve stylu

tak to znamená, že pro správnou funkci je třeba ve zdrojovém kódu tyto parametry upravit, program přeložit a takto upravený kód nahrát do ESP. Tento způsob konfigurace se mi už z principu příčí a i když se již objevují snahy o elegantnější řešení (například http://www.esp8266.com/viewtopic.php?f=29&t=2520) tak to stále není to, co bych očekával.
Rád bych tedy představil moji knihovnu, do značné míry inspirovanou odkazem výše uvedeným, ale také rovněž podstatným způsobem vylepšenou.
Funguje následujícím způsobem:
Po spuštění programu v ESP knihovna ověří, zda již byla konfigurovaná, nebo zda není vynucená konfigurace (například stisknutím vyhrazeného tlačítka při zapínání napájení).
Pokud je třeba konfigurovat, tak se spustí Wifi v režimu otevřeného AP s SSID „ESPPBSetup„.

ssidlist

Rovněž běží vnitřní DHCP server, takže je možné se k modulu připojit například pomocí
chytrého telefonu. Do prohlížeče zadáme adresu brány (je nastavená na 192.168.4.1) a na webovém formuláři se zobrazí seznam okolních Wifi sítí, síla jejich signálu a indikátor,
zda je síť zabezpečená, nebo ne.

apselect

Požadovanou síť vybereme buď kliknutím na odpovídající SSID, nebo ručně zapsáním do kolonky SSID. Do vedlejší kolonky vyplníme heslo. Zatržítko ‚AP mode‚ slouží pro zvláštní případ konfigurace – zjistil jsem totiž, že pokud přepneme ESP do režimu AP, tak je možné vytvořit mikrosíť až do asi osmi zařízení s tím, že ESP, který slouží jako AP rovněž zabezpečuje přiřazení adres pomocí DHCP. Nepotřebujeme-li tedy komunikaci na internet, ale stačí nám jen lokální síť senzorů a aktorů, lze využít tento režim.
Konfigurace je ukládána formou struktury do simulované EEPROM paměti ESP8266. Modul s EEPROM pracuje vnitřně zcela autonomně, pouze předpokládá, že EEPROM již byla inicializovaná v aplikaci voláním EEPROM.begin(x) a stačí mu tak pouze zadat počáteční adresu uložení.
Další zajímavostí je externí objekt webového serveru – k tomuto řešení mě vedla snaha o úsporu paměti RAM, takže předpokládám, že objekt webového serveru je v celém projektu jen jeden a je sdílený mezi konfigurační knihovnou a aplikací.
Pokud při spouštění nebyl zadaný požadavek na konfiguraci a modul již nakonfigurovaný byl, tak se buď spustí AP, nebo se pokusí připojit k nastavené síti. Pokud se připojení nepodaří
spouští se automaticky konfigurační režim.
Knihovna byla psána se zřetelem na co nejmenší zatížení datové paměti, ale je možné, že se mi to ne všude podařilo vyřešit optimálně.
Jako bonus jsou exportovány funkce, umožňující čtení a zápis řetězce z/do EEPROM na požadovanou adresu a o maximální zadané délce.
Tradičně je součástí archívu i přiklad použití.

POZOR, POZOR!!! K dispozici je novější verze knihovny, umístěná zde.

WiFiConfig
WiFiConfig
WiFiConfig.zip
0.0 B
841 Downloads
Details

One thought on “ESP8266 – Wifi konfigurace trochu jinak”

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *