ESP32 vangiportaal staatiliste ja DHCP IP -seadete konfigureerimiseks: 8 sammu
ESP32 vangiportaal staatiliste ja DHCP IP -seadete konfigureerimiseks: 8 sammu
Anonim
ESP32 vangiportaal staatiliste ja DHCP IP -seadete konfigureerimiseks
ESP32 vangiportaal staatiliste ja DHCP IP -seadete konfigureerimiseks

ESP 32 on integreeritud WiFi ja BLE -ga seade. See on omamoodi õnnistus asjade Interneti projektidele. Andke lihtsalt oma SSID, parool ja IP -konfiguratsioonid ning integreerige asjad pilve. IP -seadete ja kasutaja mandaatide haldamine võib aga kasutajale peavalu valmistada.

Mis saab siis, kui kasutaja soovib muuta WiFi mandaati?

Mis saab siis, kui kasutaja soovib muuta DHCP/staatilise IP seadeid?

ESP32 igakordne vilkumine ei ole usaldusväärne ega ole isegi nende probleemide lahendus. Siin selles juhendatavas me demonstreerime.

  • Kuidas luua suletud portaali.
  • Veebivormi hostimine ESP32 -st.
  • Lugemine ja kirjutamine SPIFFS ESP32 -st.
  • Pehme juurdepääsupunkti loomine ja jaamaga ühenduse loomine

Samm: riistvara ja tarkvara spetsifikatsioon

Riistvara spetsifikatsioon

  • ESP32 WiFi/BLE
  • Juhtmevaba temperatuuri ja niiskuse andur

Tarkvara spetsifikatsioon

Arduino IDE

2. samm: vangistatud portaali loomine

Vangistamisportaali loomine
Vangistamisportaali loomine
Vangistamisportaali loomine
Vangistamisportaali loomine
Vangistamisportaali loomine
Vangistamisportaali loomine

Suletud portaal on veebileht, mis kuvatakse äsja ühendatud kasutajatele t, enne kui neile antakse laiem juurdepääs võrguressurssidele. Siin teenindame kolme veebilehte, et valida DHCP ja staatilise IP -sätete vahel. saame ESP -le IP -aadressi määratleda kahel viisil.

  • DHCP IP-aadress- see on viis seadmele IP-aadressi dünaamiliseks määramiseks. ESP vaikimisi IP -aadress on 192.168.4.1
  • Staatiline IP-aadress- meie võrguseadmele püsiva IP-aadressi määramine. seadmele staatilise IP pakkumiseks peame määratlema IP -aadressi, lüüsi aadressi ja alamvõrgu maski.

Esimesel veebilehel on kasutajal raadionupud DHCP ja staatilise IP seadete vahel valimiseks. Järgmisel veebilehel peame edasiseks jätkamiseks esitama IP -ga seotud teabe.

HTML kood

Veebilehtede HTML -koodi leiate sellest Githubi hoidlast.

HTML -veebilehtede tegemiseks võite kasutada mis tahes IDE -d või tekstiredaktorit, näiteks Sublime või märkmikku ++.

  • Esmalt looge HTML -veebileht, mis sisaldab kahte raadionuppu, et valida DHCP ja staatilise IP -sätete vahel.
  • Nüüd looge vastuse esitamiseks nupp
  • Andke raadionuppudele mõni nimi. ESP veebiserveri klass võtab need nimed argumentidena ja saab nende argumentide abil raadionuppude vastuse
  • Nüüd sisestage vastuse seadmesse saatmiseks nupp „ESITA”.
  • Teistel veebilehtedel on meil tekstiväljad. Andke tekstiväljale nime väärtus ja sisenditüüp ning lisage vastuse saatmiseks nupule „ESITA” saatmisnupp.
  • Looge tekstivälja sisu lähtestamiseks nupp „LÄHTENE“.

// Raadionupu DHCP seadistus

Staatiline IP -seadistus

// Sisestustekstid

// Esita nupp

input [type = "saata"] {background-color: #3498DB; / * Roheline */ ääris: puudub; värv: valge; polster: 15px 48px; text-align: center; teksti kaunistamine: puudub; ekraan: inline-block; fondi suurus: 16 pikslit; }

//Reset-nupp

input [type = "saata"] {background-color: #3498DB; / * Roheline */ ääris: puudub; värv: valge; polster: 15px 48px; text-align: center; teksti kaunistamine: puudub; ekraan: inline-block; fondi suurus: 16 pikslit; }

Samm: veebivastuse saamine veebilehtedelt ESP32 -le

Veebivastuse saamine veebilehtedelt ESP32 -le
Veebivastuse saamine veebilehtedelt ESP32 -le

Veebilehtede teenindamine ESP 32 seadmest on väga lõbus. See võib olla midagi muud kui temperatuuri andmete kuvamine veebilehel, LED -ide muutmine kohandatud veebilehelt või kasutaja WiFi mandaatide salvestamine veebilehe kaudu. Selleks kasutab ESP 32 veebilehtede serverimiseks WebServer klassi.

  • Esmalt looge pordis 80 (HTTP -port) WebServeri klassi eksemplar.
  • Nüüd seadistage ESP -seade softAP -iks. Andke SSID ja parool ning määrake seadmele staatiline IP.
  • Alustage serverit.

// ********* SSID ja juurdepääs AP **************/

const char *ssidAP = "anna SSID"; const char *passAP = "pääsuklahv";

// ********* Staatiline IP -seadistus **************/IPAddress ap_local_IP (192, 168, 1, 77); IPAddress ap_gateway (192, 168, 1, 254); IPAddress ap_subnet (255, 255, 255, 0);

// ********* SoftAP Config **************/

WiFi -režiim (WIFI_AP);

Serial.println (WiFi.softAP (ssidAP, passAP)? "Soft-AP setup": "Ühendamine ebaõnnestus");

viivitus (100); Serial.println (WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet)? "Pehme AP seadistamine": "Viga konfiguratsioonis"); Serial.println (WiFi.softAPIP ());

// käivita server

server.begin ();

  • Looge ja esitage URL, kasutades erinevaid tagasihelistamisi.
  • ja käsitseda klienti asünkroonselt, kasutades käepidet Client.

server.on ("/", handleRoot);

server.on ("/dhcp", handleDHCP); server.on ("/staatiline", käepideStatic); // käsitseda vastuseid server.handleClient ();

  • Veebilehtedele pääsemiseks. Ühendage äsja loodud AP -ga, mis on loetletud teie WiFi -võrkudes. Nüüd minge brauserisse, sisestage viimases etapis teie konfigureeritud IP ja avage veebileht.
  • Veebiserveri klass võtab argumentidena sisenditele antud nime ('tekst', 'nupp', 'raadionupp' jne). See salvestab nende sisendite vastused argumentidena ja saame väärtused hankida või neid kontrollida, kasutades args, arg, hasArg meetodeid.

kui (server.args ()> 0) {for (int i = 0; i <= server.args (); i ++) {

Serial.println (String (server.argName (i)) + '\ t' + String (server.arg (i)));

}

if (server.hasArg ("ipv4static") && server.hasArg ("lüüs") && server.hasArg ("alamvõrk")) {staticSet (); } else if (server.arg ("ipv4")! = "") {dhcpSetManual (); } else {dhcpSetDefault (); }

Samm: staatiline IP -seadistamine

Staatiline IP -konfiguratsioon
Staatiline IP -konfiguratsioon

Siiani oleme aru saanud, kuidas AP -ga ühenduse luua ja kuidas saada väärtusi veebilehe sisestusväljadelt

Selles etapis konfigureerime staatilise IP

  • Valige staatiline IP -seade ja klõpsake nuppu Esita. Teid suunatakse järgmisele lehele.
  • Järgmisel lehel sisestage staatiline IP -aadress, lüüsi aadress ja alamvõrgu mask. Seda lehte näidatakse aadressil "/staatiline", mida käsitletakse käepideme staatilise tagasihelistamismeetodi abil.
  • Tekstiväljade väärtuse hankimiseks kasutage meetodit server.arg ().

String ipv4static = String (server.arg ("ipv4static"));

Stringi lüüs = String (server.arg ("gateway")); Stringi alamvõrk = String (server.arg ("alamvõrk"));

  • Nüüd on need väärtused järjestatud JSON -vormingusse.
  • Siis kirjutame JSON -i SPIFFS -i.

root ["statickey"] = "staticSet";

juur ["staticIP"] = ipv4static;

root ["gateway"] = lüüs;

root ["alamvõrk"] = alamvõrk;

Fail fileToWrite = SPIFFS.open ("/ip_set.txt", FILE_WRITE);

if (root.printTo (fileToWrite)) {

Serial.println ("-Fail kirjutatud"); }

  • See konfiguratsioon salvestatakse SPIFFS -i. Hiljem loetakse need väärtused SPIFFS -ist.
  • Seejärel parsitakse staatilised IP -väärtused JSON -ist.

Failifail = SPIFFS.open ("/ip_set.txt", "r");

samas (file.available ()) {

debugLogData += char (file.read ()); }

kui (debugLogData.length ()> 5) {

JsonObject & readRoot = jsonBuffer.parseObject (debugLogData);

if (readRoot.containsKey ("statickey")) {

String ipStaticValue = readRoot ["staticIP"];

String gatewayValue = readRoot ["gateway"];

String alamvõrkVäärtus = readRoot ["alamvõrk"];

Samm: DHCP seaded

DHCP seaded
DHCP seaded

Selles etapis konfigureerime DHCP seaded

Valige indekslehelt DHCP seaded ja klõpsake nuppu "Esita"

  • Teid suunatakse järgmisele lehele. Järgmisel lehel sisestage IP -aadress või valige vali vaikimisi ja klõpsake vastuse saatmiseks nuppu "Esita". Seda lehte serveeritakse aadressil "/dhcp", mida haldab handleDHCP tagasihelistamismeetod. Tekstiväljade väärtuse hankimiseks kasutage meetodit server.arg (). Kui klõpsate, valige vaikimisi märkeruut. 192.168.4.1 IP antakse seadmele.
  • Nüüd on need väärtused järjestatud JSON -vormingusse.
  • Siis kirjutame JSON -i SPIFFS -i.

JsonObject & root = jsonBuffer.createObject ();

root ["dhcpManual"] = "dhcpManual";

juur ["dhcpIP"] = "192.168.4.1";

Fail fileToWrite = SPIFFS.open ("/ip_set.txt", FILE_WRITE);

if (root.printTo (fileToWrite)) {

Serial.println ("-Fail kirjutatud"); }

  • See konfiguratsioon salvestatakse SPIFFS -i. Hiljem loetakse need väärtused SPIFFS -ist.
  • Seejärel parsitakse dhcp IP väärtused JSON -ist.

Failifail = SPIFFS.open ("/ip_set.txt", "r"); samas (file.available ()) {debugLogData += char (file.read ()); } if (debugLogData.length ()> 5) {JsonObject & readRoot = jsonBuffer.parseObject (debugLogData);

if (readRoot.containsKey ("dhcpDefault")) {

String ipdhcpValue = readRoot ["dhcpIP"];

Serial.println (ipdhcpValue);

dhcpAPConfig ();}

Samm: WiFi mandaatide salvestamine

WiFi mandaatide salvestamine
WiFi mandaatide salvestamine

Praeguseks oleme valinud IP konfiguratsiooni. Nüüd peame salvestama kasutaja wifi mandaadi. Selle olukorra lahendamiseks. Oleme seda protseduuri järginud.

  • Nüüd on meil seadme AP seadistus DHCP või staatilise IP konfiguratsioonis, mille olime valinud viimastes sammudes mainitud suletud portaalist.
  • Oletame, et oleme valinud staatilise IP konfiguratsiooni.
  • Seadistame sellel IP -l softAP -i.
  • Pärast väärtuste lugemist SPIFFS -ist ja nende väärtuste parsimist JSON -ist. Seadistame softAP sellel IP -l.
  • Teisendage IP -string baitideks.

bait ip [4];

parseBytes (ipv4Arr, '.', ip, 4, 10);

ip0 = (uint8_t) ip [0];

ip1 = (uint8_t) ip [1];

ip2 = (uint8_t) ip [2];

ip3 = (uint8_t) ip [3];

IPAddress ap_local (ip0, ip1, ip2, ip3);

// *************** Sõelub baite stringist ***************** //

void parseBytes (const char* str, char sep, byte* bytes, int maxBytes, int base) {

jaoks (int i = 0; i <maxBytes; i ++) {

baiti = strtoul (str, NULL, alus);

str = strchr (str, sep);

kui (str == NULL || *str == '\ 0') {

murda;

}

str ++;

}}

Nüüd konfigureerime sellel IP -l softAP -i

Serial.println (WiFi.softAPConfig (ap_localWeb_IP, ap_gate, ap_net)? "SoftAP seadistamine": "pole ühendatud"); Serial.println (WiFi.softAPIP ());

  • Nüüd käivitage veebiserver ja serveerige sellel IP -l veebilehte. Kasutaja WiFi -mandaadi sisestamiseks.
  • Veebileht koosneb kahest tekstiväljast SSID ja parooli sisestamiseks.
  • handleStaticForm on tagasihelistamismeetod, mis teenindab veebilehte.
  • server.handleClient () hoolitseb päringute ja veebilehe vastuste eest.

server.begin ();

server.on ("/", handleStaticForm);

server.onNotFound (handleNotFound);

STIMER = millis ();

samas (millis ()-STimer <= SIvaheaeg) {

server.handleClient (); }

HTML -vorming salvestatakse SPIFFS -i. kontrollime sobivaid argumente, kasutades server.arg (). SSID ja parooli väärtuse saamiseks

Failifail = SPIFFS.open ("/WiFi.html", "r");

server.streamFile (fail, "tekst/html");

file.close ();

Samm: lugege ja kirjutage SPIFFS -ist

SPIFFS

Serial Peripheral Interface Flash File System ehk lühidalt SPIFFS. See on kerge failisüsteem SPI välklambiga mikrokontrolleritele. ESP32 sisseehitatud välklambil on teie veebilehtede jaoks palju ruumi. Oleme oma veebilehe ka Flash -süsteemi salvestanud. Andmete üleslaadimiseks spiffidesse peame järgima mõningaid samme

Laadige alla ESP 32 SPIFFS andmete üleslaadimise tööriist:

  • Looge oma Arduino visandiraamatu kataloogis tööriistade kataloog, kui seda veel pole
  • Pakkige tööriist tööriistade kataloogi (tee näeb välja /Arduino/tools/ESP32FS/tool/esp32fs.jar)
  • Taaskäivitage Arduino IDE
  • Avage visand (või looge uus ja salvestage see)
  • Minge visandikataloogi (valige Visand> Kuva visandikaust)
  • Looge seal failisüsteemis kataloog nimega andmed ja kõik failid, mida soovite. Laadisime üles oma HTML -lehe nimega webform.html
  • Veenduge, et olete valinud tahvli, pordi ja suletud jadamonitori
  • Valige Tööriistad> ESP8266 Sketch Data Upload. See peaks alustama failide üleslaadimist välkfailisüsteemi ESP8266. Kui see on tehtud, kuvatakse IDE olekuribal teade SPIFFS Image Uploaded.

tühi käepideDHCP () {Failifail = SPIFFS.open ("/page_dhcp.html", "r"); server.streamFile (fail, "tekst/html"); file.close ();}

void handleStatic () {

Failifail = SPIFFS.open ("/page_static.html", "r"); server.streamFile (fail, "tekst/html"); file.close ();}

SPIFFS -ile kirjutamine

Siin kirjutame salvestatud sätte SPIFFS -i, et kasutajad ei peaks seadme lähtestamisel neid samme tegema.

  • Teisendage veebilehelt saadud argumendid JSON -objektideks
  • Kirjutage see JSON SPIFFS -i salvestatud.txt -faili.

String ipv4static = String (server.arg ("ipv4static"));

Stringi lüüs = String (server.arg ("gateway")); Stringi alamvõrk = String (server.arg ("alamvõrk")); root ["statickey"] = "staticSet"; juur ["staticIP"] = ipv4static; root ["gateway"] = lüüs; juur ["alamvõrk"] = alamvõrk; String JSONStatic; char JSON [120]; root.printTo (jada); root.prettyPrintTo (JSONStatic); JSONStatic.toCharArray (JSON, sizeof (JSONStatic) +2); Fail fileToWrite = SPIFFS.open ("/ip_set.txt", FILE_WRITE); if (! fileToWrite) {Serial.println ("Viga SPIFFS -i avamisel"); } if (fileToWrite.print (JSON)) {Serial.println ("-Fail kirjutatud"); } else {Serial.println ("-Viga faili kirjutamisel"); } fileToWrite.close ();

8. samm: üldine kood

HTML -i ja ESP32 ülekoodi leiate sellest Githubi hoidlast