ESP32 กับระบบตรวจจับการมีอยู่ของมนุษย์ ด้วยสัญญาณ Wi-Fi (ESP-CSI)
ลองนึกดูสิ - มีวิธีที่จะบอกว่ามีคนอยู่ในห้องได้ โดยไม่ต้องใช้กล้อง ไม่ต้องมีเซนเซอร์พิเศษ เพียงแค่อาศัยสัญญาณ Wi-Fi ที่อยู่รอบตัวเราทุกวัน นี่คือพลังของ ESP-CSI (Channel State Information) - เทคโนโลยีที่เปิดโอกาสให้ ESP32 เห็นสิ่งที่มองไม่เห็นด้วยตาเปล่า
Things Used in This Project
Hardware Components
-
▪
ESP32 Development Board - ไมโครคอนโทรลเลอร์หลักที่มีสัญญาณ Wi-Fi ในตัว สามารถวิเคราะห์ Channel State Information ได้
-
▪
Router Wi-Fi 2.4GHz - สร้างสัญญาณ Wi-Fi ที่ ESP32 จะใช้ในการวิเคราะห์ (โปรดใช้ความถี่ 2.4GHz สำหรับ CSI)
-
▪
USB Cable (Type-C หรือ Micro USB) - สำหรับโปรแกรม ESP32 และดูผลลัพธ์ผ่าน Serial Monitor
-
▪
Antenna Wi-Fi (Optional) - เสาอากาศเพิ่มเติมเพื่อให้การรับสัญญาณดีขึ้น โดยเฉพาะในห้องที่มีกำแพงหลายชั้น
-
▪
Power Supply - ไฟเลี้ยง ESP32 อาจใช้ USB ขนาด 5V 1A ขึ้นไป หรือถ่านไฟฉาย 9V (แนะนำใช้ USB)
-
▪
Breadboard และสายจัมเปอร์ (Optional) - สำหรับการต่อวงจรเพิ่มเติม เช่น LED หรือเซนเซอร์อื่นๆ
การตั้งค่า ESP32 พร้อมอุปกรณ์ Wi-Fi สำหรับระบบตรวจจับ CSI
Story: ต้นกำเนิด
ที่สำนักงานใหญ่ของ Espressif Systems (บริษัทผู้พัฒนา ESP32) ทีมวิศวกรและนักวิจัยได้ค้นพบว่า Wi-Fi ไม่ได้มีเพียงแค่การเชื่อมต่ออินเทอร์เน็ตเท่านั้น โลกของสัญญาณไร้สายนั้นเต็มไปด้วยข้อมูลที่ลึกลับและหนาแน่น ซึ่งเราสามารถนำมาใช้ประโยชน์ได้ในหลายวิธีที่นอกเหนือจากเดิม
Channel State Information (CSI) คือข้อมูลที่ซ่อนอยู่ลึกๆ ในทุกเฟรม Wi-Fi ที่บินมาบินไป มันบอกเราว่าสัญญาณเดินทางผ่านสภาพแวดล้อมอย่างไร หักเหไปกึ่งกลาง ดูดซับ และสะท้อนจากวัตถุต่างๆ รวมถึงตัวมนุษย์ด้วย
ด้วยการวิเคราะห์ CSI ผ่านเทคนิค Machine Learning และ Signal Processing คณะวิจัยนี้สามารถบอกได้ว่า:
- มีคนอยู่ในห้องหรือไม่ (บางครั้งแม้ว่าห้องปิดสนิท)
- อยู่ตรงไหนในห้องโดยประมาณ (ใน 1-2 เมตร)
- กำลังเคลื่อนไหวหรือนั่งนิ่ง (ระบุกิจกรรมได้)
- มีกี่คนอยู่ในห้องเดียวกัน
ผลการค้นพบนี้ได้เปิดทำให้เกิด ESP-CSI - โปรเจกต์โอเพนซอร์สที่ให้นักพัฒนารายเล็กและผู้สนใจสามารถทดลองใช้เทคโนโลยีนี้ได้ด้วยตัวเอง
Introduction: The Rise of the "Sixth Sense" for IoT
ระบบ IoT ทั่วไปที่เราใช้อยู่ในปัจจุบันใช้เซนเซอร์แบบเดิมๆ เช่น PIR (Passive Infrared) เพื่อตรวจจับการมีตัวมนุษย์ แต่เซนเซอร์เหล่านี้มีข้อจำกัดค่อนข้างมาก - ต้องมองเห็นโดยตรง ทำงานไม่ดีในที่มืดหรือในห้องที่มีแสงแดดแรง และต้องติดตั้งตรงตำแหน่งที่เหมาะสมเท่านั้น
ESP-CSI เปลี่ยนเกมส์ทั้งหมดเพราะมันใช้ประโยชน์จากสัญญาณ Wi-Fi ที่มีอยู่แล้วในบ้านหรือสำนักงานของคุณ - ไม่ต้องเซนเซอร์เพิ่มเติมที่แพง Wi-Fi สามารถผ่านผนัง ผ้า เฟอร์นิเจอร์ และสิ่งกีดขวางต่างๆ ได้ ทำให้เป็นเครื่องตรวจจับที่อ่อนไหวและเชื่อถือได้อย่างมาก
คิดว่านี่คือ "สัมผัสที่หก" สำหรับอุปกรณ์ IoT ของคุณ - ความสามารถในการรู้สึกและตอบสนองต่อสิ่งที่เกิดขึ้นรอบตัวในลักษณะที่ไม่เคยเป็นไปได้มาก่อน ระบบอาจรู้ว่า:
- คุณกำลังนั่งที่เก้าอี้ทำงาน
- คุณเดินเข้ามาในห้องหนึ่ง
- คุณกำลังนอนหลับ
- มีการเคลื่อนไหวผิดปกติในบ้าน
ทั้งหมดนี้ทำได้โดยไม่ต้องติดกล้อง ไม่ต้องใช้ไมโครโฟน และไม่ต้องรับอนุญาต - เป็นมิตรกับความเป็นส่วนตัวจริงๆ
The Theory: What Exactly is CSI?
ลองนึกถึงสัญญาณ Wi-Fi เป็นคลื่นน้ำที่ไหลออกมาจากเราเตอร์ เมื่อมันออกจากตัวเราเตอร์ มันจะเดินทางผ่านห้องและชนกับวัตถุต่างๆ - เก้าอี้ โต๊ะ ตู้ คน ผนัง และอื่นๆ คลื่นจะหักเห ดูดซับ และสะท้อนกลับมาในทิศทางต่างๆ
Channel State Information (CSI) คือการบันทึกรายละเอียดของสิ่งที่เกิดขึ้นกับคลื่นทั้งหมด - ได้รับแอมพลิจูดเท่าไหร่ (ความแรงของสัญญาณ) เฟสเปลี่ยนไปแค่ไหน (มุมของคลื่น) และใช้เวลากี่นาโนวินาที เมื่อรวมข้อมูลนี้ทั้งหมดเข้าด้วยกัน เราจะได้ "ลายนิ้วมือ" ของสภาพแวดล้อมที่ไม่ซ้ำใคร
เมื่อมีคนเดินเข้าห้อง "ลายนิ้วมือ" นี้ก็จะเปลี่ยนไปตั้งแต่ทันที สิ่งที่สำคัญที่สุดคือ ESP32 สามารถจับการเปลี่ยนแปลงนี้ได้ด้วยความแม่นยำสูง
ตัวอย่างง่ายๆ: ถ้าห้องว่างเปล่า CSI จะมีลักษณะเดียวกันตลอดเวลา (สัญญาณสะท้อนจากผนังเดิม) แต่เมื่อคุณเดินเข้าไป ตัวคุณจะบดบังและดูดซับสัญญาณบางส่วน ทำให้ CSI เปลี่ยนไปอย่างเห็นได้ชัด ESP32 จับการเปลี่ยนแปลงนี้และแจ้งให้เรารู้ว่า "มีคนเข้าห้องแล้ว"
ข้อมูล CSI ที่แสดงการเปลี่ยนแปลงของสัญญาณ Wi-Fi ตามเวลา
Phase 1: The "Hello World" and the Initial Frustration
เมื่อคุณเริ่มต้นครั้งแรกกับ ESP-CSI คุณจะได้รับชุดของข้อมูล CSI ที่ดูเหมือนจะสับสนและไม่มีเหตุผล นี่คือข้อมูลดิบ (raw data) - ตัวเลขเรขาคณิตที่ลึกลับ ตัวเลขเชิงซ้อน แอมพลิจูด เฟส และการกระจัดกระจาย ที่ดูเหมือนมีความหมายไม่ชัดเจน
ความท้าทายในระยะนี้ของเรา: ทำให้มันมีความหมาย? คุณจะต้องเขียนโปรแกรมบน ESP32 เพื่อรับข้อมูล CSI จากทุกเฟรม Wi-Fi และบันทึกลงไป นอกจากนี้ยังต้องเตรียมพื้นที่เก็บข้อมูลเพียงพอ (SD Card หรือคลาวด์) เพราะข้อมูลมีปริมาณค่อนข้างมาก
ขั้นตอนอย่างเรียบง่าย:
- โปรแกรม ESP32 ให้ทำงานเป็น "sniffer" - จับเฟรม Wi-Fi ได้ทั้งหมด
- เปิดใช้งาน CSI callback และรับข้อมูล CSI จากแต่ละเฟรม
- ส่งข้อมูลนี้ไปยังคอมพิวเตอร์ผ่าน UART (Serial) หรือเก็บไว้ในหน่วยความจำ
- ตรวจสอบว่าข้อมูลมีความเสถียรและหนาแน่นพอที่จะทำการวิเคราะห์
- ทำความเข้าใจกับการออกแบบโครงสร้างข้อมูล CSI ของ ESP-IDF
นี่คือหนึ่งในความท้าทายของ Phase 1 - มีข้อมูลจำนวนมาก แต่คุณยังไม่รู้ว่าจะทำให้มันใช้ได้จริงอย่างไร
Phase 2: It's All About Physics
ตอนนี้มาถึงส่วนที่คุณต้องเข้าใจเรื่องฟิสิกส์ของคลื่นแม่เหล็กไฟฟ้า (Electromagnetic Waves) สัญญาณ Wi-Fi นั้นทำตัวเหมือนคลื่นแสง - มันสะท้อน หักเห ดูดซับ และเมื่อมีสิ่งกีดขวาง (เช่น คน) มันจะเปลี่ยนแปลง
ในระยะนี้คุณจะเรียนรู้:
- Multipath Effect - สัญญาณมาถึงผ่านหลายเส้นทาง (โดยตรง สะท้อนจากผนัง หักเห) และทั้งหมดนี้รวมกันใน CSI
- Doppler Shift - เมื่อมีการเคลื่อนไหว ความถี่จะเปลี่ยน (เหมือนเสียงเครื่องบินที่โหวแวว)
- RSSI vs CSI - RSSI (Received Signal Strength Indicator) คือเพียงกำลังสัญญาณโดยทั่วไป แต่ CSI มีรายละเอียดมากกว่านั้นมาก (เหมือนความแตกต่างระหว่างรู้ว่ามีใครอยู่ vs รู้ว่า บุคคลนั้นกำลังทำอะไร)
- Subcarrier Information - Wi-Fi ใช้หลายความถี่พร้อมกัน (เรียกว่า subcarrier) ประมาณ 52-128 ตัวขึ้นอยู่กับเวอร์ชัน CSI จะบอกเกี่ยวกับแต่ละตัว
- Amplitude และ Phase - ข้อมูลทั้งสองนี้รวมกันบอกเราว่าคลื่นเดินทางอย่างไร
ความหมายคือ: ถ้าคุณเข้าใจฟิสิกส์ของคลื่นอยู่แล้ว คุณก็จะเข้าใจ CSI ได้ดีขึ้น และสามารถตีความข้อมูลได้ถูกต้อง
กราฟวิเคราะห์ CSI แสดงการเปลี่ยนแปลงของแอมพลิจูดและเฟส
Phase 3: From Data to Detection (The "Tripwire")
ตอนนี้มาถึงสิ่งที่น่าตื่นเต้น - การแปลงข้อมูล CSI ที่บังหลวงให้เป็นการตัดสินใจที่ชัดเจน (Detection) เราต้องสร้างอัลกอริทึมที่สามารถบอกได้ว่า "มีคนอยู่ในห้องหรือไม่" หรือ "มีการเคลื่อนไหวหรือไม่"
วิธีการง่ายๆ (สำหรับผู้เริ่มต้น): คุณสามารถใช้ threshold (เกณฑ์) แบบง่ายๆ ได้:
- วัดความแปรปรวน (variance) ของข้อมูล CSI ในช่วงเวลาหนึ่ง
- ถ้าความแปรปรวนสูง = มีคนเคลื่อนไหว = มีคนอยู่
- ถ้าความแปรปรวนต่ำ = ห้องว่าง (ไม่มีใครเคลื่อนไหว)
นี่คือ "Tripwire" แบบดิจิทัล - เมื่อมีการเปลี่ยนแปลงบางอย่างเกิดขึ้น ระบบของคุณจะถูกเรียกใช้งาน อาจส่งการแจ้งเตือนไปยังมือถือ เปิดไฟ บันทึกข้อมูล หรือควบคุมอุปกรณ์อื่นๆ
ความซับซ้อนเริ่มเพิ่มขึ้นเมื่อคุณต้องจัดการกับ:
- สัญญาณรบกวน (Noise) - จากวัตถุที่เคลื่อนไหวในห้องอื่น หรือการแกว่งไปมาเล็กน้อยของเฟอร์นิเจอร์
- ตัวกรอง (Filtering) - ใช้ Low-pass Filter หรือ Moving Average เพื่อทำให้ข้อมูลเสถียรมากขึ้น
- การปรับตัว (Adaptation) - เมื่อสภาพแวดล้อมเปลี่ยน (เช่น เปิดหน้าต่าง หรือเลื่อนเฟอร์นิเจอร์)
- Time Series Analysis - วิเคราะห์รูปแบบการเปลี่ยนแปลงตามเวลา
Phase 4: Building the "Sensing Array"
ตอนนี้เราอยากขยายขอบเขต - ใช้หลาย ESP32 พร้อมกันเพื่อให้ได้ความแม่นยำสูงขึ้น นี่คือการสร้าง "Sensing Array" ซึ่งเป็นระบบตรวจจับขั้นสูงที่ใช้หลาย receiver กระจายอยู่ในห้องหรือพื้นที่
ด้วยหลาย receiver คุณสามารถ:
- Trilateration - กำหนดตำแหน่งของคนในห้องได้อย่างแม่นยำ (ใช้ RSSI หรือ Time-of-Arrival)
- Redundancy - ถ้า ESP32 ตัวหนึ่งรับสัญญาณไม่ดี ตัวอื่นก็ช่วยได้ ทำให้ระบบเชื่อถือได้มากขึ้น
- Pattern Recognition - เห็นรูปแบบการเดิน การนั่ง การนอน จากหลายมุมมอง
- Multi-person Detection - บอกได้ว่ามีกี่คนในห้อง (เพราะแต่ละคนมี "ลายนิ้วมือ" CSI ที่ต่างกัน)
- Better Noise Rejection - โดยการเปรียบเทียบข้อมูลจาก receiver หลายตัว
ท้ายที่สุดแล้ว คุณสร้างระบบที่ฉลาดได้จริง - มันไม่เพียงรู้ว่ามีคนอยู่ แต่ยังรู้ว่าอยู่ตรงไหน กำลังทำอะไร และเปลี่ยนแปลงไปอย่างไร
ระบบตรวจจับการมีตัวในห้องแบบ Sensing Array ที่ใช้หลาย ESP32
ภาพเคลื่อนไหวแสดงการตรวจจับการมีตัวแบบเรียลไทม์
The Verdict: Is This Ready for the Real World?
คำตอบคือ: ขึ้นอยู่กับความต้องการของคุณ มันขึ้นอยู่กับว่าคุณต้องการให้ระบบมีความแม่นยำและเสถียรเพียงไหน
ข้อดี:
- ไม่ต้องใช้กล้อง - เป็นมิตรกับความเป็นส่วนตัว ไม่มีการบันทึกภาพ
- ราคาถูก - ใช้ ESP32 ที่ราคาเพียง 5-15 ดอลลาร์ต่อตัว (ถูกกว่าเซนเซอร์ PIR หลายชนิด)
- ทำงานผ่านผนัง - ไม่ต้องมองเห็นโดยตรง สัญญาณผ่านกำแพง ประตู และอื่นๆ ได้
- ป้องกันแมลง ฝุ่น และสิ่งปนเปื้อน - ไม่มีชิ้นส่วนเคลื่อนไหวหรือเลนส์
- ใช้ไฟฟ้าน้อย - ESP32 กิน 5V ที่กระแส 80 mA โดยทั่วไป
- โปรแกรมโอเพนซอร์ส - มีตัวอย่างและไลบรารีให้ใช้
ข้อด้อย:
- ต้องปรับแต่ง (Calibration) สำหรับแต่ละห้อง - สภาพแวดล้อมต่างกัน ต้องเก็บข้อมูลพื้นฐานใหม่
- สภาพแวดล้อมที่เปลี่ยนแปลง (เช่น หน้าต่างเปิด วัตถุเคลื่อนไหวนอก) จะทำให้ผลลัพธ์คลาดเคลื่อน
- ต้องใช้ Machine Learning สำหรับความแม่นยำที่สูงมาก (เพื่อบอกความแตกต่างระหว่างคนนั่งกับคนยืน)
- ไม่เหมาะสำหรับสภาพแวดล้อมที่มีสัญญาณรบกวน Wi-Fi มาก (เช่น ห้องบอก 50+ Wi-Fi Networks)
- ต้อง Router ที่รองรับ Monitor Mode (ส่วนใหญ่รองรับแล้ว)
- เสถียรภาพยังไม่เต็มร้อย - บางครั้งอาจเกิดสัญญาณปลอม (False Positive หรือ False Negative)
สรุป: สำหรับการใช้งาน DIY ที่ต้องการตรวจจับการมีตัวแบบง่ายๆ ในบ้าน ระบบนี้ใช้ได้แล้ว! แต่ถ้าคุณต้องการความแม่นยำเหมือนกับเซนเซอร์พาณิชย์ที่ปลูกด้วย IR Thermography คุณอาจต้องลงทุนเพิ่มเติมในการพัฒนา Machine Learning Model
Conclusion
ESP-CSI นั้นสุดท้ายแล้ว เป็นเทคโนโลยีที่ยอดเยี่ยมและน่าสนใจ - มันเปิดประตูใหม่ให้กับโปรเจกต์ IoT และ Smart Home ที่เราไม่เคยคิดว่าจะเป็นไปได้มาก่อน ด้วยคุณค่า ความง่าย และศักยภาพของมัน
ไม่ว่าคุณสนใจ:
- ระบบการสั่งสอน (Gesture Recognition) - ใช้ท่าทางมือหรือสำหรับควบคุมอุปกรณ์
- การตรวจจับการพลัดตกหรือการหล่นของผู้สูงอายุ - ช่วยเหลือเบื้องต้น
- ระบบการบันทึกของมีคนเข้าห้อง - ระบบการจดทะเบียนเข้าออก
- การควบคุมไฟอัตโนมัติตามการมีตัว - Smart Light ที่จริงจัง
- ระบบเตือนภัยเพื่อความปลอดภัย - ตรวจจับการบุกรุก
- การวิเคราะห์พฤติกรรมผู้อยู่อาศัย - ทำความเข้าใจรูปแบบการใช้ห้อง
ทั้งหมดนี้เป็นไปได้ด้วย ESP-CSI และ ESP32 ของคุณ หัวใจสำคัญคือ:
- เข้าใจว่ามันทำงานอย่างไร - อ่านเอกสารและศึกษา Datasheet
- เรียนรู้ฟิสิกส์ที่อยู่เบื้องหลัง - Signal Processing และคลื่นแม่เหล็กไฟฟ้า
- ทดลองเล่นกับข้อมูล - เก็บ CSI แล้ววิเคราะห์ในคอมพิวเตอร์
- ปรับแต่งและปรับปรุง - จนกว่าจะได้ผลลัพธ์ที่คุณต้องการ
- แบ่งปันผลลัพธ์ - บอกคน IoT อื่นๆ ว่าคุณทำไทได
ยินดีต้อนรับสู่ "สัมผัสที่หก" ของอุปกรณ์ IoT ของคุณ! 🚀
ลิงค์อ้างอิงสำหรับเรียนรู้เพิ่มเติม
- • บทความต้นฉบับ (Hackster.io): ESP-CSI DIY WiFi Human Presence Detection
- • ESP-CSI GitHub Repository: github.com/espressif/esp-csi
- • XIAO ESP32 CSI Examples: Room Presence Detection
- • Espectre Project (High-level CSI): github.com/francescopace/espectre
- • 2D Indoor Localization with Deep Learning: Deep Learning CSI Localization
- • ESP-CRAB (Radar with CSI): github.com/espressif/esp-csi (ESP-CRAB)
- • Reddit Community: reddit.com/r/esp32
พร้อมที่จะเริ่มสร้างระบบตรวจจับการมีตัวของคุณเองแล้วหรือ?