Мазмуну:

ESP32 туткундуу порталы статикалык жана DHCP IP орнотууларын конфигурациялоо үчүн: 8 кадам
ESP32 туткундуу порталы статикалык жана DHCP IP орнотууларын конфигурациялоо үчүн: 8 кадам

Video: ESP32 туткундуу порталы статикалык жана DHCP IP орнотууларын конфигурациялоо үчүн: 8 кадам

Video: ESP32 туткундуу порталы статикалык жана DHCP IP орнотууларын конфигурациялоо үчүн: 8 кадам
Video: ESP32, более мощная чем любая другая Ардуино 2024, Ноябрь
Anonim
ESP32 туткундуу порталы статикалык жана DHCP IP орнотууларын конфигурациялоо үчүн
ESP32 туткундуу порталы статикалык жана DHCP IP орнотууларын конфигурациялоо үчүн

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ге алуу

Веб баракчадан ESP32ге веб жооп алуу
Веб баракчадан 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 конфигурациясы

IP статикалык конфигурациясы
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 Орнотуулар

Бул кадамда биз 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 грамоталарын сактоо

WiFi ишеним грамоталарын сактоо
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 репозиторийинен тапса болот

Сунушталууда: