บทความ ESPino32 ตอนที่ 10 การใช้งาน Wi-Fi

สารบัญ บทความ ESPino32

บทความ ESPino32 ตอนที่ 10 การใช้งาน Wi-Fi

        บทความ ESPino32 ตอนที่ 10 การใช้งาน Wi-Fi เป็นการใช้งานบอร์ด ESPino32 ในการเชื่อมต่อเครือข่าย Wi-Fi ในโหมดพื้นฐานต่าง ตัวอย่างการใช้งานบอร์ด ESPino32 ที่เกี่ยวข้องกับ Wi-Fi เช่น ใช้งานบอร์ด ESPino32 จำลองตัวเองเป็น Access Point ให้อุปกรณ์อื่นๆที่เกี่ยวข้องเชื่อมต่อเข้ากับระบบเพื่อแลกเปลี่ยนข้อมูลผ่าน Wi-Fi, ใช้งานบอร์ด ESPino32 เชื่อมต่อกับ Access Point เพื่อส่งข้อมูลจากเซ็นเซอร์ต่างๆ ผ่าน Wi-Fi ไปยังเว็ปเซิร์ฟเวอร์ ใช้งานบอร์ด ESPino32 เชื่อมต่อกับ Access Point เพื่อรับส่งข้อมูลกับคลาวด์เซิร์ฟเวอร์เพื่อทำเป็น IoT Device (Smart Plug, Smart Farm) เป็นต้น

บอร์ด ESPino32 เชื่อมต่อเครือข่าย Internet ผ่าน Wi-Fi

เนื่องจากบอร์ด ESPino32 ใช้โมดูล ESP32 เป็นแกนประมวลผล จึงสามารถใช้งานไลบรารี่ของโมดูล ESP32 (เพิ่มเข้ามาตอนติดตั้งบอร์ด ESPino32) ที่เกี่ยวกับการใช้งาน Wi-Fi จาก example ใน Arduino IDE ได้ทันที ตัวอย่างไลบรารี่ที่ใช้งานบ่อยๆ เช่น

– STA mode (Station mode หรือ Wi-Fi client mode) ใช้งานบอร์ด ESPino32 เป็น Station เพื่อเชื่อมต่อเข้ากับ Access Point

– AP mode (Soft-AP mode หรือ Access Point mode) ใช้งานบอร์ด ESPino32 เป็น Access Point เพื่อให้ Station เข้ามาเชื่อมต่อ

– AP-STA mode ใช้งานบอร์ด ESPino32 ทำงานเป็นทั้ง Station และ Access Point

– Various security modes โหมดความปลอดภัยของการใช้ Wi-Fi (WPA, WPA2, WEP, etc.)

– Scanning for access points ใช้สำหรับสแกน Access points โดยรอบ

– Promiscuous mode ใช้สำหรับมอนิเตอร์ หรือ Sniffing Wi-Fi packets บนมาตรฐาน IEEE802.11

โหมดการทำงานของบอร์ด ESPino32 แบ่งเป็น 3 โหมด ได้แก่

– AP mode (Soft-AP mode หรือ Access Point mode) โหมดสำหรับใช้งานบอร์ด ESPino32 จำลองตัวเองเป็น Access Point (อุปกรณ์ปล่อยสัญญาณ Wi-Fi) เพื่อให้อุปกรณ์อื่นๆสามารถเชื่อมต่อกับบอร์ด ESPino32 และใช้ในการแลกเปลี่ยนข้อมูลในระบบเครือข่ายโดยไม่จำเป็นต้องเชื่อมต่อกับเราเตอร์ทั่วไป ตัวอย่างการใช้งานในโหมดนี้เช่น สร้างหน้าเว็บไซต์ง่ายๆขึ้นมาเพื่อแสดงข้อมูลจากเซ็นเซอร์หรือรับข้อมูลจากเว็บไซต์เพื่อสั่งงานให้บอร์ด ESPino32 ทำงานบางอย่าง เป็นต้น

AP mode

– STA mode (Station mode หรือ Wi-Fi client mode) โหมดสำหรับใช้งานบอร์ด ESPino32 เป็น Station เพื่อเชื่อมต่อเข้ากับ Access Point เช่น Router, Mobile Hotspot, Pocket Wi-Fi, MiFi เป็นต้น ใช้ในการแลกเปลี่ยนข้อมูลในระบบเครือข่าย หรือ ส่งข้อมูลออกสู่อินเทอร์เน็ตภายนอก ตัวอย่างการใช้งานในโหมดนี้เช่น ใช้บอร์ด ESPino32 อ่านค่าจากเซ็นเซอร์จากนั้นส่งข้อมูลที่ได้จากเซ็นเซอร์ขึ้นอินเทอร์เน็ตผ่านเราเตอร์ อย่างเช่นงานด้าน Smart Home, Smart Farm หรืองานด้าน IoT เป็นต้น

STA mode

– AP-STA mode โหมดสำหรับใช้งานบอร์ด ESPino32 ทำงานเป็น Station และ Access Point ในตัวเดียวกัน การใช้งานในโหมดนี้จะรวมข้อดีของ AP mode และ STA mode เข้าด้วยกันทำให้อุปกรณ์อื่นๆสามารถเชื่อมต่อกับบอร์ด ESPino32 ที่เป็น Station ได้และบอร์ด ESPino32 ก็สามารถเชื่อมต่อ Access Point อื่นๆเพื่อเชื่อมต่อกับระบบภายนอกได้เช่นกัน

AP+STA mode

ตัวอย่างฟังก์ชันในไลบรารี่ของบอร์ด ESPino32 ที่เกี่ยวข้องกับการใช้งาน Wi-Fi

void mode(WiFiMode);

        เป็น Function สำหรับเลือกโหมดการทำงานให้ ESP32 โดยมีอยู่ด้วยกัน 3 โหมด ได้แก่ Station, Access Point, Access Point – Station

Parameter

WIFI_OFF                     ปิดการใช้งาน Wi-Fi
WIFI_STA                     สั่งให้ทำงานเป็น Station
WIFI_AP                       สั่งให้ทำงานเป็น Access Point
WIFI_AP_STA               สั่งให้ทำงานเป็นทั้ง Station และ Access Point

ตัวอย่างการใช้งาน

WiFi.mode(WIFI_AP);
WiFi.mode(WIFI_STA);

bool softAP(const char*ssid, const char*passphrase, int channel, int ssid_hidden, int max_connection);

        เป็นฟังก์ชันสำหรับตั้งค่า Access Point ใช้งานในโหมด AP mode และ AT+STA mode

Parameter

ssid                              ชื่อเครือข่าย (สูงสุดได้ 63 ตัวอักษร)
passphrase                   รหัสผ่าน (สำหรับ WPA2 ต้องกำหนดอย่างน้อย 8 ตัวอักษร)
channel                        หมายเลขแชนแนล Wi-Fi ที่ต้องการใช้งาน (0 –13)
ssid_hidden                  การแสดง SSID (0 ไม่แสดง, 1 แสดง)
max_connection             จำนวนสูงสุดที่ Station สามารถเชื่อมต่อได้

ตัวอย่างการใช้งาน

WiFi.WiFi.softAP(“ESPino32 AP mode”,””);                      // แบบไม่มี password
WiFi.WiFi.softAP(“ESPino32 AP mode”,”password”);        // แบบมี password

bool softAPConfig(IPAddress local_ip, IPAddress gateway, IPAddress subnet);

        เป็นฟังก์ชันสำหรับตั้งค่า IP , gateway , subnet ใน AP mode ในกรณีที่ต้องการใช้งานกำหนด Static IP ใช้งานในโหมด AP mode และ AT+STA mode

Parameter

local_ip = สำหรับตั้ง IP
gateway = สำหรับตั้ง gateway
subnet = สำหรับตั้ง subnet

ตัวอย่างการใช้งาน  

IPAddress local_ip = {192,168,1,1};       // สำหรับ AP Mode        
IPAddress gateway = {192,168,1,1};
IPAddress subnet = {255,255,255,0};
WiFi.softAPConfig(local_ip,gateway,subnet);

IPAddress local_ip = {192,168,1,2};       // AP-STA mode
IPAddress gateway = {192,168,1,1};
IPAddress subnet = {255,255,255,0};
WiFi.softAPConfig(local_ip,gateway,subnet);

bool softAPdisconnect();

        เป็นฟังก์ชันสำหรับปิดการใช้งาน Access Point ใช้งานในโหมด AP mode และ AT+STA mode

ตัวอย่างการใช้งาน

WiFi.softAPdisconnect();

void begin(const char* ssid, const char *passphrase, int32_t channel, const uint8_t* bssid, bool connect)

        เป็นฟังก์ชันสำหรับเริ่มการเชื่อมต่อ Wi-Fi ใช้งานในโหมด STA mode และ AT+STA mode

Parameter

ssid                              ชื่อของ Access Point ที่ต้องการเชื่อมต่อ
passphrase                   (Optional) รหัสผ่านของ Access Point ที่ต้องการเชื่อมต่อ
channel                        (Optional) หมายเลขแชนแนล Wi-Fi ของ Access Point ที่ต้องการเชื่อมต่อ
bssid                            (Optional) BSSID / MAC of AP
connect                         (Optional) call connect

ตัวอย่างการใช้งาน

WiFi.begin(“ThaieasyElec”,””);                           // แบบไม่มี password
WiFi.begin(“ThaieasyElec”,”password”);             // แบบมี password

bool WiFiSTAClass::config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns1, IPAddress dns2)

        เป็นฟังก์ชันสำหรับตั้งค่า local_ip, gateway , subnet, dns1, dns2 ใน Station mode ในกรณีที่ต้องการใช้งานแบบ Static IP ใช้งานในโหมด STA mode และ AT+STA mode

Parameter

local_ip                         สำหรับตั้ง ip configuration
gateway                       สำหรับตั้ง gateway configuration
subnet                          สำหรับตั้ง Subnet mask
dns1                             สำหรับตั้ง DNS server 1
dns2                             สำหรับตั้ง DNS server 2

ตัวอย่างการใช้งาน

IPAddress local_ip = {192,168,1,100};  
IPAddress gateway = {192,168,1,1};
IPAddress subnet = {255,255,255,0};
IPAddress dns1 = {10,1,1,25}
IPAddress dns1 = {10,2,1,200}
WiFi.config(local_ip,gateway,subnet,dns1,dns2);

bool reconnect();

        เป็นฟังก์ชันสำหรับสิ้นสุดการเชื่อมต่อ Wi-Fi และเชื่อมต่อใหม่อีกครั้ง ใช้งานในโหมด STA mode และ AT+STA mode

ตัวอย่างการใช้งาน

WiFi.reconnect();

bool disconnect();

         เป็นฟังก์ชันสำหรับสิ้นสุดการเชื่อมต่อ Wi-Fi ใช้งานในโหมด STA mode และ AT+STA mode

ตัวอย่างการใช้งาน

WiFi.disconnect();

ตัวอย่างการใช้งานบอร์ด ESPino32 แบบ AP mode

ตัวอย่างนี้จะเป็นตัวอย่างการใช้งานบอร์ด ESPino32 เพื่ออธิบายการใช้งาน AP mode อย่างง่าย โดยการใช้งานในโหมดนี้อุปกรณ์อื่นๆ สามารถเข้ามาเชื่อมต่อกับบอร์ด ESPino32 และแลกเปลี่ยนข้อมูลโดยไม่จำเป็นต้องเชื่อมต่อกับเราเตอร์ทั่วไป

ตัวอย่างโปรแกรมที่ใช้งาน

บรรทัดที่ 1         เรียกใช้งานไลบรารี่ WiFi
บรรทัดที่ 2         define ค่าคงที่ SSID_NAME ให้มีค่าเท่ากับ ESPino32 AP mode (ชื่อ SSID)
บรรทัดที่ 3         define ค่าคงที่ SSID_PASS ให้มีค่าเท่ากับ password (รหัสผ่านสำหรับ Join SSID)
บรรทัดที่ 4         กำหนดค่าตัวแปร local_ip ให้มีค่าเท่ากับ 192.168.1.1
บรรทัดที่ 5         กำหนดค่าตัวแปร gateway ให้มีค่าเท่ากับ 192.168.1.1
บรรทัดที่ 6         กำหนดค่าตัวแปร subnet ให้มีค่าเท่ากับ 255.255.255.0
บรรทัดที่ 7         สร้างฟังก์ชัน setup()
บรรทัดที่ 8         เปิดฟังก์ชัน setup()
บรรทัดที่ 9         ใช้งานฟังก์ชัน Serial โดยตั้งค่าอัตราเร็ว Baud rate ของ Serial อยู่ที่ 115200 บิตต่อวินาที
บรรทัดที่ 10        ใช้งานฟังก์ชัน WiFi.mode เพื่อตั้งค่าโหมดของ Wi-Fi เป็นแบบ WIFI_AP
บรรทัดที่ 11        ใช้งานฟังก์ชัน WiFi.softAPConfig เพื่อตั้งค่า IP , gateway , subnet ให้ AP
บรรทัดที่ 12        ใช้งานฟังก์ชัน WiFi.softAP เพื่อให้ AP เริ่มทำงาน
บรรทัดที่ 13        แสดงคำว่า “IP address” ออกทาง Serial Monitor
บรรทัดที่ 14        แสดงค่าในฟังก์ชัน WiFi.softAPIP และขึ้นบรรรทัดใหม่ออกทาง Serial Monitor
บรรทัดที่ 15        หน่วงเวลา 60000 มิลลิวินาที
บรรทัดที่ 16        ใช้งานฟังก์ชั้นก์ชัน WiFi.softAPdisconnect เพื่อหยุดการทำงานของ AP
บรรทัดที่ 17        แสดงคำว่า “SoftAPdisconnect” ออกทาง Serial Monitor
บรรทัดที่ 18        ปิดฟังก์ชัน setup()
บรรทัดที่ 19        สร้างฟังก์ชัน loop()
บรรทัดที่ 20        เปิดฟังก์ชัน loop()
บรรทัดที่ 21        ปิดฟังก์ชัน loop()

หลังจากอัพโหลดโปรแกรมลงบนบอร์ด ESPino32 สำเร็จ ทดสอบใช้งานด้วยการใช้ สมาร์ทโฟน แล็ปท็อบ หรือคอมพิวเตอร์ที่มี Wi-Fi สแกน AP จะมีรายชื่อ AP ของบอร์ด ESPino32 แสดงขึ้นมา ดังรูป AP จากบอร์ด ESPino32 จากนั้นลองทดสอบเชื่อมต่อกับ AP ที่บอร์ด ESPino32 ปล่อยออกมา ถ้าใช้คอมพิวเตอร์ระบบปฏิบัติการ Windows 10 สามารถตรวจสอบ Properties ของ AP ที่บอร์ด ESPino32 ได้ ดังรูป Properties ของ AP จากบอร์ด ESPino32

AP จากบอร์ด ESPino32
Properties ของ AP จากบอร์ด ESPino32

ผลการทดลอง

        เมื่อบอร์ด ESPino32 เริ่มทำงานโปรแกรมในบอร์ดจะสั่งงานให้บอร์ด ESPino32 จำลองตัวเองเป็น AP โดย AP ที่ได้จะมี Properties ของเน็ตเวิร์ค ตามพารามิเตอร์ที่ได้ตั้งค่าไว้ และแสดง IP Address ออกมา จากนั้นหน่วงเวลาไว้ 60 วินาที หลังจากนั้นโปรแกรมในบอร์ด ESPino32 จึงสั่งปิด AP ที่ปล่อยออกมา แล้วแสดง SoftAPdisconnect ออกมาทาง Serial Monitor ดังรูป ผลลัพธ์การใช้งานบอร์ด ESPino32 แบบ AP mode

ผลลัพธ์การใช้งานบอร์ด ESPino32 แบบ AP mode

ตัวอย่างการใช้งานบอร์ด ESPino32 ใน STA mode

        ตัวอย่างนี้จะเป็นตัวอย่างการใช้งานบอร์ด ESPino32 เพื่ออธิบายการใช้งาน STA mode โดยการใช้งานในโหมดนี้จะใช้งานบอร์ด ESPino32 เชื่อมต่อเข้ากับเราเตอร์เพื่อแลกเปลี่ยนข้อมูลในเครือข่ายหรือแลกเปลี่ยนข้อมูลผ่านอินเทอร์เน็ต

ตัวอย่างโปรแกรมที่ใช้งาน

บรรทัดที่ 1         เรียกใช้งานไลบรารี่ WiFi
บรรทัดที่ 2         define ค่าคงที่ SSID_NAME ให้มีค่าเท่ากับ ThaieasyElec (ชื่อ AP ที่ต้องการใช้งาน)
บรรทัดที่ 3         define ค่าคงที่ SSID_PASS ให้มีค่าเท่ากับ password (รหัสผ่านสำหรับ Join AP)
บรรทัดที่ 4         สร้างฟังก์ชัน setup()
บรรทัดที่ 5         เปิดฟังก์ชัน setup()
บรรทัดที่ 6         ใช้งานฟังก์ชัน Serial โดยตั้งค่าอัตราเร็ว Baud rate ของ Serial อยู่ที่ 115200 บิตต่อวินาที
บรรทัดที่ 7         ใช้งานฟังก์ชัน WiFi.mode เพื่อตั้งค่าโหมดของ Wi-Fi เป็นแบบ WIFI_STA
บรรทัดที่ 8         ใช้งานฟังก์ชัน WiFi.disconnect เพื่อสิ้นสุดการเชื่อมต่อกับ AP ในกรณีที่มีการเชื่อมต่ออยู่
บรรทัดที่ 9         หน่วงเวลา 100 มิลลิวินาที
บรรทัดที่ 10        แสดงการขึ้นบรรทัดใหม่ออกทาง Serial Monitor
บรรทัดที่ 11        แสดงคำว่า “Connecting to ” ออกทาง Serial Monitor
บรรทัดที่ 12        แสดงค่าในตัวแปร SSID_NAME และการขึ้นบรรทัดใหม่ออกทาง Serial Monitor
บรรทัดที่ 13        ใช้ฟังก์ชัน WiFi.begin โดยใส่ค่าในตัวแปร SSID_NAME และ SSID_PASS เพื่อเชื่อมต่อ AP
บรรทัดที่ 14        เริ่มใช้งานฟังก์ชัน while ลูป สำหรับตรวจสอบการการเชื่อมต่อ Wi-Fi โดยถ้า WiFi.Status มีค่าไม่เท่ากับ WL_CONNECTED
บรรทัดที่ 15        หน่วงเวลา 500 มิลลิวินาที
บรรทัดที่ 16        แสดง “.” ออกทาง Serial Monitor
บรรทัดที่ 17       ปิดการใช้งานฟังก์ชัน while ลูป
บรรทัดที่ 18        แสดงการขึ้นบรรทัดใหม่ออกทาง Serial Monitor
บรรทัดที่ 19        แสดงคำว่า “WiFi connected” และการขึ้นบรรทัดใหม่ออกทาง Serial Monitor
บรรทัดที่ 20        แสดงคำว่า “IP address: ” และการขึ้นบรรทัดใหม่ออกทาง Serial Monitor
บรรทัดที่ 21        แสดงค่าในฟังก์ชัน WiFi.localIP() และการขึ้นบรรทัดใหม่ออกทาง Serial Monitor
บรรทัดที่ 22        ปิดฟังก์ชัน setup()
บรรทัดที่ 23        สร้างฟังก์ชัน loop()
บรรทัดที่ 24        เปิดฟังก์ชัน loop()
บรรทัดที่ 25        ปิดฟังก์ชัน loop()

ผลการทดลอง

            เมื่อบอร์ด ESPino32 เริ่มทำงาน โปรแกรมในบอร์ดสั่งงานบอร์ด ESPino32 ให้ทำงานในรูปแบบ Station mode จากนั้นโปรแกรมจะสั่งงานให้บอร์ด ESPino32 เชื่อมต่อกับ AP ตามพารามิเตอร์ SSID_NAME และ SSID_PASS ตามที่ตั้งไว้ จากนั้นจะเข้าสู่ while ลูปเพื่อรอจนกว่าจะสามารถเชื่อมต่อ Wi-Fi กับ AP นั้นได้ ถ้ายังไม่สามารถเชื่อมต่อกับ AP ได้จะแสดง “.” รอจนกว่าจะสามารถเชื่อมต่อได้ หลังจากเชื่อมต่อได้แล้วจะแสดง IP Address ที่ได้รับจาก AP ที่เข้าร่วมได้ ดังรูป ผลลัพธ์การใช้งานบอร์ด ESPino32 แบบ AP mode

ผลลัพธ์การใช้งานบอร์ด ESPino32 แบบ AP mode

ตัวอย่างการใช้งานบอร์ด ESPino32 ใน AP+STA mode

        ตัวอย่างนี้จะเป็นตัวอย่างการใช้งานบอร์ด ESPino32 เพื่ออธิบายการใช้งาน AP+STA mode ในตัวเดียวกัน การใช้งานในโหมดนี้จะใช้งานบอร์ด ESPino32 จำลองตัวเองเป็น Access Point ให้อุปกรณ์อื่นๆเข้ามาเชื่อมต่อและใช้งานบอร์ด ESPino32 ให้เชื่อมต่อเราเตอร์เพื่อเชื่อมต่อกับระบบภายนอก

ตัวอย่างโปรแกรมที่ใช้งาน

บรรทัดที่ 1         เรียกใช้งานไลบรารี่ WiFi
บรรทัดที่ 2         define ค่าคงที่ SSID_AP_NAME ให้มีค่าเท่ากับ ESPino32 AP mode (ชื่อ SSID)
บรรทัดที่ 3         define ค่าคงที่ SSID_AP_PASS ให้มีค่าเท่ากับ password (รหัสผ่านสำหรับ Join SSID)
บรรทัดที่ 4         define ค่าคงที่ SSID_NAME ให้มีค่าเท่ากับ ThaieasyElec (ชื่อ AP ที่ต้องการใช้งาน)
บรรทัดที่ 5         define ค่าคงที่ SSID_PASS ให้มีค่าเท่ากับ password (รหัสผ่านสำหรับ Join AP)
บรรทัดที่ 6         สร้างฟังก์ชัน setup()
บรรทัดที่ 7         เปิดฟังก์ชัน setup()
บรรทัดที่ 8         ใช้งานฟังก์ชัน Serial โดยตั้งค่าอัตราเร็ว Baud rate ของ Serial อยู่ที่ 115200 บิตต่อวินาที
บรรทัดที่ 9         ใช้งานฟังก์ชัน WiFi.mode เพื่อตั้งค่าโหมดของ Wi-Fi เป็นแบบ WIFI_AP_STA
บรรทัดที่ 10        หน่วงเวลา 100 มิลลิวินาที
บรรทัดที่ 11        ใช้งานฟังก์ชัน WiFi.softAP เพื่อให้ AP เริ่มทำงาน
บรรทัดที่ 12        แสดงคำว่า “AP IP address:  ” ออกทาง Serial Monitor
บรรทัดที่ 13        แสดงค่าในฟังก์ชัน WiFi.softAPIP และขึ้นบรรรทัดใหม่ออกทาง Serial Monitor
บรรทัดที่ 14        แสดงการขึ้นบรรทัดใหม่ออกทาง Serial Monitor
บรรทัดที่ 15        แสดงคำว่า “Connecting to ” ออกทาง Serial Monitor
บรรทัดที่ 16        แสดงค่าในตัวแปร SSID_NAME และการขึ้นบรรทัดใหม่ออกทาง Serial Monitor
บรรทัดที่ 17        ใช้ฟังก์ชัน WiFi.begin โดยใส่ค่าในตัวแปร SSID_NAME และ SSID_PASS เพื่อเชื่อมต่อ AP
บรรทัดที่ 18        เริ่มใช้งานฟังก์ชัน while ลูป สำหรับตรวจสอบการการเชื่อมต่อ Wi-Fi โดยถ้า WiFi.Status มีค่าไม่เท่ากับ WL_CONNECTED
บรรทัดที่ 19        หน่วงเวลา 500 มิลลิวินาที
บรรทัดที่ 20        แสดง “.” ออกทาง Serial Monitor
บรรทัดที่ 21        ปิดการใช้งานฟังก์ชัน while ลูป
บรรทัดที่ 22        แสดงการขึ้นบรรทัดใหม่ออกทาง Serial Monitor
บรรทัดที่ 23        แสดงคำว่า “WiFi connected” และการขึ้นบรรทัดใหม่ออกทาง Serial Monitor
บรรทัดที่ 24        แสดงคำว่า “STA IP address: ” และการขึ้นบรรทัดใหม่ออกทาง Serial Monitor
บรรทัดที่ 25        แสดงค่าในฟังก์ชัน WiFi.localIP() และการขึ้นบรรทัดใหม่ออกทาง Serial Monitor
บรรทัดที่ 26        แสดงการขึ้นบรรทัดใหม่ออกทาง Serial Monitor
บรรทัดที่ 27        ปิดฟังก์ชัน setup()
บรรทัดที่ 28        สร้างฟังก์ชัน loop()
บรรทัดที่ 29        เปิดฟังก์ชัน loop()
บรรทัดที่ 30        ปิดฟังก์ชัน loop()

หลังจากอัพโหลดโปรแกรมลงบนบอร์ด ESPino32 สำเร็จ ทดสอบใช้งานด้วยการแสกน Wi-Fi และเชื่อมต่อเข้ากับ AP ของบอร์ด

AP จากบอร์ด ESPino32
Properties ของ AP จากบอร์ด ESPino32
ทดสอบ ping ไปที่ AP ของบอร์ด ESPino32 และ ping ไปที่ IP ของบอร์ด ESPino32 จากเราเตอร์

ผลการทดลอง

            เมื่อบอร์ด ESPino32 เริ่มทำงานโปรแกรมในบอร์ดใช้งานบอร์ด ESPino32 ในแบบ Station mode จากนั้นโปรแกรมจะสั่งงานให้บอร์ด ESPino32 เชื่อมต่อกับ AP ตามพารามิเตอร์ SSID_NAME และ SSID_PASS ตามที่ตั้งไว้ จากนั้นจะเข้าสู่ while ลูปเพื่อรอจนกว่าจะสามารถเชื่อมต่อ Wi-Fi กับ AP นั้นได้ ถ้ายังไม่สามารถเชื่อมต่อกับ AP ได้จะ แสดง “.” รอจนกว่าจะสามารถเชื่อมต่อได้ หลังจากเชื่อมต่อได้แล้วจะแสดง IP Address ที่ได้รับจาก AP ที่เข้าร่วมได้ ดังรูป ผลลัพธ์การใช้งานบอร์ด ESPino32 แบบ AP+STA mode

ผลลัพธ์การใช้งานบอร์ด ESPino32 แบบ AP+STA mode

ตัวอย่างการใช้งานบอร์ด ESPino32 ในการสแกน Wi-Fi

ตัวอย่างนี้จะเป็นตัวอย่างการใช้งานบอร์ด ESPino32 ในการสแกน Wi-Fi ในบริเวณพื้นที่รอบบอร์ด ESPino32 จากนั้นให้แสดงผลลัพธ์ออกมาทาง Serial Monitor โดยสามารถใช้งานตัวอย่างโปรแกรมได้จากไลบรารี่ของโมดูล ESP32 (สามารถเปิดได้จาก Arduino IDE > Examples > WiFi > WiFiScan)

ตัวอย่างโปรแกรมที่ใช้งาน

บรรทัดที่ 1         เรียกใช้งานไลบรารี่ WiFi
บรรทัดที่ 2         สร้างฟังก์ชัน setup()
บรรทัดที่ 3         เปิดใช้งานฟังก์ชัน setup()
บรรทัดที่ 4         ใช้งานฟังก์ชัน Serial โดยตั้งค่าอัตราเร็ว Baud rate ของ Serial อยู่ที่ 115200 บิตต่อวินาที
บรรทัดที่ 5         ใช้งานฟังก์ชัน WiFi.mode เพื่อตั้งค่าโหมดของ Wi-Fi เป็นแบบ WIFI_STA
บรรทัดที่ 6         ใช้งานฟังก์ชัน WiFi.disconnect เพื่อสิ้นสุดการเชื่อมต่อกับ AP ในกรณีที่มีการเชื่อมต่ออยู่
บรรทัดที่ 7         หน่วงเวลา 100 มิลลิวินาที
บรรทัดที่ 8         แสดงคำว่า “Setup done” และการขึ้นบรรทัดใหม่ออกทาง Serial Monitor
บรรทัดที่ 9         ปิดฟังก์ชัน setup()
บรรทัดที่ 10        สร้างฟังก์ชัน loop()
บรรทัดที 11        เปิดฟังก์ชัน loop()
บรรทัดที่ 12        แสดงคำว่า “scan start” และการขึ้นบรรทัดใหม่ออกทาง Serial Monitor
บรรทัดที่ 13        ประกาศตัวแปร n ชนิด Integer ให้มีค่าเท่ากับเอาต์พุตจากฟังก์ชัน WiFi.scanNetworks()
บรรทัดที่ 14        แสดงคำว่า “Scan done” และการขึ้นบรรทัดใหม่ออกทาง Serial Monitor
บรรทัดที่ 15        เปิดฟังก์ชันถ้าค่าในตัวแปร n มีค่าเท่ากับ 0 และเริ่มใช้งานฟังก์ชันถ้าค่าในตัวแปร n มีค่าเท่ากับ 0
บรรทัดที่ 16        แสดงคำว่า “no networks found” และการขึ้นบรรทัดใหม่ออกทาง Serial Monitor
บรรทัดที่ 17        ปิดฟังก์ชัน ถ้าค่าในตัวแปร n มีค่าเท่ากับ 0 และเริ่มฟังก์ชันถ้าค่าตัวแปร n มีค่าไม่เท่ากับ 0
บรรทัดที่ 18        แสดงค่าในตัวแปร n ออกทาง Serial Monitor
บรรทัดที่ 19        แสดงคำว่า “ networks found” และการขึ้นบรรทัดใหม่ออกทาง Serial Monitor
บรรทัดที่ 20        เริ่มฟังก์ชันการวนรอบการทำงานจำนวน n รอบโดยเพิ่มค่าตัวแปร i ขึ้นทีละ 1
บรรทัดที่ 21        แสดงค่าในตัวแปร i + 1 ออกทาง Serial Monitor
บรรทัดที่ 22        แสดงคำว่า “: ” ออกทาง Serial Monitor
บรรทัดที่ 23        แสดงค่าในฟังก์ชัน WiFi.SSID(i) ออกทาง Serial Monitor
บรรทัดที่ 24        แสดงคำว่า “ (” ออกทาง Serial Monitor
บรรทัดที่ 25        แสดงค่าในฟังก์ชัน WiFi.RSSI(i) ออกทาง Serial Monitor
บรรทัดที่ 26        แสดงคำว่า “)” ออกทาง Serial Monitor
บรรทัดที่ 27        ถ้าค่าในฟังก์ชัน WiFi.encryptionType(i) มีค่าเท่ากับ WIFI_AUTH_OPEN (SSID เป็นแบบ Open) แสดงคำว่า “ ” และการขึ้นบรรทัดใหม่ออกทาง Serial Monitor แต่ถ้ามีค่าไม่เท่ากับ WIFI_AUTH_OPEN ให้แสดงคำว่า “*” และการขึ้นบรรทัดใหม่ออกทาง Serial Monitor
บรรทัดที่ 28        หน่วงเวลา 10 มิลลิวินาที
บรรทัดที่ 29        ปิดฟังก์ชันวนรอบการทำงาน
บรรทัดที่ 30        ปิดฟังก์ชันถ้าค่าตัวแปร n มีค่าไม่เท่ากับ 0
บรรทัดที่ 31        แสดงการขึ้นบรรทัดใหม่ออกทาง Serial Monitor
บรรทัดที่ 32        หน่วงเวลา 5000 มิลลิวินาที
บรรทัดที่ 33        ปิดฟังก์ชัน setup()

ผลการทดลอง

        เมื่อบอร์ด ESPino32 เริ่มทำงานโปรแกรมในบอร์ดใช้งานบอร์ด ESPino32 ในแบบ Station mode จากนั้นโปรแกรมจะสั่งงานให้บอร์ด ESPino32 หยุดการเชื่อมต่อกับ AP จากนั้นโปรแกรมในบอร์ดจะใช้ฟังก์ชัน WiFi.scanNetworks() เพื่อสแกนจำนวน AP ที่อยู่ในพื้นที่ และ แสดงผลลัพธ์ของการสแกน Wi-Fi ที่บอร์ด ESPino32 ตรวจพบออกทาง Serial Monitor ดังรูปผลลัพธ์การแสกน Wi-Fi

ผลลัพธ์การสแกน WiFi

สารบัญ บทความ ESPino32