ESP32 ระบบตรวจสอบการใช้งานพร้อมจอแสดงผล IoT

คุณเคยสงสัยหรือไม่ว่า WiFi ที่เราใช้ทุกวันนั้นทำงานอย่างไร หรือมีสัญญาณแรงแค่ไหนในแต่ละที่ ? Spectrum One คือโปรเจกต์ Open Hardware ที่สร้างจาก ESP32 เพื่อตอบคำถามนี้ มันนั่งอยู่บนโต๊ะของคุณ ไม่ต้องใช้โทรศัพท์ ไม่ต้อง app ไม่ต้องเครื่องอื่น แค่ ESP32 LCD1602 และ LED bar ที่แสดงสัญญาณ WiFi สดใจริง ในบทความนี้เราจะสำรวจว่า Spectrum One คืออะไร มีส่วนประกอบอะไรบ้าง และเราสามารถสร้างสิ่งนี้ได้อย่างไร

Overview - เข้าใจโปรเจกต์กันก่อน

Spectrum One เป็นโปรเจกต์ Open Hardware ที่ได้รับการรับรองจาก OSHWA (Open Source Hardware Association) UID: UK000086 มันถูกออกแบบให้ทำหน้าที่เป็นตัวมอนิเตอร์กิจกรรมเครือข่าย WiFi แบบเรียลไทม์ บนโต๊ะของคุณ

อุปกรณ์นี้ทำงานโดยการค้นหาสัญญาณ WiFi ทั้งหมดที่อยู่รอบ ๆ ตัว แล้วแสดงผลออกมาผ่านสองทาง: ที่หนึ่งคือ LED bar ที่ตอบสนองสัญญาณแบบเรียลไทม์ (ยิ่งสัญญาณแรงมาก LED ยิ่งไปมาก) และที่สองคือจอ LCD 1602 ที่แสดงข้อมูลรายละเอียด เช่น ชื่อเครือข่าย (SSID) ความแรงของสัญญาณ (RSSI) และจำนวนเครือข่ายที่พบ

สิ่งที่ทำให้ Spectrum One นั่นแตกต่างจากการใช้โทรศัพท์ app ทั่ว ๆ ไป คือมันไม่ต้องเชื่อมต่อกับ internet หรือ cloud ใด ๆ เลย มันทำงานแบบ Standalone บนไฟฟ้า USB เท่านั้น เด็ก ๆ สามารถเอามันไปวางที่ห้องต่าง ๆ ในบ้าน และดูว่าสัญญาณ WiFi ที่ไหนแรงที่สุด หรือห้องไหนที่มีสัญญาณน้อยที่สุด

Spectrum One ESP32 WiFi Activity Monitor

Spectrum One ทำงานบน USB power แสดง RSSI -60 dBm บน LCD 1602 พร้อม LED bar

Things - ส่วนประกอบอุปกรณ์

ในการสร้าง Spectrum One เราต้องเตรียมส่วนประกอบ 8 อย่าง ซึ่งส่วนใหญ่หาได้ง่ายจากร้านอิเล็กทรอนิกส์ทั่วไป:

  • ESP32 Development Board (Developer Edition) - หัวใจของโปรเจกต์ ประมวลผลสัญญาณ WiFi และควบคุมการแสดงผลทั้งหมด
  • LCD 1602 (16 Character × 2 Lines) - จอแสดงผลข้อมูลรายละเอียด เช่น SSID และ RSSI
  • 10 LEDs Bar Array (Green) - แถบ LED ที่แสดงระดับความแรงของสัญญาณแบบ Visual
  • I2C Backpack - โมดูลช่วยให้ LCD 1602 เชื่อมต่อกับ ESP32 ผ่าน I2C protocol ได้ง่าย
  • Resistor 220Ω - 10 ตัว สำหรับจำกัดกระแสให้กับ LED bar
  • Capacitor 100nF - เพื่อเสถียรภาพทางไฟฟ้า (Decoupling)
  • Tactile Switch (SPST-NO) - ปุ่มกดเดี่ยว สำหรับการโต้ตอบกับผู้ใช้ (Browse, Follow mode)
  • JST XH PCB-mounted Connector - สำหรับการเชื่อมต่อเสียบถอดได้

ส่วนประกอบเหล่านี้ทั้งหมดถูกปกแน่นอยู่บน PCB ที่กำหนดเอง (Custom PCB) ซึ่งมีเลย์เอาต์ที่จัดเรียงเพื่อความสะดวกสบาย และเกียร์เชื่อมต่อได้ดีที่สุด คุณสามารถ Order PCB จาก GitHub repository และใช้ Gerber files เพื่อให้ PCB fab house ทำให้คุณได้

Spectrum One - Strongest Access Point Display

โหมด UI แรก: แสดงเครือข่าย WiFi ที่แรงที่สุด (Strongest Access Point)

Story - เรื่องราวการออกแบบ

เรื่องของ Spectrum One เริ่มจากสนทนาธรรมชาติระหว่างผู้สร้างโปรเจกต์กับคู่ชีวิตของเขา พวกเขามักพูดถึงเทคโนโลยีเกี่ยวกับสุขภาพ และในครั้งหนึ่งพวกเขาถามตัวเองว่า "โลกรอบตัวเรานี้มี WiFi มากแค่ไหนกันแน่?" คำถามนี้ดูเหมือนเรียบง่าย แต่มันทำให้เขาอยากลองสร้างอะไรขึ้นมาเพื่อให้มองเห็นได้

"ทำไมต้องดาวน์โหลด app ล่ะ เมื่อฉันมี ESP32 อยู่ที่บ้านแล้ว" เขาคิดแบบนั้น งั้นเขาก็เริ่มต้นต้นแบบ Prototype ภายในวันถัดไป โค้ดยังดั้มพื้นๆ เดินสายขึ้นไปวุ่นๆ แต่มันได้ผล และสิ่งที่เขาค้นพบคือ ห้องของลูกสาวของเขามีสัญญาณ WiFi ต่ำสุดในบ้าน ซึ่งเป็นข้อมูลที่เขาอยากรู้มาตั้งแต่เริ่ม

สัปดาห์ต่อ ๆ ไป เขาทำให้โค้ดดีขึ้นและเดินสายด้วยลวด Single-core ให้เสถียรมากขึ้น หลังจากนั้นอีกสองสามสัปดาห์ เขามีเวลาว่าง เอาใจช่วยจึงเลยคิดว่า "ทำไมไม่ออกแบบ PCB ที่เหมาะสมบ้างล่ะ" และแล้ว PCB ที่จัดเรียงอย่างเฉพาะเจาะจงนั้นก็เกิดขึ้น

แต่นี่ไม่ใช่จุดจบของเรื่อง เมื่อเขาเขียนเอกสารประกอบ (Documentation) เขาตระหนักว่า Spectrum One นั้นมีศักยภาพมากกว่าการมอนิเตอร์ WiFi เพียงอย่างเดียว ด้วยการสลับ Firmware ผู้สร้างสามารถทำให้มันแสดงข้อมูลอื่น ๆ ได้ เช่น อุณหภูมิ ความชื้น หรือข้อมูลเซ็นเซอร์ใด ๆ ก็ได้ "นี่ไม่ใช่จุดจบ มันคือจุดเริ่มต้น" เขาคิดแบบนั้น

Spectrum One - Total WiFi Power Display

โหมด UI ที่สอง: รวมกำลังสัญญาณทั้งหมด (Total Power SUM)

Schematics - แผนผังวงจร

ส่วนทางเทคนิค Spectrum One มีเลย์เอาต์วงจรที่ค่อนข้างตรงไปตรงมา แต่ถูกออกแบบมาให้ทำงานได้อย่างมีเสถียรภาพ ESP32 เป็นจุดศูนย์กลาง (Hub) ที่รับสัญญาณ WiFi ผ่านเสาอากาศบิวท์อิน (Built-in Antenna) แล้วส่งข้อมูลไปยังสองส่วน:

การเชื่อมต่อหลัก:

1. เชื่อมต่อกับ LCD 1602 ผ่าน I2C Backpack:
- GND ของ ESP32 → GND ของ LCD Backpack
- 3.3V ของ ESP32 → VCC ของ LCD Backpack
- GPIO 21 (ESP32) → SDA (Serial Data)
- GPIO 22 (ESP32) → SCL (Serial Clock)
- ใช้ Pull-up resistor 10kΩ ระหว่าง SDA/SCL กับ 3.3V

2. เชื่อมต่อกับ LED Bar Array:
- แต่ละ LED ผ่าน Resistor 220Ω ต่อกับ GPIO ตั้งแต่ GPIO 4 ถึง GPIO 13
- Side GND ของแต่ละ LED ต่อกับ GND ของ ESP32

3. Decoupling Capacitor:
- Capacitor 100nF ต่อระหว่าง VCC และ GND ของ ESP32 เพื่อเสถียรภาพ

สำหรับเสาอากาศ ESP32 มีเสาอากาศพิมพ์ (Printed Antenna) บิวท์อิน ดังนั้นโปรเจกต์ส่วนใหญ่ไม่จำเป็นต้องเพิ่มเสาอากาศภายนอก แต่ถ้าคุณต้องการให้ไว (Sensitivity) สูงขึ้น คุณสามารถต่อ Antenna connector เพื่อใช้เสาอากาศภายนอกได้

Spectrum One Schematics

แผนผังวงจร Spectrum One ที่สมบูรณ์

Code - การเขียนโปรแกรม

ลางเล่นของ Spectrum One อยู่ในความสามารถพิเศษของ ESP32 นั่นคือ "Promiscuous Mode" ซึ่งทำให้มันสามารถจับแพ็คเกต WiFi ทั้งหมดที่ลอยอยู่ในอากาศได้ โดยไม่จำเป็นต้องเชื่อมต่อเข้าไปในเครือข่ายนั้น ๆ

// เปิด WiFi Promiscuous Mode WiFi.mode(WIFI_AP_STA); WiFi.promiscuous(true); WiFi.onEvent(promiscuous_rx_cb); // Function ที่รับแพ็คเกตที่ค้น void promiscuous_rx_cb(void* buf, wifi_promiscuous_pkt_type_t type) { // ประมวลผลข้อมูลแพ็คเกต WiFi }

เมื่อแต่ละแพ็คเกตมาถึง ฟังก์ชัน promiscuous_rx_cb() จะทำหน้าที่ดึงข้อมูลสำคัญออกมา เช่น:

  • RSSI (Received Signal Strength Indicator) - ความแรงของสัญญาณที่รับได้ (หน่วย dBm)
  • Channel - ช่องความถี่ที่ใช้ในการส่ง (11 ช่อง โดยช่อง 1-13 เป็นมาตรฐาน)
  • MAC Address - ที่อยู่ของอุปกรณ์ที่ส่ง (บ่งบอกเป็นตัวตนของ Router)
  • Frame Type - ประเภทของแพ็คเกต (Data Frame, Beacon Frame, Probe Request เป็นต้น)

จากข้อมูลเหล่านี้ Firmware จะคำนวณสิ่งต่าง ๆ เช่น:

การประมวลผลข้อมูล:

- หาเครือข่ายที่แรงที่สุด (Strongest AP)
- รวมกำลัง RSSI ของทั้งหมด (Total Power)
- คำนวณระดับ Field Activity (ระดับกิจกรรมทั่วไป)
- นับจำนวน AP ที่ค้นพบ
- จัดเรียงตามความแรง (Sorting)

อัตราการสแกน (Scan Rate) ถูกกำหนดไว้ที่ 500 มิลลิวินาที ซึ่งหมายความว่าอุปกรณ์ทำการสแกน WiFi ประมาณ 2 ครั้งต่อวินาที อัตรานี้ช่วยให้ได้ความสมดุลระหว่างการตอบสนอง (Responsiveness) ความเสถียรของข้อมูล (Stability) และการใช้พลังงาน (Power Consumption)

Spectrum One - Field Level Display

โหมด UI ที่สาม: ระดับกิจกรรมเครือข่าย (Field Level)

โหมดแสดงผล (UI Modes)

Spectrum One มี 3 โหมดหลัก ที่คุณสามารถเปลี่ยนผ่านได้โดยใช้ปุ่ม:

  • Mode 0 - Strongest AP: แสดงเครือข่ายที่แรงที่สุด พร้อม RSSI และจำนวน AP ทั้งหมด
  • Mode 1 - Total Power (SUM): แสดงผลรวมกำลังสัญญาณทั้งหมด เป็นตัวชี้วัดการใช้งาน WiFi โดยรวม
  • Mode 2 - Field Level: แสดงระดับกิจกรรมทั่วไป โดยไม่แสดงรายละเอียดแต่ละเครือข่าย

นอกจากนี้ยังมี "Browse Mode" ที่ให้คุณดูรายละเอียดของแต่ละเครือข่าย (กด Hold ปุ่ม) และ "Follow Mode" ที่ติดตามเครือข่ายที่เลือก (กด Hold ปุ่มซ้ำ) ให้ติดตามการเปลี่ยนแปลง RSSI ของเครือข่ายนั้นในช่วงเวลาหนึ่ง

ทำไมต้องสร้างโปรเจกต์นี้?

Spectrum One เป็นโปรเจกต์ที่มีคุณค่าสูง เพราะหลายเหตุผล:

  • เรียนรู้เทคโนโลยีจริง: ไม่ใช่แค่ LED กระพริบ แต่เป็นการเข้าใจ WiFi Protocol, Packet Sniffing, และการประมวลผลข้อมูล
  • ประโยชน์เชิงปฏิบัติ: ใช้ Spectrum One เพื่อหา "Dead Zone" (จุดสัญญาณอ่อน) ในบ้าน และวางตำแหน่ง Router ให้เหมาะสม
  • Open Hardware: ทั้ง Source Code, Gerber Files, และ KiCad Schematics อยู่บน GitHub ฟรี ใครก็สามารถสร้างขึ้นมาได้
  • ความยืดหยุ่น: คุณสามารถแก้ไข Firmware ให้แสดงข้อมูลอื่น ๆ ได้ (Temperature, Humidity, Pollution Index ฯลฯ)
  • ความสนใจ: เป็นโปรเจกต์ที่เห็นผลลัพธ์ที่มองเห็นได้ชัด (LED + LCD) ซึ่งทำให้เด็ก ๆ สนใจเรียนเทคโนโลยีมากขึ้น

พร้อมที่จะตรวจสอบสัญญาณ WiFi ของคุณหรือ?

เลือกซื้อที่ Globalbyteshop

พร้อมส่ง มีรับประกัน


สอบถามเพิ่มเติมในกลุ่ม LINE
คำเตือน: เนื้อหาบทความนี้เป็นการสรุป เรียบเรียง และแปลเป็นภาษาไทยจากบทความต้นฉบับภาษาอังกฤษของโปรเจกต์ Spectrum One ข้อมูลฉบับภาษาไทยอาจมีความคลาดเคลื่อนบางประการจากการตีความหรือย่อเนื้อหา กรุณาตรวจสอบข้อมูลกับแหล่งอ้างอิงต้นฉบับก่อนนำไปใช้งานจริง

แหล่งอ้างอิง: Hackster.io - Spectrum One | Currenari.com - Spectrum One Official | GitHub - Source Code & Files

แท็ก


Blog posts

เข้าสู่ระบบ

ลืมรหัสผ่านใช่ไหม?

ยังไม่มีบัญชีใช่ไหม?
สร้างบัญชี