งานที่มอบหมาย ครูประภาส

บทความประกอบการเรียนรู้ => IOT : Internet of Thing (ESP8266, NodeMCU, WeMos D1 mini) => ข้อความที่เริ่มโดย: admin ที่ พฤศจิกายน 28, 2017, 10:21:22 AM

หัวข้อ: งานครั้งที่ 24 [On Line] การใช้งานไลบารี่ช่วยเชื่อมต่อไวไฟ WiFiManager
เริ่มหัวข้อโดย: admin ที่ พฤศจิกายน 28, 2017, 10:21:22 AM
การติดตั้งไลบารี่ช่วยเชื่อมต่อไวไฟ WiFiManager

WiFiManager  เป็นไลบรารี่ช่วยเชื่อมต่อไวไฟที่มีความสามารถสูงกว่าปกติตัวหนึ่งที่นิยมใช้กันอย่างแพร่หลาย ซึ่งมีคุณสมบัติที่ทำให้โมดูล NodeMCU ที่เคยเชื่อมต่อไวไฟตัวใดอยู่แล้วเปลี่ยนสถานที่ไปเชื่อมต่อตัวใหม่โดยปกติต้องเข้าไปแก้โค้ดโปรแกรม (ไวไฟเดิมไม่ได้เปิดแล้วป้อนไฟให้ NodeMCU ก็เช่นกัน) ไลบรารี่ WiFiManager จะจัดการเองโดยไม่ต้องเข้าไปแก้โปรแกรม โดยจะเปลี่ยนโหมดของโมดูล NodeMCU ให้เป็นเป็นแอคเซสพอยต์และเมื่อผู้ใช้งานใช้เครื่องคอมพิวเตอร์ใด ๆ เชื่อมต่อไวไฟตัวที่ NodeMCU เป็นแอคเซสพอยต์นั้นแล้ว บราวเซอร์จะเปิดหน้าต่างให้มาตั้งค่า SSID ที่ต้องการเชื่อมต่อ เมื่อผู้ใช้งานตั้งค่าเสร็จทำการบันทึกค่าแล้ว NodeMCU จะรีเซตตัวเองแล้วสตาร์ตขึ้นมาพร้อมกับทำการเชื่อมต่อกับ SSID ตัวใหม่ที่ทำการตั้งค่าไว้
 เนื่องจากโปรแกรม Arduino IDE ไม่ได้มีการติดตั้งไลบรารี่ WiFiManager มาให้ตั้งแต่เริ่มต้นจึงจำเป็นต้องมีการติดตั้งเพิ่มเติ่มเข้าไปในโปรแกรม โดยมีขั้นตอนดังนี้

1. เข้าไปที่เมนู Manage Libraries...
(http://www.praphas.com/PhotoForum/iot/Lab-12-WiFiManager/1.png)

2. พิมพ์คำว่า wifimanager (1) ในช่องค้นหา คลิกที่รายการที่ค้นเจอ (2) ทำการเลือกเวอร์ชั่นล่าสุด (3) แล้วคลิกติดตั้ง (4)
(http://www.praphas.com/PhotoForum/iot/Lab-12-WiFiManager/2.png)

3. ทดสอบโดยเรียกใช้โปรแกรมตัวอย่าง
(http://www.praphas.com/PhotoForum/iot/Lab-12-WiFiManager/3.png)

วงจรที่ใช้ในการทดลอง
(http://www.praphas.com/PhotoForum/iot/NodeMCU-4LED.png)

ตัวอย่างโปรแกรม
โค๊ด: [Select]
#include <ESP8266WiFi.h>
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include <WiFiManager.h>
void setup()
{
    Serial.begin(115200);
    WiFiManager wifiManager;
    wifiManager.setTimeout(180);   
    if(!wifiManager.autoConnect("AutoConnectAP"))
    {
      Serial.println("Failed to connect and hit timeout");
      delay(3000);
      ESP.reset();
      delay(5000);
    }
    WiFi.printDiag(Serial);
    Serial.println();
    Serial.println("connected...OK"); 
}
void loop()
{
}
ฟังก์ชั่นเพิ่มเติม
wifiManager.resetSettings();              //ล้างค่า SSID และ Password ที่เคยบันทึกไว้
wifiManager.autoConnect();               //ใช้สร้างชื่อแอคเซสพอยต์อัตโนมัติจาก ESP + ChipID

ในการณีเชื่อมต่อได้ (ค่า SSID เป็นค่าเดิมที่เคยบันทึกไว้) ผลจะได้ดังนี้
(http://www.praphas.com/PhotoForum/iot/Lab-12-WiFiManager/4.png)

เมื่อเปลี่ยนสถานที่หรือไวไฟตัวเดิมไม่ได้เปิด NodeMCU ที่ใช้ไลบรารี่ WiFiManager จะเข้าโหมดตั้งค่า SSID โดยเปลี่ยนโหมดตัวโมดูลเป็นแอคเซสพอยต์ (จะเข้าโหมดตอนบอร์ดเริ่มทำงานเท่านั้น) ตัวอย่างเช่น เปลี่ยนสถานที่มาที่ใหม่มีไวไฟดังนี้
(http://www.praphas.com/PhotoForum/iot/Lab-12-WiFiManager/5.png)

เมื่อทำการป้อนไฟเลี่ยงให้กับ NodeMCU จะเป็นดังรูป จะเห็นได้ว่ามีชื่อไวไฟตัวใหม่เกิดขึ้นซื้อเป็นชื่อที่เราตั้งค่าไว้
(http://www.praphas.com/PhotoForum/iot/Lab-12-WiFiManager/6.png)

ทำการเชื่อมต่อกับไวไฟดังกล่าว หากปกติบราวเซอร์จะถูกเปิดหน้าต่างขึ้นมาเองอัตโนมัติเพื่อให้ตั้งค่า แต่ถ้าหากนิ่งไม่มีอะไรเกิดขึ้นทั้ง ๆ ที่เชื่อมต่อได้แล้ว ให้พิมพ์ 192.168.4.1 ในบราวเซอร์ซึ่งจะปรากฏหน้าต่างดังนี้
(http://www.praphas.com/PhotoForum/iot/Lab-12-WiFiManager/7.png)

ในกรณีที่ต้องการให้สแกนหาไวไฟให้คลิกปุ่มบน (Configulation WiFi) ผลจะได้ดังรูป
(http://www.praphas.com/PhotoForum/iot/Lab-12-WiFiManager/8.png)

ทำการคลิกตรงชื่อไวไฟที่ต้องการให้ NodeMCU ทำการเชื่อมต่อ แล้วคลิก Save
(http://www.praphas.com/PhotoForum/iot/Lab-12-WiFiManager/9.png)

NodeMCU จะบันทึกไวไฟ (SSID) ตัวใหม่แล้วทำการเชื่อมต่อทันที

(http://www.praphas.com/PhotoForum/iot/Lab-12-WiFiManager/10.png)