กลับไปหน้ารวมไฟล์
wifi-quality-tester-9f7c87.md

title: "เพิ่มประสิทธิภาพการติดตามสัญญาณด้วย Arduino MKR 1010: โปรเจกต์เครื่องตรวจวัดความเข้มข้นสัญญาณ WiFi (RSSI Monitor)"

ปัญหาเรื่อง "จุดบอดสัญญาณ WiFi" (WiFi Dead Zones) เป็นอุปสรรคสำคัญในการทำงานหรือการใช้งานอุปกรณ์ IoT ภายในบ้าน โดยเฉพาะในห้องที่มีผนังหนาหรืออยู่ห่างจาก Router หลายคนอาจพบปัญหาอินเทอร์เน็ตหลุดบ่อยหรือความเร็วตกโดยไม่ทราบสาเหตุ ด้วยเหตุนี้ผมจึงพัฒนาโปรเจกต์ WiFi Strength Monitor โดยใช้บอร์ด Arduino MKR WiFi 1010 เพื่อวิเคราะห์คุณภาพสัญญาณแบบ Real-time และแสดงผลผ่านหน้าจอ LCD

โปรเจกต์นี้ไม่ได้เพียงแค่บอกว่า "เชื่อมต่อได้หรือไม่" แต่จะเจาะลึกไปถึงค่าทางเทคนิคที่วิศวกรใช้ในการวิเคราะห์โครงข่าย

หัวใจหลักของระบบ: Arduino MKR WiFi 1010

สำหรับการเลือกใช้บอร์ด MKR WiFi 1010 ถือเป็นตัวเลือกที่ชาญฉลาดสำหรับงานด้าน Network เนื่องจากบอร์ดนี้ใช้โมดูล u-blox NINA-W102 ซึ่งรองรับการเชื่อมต่อ WiFi 802.11 b/g/n บนย่านความถี่ 2.4 GHz และมีชิปประมวลผลหลักเป็น SAMD21 (Cortex-M0+ 32-bit) ซึ่งมีประสิทธิภาพสูงและประหยัดพลังงานมากกว่าบอร์ดตระกูล AVR รุ่นเก่า

อุปกรณ์ที่ใช้ในโปรเจกต์

  1. Arduino MKR WiFi 1010: บอร์ดควบคุมหลักที่ทำหน้าที่รับสัญญาณวิทยุและประมวลผลข้อมูล
  2. LCD Display (I2C หรือ Parallel): หน้าจอแสดงผลข้อมูลเครือข่าย
  3. Jumper Wires: สำหรับการเชื่อมต่อวงจร

รายละเอียดทางวิศวกรรม: RSSI คืออะไร?

ในโปรเจกต์นี้เราจะมุ่งเน้นไปที่ค่า RSSI (Received Signal Strength Indicator) ซึ่งมีหน่วยเป็น dBm (decibel-milliwatts) ค่านี้จะแสดงผลเป็นตัวเลขติดลบ โดยมีความหมายดังนี้:

  • -30 dBm: สัญญาณแรงดีเยี่ยม (มักจะอยู่ใกล้ Router มาก)
  • -60 dBm ถึง -70 dBm: สัญญาณระดับดี มั่นคงสำหรับการใช้งานทั่วไป
  • -80 dBm ถึง -90 dBm: สัญญาณอ่อนมาก อาจเกิดการ Packet Loss หรือความเร็วลดลงอย่างรวดเร็ว

การวิเคราะห์ลอจิกของโปรแกรม (Code Logic Analysis)

การทำงานของซอฟต์แวร์ถูกออกแบบมาให้ดึงข้อมูลจาก WiFi Stack ของโมดูล NINA-W102 ผ่านไลบรารี WiFiNINA โดยมีขั้นตอนการทำงานหลักดังนี้:

  1. Network Initialization: ในช่วง setup() โปรแกรมจะทำการติดต่อกับโมดูล WiFi และรอการเชื่อมต่อกับ Access Point (AP) ที่กำหนดไว้ เมื่อเชื่อมต่อสำเร็จ ระบบจะดึงที่อยู่ IP Address ของตัวเองออกมา
  2. Data Acquisition: ในส่วนของ loop() โปรแกรมจะเรียกใช้ฟังก์ชัน WiFi.RSSI() เพื่ออ่านค่าความเข้มของสัญญาณ ณ วินาทีนัน และใช้ WiFi.SSID() เพื่อยืนยันว่ายังเชื่อมต่อกับเครือข่ายที่ถูกต้อง
  3. Display Transformation: ข้อมูลที่ได้ (SSID, IP, RSSI) จะถูกจัดรูปแบบ (Format) เพื่อส่งออกไปยังหน้าจอ LCD โดยจะมีการอัปเดตค่าทุกๆ ช่วงเวลาที่กำหนด เพื่อให้เราเห็นความเปลี่ยนแปลงของสัญญาณในขณะที่ขยับตำแหน่งของตัวเครื่อง

ตัวอย่างส่วนประกอบของโค้ดที่สำคัญ:

  • WiFi.localIP(): ใช้แสดงเลข IP เพื่อระบุตัวตนในวง LAN
  • WiFi.RSSI(): หัวใจหลักในการวัดคุณภาพสัญญาณ
  • lcd.print(): การนำข้อมูลดิบมาแสดงผลให้ผู้ใช้เข้าใจง่าย

การเชื่อมต่อและผลการทดสอบ

I've always had bad WiFi strength in my room so I wanted to monitor my wifi strength.

I buy a mkr1010 use the arduino wifi code and modify it to have my lcd screen showin my SSID(Name of wifi), my IP and the RSSI(signal strength in dbm).

เมื่อนำอุปกรณ์ไปวางในจุดต่างๆ ของห้อง เราจะสังเกตเห็นการเปลี่ยนแปลงของค่า RSSI บนหน้าจอ LCD อย่างชัดเจน:

  • แถวที่ 1: แสดง SSID หรือชื่อ WiFi ที่เราเชื่อมต่ออยู่ เพื่อยืนยันว่าเราไม่ได้ไปเกาะสัญญาณจากจุดอื่น (Roaming)
  • แถวที่ 2: แสดง Local IP Address ซึ่งมีประโยชน์ในการตรวจสอบสถานะเครือข่ายเบื้องต้น
  • แถวที่ 3: แสดงค่า RSSI ในหน่วย dBm ซึ่งเป็นพระเอกของงานนี้

บทสรุป

โปรเจกต์นี้เป็นจุดเริ่มต้นที่ดีในการประยุกต์ใช้ Arduino เข้ากับงานวิศวกรรมเครือข่าย (Network Engineering) ช่วยให้เราเข้าใจพฤติกรรมของคลื่นวิทยุในที่พักอาศัยได้แม่นยำกว่าการดู "ขีดสัญญาณ" บนสมาร์ทโฟนเพียงอย่างเดียว นอกจากนี้ยังสามารถต่อยอดไปเป็นระบบแจ้งเตือนผ่าน LINE หรือบันทึกข้อมูล (Data Logging) เพื่อวิเคราะห์ความเสถียรของสัญญาณในระยะยาวได้อีกด้วย

ข้อมูล Frontmatter ดั้งเดิม

title: "Wifi quality tester"
description: "Use your MKR wifi1010 and an lcd screen to monitor your WiFi signal Strength. It even work with and exernal power supply (exernal battery)"
author: "adameliemorin"
category: "Internet of Things, BT & Wireless"
tags:
  - "debugging tools"
  - "tracking"
  - "security"
  - "data collection"
  - "lcd"
  - "mkr1010"
  - "monitoring"
views: 9892
likes: 4
price: 299
difficulty: "Easy"
components:
  - "1x Arduino MKR WiFi 1010"
  - "1x Alphanumeric LCD, 20 x 4"
tools: []
apps:
  - "1x Arduino IDE"
downloadableFiles:
  - "https://projects.arduinocontent.cc/7d3d342f-e0e3-486c-9e08-1c51b6e6e75b.ino"
  - "https://projects.arduinocontent.cc/7d3d342f-e0e3-486c-9e08-1c51b6e6e75b.ino"
  - "https://projects.arduinocontent.cc/00c0e08f-7a78-463a-876e-028e137c1afa.ino"
documentationLinks: []
passwordHash: "2ef052b39f9c0af04d30212d204871184faf5a8ce15dcbe470aa618a3c0c595e"
encryptedPayload: "U2FsdGVkX1+21ncgPEcZxjgQYAHShSmdwKNwOnz4esow4rY7YsGmHscmZwOxCvoImN6nsxIlS0XOYD8o8XbI1YytffLfcMdK04qAu7bKOAY="
seoDescription: "Monitor WiFi signal strength with MKR wifi1010 and an lcd screen. Compatible with an external power supply for portability."
videoLinks: []
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/wifi-quality-tester-9f7c87_cover.jpg"
lang: "en"