Мазмуну:
- 1 -кадам: Аппараттык жана программалык камсыздоонун өзгөчөлүгү
- 2 -кадам: Туткун порталын түзүү
- 3 -кадам: Желе жоопторун веб баракчалардан ESP32ге алуу
- 4 -кадам: Статикалык IP конфигурациясы
- 5 -кадам: DHCP Орнотуулар
- 6 -кадам: WiFi грамоталарын сактоо
- 7 -кадам: SPIFFSтен окуу жана жазуу
- 8 -кадам: Жалпы код
Video: ESP32 туткундуу порталы статикалык жана DHCP IP орнотууларын конфигурациялоо үчүн: 8 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:40
ESP 32 - интегралдык WiFi жана BLE менен түзмөк. Бул IoT долбоорлору үчүн жакшы нерсе. Жөн гана SSID, сырсөзүңүздү жана IP конфигурацияңызды бериңиз жана нерселерди булутка интеграциялаңыз. Бирок, IP жөндөөлөрүн жана Колдонуучунун грамоталарын башкаруу колдонуучунун баш оорусу болушу мүмкүн.
Колдонуучу WiFi грамоталарын өзгөрткүсү келсе эмне болот?
Колдонуучу DHCP/Статикалык IP жөндөөлөрүн которгусу келсе, эмне кылыш керек?
ESP32 ар дайым жаркырап турушу ишенимдүү эмес, ал тургай бул көйгөйлөрдү чечүү эмес. Бул жерде бул көрсөтмөдө биз көрсөтөбүз.
- Туткунга алынган порталды кантип түзүү керек.
- ESP32ден веб формасын хостинг.
- SPIFFS ESP32ден окуу жана жазуу.
- Жумшак кирүү чекитин түзүү жана станцияга туташуу
1 -кадам: Аппараттык жана программалык камсыздоонун өзгөчөлүгү
Аппараттык мүнөздөмө
- ESP32 WiFi/BLE
- Зымсыз Температура жана Нымдуулук Сенсору
Программалык камсыздоонун өзгөчөлүгү
Arduino IDE
2 -кадам: Туткун порталын түзүү
Туткундалган портал - бул жаңы туташкан колдонуучуларга тармак ресурстарына кеңири кирүү мүмкүнчүлүгү берилгенге чейин көрсөтүлүүчү веб баракча. Бул жерде биз DHCP менен Статикалык IP Орнотууларын тандоо үчүн үч веб баракчаны тейлеп жатабыз. IP дарегин ESPке эки жол менен аныктай алабыз.
- DHCP IP дареги- бул түзмөккө IP дарегин динамикалык түрдө берүү ыкмасы. ESPтин демейки IP дареги 192.168.4.1
- Статикалык IP дареги- биздин тармактык түзмөккө туруктуу IP дарегин дайындоо. түзмөккө статикалык IP менен камсыз кылуу үчүн биз IP дарегин, шлюз дарегин жана субнет маскасын аныкташыбыз керек.
Биринчи веб -баракчада Колдонуучуга DHCP жана Статикалык IP орнотууларын тандоо үчүн радио баскычтар берилет. Кийинки веб -баракчада, биз андан ары улантуу үчүн IPге байланыштуу маалыматты беришибиз керек.
HTML коду
Веб -баракчалар үчүн HTML кодун бул Github репозиторийинен тапса болот.
HTML веб баракчаларын жасоо үчүн Sublime же notepad ++ сыяктуу каалаган IDE же текст редакторун колдоно аласыз.
- Биринчиден, DHCP менен Статикалык IP Орнотууларын тандоо үчүн эки радио баскычын камтыган HTML веб -баракчасын түзүңүз.
- Эми жооп берүү үчүн баскычты түзүңүз
- Радио баскычтарына бир аз ат коюңуз. ESP Web Server классы бул аттарды аргумент катары кабыл алат жана ушул аргументтерди колдонуп радио баскычтардын жообун алат
- Эми жоопту түзмөккө жөнөтүү үчүн 'SUBMIT' баскычын киргизиңиз.
- Башка веб -баракчаларда бизде текст кутучалары бар. Текст кутучасына атынын маанисин жана Киргизүү түрүн бериңиз жана "SUBMIT" жооп берүү үчүн тапшыруу баскычын кошуңуз.
- Текст талаасынын мазмунун баштапкы абалга келтирүү үчүн 'RESET' баскычын түзүңүз.
// Radio Button DHCP Setting
Статикалык IP жөндөө
// Текстти киргизүү кутучалары
// тапшыруу баскычы
киргизүү [type = "submit"] {background-color: #3498DB; / * Жашыл */ чек: эч ким; Ак түс; толтуруу: 15px 48px; текстти тегиздөө: борбор; текстти жасалгалоо: эч ким; дисплей: inline-block; шрифт өлчөмү: 16px; }
// Кайра коюу баскычы
киргизүү [type = "submit"] {background-color: #3498DB; / * Жашыл */ чек: эч ким; Ак түс; толтуруу: 15px 48px; текстти тегиздөө: борбор; текстти жасалгалоо: эч ким; дисплей: inline-block; шрифт өлчөмү: 16px; }
3 -кадам: Желе жоопторун веб баракчалардан ESP32ге алуу
ESP 32 түзмөгүнөн веб баракчаларды тейлөө абдан кызыктуу. Бул веб -беттеги температура маалыматын көрсөтүү, колдонуучунун веб -баракчасынан алып келүү же Колдонуучунун WiFi грамоталарын веб -баракча аркылуу сактоо сыяктуу нерселер болушу мүмкүн. Бул үчүн, ESP 32 веб -баракчаларды серверге WebServer Class колдонот.
- Биринчиден, 80 портунда (HTTP порту) WebServer классынын мисалын түзүңүз.
- Эми ESP түзмөгүн softAP катары орнотуңуз. SSID менен сырсөздү бериңиз жана түзмөккө статикалык IP дайындаңыз.
- Серверди баштаңыз.
// ********* SSID жана AP үчүн Pass **************/
const char *ssidAP = "SSID бер"; const char *passAP = "өткөрүү ачкычы";
// ********* Static IP Config **************/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.mode (WIFI_AP);
Serial.println (WiFi.softAP (ssidAP, passAP)? "Soft-AP setup": "Туташкан жок");
кечиктирүү (100); Serial.println (WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet)? "Configuring Soft AP": "Configuration in Error"); Serial.println (WiFi.softAPIP ());
// серверди баштоо
server.begin ();
- Ар кандай чалууларды колдонуп URL түзүңүз жана кызмат кылыңыз.
- жана handleClient аркылуу кардарды асинхрондук түрдө иштетүү.
server.on ("/", handleRoot);
server.on ("/dhcp", handleDHCP); server.on ("/static", handleStatic); // жоопторду иштетүү server.handleClient ();
- Веб баракчаларга кирүү үчүн. WiFi түйүндөрүңүздүн ичинде жаңы эле түзүлгөн APге туташыңыз. Эми, браузерге өтүңүз, акыркы кадамда конфигурацияланган IPди киргизиңиз жана веб -баракчага кириңиз.
- Веб -сервер классы аргумент катары киргизүүлөргө берилген аталышты алат ('текст', 'баскыч', 'radiobutton'ж.б.). Бул кириштердин жоопторун аргумент катары сактайт жана биз баалуулуктарды ала алабыз же аларды args, arg, hasArg методдору аркылуу текшере алабыз.
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 ("gateway") && server.hasArg ("subnet")) {staticSet (); } if if (server.arg ("ipv4")! = "") {dhcpSetManual (); } башка {dhcpSetDefault (); }
4 -кадам: Статикалык IP конфигурациясы
Азырынча биз APге кантип туташуу керектигин жана веб -баракчанын киргизүү талааларынан баалуулуктарды кантип алууну түшүндүк
Бул кадамда биз статикалык IPди конфигурациялайбыз
- Статикалык IP жөндөөнү тандап, Жөнөтүү баскычын басыңыз. Сиз кийинки бетке багытталасыз.
- Кийинки баракка статикалык IP дарегин, шлюз дарегин жана көмөкчү тармактын маскасын киргизиңиз, бул барак "/static" тейленет, ал туткасы статикалык кайра чалуу ыкмасы менен иштетилет.
- Server.arg () ыкмасын колдонуу менен текст талааларынын маанисин алыңыз.
String ipv4static = String (server.arg ("ipv4static"));
String шлюзи = String (server.arg ("шлюз")); String subnet = String (server.arg ("subnet")));
- Эми бул баалуулуктар JSON форматына серияланышат.
- Андан кийин JSONду SPIFFSке жазабыз.
тамыр ["statickey"] = "staticSet";
тамыр ["staticIP"] = ipv4static;
тамыр ["шлюз"] = шлюз;
root ["subnet"] = subnet;
FileToWrite = SPIFFS.open ("/ip_set.txt", FILE_WRITE);
эгер (root.printTo (fileToWrite)) {
Serial.println ("-Файл жазылган"); }
- Бул конфигурация SPIFFSте сакталат. Кийинчерээк, бул баалуулуктар SPIFFSтен окулат.
- Андан кийин статикалык IP баалуулуктары JSONдон талданат.
Файл файлы = SPIFFS.open ("/ip_set.txt", "r");
while (file.available ()) {
debugLogData += char (file.read ()); }
if (debugLogData.length ()> 5) {
JsonObject & readRoot = jsonBuffer.parseObject (debugLogData);
эгер (readRoot.containsKey ("statickey"))) {
String ipStaticValue = readRoot ["staticIP"];
String gatewayValue = readRoot ["шлюз"];
String subnetValue = readRoot ["subnet"];
5 -кадам: DHCP Орнотуулар
Бул кадамда биз DHCP Орнотууларын конфигурациялайбыз
Индекс баракчасынан DHCP Орнотууларын тандап, "Тапшырууну" чыкылдатыңыз
- Сиз кийинки бетке багытталасыз. Кийинки баракта IP дарегин киргизиңиз же демейки тандоо тандап, жоопту тапшыруу үчүн "Тапшыруу" баскычын басыңыз. Бул барак handleDHCP кайра чалуу ыкмасы менен иштетилген "/dhcp" кызматында болот. Server.arg () ыкмасын колдонуу менен текст талааларынын маанисин алыңыз. Чыкканда, демейки белгилөө кутучасын тандаңыз. 192.168.4.1 IP түзмөккө берилет.
- Эми бул баалуулуктар JSON форматына серияланышат.
- Андан кийин JSONду SPIFFSке жазабыз.
JsonObject & root = jsonBuffer.createObject ();
тамыр ["dhcpManual"] = "dhcpManual";
тамыр ["dhcpIP"] = "192.168.4.1";
FileToWrite = SPIFFS.open ("/ip_set.txt", FILE_WRITE);
эгер (root.printTo (fileToWrite)) {
Serial.println ("-Файл жазылган"); }
- Бул конфигурация SPIFFSте сакталат. Кийинчерээк, бул баалуулуктар SPIFFSтен окулат.
- Андан кийин dhcp IP баалуулуктары JSONдон талданат.
File file = SPIFFS.open ("/ip_set.txt", "r"); while (file.available ()) {debugLogData += char (file.read ()); } if (debugLogData.length ()> 5) {JsonObject & readRoot = jsonBuffer.parseObject (debugLogData);
эгер (readRoot.containsKey ("dhcpDefault")))
String ipdhcpValue = readRoot ["dhcpIP"];
Serial.println (ipdhcpValue);
dhcpAPConfig ();}
6 -кадам: WiFi грамоталарын сактоо
Азырынча биз IP конфигурациясын тандап алдык. Эми биз Колдонуучунун wifi грамоталарын сакташыбыз керек. Бул жагдайды чечүү үчүн. Биз бул процедураны аткардык.
- Ошентип, бизде акыркы кадамдарда айтылган туткун порталынан тандап алган DHCP же Статикалык IP конфигурациясында AP түзмөгүбүз бар.
- Айталы, биз статикалык IP конфигурациясын тандап алдык.
- Биз бул IPде softAPти конфигурациялайбыз.
- SPIFFSтен баалуулуктарды окуп, бул баалуулуктарды JSONдон талдап чыккандан кийин. Биз бул IPде softAPти конфигурациялайбыз.
- IP сабын байтка айландырыңыз.
байт 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);
// *************** Саптан байттарды талдоо ****************** //
бош parseBytes (const char* str, char sep, байт* байт, int maxBytes, int base) {
үчүн (int i = 0; i <maxBytes; i ++) {
байт = strtoul (str, NULL, base);
str = strchr (str, sep);
эгер (str == NULL || *str == '\ 0') {
тыныгуу;
}
str ++;
}}
Эми биз ушул IPде softAPти конфигурациялайбыз
Serial.println (WiFi.softAPConfig (ap_localWeb_IP, ap_gate, ap_net)? "SoftAPти конфигурациялоо": "туташкан эмес"); Serial.println (WiFi.softAPIP ());
- Эми веб -серверди баштаңыз жана ушул IPде веб -баракчага кызмат кылыңыз. Колдонуучунун WiFi грамоталарын киргизүү үчүн.
- Веб -баракча SSID жана Сырсөздү киргизүү үчүн эки текст талаасынан турат.
- handleStaticForm - бул веб -баракчаны тейлеген кайра чалуу ыкмасы.
- server.handleClient () веб -баракчадан суроо -талаптын жана жооптордун камын көрөт.
server.begin ();
server.on ("/", handleStaticForm);
server.onNotFound (handleNotFound);
STimer = millis ();
while (millis ()-STimer <= SInterval) {
server.handleClient (); }
HTML формасы SPIFFSте сакталат. server.arg () аркылуу ылайыктуу аргументтерди текшеребиз. SSID жана Сырсөздүн баасын алуу үчүн
Файл файлы = SPIFFS.open ("/WiFi.html", "r");
server.streamFile (файл, "текст/html");
file.close ();
7 -кадам: SPIFFSтен окуу жана жазуу
SPIFFS
Сериялык перифериялык интерфейс Flash File System, же кыскача айтканда SPIFFS. Бул SPI флеш-чипи бар микроконтроллерлер үчүн жеңил салмактагы файл тутуму. ESP32 борттогу флеш -чипинде веб -баракчаларыңыз үчүн көп орун бар. Биз дагы веб -баракчабызды Flash системасында сактадык. Биз спифтерге маалыматтарды жүктөө үчүн бир нече кадамдарды жасашыбыз керек
ESP 32 SPIFFS маалыматтарды жүктөө куралын түшүрүңүз:
- Сиздин Arduino эскиздер каталогунда, эгер ал жок болсо, куралдар каталогун түзүңүз
- Куралды куралдар каталогуна чыгарыңыз (жол /Arduino/tools/ESP32FS/tool/esp32fs.jar окшойт)
- Arduino IDEди кайра жүктөңүз
- Эскизди ачыңыз (же жаңысын түзүңүз жана аны сактаңыз)
- Эскиз каталогуна өтүңүз (Эскиз> Эскиз Папкасын көрсөтүңүз)
- Дайындар каталогун жана ал жердеги файл тутумунда каалаган файлдарды түзүңүз. Биз webform.html аты бар HTML баракчабызды жүктөдүк
- Такта, порт жана жабык сериялык мониторду тандаганыңызды текшериңиз
- Куралдар> ESP8266 эскиз маалыматын жүктөөнү тандаңыз. Бул файлдарды ESP8266 флеш системасына жүктөөнү башташы керек. Бүткөндөн кийин, IDE абал тилкеси SPIFFS Image Uploaded билдирүүсүн көрсөтөт.
Void handleDHCP () {File file = SPIFFS.open ("/page_dhcp.html", "r"); server.streamFile (файл, "текст/html"); file.close ();}
void handleStatic () {
Файл файлы = SPIFFS.open ("/page_static.html", "r"); server.streamFile (файл, "текст/html"); file.close ();}
SPIFFSке жазуу
Бул жерде биз SPIFFSке сакталган орнотууну жазып жатабыз, ошондо колдонуучулар түзмөк баштапкы абалга келгенде бул кадамдарды жасабашы керек.
- Веб баракчадан алынган аргументтерди JSON объекттерине айландырыңыз
- Бул JSONду SPIFFSте сакталган.txt файлына жазыңыз.
String ipv4static = String (server.arg ("ipv4static"));
String шлюзи = String (server.arg ("шлюз")); String subnet = String (server.arg ("subnet"))); тамыр ["statickey"] = "staticSet"; тамыр ["staticIP"] = ipv4static; тамыр ["шлюз"] = шлюз; root ["subnet"] = subnet; String JSONStatic; char JSON [120]; root.printTo (Сериялык); root.prettyPrintTo (JSONStatic); JSONStatic.toCharArray (JSON, sizeof (JSONStatic) +2); FileToWrite = SPIFFS.open ("/ip_set.txt", FILE_WRITE); if (! fileToWrite) {Serial.println ("SPIFFSти ачууда ката"); } if (fileToWrite.print (JSON)) {Serial.println ("-Файл жазылган"); } else {Serial.println ("-Файл жазууда ката кетти"); } fileToWrite.close ();
8 -кадам: Жалпы код
HTML жана ESP32 үчүн Over кодун бул Github репозиторийинен тапса болот
Сунушталууда:
Жаңыдан баштагандар үчүн DJ орнотууларын кантип түзүү керек - Vinyl Style!: 7 кадам
Жаңыдан баштагандар үчүн DJ орнотууларын кантип түзүү керек - Винил стили! Сиз хоббиңизби же профессионал болгуңуз келеби, балким дүйнө жүзүн кыдырып, киреше табасызбы, бул кадамдар сизди
Raspberry Pi'де Raspbian орнотуу жана конфигурациялоо: 6 кадам
Raspbian Piде Raspbian орнотуу жана конфигурациялоо: Бул үйрөткүч Raspberry Pi'де Raspbian орнотууну каалаган адамдар үчүн. Бул окуу куралы Бразилияда португал тилинде жазылган. Мен аны англисче жазууга болгон күчүмдү жумшадым. Жазуудагы кээ бир каталар үчүн мени кечирип коюңуз
NE555 Таймер - NE555 таймерин туруктуу конфигурацияда конфигурациялоо: 7 кадам
NE555 Таймер | NE555 таймерин ыңгайлуу конфигурацияда конфигурациялоо: NE555 таймери электроника дүйнөсүндө эң көп колдонулган ICлердин бири. Бул DIP 8 түрүндө, башкача айтканда, ал 8 казыкка ээ
Arduino EEPROM Орнотууларын баштоо: 5 кадам
Arduino EEPROM Орнотууларын баштоо: Саламатсыздарбы, ар бир Arduino EEPROM деп аталган кичинекей эстутумга ээ. Сиз муну долбооруңуздун жөндөөлөрүн сактоо үчүн колдоно аласыз, анда тандалган баалуулуктар электр циклдеринин ортосунда сакталат жана алар кийинки жолу Arduino күйгүзүлгөндө ошол жерде болот. Менде бар
MHP өнүктүрүү үчүн Windows Vista ичинде Panasonic ADKти конфигурациялоо: 4 кадам
Panasonic ADK Windows Vistaда MHP өнүктүрүү үчүн конфигурацияланат: Panasonic ADK Linux чөйрөсү үчүн иштелип чыккан. Windows OSте иштөөнү жактырган балдар үчүн бул эмне кылса болот. Акыры биринчи xletти алуу үчүн мага бир жума сыноо жана ката кетти. приставкада иштеп жатат! Мына кыска жол … Th