From 5d30da93e8d2035aaa60e3f9da3d86280cad026f Mon Sep 17 00:00:00 2001 From: aviantotiyo Date: Thu, 1 Aug 2024 20:40:52 +0700 Subject: [PATCH] Initial commit --- .gitattributes | 2 ++ ESP_AP.ino | 85 +++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 67 ++++++++++++++++++++++++++++++++++++++ login.jpeg | Bin 0 -> 23793 bytes login2.jpeg | Bin 0 -> 20105 bytes 5 files changed, 154 insertions(+) create mode 100644 .gitattributes create mode 100644 ESP_AP.ino create mode 100644 README.md create mode 100644 login.jpeg create mode 100644 login2.jpeg diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..dfe0770 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Auto detect text files and perform LF normalization +* text=auto diff --git a/ESP_AP.ino b/ESP_AP.ino new file mode 100644 index 0000000..0caa359 --- /dev/null +++ b/ESP_AP.ino @@ -0,0 +1,85 @@ +#include +#include + +// SSID dan Password untuk AP Mode +const char *ssid = "ESP32-Access-Point"; +const char *password = "12345678"; + +// Inisialisasi server di port 80 +AsyncWebServer server(80); + +// HTML form untuk memasukkan username dan password +const char* loginPage = R"rawliteral( + + + ESP32 Setup + + + +

ESP32 Login

+
+
+
+
+

+ +
+ + +)rawliteral"; + +// Halaman untuk pengaturan setelah login +const char* settingsPage = R"rawliteral( + + + ESP32 Settings + + + +

ESP32 Settings

+

Welcome to the settings page!

+ + +)rawliteral"; + +// Function untuk menangani permintaan login +void handleLoginRequest(AsyncWebServerRequest *request) { + if (request->hasParam("username", true) && request->hasParam("password", true)) { + String username = request->getParam("username", true)->value(); + String password = request->getParam("password", true)->value(); + + // Cek username dan password + if (username == "admin" && password == "admin") { + request->send(200, "text/html", settingsPage); + } else { + request->send(401, "text/html", "Login Failed"); + } + } else { + request->send(400, "text/html", "Bad Request"); + } +} + +void setup() { + // Mengatur mode AP + WiFi.softAP(ssid, password); + + // Menampilkan IP Address + Serial.begin(115200); + Serial.print("AP IP address: "); + Serial.println(WiFi.softAPIP()); + + // Mengatur route untuk halaman login + server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){ + request->send(200, "text/html", loginPage); + }); + + // Mengatur route untuk menangani login request + server.on("/login", HTTP_POST, handleLoginRequest); + + // Memulai server + server.begin(); +} + +void loop() { + // Tidak ada yang dilakukan di loop() +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..dc50a3e --- /dev/null +++ b/README.md @@ -0,0 +1,67 @@ +# ESP32 Access Point with Login Page + +This project sets up an ESP32 as an Access Point (AP) with a login page. Users can connect to the AP and log in with a username and password to access a settings page. + +## Description + +This project is designed to help developers set up an ESP32 as an Access Point with a simple login interface. However, there is an important note regarding the ESPAsyncWebServer library. If you download the ESPAsyncWebServer library directly from the Arduino IDE Library Manager, you might encounter errors when compiling the code for the ESP32. These errors are due to some functions in the library that are not compatible with the ESP32. + +To resolve this, you can use a pre-modified version of the ESPAsyncWebServer library that has been adjusted for ESP32 compatibility. You can download this modified library directly from the provided link to ensure smooth operation. + +## Features + +- Creates an AP with a specified SSID and password +- Hosts a web server on the ESP32 +- Provides a login page for users to enter their username and password +- Displays a settings page upon successful login + +## Prerequisites + +- [Arduino IDE](https://www.arduino.cc/en/software) +- [ESP32 Board Package](https://dl.espressif.com/dl/package_esp32_index.json) +- [AsyncTCP Library](https://github.com/me-no-dev/AsyncTCP) +- Modified ESPAsyncWebServer Library (Download from the provided link) + +## Installation + +1. **Install ESP32 Board Package** + + - Open Arduino IDE. + - Go to `File` > `Preferences`. + - Add the following URL to the "Additional Board Manager URLs": + ``` + https://dl.espressif.com/dl/package_esp32_index.json + ``` + - Go to `Tools` > `Board` > `Boards Manager`. + - Search for "esp32" and install the latest version. + +2. **Install Required Libraries** + + - Go to `Sketch` > `Include Library` > `Manage Libraries...`. + - Search for `AsyncTCP` and install it. + +3. **Install Modified ESPAsyncWebServer Library** + + - Download the modified ESPAsyncWebServer library from the provided link. + - Extract the downloaded file. + - Copy the extracted folder to your Arduino libraries directory (usually located in `Documents/Arduino/libraries`). + +## Usage + +1. **Upload the Code** + + - Open the `ESP32_Access_Point.ino` file in Arduino IDE. + - Select the appropriate ESP32 board from `Tools` > `Board`. + - Connect your ESP32 board to your computer. + - Click the Upload button to upload the code to your ESP32. + +2. **Connect to the Access Point** + + - Connect to the Wi-Fi network with SSID `ESP32-Access-Point` and password `12345678`. + - Open a web browser and navigate to the IP address displayed in the Serial Monitor (usually `192.168.4.1`). + +3. **Login** + + - Enter `admin` as both the username and password to access the settings page. + + diff --git a/login.jpeg b/login.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..134cf5ca85c6018a0d0d3df8a1c3ccf1699fa1cc GIT binary patch literal 23793 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
MGO&kW0X^cp6GvMXI;4~=%av({+&6PljJgCUK8 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 literal 0 HcmV?d00001 diff --git a/login2.jpeg b/login2.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..5120144948c05f995ef5749563ab9600099029ff GIT binary patch literal 20105 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 b0B&NNH?1zRU^Eb03I71`>;L`$0|5WoUqm!| literal 0 HcmV?d00001