Mundarija:
- 1 -qadam: Uskuna va dasturiy ta'minot spetsifikatsiyasi
- 2 -qadam: asirlik portalini yaratish
- 3 -qadam: Veb -sahifalardan ESP32 -ga veb -javobni olish
- 4 -qadam: IP -ning statik konfiguratsiyasi
- 5 -qadam: DHCP sozlamalari
- 6 -qadam: WiFi hisob ma'lumotlarini saqlash
- 7 -qadam: SPIFFS -dan o'qish va yozish
- 8 -qadam: Umumiy kod
Video: Statik va DHCP IP sozlamalarini sozlash uchun ESP32 qo'lga olish portali: 8 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:25
ESP 32 - bu o'rnatilgan WiFi va BLE. Bu IoT loyihalari uchun o'ziga xos sovg'adir. Faqat SSID, parol va IP konfiguratsiyasini bering va narsalarni bulutga birlashtiring. Ammo IP sozlamalari va foydalanuvchi ma'lumotlarini boshqarish foydalanuvchi uchun bosh og'rig'i bo'lishi mumkin.
Agar foydalanuvchi WiFi hisob ma'lumotlarini o'zgartirmoqchi bo'lsa nima bo'ladi?
Agar foydalanuvchi DHCP/Statik IP sozlamalarini o'zgartirishni xohlasa nima bo'ladi?
ESP32 -ning har doim yonib -o'chishi ishonchli emas va hatto bu muammolarni hal qilmaydi. Bu erda biz ko'rsatma beramiz.
- Qanday qilib portativ portal yaratish kerak.
- ESP32 veb -shaklini joylashtirish.
- SPIFFS ESP32 dan o'qish va yozish.
- Yumshoq kirish nuqtasini yaratish va stansiyaga ulanish
1 -qadam: Uskuna va dasturiy ta'minot spetsifikatsiyasi
Uskuna texnik xususiyatlari
- ESP32 WiFi/BLE
- Simsiz harorat va namlik sensori
Dastur xususiyatlari
Arduino IDE
2 -qadam: asirlik portalini yaratish
Qo'lga olinadigan portal - bu yangi ulangan foydalanuvchilarga tarmoq resurslariga kengroq kirishdan oldin ko'rsatiladigan veb -sahifadir. Bu erda biz DHCP va Statik IP sozlamalarini tanlash uchun uchta veb -sahifaga xizmat ko'rsatamiz. biz ESP uchun IP -manzilni ikki xil aniqlashimiz mumkin.
- DHCP IP-manzili- bu qurilmaga IP-manzilni dinamik tarzda belgilash usuli. ESP standart IP -manzili 192.168.4.1
- Statik IP-manzil- bizning tarmoq qurilmamizga doimiy IP manzilini tayinlash. Statik IP -ni qurilmaga etkazib berish uchun biz IP -manzil, shlyuz manzili va pastki tarmoq niqobini aniqlashimiz kerak.
Birinchi veb -sahifada DHCP va Statik IP sozlamalarini tanlash uchun foydalanuvchiga radio tugmalari beriladi. Keyingi veb -sahifada biz IP -ga tegishli ma'lumotlarni taqdim etishimiz kerak.
HTML kodi
Veb -sahifalar uchun HTML kodni ushbu Github omboridan topishingiz mumkin.
HTML veb -sahifalarini yaratish uchun siz Sublime yoki notepad ++ kabi har qanday IDE yoki matn muharriridan foydalanishingiz mumkin.
- Birinchidan, DHCP va Statik IP sozlamalarini tanlash uchun ikkita radio tugmachali HTML veb -sahifasini yarating.
- Endi javobni yuborish tugmachasini yarating
- Radio tugmalariga nom bering. ESP veb -server sinfi bu nomlarni argument sifatida qabul qiladi va shu argumentlar yordamida radio tugmalarining javobini oladi
- Endi javobni qurilmaga yuborish uchun "YUBORISH" tugmasini bosing.
- Boshqa veb -sahifalarda bizda matnli qutilar mavjud. Matn maydoniga ismning qiymati va kiritish turini bering va javobni "YUBORISH" ga yuborish tugmasini qo'shing.
- Matn maydonining mazmunini tiklash uchun "RESET" tugmasini yarating.
// DHCP sozlamalari radio tugmasi
Statik IP -ni sozlash
// matn kiritish qutilari
// Yuborish tugmasi
kiritish [type = "submit"] {fon-rang: #3498DB; / * Yashil */ chegara: yo'q; rangi: oq; to'ldirish: 15 piksel 48 piksel; matnni tekislash: markaz; matnni bezatish: yo'q; displey: ichki blok; shrift o'lchami: 16 piksel; }
// Qayta tiklash tugmasi
kiritish [type = "submit"] {fon-rang: #3498DB; / * Yashil */ chegara: yo'q; rangi: oq; to'ldirish: 15 piksel 48 piksel; matnni tekislash: markaz; matnni bezatish: yo'q; displey: ichki blok; shrift o'lchami: 16 piksel; }
3 -qadam: Veb -sahifalardan ESP32 -ga veb -javobni olish
ESP 32 qurilmasidan veb -sahifalarga xizmat ko'rsatish juda qiziqarli. Bu veb -sahifadagi harorat ma'lumotlarini ko'rsatish, maxsus veb -sahifadan svetoforni burish yoki foydalanuvchi WiFi ma'lumotlarini veb -sahifa orqali saqlash kabi har qanday narsa bo'lishi mumkin. Shu maqsadda, ESP 32 veb -sahifalarini serverga o'tkazish uchun WebServer Class -dan foydalanadi.
- Birinchidan, 80 -portda (HTTP porti) WebServer sinfining namunasini yarating.
- Endi ESP qurilmasini softAP sifatida o'rnating. SSID va parolni kiriting va qurilmaga statik IP tayinlang.
- Serverni ishga tushiring.
// ********* SSID va AP uchun Pass **************/
const char *ssidAP = "SSID bering"; const char *passAP = "o'tish kaliti";
// ********* Statik IP konfiguratsiyasi **************/IPAddress ap_local_IP (192, 168, 1, 77); IPAddress ap_gateway (192, 168, 1, 254); IPAddress ap_subnet (255, 255, 255, 0);
// ********* SoftAP konfiguratsiyasi **************/
WiFi rejimi (WIFI_AP);
Serial.println (WiFi.softAP (ssidAP, passAP)? "Soft-AP ni sozlash": "Ulanmadi");
kechikish (100); Serial.println (WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet)? "Soft APni sozlash": "Konfiguratsiyadagi xato"); Serial.println (WiFi.softAPIP ());
// serverni ishga tushiring
server.begin ();
- Turli xil qayta qo'ng'iroqlar yordamida URL yarating va unga xizmat qiling.
- va handleClient yordamida mijozni asinxron tarzda boshqaring.
server.on ("/", handleRoot);
server.on ("/dhcp", handleDHCP); server.on ("/statik", handleStatic); // server.handleClient () javoblarini boshqaring;
- Veb -sahifalarga kirish uchun. Siz hozirgina Wi -Fi tarmog'ida ro'yxatga olingan APga ulaning. Endi brauzerga o'ting, oxirgi bosqichda siz sozlagan IP -ni kiriting va veb -sahifaga kiring.
- Veb -server sinfi argument sifatida kirishga berilgan nomni oladi ('matn', 'tugma', 'radiobutton' va boshqalar). Bu kirishlar javoblarini argument sifatida saqlaydi va biz qiymatlarni olishimiz yoki ularni arg, arg, hasArg usullari yordamida tekshirishimiz mumkin.
if (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 ("shlyuz") && server.hasArg ("pastki tarmoq")) {staticSet (); } boshqa if (server.arg ("ipv4")! = "") {dhcpSetManual (); } boshqa {dhcpSetDefault (); }
4 -qadam: IP -ning statik konfiguratsiyasi
Hozircha biz AP -ga qanday ulanish va veb -sahifaning kirish maydonlaridan qiymatlarni qanday olish kerakligini tushundik
Ushbu bosqichda biz statik IP -ni sozlaymiz
- Statik IP -ni tanlang va "Yuborish" tugmasini bosing. Siz keyingi sahifaga yo'naltirilasiz.
- Keyingi sahifaga statik IP -manzil, shlyuz manzili va pastki tarmoq niqobini kiriting, bu sahifa "/statik" da xizmat ko'rsatiladi, u statik qayta qo'ng'iroq qilish usuli bilan boshqariladi.
- Server.arg () usuli yordamida matn maydonlarining qiymatini oling.
String ipv4static = String (server.arg ("ipv4static"));
String shlyuzi = String (server.arg ("shlyuz"))); String subnet = String (server.arg ("pastki tarmoq")));
- Endi bu qiymatlar JSON formatida ketma -ket joylashtirilgan.
- Keyin biz JSONni SPIFFS -ga yozamiz.
ildiz ["statickey"] = "staticSet";
ildiz ["staticIP"] = ipv4static;
ildiz ["shlyuz"] = shlyuz;
ildiz ["pastki tarmoq"] = pastki tarmoq;
Fayl fileToWrite = SPIFFS.open ("/ip_set.txt", FILE_WRITE);
agar (root.printTo (fileToWrite)) {
Serial.println ("-Fayl yozilgan"); }
- Ushbu konfiguratsiya SPIFFS -da saqlanadi. Keyinchalik, bu qiymatlar SPIFFS -dan o'qiladi.
- Keyin statik IP qiymatlari JSON -dan tahlil qilinadi.
Fayl fayli = SPIFFS.open ("/ip_set.txt", "r");
while (file.available ()) {
debugLogData += char (file.read ()); }
if (debugLogData.length ()> 5) {
JsonObject & readRoot = jsonBuffer.parseObject (debugLogData);
agar (readRoot.containsKey ("statickey"))) {
String ipStaticValue = readRoot ["staticIP"];
String gatewayValue = readRoot ["shlyuz"];
String subnetValue = readRoot ["pastki tarmoq"];
5 -qadam: DHCP sozlamalari
Ushbu bosqichda biz DHCP sozlamalarini o'rnatamiz
Indeks sahifasidan DHCP sozlamalarini tanlang va "Yuborish" ni bosing
- Siz keyingi sahifaga yo'naltirilasiz. Keyingi sahifada IP manzilini kiriting yoki standartni tanlang va javobni yuborish uchun "Yuborish" tugmasini bosing. Bu sahifaga "/dhcp" xizmat ko'rsatiladi, u handleDHCP qayta qo'ng'iroq qilish usuli bilan ishlanadi. Server.arg () usuli yordamida matn maydonlarining qiymatini oling. Tugmani bosganingizda standart belgini belgilang. 192.168.4.1 IP qurilmaga beriladi.
- Endi bu qiymatlar JSON formatida ketma -ket joylashtirilgan.
- Keyin biz JSONni SPIFFS -ga yozamiz.
JsonObject & root = jsonBuffer.createObject ();
ildiz ["dhcpManual"] = "dhcpManual";
ildiz ["dhcpIP"] = "192.168.4.1";
Fayl fileToWrite = SPIFFS.open ("/ip_set.txt", FILE_WRITE);
agar (root.printTo (fileToWrite)) {
Serial.println ("-Fayl yozilgan"); }
- Ushbu konfiguratsiya SPIFFS -da saqlanadi. Keyinchalik, bu qiymatlar SPIFFS -dan o'qiladi.
- Keyin dhcp IP qiymatlari JSONdan tahlil qilinadi.
Fayl fayli = SPIFFS.open ("/ip_set.txt", "r"); while (file.available ()) {debugLogData += char (file.read ()); } agar (debugLogData.length ()> 5) {JsonObject & readRoot = jsonBuffer.parseObject (debugLogData);
agar (readRoot.containsKey ("dhcpDefault")))
Satr ipdhcpValue = readRoot ["dhcpIP"];
Serial.println (ipdhcpValue);
dhcpAPConfig ();}
6 -qadam: WiFi hisob ma'lumotlarini saqlash
Hozircha biz IP konfiguratsiyasini tanladik. Endi biz foydalanuvchining wifi ma'lumotlarini saqlashimiz kerak. Bu vaziyatni hal qilish uchun. Biz ushbu protseduraga amal qildik.
- Shunday qilib, bizda DHCP yoki statik IP konfiguratsiyasida oxirgi qadamlarda aytib o'tilgan asir portalidan tanlagan AP qurilmamiz bor.
- Aytaylik, biz Statik IP konfiguratsiyasini tanladik.
- Biz ushbu IP -da softAP -ni sozlaymiz.
- SPIFFS qiymatlarini o'qib chiqqandan so'ng va JSON dan bu qiymatlarni ajratib oling. Biz ushbu IP -da softAP -ni sozlaymiz.
- IP satrini baytga aylantiring.
bayt 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);
// *************** satrdan baytlarni tahlil qilish ****************** //
bo'sh parseBytes (const char* str, char sep, bayt* bayt, int maxBytes, int base) {
uchun (int i = 0; i <maxBytes; i ++) {
bayt = strtoul (str, NULL, tayanch);
str = strchr (str, sep);
agar (str == NULL || *str == '\ 0') {
tanaffus;
}
str ++;
}}
Endi biz ushbu IP -da softAP -ni sozlaymiz
Serial.println (WiFi.softAPConfig (ap_localWeb_IP, ap_gate, ap_net)? "SoftAPni sozlash": "ulanmagan"); Serial.println (WiFi.softAPIP ());
- Endi veb -serverni ishga tushiring va ushbu IP -da veb -sahifaga xizmat qiling. Foydalanuvchining WiFi hisob ma'lumotlarini kiritish uchun.
- Veb -sahifa SSID va parolni kiritish uchun ikkita matn maydonidan iborat.
- handleStaticForm - bu veb -sahifaga xizmat ko'rsatuvchi qayta qo'ng'iroq qilish usuli.
- server.handleClient () so'rov va javoblarni veb -sahifaga va undan oladi.
server.begin ();
server.on ("/", handleStaticForm);
server.onNotFound (handleNotFound);
STimer = millis ();
while (millis ()-STimer <= S Interval) {
server.handleClient (); }
HTML shakli SPIFFS -da saqlanadi. server.arg () yordamida mos argumentlarni tekshiramiz. SSID va parolni olish uchun
Fayl fayli = SPIFFS.open ("/WiFi.html", "r");
server.streamFile (fayl, "matn/html");
file.close ();
7 -qadam: SPIFFS -dan o'qish va yozish
SPIFFS
Seriyali periferik interfeysli Flash fayl tizimi yoki qisqacha SPIFFS. Bu SPI flesh-chipli mikrokontrollerlar uchun engil vaznli fayl tizimi. ESP32 flesh -chipida veb -sahifalaringiz uchun etarli joy mavjud. Shuningdek, biz veb -sahifamizni Flash tizimida saqladik. Ma'lumotlarni spifflarga yuklash uchun biz bir necha qadamlarni bajarishimiz kerak
ESP 32 SPIFFS ma'lumotlarni yuklash vositasini yuklab oling:
- Arduino eskizlar katalogida, agar u hali mavjud bo'lmasa, asboblar katalogini yarating
- Asbobni asboblar katalogiga joylashtiring (yo'l /Arduino/tools/ESP32FS/tool/esp32fs.jar kabi ko'rinadi)
- Arduino IDE -ni qayta ishga tushiring
- Eskizni oching (yoki yangisini yarating va saqlang)
- Eskiz katalogiga o'ting (eskiz> eskiz papkasini ko'rsatish -ni tanlang)
- Ma'lumotlar katalogini va u erdagi fayl tizimida kerakli fayllarni yarating. Biz webform.html nomi bilan HTML sahifamizni yukladik
- Kengash, port va yopiq ketma -ket monitorni tanlaganingizga ishonch hosil qiling
- Asboblar> ESP8266 Sketch ma'lumot yuklashni tanlang. Bu fayllarni ESP8266 flesh -fayl tizimiga yuklashni boshlashi kerak. Tugatgandan so'ng, IDE holat satrida SPIFFS rasm yuklangan xabari ko'rsatiladi.
void handleDHCP () {Fayl fayli = SPIFFS.open ("/page_dhcp.html", "r"); server.streamFile (fayl, "matn/html"); file.close ();}
void handleStatic () {
Fayl fayli = SPIFFS.open ("/page_static.html", "r"); server.streamFile (fayl, "matn/html"); file.close ();}
SPIFFSga yozish
Bu erda biz saqlangan sozlamani SPIFFS -ga yozyapmiz, shuning uchun har safar qurilma qayta o'rnatilganda foydalanuvchilar bu bosqichlardan o'tmasligi kerak.
- Veb -sahifadan olingan argumentlarni JSON ob'ektlariga aylantiring
- Ushbu JSONni SPIFFS -da saqlangan.txt faylga yozing.
String ipv4static = String (server.arg ("ipv4static"));
String shlyuzi = String (server.arg ("shlyuz"))); String subnet = String (server.arg ("pastki tarmoq"))); ildiz ["statickey"] = "staticSet"; ildiz ["staticIP"] = ipv4static; ildiz ["shlyuz"] = shlyuz; ildiz ["pastki tarmoq"] = pastki tarmoq; JSONStatic qatori; char JSON [120]; root.printTo (ketma -ket); root.prettyPrintTo (JSONStatic); JSONStatic.toCharArray (JSON, sizeof (JSONStatic) +2); Fayl fileToWrite = SPIFFS.open ("/ip_set.txt", FILE_WRITE); if (! fileToWrite) {Serial.println ("SPIFFS -ni ochishda xato"); } if (fileToWrite.print (JSON)) {Serial.println ("-Fayl yozilgan"); } else {Serial.println ("-Fayl yozishda xato"); } fileToWrite.close ();
8 -qadam: Umumiy kod
HTML va ESP32 uchun Over kodini ushbu Github omboridan topishingiz mumkin
Tavsiya:
Qutini qo'lga oling: 8 qadam
Qutini qo'lga oling: Qutini qo'lga oling - bu sizning jamoangizdagi do'stlaringiz bilan o'ynashingiz mumkin bo'lgan jamoaviy o'yin. Maqsad - bu qutini qo'lga olish va uni iloji boricha uzoq vaqt o'z qo'lingizda saqlash. ayvon yoki old
Mobil telefonda Google maxfiylik sozlamalarini qanday o'zgartirish mumkin: 11 qadam
Google maxfiylik sozlamalarini mobil telefonda qanday o'zgartirish mumkin: Google butun dunyoda keng qo'llaniladi, lekin ba'zi odamlar Google sizning shaxsiy ma'lumotlaringiz yoki ma'lumotlaringizga kira oladigan ko'plab xususiyatlarga ega ekanligini bilishmaydi. Ushbu qo'llanmada sizga shaxsiy hisobingizdagi sozlamalarni qanday o'zgartirish kerakligini o'rgatasiz, chunki
Quyoshda sayohat qilish uchun ryukzak .. Yo'lda zaryad olish uchun: 5 qadam (rasmlar bilan)
Quyoshli sayohat ryukzaklari..Yo'lda zaryadlash: Yo'lda zaryadlash hech qachon oson bo'lmaydi. Yurishda davom eting va quyosh elektr stantsiyasi quyoshda yurganingizda batareyangizni zaryad qiladi. Bu sahroda sayohatchilar uchun foydalidir. quvvat zaxirasi hayotni saqlab qolishga yordam beradi! Aqlli sumkalar - bu kelajak
Arduino EEPROM sozlamalarini ishga tushirish: 5 qadam
Arduino EEPROM sozlamalarini ishga tushirish: Hammaga salom, har bir Arduino xotirasida kichik o'rnatilgan EEPROM bor. Siz buni loyihangiz sozlamalarini saqlash uchun ishlatishingiz mumkin, u erda tanlangan qiymatlar quvvat davrlari orasida saqlanadi va ular keyingi safar Arduino -ni yoqganda bo'ladi. Menda bor
Yo'lga qayting: 4 qadam
Yo'lga qayting: Bu ko'rsatma sizga EP (elektr quvvati) RC mashinasini boshqarishga qanday qaytishni ko'rsatib beradi