ใช้ AutoConnect แทน WiFi Manager

ห่างหายจากบทความเกี่ยวกับ Microcontroller และ IoT ไปสักพักใหญ่ๆ ระหว่างนั้นก็มีคำถามเข้ามาจากหลายๆท่านเกี่ยวกับเรื่องของ WiFi manager และ ESP32 ไม่ว่าจะมาจากเรื่องของการใช้งาน PainlessMesh หรือจากบทความ Lora ก่อนหน้านี้ ผมจะอิงการใช้งานของ WiFi Manager เป็นหลัก ซึ่งตอนนั้นยังไม่มีการ Port WiFi Manager ไปบน ESP32 ทำให้การใช้งาน Compile อาจจะมี error บ้าง โดยบทความในวันนี้เราจะ ใช้ AutoConnect แทน WiFi Manager กัน

วันนี้ก็อยากจะมาแนะนำ library ตัวใหม่ชื่อ AutoConnect ซึ่งเราจะใช้ AutoConnect แทน WiFi Manager ในงานด้าน WiFi สำหรับ esp8266 และ esp32 ซึ่งจุดประสงค์หลักของการใช้งานก็ยังคงเป็นเหมือนเดิม ก็คือต้องการต่อ Internet ผ่าน WiFi โดยที่ไม่ต้อง Hard code ข้อมูลในส่วนของ SSID และ Password ลงไป ทำให้สะดวกเวลาไปใช้ในหน้างานจริง

ขั้นแรกก็ต้องไป load library มาก่อน เข้าไปที่ Tool –> Manage Libraries แล้วค้นหาด้วยคำว่า autoconnect

ไม่ได้ใช้งาน Arduino IDE มานาน เพิ่งเห็นว่าในเวอร์ชั่น 1.8.13 เวลามีในส่วนของ Library Dependency ก็จะสามารถเลือก ติดตั้งไปพร้อมกันเลยด้วยแฮะ

AutoConnect จะใช้คู่กับ Library ArduinoJson และ PageBuilder ซึ่งถ้ายังไม่เคยติดตั้งมาก่อน ก็สามารถเลือกติดตั้งได้เลยในขั้นตอนนี้

โดยบอร์ดที่เราจะนำมาทดสอบในวันนี้เป็น ESP32 Lite

เสร็จแล้วก็มาดูโค้ดตัวอย่างที่มากับ AutoConnect Library กัน

ซึ่งตัวอย่างที่ให้มานั้นก็เพียบเลย เรียกได้ว่าครบทุก Function ของการใช้งาน Microcontroller กับ WiFi ที่เท่าจะนึกออก

โดยเราจะใช้ Code ตัวอย่างนี้สำหรับ ESP32

#include <WiFi.h>          
#include <WebServer.h>     
#include <AutoConnect.h>

WebServer Server;          
AutoConnect      Portal(Server);

void rootPage() {
  char content[] = "Hello, world";
  Server.send(200, "text/plain", content);
}

void setup() {
  delay(1000);
  Serial.begin(115200);
  Serial.println();

  Server.on("/", rootPage);
  if (Portal.begin()) {
    Serial.println("WiFi connected: " + WiFi.localIP().toString());
  }
}

void loop() {
    Portal.handleClient();
}

ถ้าใครใช้ ESP8266 ก็ใช้ตัวอย่างนี้แทนครับ

#include <ESP8266WiFi.h>          
#include <ESP8266WebServer.h>     
#include <AutoConnect.h>

ESP8266WebServer Server;          
AutoConnect      Portal(Server);

void rootPage() {
  char content[] = "Hello, world";
  Server.send(200, "text/plain", content);
}

void setup() {
  delay(1000);
  Serial.begin(115200);
  Serial.println();

  Server.on("/", rootPage);
  if (Portal.begin()) {
    Serial.println("WiFi connected: " + WiFi.localIP().toString());
  }
}

void loop() {
    Portal.handleClient();
}

หลังจากนั้นให้ Connect ด้วยมือถือหรือ PC ก็ได้ไปที่ SSID: esp32ap หรือ esp8266ap โดยใช้ password: 12345678

จากนั้นก็จะเข้าสู่หน้า Captive Portal ของ AutoConnect โดยจะมีข้อมูลตามรูปด้านล่างนี้เลย

จากนั้นก็ให้เข้าไปที่ Menu ที่เป็นรูปสามขีดที่มุมบนขวา แต่แนะนำว่าไปเปิด Browser เข้าที่ IP 172.217.28.1 จะดีกว่า

หลังจากใส่ Password เรียบร้อย ESP32 ของเราก็จะเชื่อมต่อกับ WiFi ที่เรากรอกข้อมูลไป พร้อมทั้งแสดงผลของ IP ที่ได้ผ่านทางหน้าจอ Serial Monitor

ถ้าใครอยากลองเปลี่ยนจาก WiFi Manager มาใช้ AutoConnect ก็ถือว่าน่าสนใจทีเดียว เพราะอย่างที่เกริ่นไปในตอนต้น Feature ต่างๆของ AutoConnect นั้นมีมาให้พร้อม ปรุงมาให้เกือบสำเร็จเลย แล้วพบกันใหม่ในบทความถัดไปครับ

ข้อมูลเพิ่มเติม: AutoConnect Library by Hieromon

Author: Joe D.S.
Just a man on earth

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.