โปรเจกต์ ESP8266 WiFi range extender Arduino
คุณเคยเจอปัญหา WiFi ไม่สามารถส่งสัญญาณไปถึงบางห้องไหม? ผมเคยเจอปัญหานั้นมาก่อน และนั่นคือสาเหตุที่ผมสร้าง WiFi extender เครื่องนี้ขึ้นมา
คุณเคยเจอปัญหา WiFi ไม่สามารถส่งสัญญาณไปถึงบางห้องไหม? ผมเคยเจอปัญหานั้นมาก่อน และนั่นคือสาเหตุที่ผมสร้าง WiFi extender เครื่องนี้ขึ้นมา
คุณแม่ของผมมีอุปกรณ์ WiFi แบบพกพาซึ่งส่วนใหญ่มักจะวางอยู่ในห้องของท่าน ทำให้สัญญาณ WiFi ส่งไปไม่ถึงห้องนั่งเล่น และนั่นคือปัญหา แต่ผมรักในการแก้ปัญหา ผมเลยได้ลอง googling และพบ GitHub repository สำหรับ ESP8266 repeater โดย martin-ger ใน repo นั้นมีไฟล์ binary สำหรับ repeater ผมเลยจัดการ flash มันลงใน esp8266 ของผมโดยใช้ esptool และมันทำงานได้เหมือนเวทมนตร์เลย คลิก ที่นี่ เพื่อเข้าถึง repository อย่างไรก็ตาม มีปัญหาบางอย่างที่ผมพบกับ repeater(extender) ตัวนี้:
การ Debugging สามารถทำได้โดยการสังเกตอัตราการกะพริบของ led แต่มีจุดสังเกตคือ สถานะของ led ตอนที่มันเชื่อมต่อกับ router และตอนที่โทรศัพท์ของผมเชื่อมต่อกับมันในฐานะ access point นั้นเหมือนกัน ทำให้ผมสับสนเพราะไม่สามารถบอกได้ว่ามันเชื่อมต่อกับ router อยู่ หรือโทรศัพท์ของผมกำลังเชื่อมต่อกับมันกันแน่
ด้วยเหตุนี้ ผมจึงตัดสินใจสร้างมันขึ้นมาเอง และโชคดีที่ Arduino มี ตัวอย่าง สำหรับ WiFi range extender ผมจึงแค่เพิ่ม WiFi manager เข้าไป และเท่านี้คุณก็ได้ WiFi range extender แล้ว นี่คือฟีเจอร์บางส่วนของ WiFi range extender ของผม:
WiFi manger ผ่าน web ui
led indicator สำหรับ debugging
ปุ่ม Reset เพื่อกลับสู่ค่า factory setting
ใช่ครับ! ทั้งหมดก็มีแค่นี้ ผมสร้าง extender ตัวนี้ขึ้นมาเพื่อตอบสนองความต้องการของตัวเอง และหวังว่ามันจะตอบโจทย์ความต้องการของคุณได้ ด้วยเหตุนี้ผมจึงไม่อาจพูดได้ว่า WiFi extender ของผมดีกว่า martin-ger esp-repeater ที่อัดแน่นไปด้วยฟีเจอร์มากมาย เช่น auto mesh, MQTT, web config interface, CLI, WPA2 Enterprise Config, TCP/IP Config ฯลฯ พอเรื่องของ martin-ger esp-repeater กันแค่นี้ แล้วกลับมาที่ WiFi extender ของผมกันดีกว่า 😥️.
คุณสามารถรับ code ได้จาก GitHub repository ของผม คุณจะเลือก flash esp8266 ของคุณด้วยไฟล์ bin หรือจะแก้ไขไฟล์ .ino ตามใจชอบก็ได้ (ผมจะคอยตรวจสอบ pull requests ต่างๆ แน่นอน) และ upload ลงบอร์ดของคุณ
ติดตั้ง esptool ก่อนpip3 install esptoolErase flashesptool.py --port /dev/ttyUSB0 erase_flash หากคุณใช้ windows ให้เปลี่ยน /dev/ttyUSB0 เป็น COM port ที่ esp8266 เชื่อมต่ออยู่Upload ไฟล์ binรันคำสั่งนี้บน terminal esptool.py --port /dev/ttyUSB0 write_flash -fs 4MB -fm dout 0x0 [ตำแหน่งไฟล์ bin] ไม่ต้องใส่เครื่องหมายวงเล็บใน terminal
ก่อนที่เราจะเข้าสู่รายละเอียดเชิงลึกของบทความนี้ มาดูผล speed test กันก่อน ความเร็วลดลงประมาณ 80% 😥️😥️😥️ ใช่ครับ มันลดลงเยอะมาก นี่คือความเร็ว router ของผม

นี่คือความเร็วของ extender

ผมทำการทดสอบซ้ำสองครั้งซึ่งให้ผลว่าความเร็วลดลงประมาณ 80% ข้อดีคือความเร็วจะไม่ลดลงอีกเมื่อคุณเพิ่ม extender เข้าไปมากกว่านี้
Led กะพริบทุกวินาที - ไม่มีไฟล์ config และ web portal กำลังทำงาน
Led กะพริบทุกๆ 200ms - เชื่อมต่อสำเร็จและ repeater พร้อมทำงาน
Led ดับ - เกิดปัญหากับ repeater
Led ติดค้าง (ไม่กะพริบ) - กำลังพยายามเชื่อมต่อกับ router
IP address เริ่มต้นสำหรับอุปกรณ์คือ 192.168.4.1 (คุณสามารถตรวจสอบ IP address ได้จาก serial monitor เสมอ) ในระหว่างการรันอุปกรณ์ครั้งแรก ไฟล์ config (ไฟล์ที่มีรายละเอียดของ router ที่จะเชื่อมต่อ) จะยังไม่มีอยู่ ดังนั้นมันจะเริ่มทำงาน web server (led จะกะพริบทุกๆ หนึ่งวินาทีเพื่อระบุสถานะนี้) ชื่อเริ่มต้นของอุปกรณ์คือ Pius_Electronics_extender0001 ให้เชื่อมต่อกับเครือข่าย WiFi และพิมพ์ IP address ใน browser ของคุณ แล้วหน้าเว็บจะปรากฏขึ้นมา

คลิกที่ปุ่ม scan เพื่อค้นหาเครือข่าย เลือกเครือข่าย (router) ที่คุณต้องการเชื่อมต่อ ใส่รหัสผ่าน (รหัสผ่านของ router) และพิมพ์ชื่อที่คุณต้องการให้ extender มีในช่องข้อความที่ชื่อ AP name แล้วคลิก submit ตัว extender จะมีรหัสผ่านเดียวกับ router ที่เชื่อมต่อ หาก led เริ่มกะพริบในอัตราที่เร็ว (200ms) แสดงว่าการเชื่อมต่อสำเร็จ คุณสามารถเชื่อมต่อกับ extender และเริ่มใช้งานได้ทันที
extender ตัวนี้ไม่รองรับ auto mesh แต่ทางเลือกอื่นคือการเชื่อมต่อ extender ต่อกันไปเรื่อยๆ เช่น เชื่อมต่อ extender2 เข้ากับ extender1, extender3 เข้ากับ extender2, extender4 เข้ากับ extender3 ไปเรื่อยๆ ตามจำนวน extender ที่คุณต้องการ หากคุณมีวิธีที่ดีกว่านี้ คุณสามารถส่ง pull request มาที่ GitHub repository ของผม ได้เลย ดังนั้นหากคุณโอเคกับความเร็วที่ลดลง 80% คุณก็สามารถลองใช้ extender ตัวนี้ได้ครับ ขอบคุณมากที่สละเวลาอ่าน
สนับสนุนเพื่อรับ Source Code หรือแอปพลิเคชันสำหรับโปรเจกต์นี้