ESP32 – การตั้งค่า AP สำหรับการเชื่อมต่อ STA

ESP32 – การตั้งค่า AP สำหรับการเชื่อมต่อ STA

ปลดล็อกการตั้งค่า WiFi แบบ Headless บน ESP32-C3

เริ่มต้นเนื้อหา

โค้ดนี้สามารถช่วยในการจัดการการตั้งค่าเครือข่าย Wi-Fi ของอุปกรณ์ได้ง่ายขึ้น โดยไม่ต้องทำการตั้งค่าเครือข่ายทุกครั้งที่เปลี่ยนเครือข่ายหรือเมื่อรีเซ็ตอุปกรณ์ผ่านแพลตฟอร์มพัฒนา

การตั้งค่าเครือข่าย WiFi ผ่าน AP นั้นไม่ซับซ้อนสำหรับผู้ที่มีพื้นฐานด้านเครือข่ายและการใช้งาน Arduino IDE แต่หากคุณยังไม่มีความรู้พื้นฐานในด้านนี้ หัวข้อนี้อาจมีความท้าทายและต้องการการเรียนรู้เพิ่มเติมก่อนเริ่มต้นใช้งาน

ขั้นตอนการปฏิบัติ

AP Setup for STA Connection

การตั้งค่า Access Point (AP) เพื่อเชื่อมต่อกับ Station (STA) เป็นกระบวนการที่ช่วยให้ผู้ใช้สามารถเชื่อมต่ออุปกรณ์ IoT กับเครือข่าย Wi-Fi ได้ง่ายขึ้น โดยใช้อุปกรณ์ในโหมด AP เพื่อให้ผู้ใช้เชื่อมต่อเข้าไปตั้งค่า Wi-Fi จากนั้นอุปกรณ์จะเชื่อมต่อกับเครือข่าย Wi-Fi ในโหมด STA เมื่อได้รับข้อมูลจากผู้ใช้

ข้อดีของการตั้งค่า Wi-Fi แบบ Headless

  • ความสะดวก: ไม่จำเป็นต้องมีหน้าจอแสดงผลหรือการเชื่อมต่อแบบมีสาย
  • ความรวดเร็ว: กระบวนการตั้งค่ามักจะรวดเร็วกว่า
  • เหมาะสำหรับอุปกรณ์ IoT: เหมาะสำหรับอุปกรณ์ที่ไม่มีหน้าจอ เช่น เซ็นเซอร์หรืออุปกรณ์สมาร์ทโฮม

เหมาะสมกับ IoT และ Cloud-based MQTT

  1. การเชื่อมต่อที่สะดวก: อุปกรณ์สามารถเชื่อมต่อกับเครือข่าย Wi-Fi ใหม่นอกสถานที่ได้โดยง่าย ซึ่งเป็นสิ่งสำคัญในระบบ Cloud-based ที่ต้องเชื่อมต่อกับ Cloud หรือ MQTT Broker จากทุกที่ที่มีการเชื่อมต่ออินเทอร์เน็ต.
  2. การตั้งค่าใหม่ง่าย: เมื่อเปลี่ยนเครือข่าย Wi-Fi ผู้ใช้สามารถกรอกข้อมูล SSID และรหัสผ่านใหม่ผ่านเว็บอินเตอร์เฟซได้เลย ไม่ต้องใช้วิธีการอื่น ๆ หรือการต่อคอมพิวเตอร์เข้ากับอุปกรณ์.
  3. การจัดการผ่านคลาวด์: ระบบ Cloud-based MQTT จะมีข้อได้เปรียบในการจัดการข้อมูลจากหลาย ๆ อุปกรณ์ IoT ได้อย่างมีประสิทธิภาพ และโค้ดนี้สามารถใช้งานร่วมกับ MQTT เพื่อส่งข้อมูลไปยังคลาวด์ได้โดยไม่ยุ่งยากในการตั้งค่าเครือข่ายในแต่ละอุปกรณ์.

ฮาร์ดแวร์ที่จำเป็น

  1. ESP32-C3 Board

    • ESP32-C3 Super Mini
  2. ปุ่มกด Push Button

    • ใช้สำหรับ Reset WiFi Settings
    • ตัวอย่างโค้ด เชื่อมต่อกับพิน 10
  3. ตัวต้านทาน Resistor
    • R 10KΩ
    • ใช้สำหรับการ PullDown
  4. PC หรือ Smartphone

    • สำหรับ Headless Setup เชื่อมต่อกับ AP ของ ESP32-C3 เพื่อกำหนดค่า WiFi

ปุ่มกดแบบ Pull-Down สำหรับการล้างค่าการตั้งค่า WiFi

ปุ่มรีเซ็ต ใช้งานโดย ค้างไว้ 3 วินาที เพื่อเคลียร์ค่าการตั้งค่า WiFi และรีสตาร์ทอุปกรณ์

การต่อปุ่มกดแบบ Pull-Down

  • ปุ่มกด (SW) ต่อระหว่าง GPIO10 กับ 3.3V
  • ตัวต้านทาน 10KΩ (Pull-Down Resistor) ต่อระหว่าง GPIO10 กับ GND

หลักการทำงาน:

  • เมื่อไม่ได้กดปุ่ม: GPIO10 จะถูกดึงลง GND ผ่านตัวต้านทาน 10KΩ → อ่านค่าเป็น LOW (0)
  • เมื่อกดปุ่ม: GPIO10 จะเชื่อมกับ 3.3V → อ่านค่าเป็น HIGH (1)

ทดสอบปุ่ม ว่าใช้ได้ดีไหม

const int buttonPin = 10;
const int led = 8;
int buttonState = 0;
void setup() {
    Serial.begin(9600);
  pinMode(led, OUTPUT);
  pinMode(buttonPin, INPUT);
}
void loop() {
  buttonState = digitalRead(buttonPin);
  if (buttonState == HIGH) {
    digitalWrite(led, HIGH);
    Serial.println("on");
  } else {
    digitalWrite(led, LOW);
    Serial.println("off");
  }
}

( หัวข้อนี้ใช้งานได้ทันทีบน MicroLearner  : ปุ่ม )

ไลบรารีที่ใช้ในการตั้งค่า Wi-Fi

WiFi.h สำหรับการเชื่อมต่อกับ Wi-Fi

WebServer.h สำหรับการให้บริการเว็บเพจ

DNSServer.h สำหรับการตั้งค่า DNS

Preferences.h สำหรับการจัดการข้อมูล Wi-Fi ที่เก็บไว้ในอุปกรณ์.

โครงสร้างของโค้ด

  1. การตั้งค่าโหมด AP (Access Point):
    • เมื่ออุปกรณ์เริ่มทำงานในโหมด AP จะทำการสร้างเครือข่าย Wi-Fi ที่ชื่อว่า “ESP32_Config” และตั้งรหัสผ่านเป็น “12345678” โดยสามารถเชื่อมต่ออุปกรณ์อื่น ๆ เข้ามายังเครือข่ายนี้ได้.
    • เมื่อมีการเชื่อมต่อจากผู้ใช้, อุปกรณ์จะให้บริการหน้าเว็บที่สามารถกรอกข้อมูล SSID และรหัสผ่านของ Wi-Fi ที่ต้องการเชื่อมต่อ.
  2. การจัดการข้อมูล Wi-Fi:
    • เมื่อผู้ใช้กรอกข้อมูล SSID และรหัสผ่านในฟอร์มบนหน้าเว็บและกด “Save” ข้อมูลจะถูกบันทึกลงใน Preferences ซึ่งเก็บข้อมูลในหน่วยความจำของ ESP32.
    • อุปกรณ์จะทำการรีสตาร์ทและพยายามเชื่อมต่อกับ Wi-Fi ที่ผู้ใช้กรอกไว้.
  3. การเชื่อมต่อกับ Wi-Fi:
    • เมื่อรีสตาร์ท อุปกรณ์จะเชื่อมต่อกับ Wi-Fi โดยใช้ข้อมูลที่บันทึกไว้ใน Preferences. หากการเชื่อมต่อสำเร็จจะเข้าสู่โหมด STA แต่ถ้าล้มเหลว จะกลับไปทำงานในโหมด AP เพื่อให้ผู้ใช้กรอกข้อมูลใหม่.
  4. การรีเซ็ตข้อมูล Wi-Fi:
    • มีการใช้ปุ่มรีเซ็ต (GPIO10) เพื่อให้ผู้ใช้สามารถล้างข้อมูล Wi-Fi ที่บันทึกไว้ในหน่วยความจำได้โดยการกดปุ่มค้างไว้ 3 วินาที.

ส่วนของการตั้งค่าโหมด AP

void setupAPMode() {
WiFi.mode(WIFI_AP); // ตั้งโหมดเป็น AP
WiFi.softAP(apSSID, apPassword); // สร้าง AP ด้วย SSID และรหัสผ่าน
dnsServer.start(DNS_PORT, "*", WiFi.softAPIP()); // เปิด DNS Server เพื่อให้การเชื่อมต่อทั้งหมดชี้ไปที่ IP ของ AP

server.on("/", HTTP_GET, []() { // กำหนดเส้นทางของเว็บ
server.send(200, "text/html", htmlPage); // ส่งหน้า HTML สำหรับตั้งค่า Wi-Fi
});

server.on("/save", HTTP_POST, []() { // รับข้อมูล SSID และ password
String ssid = server.arg("ssid");
String password = server.arg("password");
preferences.begin("wifi", false); // เริ่มต้นการใช้งาน Preferences
preferences.putString("ssid", ssid); // เก็บ SSID
preferences.putString("password", password); // เก็บรหัสผ่าน
preferences.end();
server.send(200, "text/html", "<h1>Settings Saved. Restarting...</h1>");
delay(1000);
ESP.restart(); // รีสตาร์ทอุปกรณ์
});

server.begin(); // เริ่มต้นเซิร์ฟเวอร์
}

ส่วนของการเชื่อมต่อกับ Wi-Fi (STA)

void connectToWiFi() {
preferences.begin("wifi", true); // อ่านข้อมูล Wi-Fi ที่บันทึกไว้
String ssid = preferences.getString("ssid", "");
String password = preferences.getString("password", "");
preferences.end();

if (ssid != "") {
WiFi.begin(ssid.c_str(), password.c_str()); // เชื่อมต่อกับ Wi-Fi
Serial.print("Connecting to WiFi");
for (int i = 0; i < 20; i++) {
if (WiFi.status() == WL_CONNECTED) {
Serial.println("\nConnected!");
return;
}
Serial.print(".");
delay(500);
}
Serial.println("\nFailed to connect.");
}
setupAPMode(); // หากเชื่อมต่อไม่สำเร็จให้กลับไปโหมด AP
}

โค้ดเต็ม มาทดสอบใช้กัน

การทำงานของโค้ด

  1. เมื่ออุปกรณ์เริ่มต้น, หากไม่มีข้อมูล Wi-Fi บันทึกไว้, อุปกรณ์จะทำงานในโหมด AP เชื่อมต่อและเข้าถึงผ่านเบราว์เซอร์ที่ 192.168.4.1 (ESP32 จะกำหนด IP เริ่มต้นเป็น 192.168.4.1 โดยอัตโนมัติ) จะพบหน้าเว็บให้กรอก SSID และรหัสผ่าน ของเครือข่าย WiFi ใหม่ที่ต้องการเชื่อมต่อ

  2. เมื่อกรอกข้อมูลแล้วและกด “Save”, ข้อมูลจะถูกบันทึกไว้ใน Preferences และอุปกรณ์จะรีสตาร์ท.
  3. หลังการรีสตาร์ท, อุปกรณ์จะพยายามเชื่อมต่อกับ Wi-Fi ที่ผู้ใช้กรอกไว้. หากเชื่อมต่อสำเร็จ, อุปกรณ์จะทำงานในโหมด STA และเชื่อมต่อกับเครือข่าย Wi-Fi.
  4. หากต้องการล้างข้อมูล Wi-Fi, สามารถกดปุ่มรีเซ็ตค้างไว้ 3 วินาทีเพื่อรีเซ็ตข้อมูล.

    สรุป

    โค้ดนี้จะช่วยให้การตั้งค่าและการเชื่อมต่อกับเครือข่าย Wi-Fi สำหรับอุปกรณ์ IoT ที่ใช้งานในระบบ Cloud-based MQTT เป็นไปอย่างง่ายดายและยืดหยุ่นในการเปลี่ยนแปลงเครือข่าย Wi-Fi.

     

     

     

     

     

     

    เพิ่มประสิทธิภาพ และการเรียนรู้ที่ง่ายยิ่งขึ้น

    เรียนรู้การตั้งค่าเครือข่าย WiFi ง่ายๆ ผ่าน AP บน MicroLearner [ArduinoIDE]

    อธิบายโค้ด

    แหล่งอ้างอิง

     

     

    กดติดตามเพื่อไม่พลาดทุกบทความดีๆ! 💡
    ถ้าคุณชอบเนื้อหานี้ อย่าลืมกดติดตามเป็นกำลังใจ ❤️
    รับอัพเดตเนื้อหาใหม่ๆ และไอเดียเจ๋งๆ ได้ที่นี่ทันที!

     

    Disclaimer: ข้อมูลนี้จัดทำขึ้นเพื่อเป็นแนวทางในการศึกษาและทำความเข้าใจเท่านั้น ไม่ควรถือเป็นคำแนะนำทางวิชาการหรือทางการค้า

    BESTESP32 – การตั้งค่า AP สำหรับการเชื่อมต่อ STA

    Related Posts