Zápisník experimentátora
Hierarchy: ESP8266
Dnes se budeme věnovat zajímavé knihovně, která umožňuje ukládat heslo k WiFi. Díky tomu můžete používat jeden program pro všechny své ESP8266. V něm nemáte žádné heslo. Teprve když své ESP8266 přinesete na místo určení, zapnete ho a zkonfigurujete ho pomocí mobilního telefonu (nebo notebooku).
Zní to kouzelně, ale není v tom žádná magie. Pouze vtipné využití možností ESP8266. To umí podle potřeby vytvářet přístupové WiFi body a umí vytvořit i HTTP server a DNS server. Pomocí těchto nástrojů umí uživateli zobrazit konfigurační stránku a údaje z ní uložit do své flash paměti. Při následujícím spuštění se pokouší tyto údaje využít k opětovnému připojení. Pokud se to nepodaří, můžete WiFi připojení opět nastavit.
Já jsem využil NodeMCU (v. 0.9), ale stejné výsledky byste dosáhli s libovolnou deskou, na níž je ESP8266.
Knihovnu WiFiManager si můžete nainstalovat pomocí správce knihoven. V době psaní článku byla aktuální verze knihovny 0.12. Spolu s knihovnou se nainstaluje několik vzorových příkladů. Je vhodné, abyste se s příklady seznámili.
Při používání knihovny by vás nemělo překvapit, pokud jste se předtím připojili k WiFi na svém ESP8266, že se knihovna automaticky připojí k Internetu, aniž byste něco nastavovali. Knihovna dokáže využít vaše poslední připojení a použije tyto údaje.
Začněme s příkladem, který zobrazí konfigurační portál. Nebudeme se v tomto příkladu zabývat s bezpečností a otevřeme si portál bez hesla. Tento příklad použijeme pouze na to, abychom viděli, jak přesně konfigurace probíhá.
#include <ESP8266WiFi.h>
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include <WiFiManager.h>
void setup() {
Serial.begin(115200);
WiFiManager wifiManager;
wifiManager.startConfigPortal("ArduinoAP");
//if you get here you have connected to the WiFi
Serial.println("connected...");
}
void loop() {
}
Po nahrání programu do ESP8266 se automaticky vytvoří připojovací bod WiFi se jménem ArduinoAP
. Použijte svůj mobil a připojte se k tomuto bodu. Potom v mobile otevřete prohlížeč Internetu a otevřete v něm libovolnou stránku. Stačí napsat libovolné slovo a ESP8266 vás díky vytvořenému DNS serveru automaticky přesměruje na svou úvodní stránku.
Vyberete si první volbu a zobrazí se seznam dostupných WiFi. Vyberete některý z nich, vložíte přístupové heslo a uložíte konfiguraci. Od této chvíle se bude vědět ESP8266 automaticky připojit. Na to je ale vhodnější použít některý z následujících programů.
Jako nejjednodušší způsob připojení se uvádí následující příklad. Automaticky se pokusí připojit a pokud se to nepodaří, vytvoří konfigurační portál.
#include <ESP8266WiFi.h>
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include <WiFiManager.h>
void setup() {
Serial.begin(115200);
WiFiManager wifiManager;
wifiManager.autoConnect("ArduinoAP");
//if you get here you have connected to the WiFi
Serial.println("connected...");
}
void loop() {
}
Takový způsob použití se mi strašně líbí. Konfigurační portál se objeví pouze po stisknutí tlačítka. Do ukázky jsem přidal i použití přístupového hesla.
#include <ESP8266WiFi.h>
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include <WiFiManager.h>
#define TRIGGER_PIN 0
void setup() {
Serial.begin(115200);
pinMode(TRIGGER_PIN, INPUT_PULLUP);
}
void loop() {
if(digitalRead(TRIGGER_PIN) == LOW) {
WiFiManager wifiManager;
if(!wifiManager.startConfigPortal("ArduinoAP","secret_password") {
Serial.println("failed to connect and hit timeout");
delay(3000);
//reset and try again
ESP.reset();
delay(5000);
}
Serial.println("connected...");
}
}
Zdrojový kód se nachází na serveru GitHub.
23.07.2017