Batear Acoustic Drone Detector Logo

นั่งอยู่บ้านดีๆ ก็มีโดรนบินมาส่อง?

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

ปกติแล้ว ถ้าหน่วยงานใหญ่ๆ เขาจะตรวจจับโดรน เขาต้องใช้กล้องวงจรปิดสเปคเทพ หรือไม่ก็ใช้ "ระบบเรดาร์" ที่ราคาแพงหูฉี่ระดับหลักแสนหรือหลักล้านบาท ซึ่งคนธรรมดาอย่างเราคงไม่มีงบไปติดเรดาร์ไว้ที่รั้วบ้านแน่นอน คำถามคือ... แล้วเราจะป้องกันตัวเองด้วยงบประหยัดได้ยังไง?

รู้จัก 'batear' ฮีโร่สายประหยัดแห่งวงการดักจับโดรน

นี่คือที่มาของโปรเจกต์สุดเจ๋งที่ชื่อว่า "batear" (อ่านว่า แบท-เอียร์) ผลงานจากนักพัฒนาที่ใช้นามแฝงว่า TN666 เขาตั้งคำถามว่า "เราสามารถสร้างระบบเตือนภัยโดรนที่เปิดทิ้งไว้ได้ตลอด 24 ชั่วโมง โดยใช้อุปกรณ์ฮาร์ดแวร์บ้านๆ ราคาถูกได้ไหม?"

คำตอบคือ ได้ครับ! เขาใช้วิธีที่เรียกว่า Retrovation หรือ "การนวัตกรรมโดยมองย้อนกลับไปในอดีต" ก่อนที่จะมีเรดาร์ มนุษย์เราเคยใช้ "เครื่องดักฟังเสียง" (Acoustic Detector) ขนาดใหญ่เพื่อฟังเสียงเครื่องบินข้าศึกมาก่อน TN666 เลยจับเอาคอนเซปต์นี้มาย่อส่วน โดยใช้ไมโครโฟนจิ๋วเพื่อฟัง "เสียงของใบพัดโดรน" แทน ซึ่งโดรนส่วนใหญ่ (โดยเฉพาะแบบ 4 ใบพัด หรือ Quadcopter) มักจะมีเสียงหึ่งๆ ที่ดังและมีเอกลักษณ์เฉพาะตัวมากๆ

ของที่ต้องเตรียม (Hardware Check!)

ความพีคคือโปรเจกต์นี้ใช้อุปกรณ์แค่ 2 อย่างหลักๆ รวมค่าเสียหายแล้วตกประมาณ $15 (ไม่เกิน 600 บาท) เท่านั้น:

  • บอร์ดไมโครคอนโทรลเลอร์ ESP32-S3: ตัวตึงแห่งวงการ IoT ที่มีพลังประมวลผลมากพอสำหรับงานเสียง และกินไฟน้อย
  • ไมโครโฟน ICS-43434 I2S MEMS: ไมค์ดิจิทัลตัวจิ๋วที่รับเสียงได้ไวและคมชัด
  • ฟองน้ำหุ้มไมค์ (Foam Sock): ทริคสำคัญเลยครับ! ต้องหาฟองน้ำมาครอบไมค์ไว้เพื่อกัน "เสียงลมพัด" ป้องกันไม่ให้เครื่องแจ้งเตือนมั่ว (False Positive)

ทำไมถึงเวิร์ค? ฟีเจอร์เด็ดที่สายฮาร์ดแวร์ต้องเลิฟ

การเอาบอร์ด ESP32 มาต่อไมค์แล้วโยนข้อมูลขึ้น Cloud (เช่น AWS หรือ Azure) ให้ AI ฝั่งเซิร์ฟเวอร์ประมวลผล ถือเป็นเรื่องง่ายมากในปัจจุบัน แต่ถ้าเรากำลังถูกโดรนสอดแนม เราคงไม่อยากให้เสียงรอบๆ บ้านเราถูกอัดแล้วส่งขึ้นอินเทอร์เน็ตตลอดเวลาใช่ไหมครับ? batear จึงถูกออกแบบมาให้เป็นระบบ Edge Computing ที่จบในตัวด้วยจุดเด่นเหล่านี้:

  • ความเป็นส่วนตัว 100% (Privacy-First): ไม่มีการบันทึกเสียง ไม่มีการเซฟไฟล์ และไม่มีการส่งข้อมูลเสียงขึ้นคลาวด์ใดๆ ทั้งสิ้น มันแค่ฟัง "สมการคณิตศาสตร์" ของใบพัดโดรนเท่านั้น
  • ประหยัดพลังงานขั้นสุด (Low Power): กินไฟน้อยมากจนคุณสามารถใช้แบตเตอรี่ก้อนเล็กๆ หรือแผงโซลาร์เซลล์จิ๋ว แล้วเอาไปติดไว้ที่ริมรั้วบ้านให้ทำงานตลอด 24 ชั่วโมงได้สบายๆ
  • อัลกอริทึมโคตรเบา (Extreme Efficiency): แทนที่จะใช้การแยกความถี่แบบ FFT (Fast Fourier Transform) หรือ Machine Learning หนักๆ ผู้สร้างเลือกใช้ Goertzel Algorithm ซึ่งเป็นสมการคณิตศาสตร์ที่เบากว่ามากและประมวลผลได้เร็วสุดๆ จนยัดลงแรมแค่ 512 KB ของ ESP32-S3 ได้เหลือๆ

Step-by-Step เครื่องนี้รู้ได้ไงว่าเป็นเสียงโดรน?

เพื่อให้เห็นภาพว่า Goertzel Algorithm ทำงานยังไง ลองดูขั้นตอนการทำงานของเครื่องนี้กันครับ:

  1. รับเสียงเข้า: ไมโครโฟนรับเสียงรอบข้างทั้งหมดเข้ามา (ทั้งเสียงนก เสียงรถ เสียงลม)
  2. เจาะจงความถี่: Goertzel Algorithm จะไม่สนใจเสียงทั้งหมด แต่มันจะทำหน้าที่เหมือน "แว่นขยาย" ที่ส่องหาเฉพาะย่านความถี่ (Frequency) ของมอเตอร์และใบพัดโดรน ซึ่งมักจะอยู่ในช่วงไม่กี่ร้อย Hz ไปจนถึงหลัก kHz
  3. เปรียบเทียบเสียงรบกวน: เครื่องจะนำพลังงานเสียงของใบพัดที่จับได้ มาเทียบกับเสียงรบกวนพื้นหลัง (Background Noise) โดยรวมรอบๆ ตัว
  4. แจ้งเตือน: หากสัดส่วนความดังของเสียงใบพัด (Ratio) พุ่งทะลุจุดที่ตั้งค่าไว้ (Threshold) เครื่องก็จะร้องเตือนทันที!

ดูวิดีโอสาธิตการทำงาน

ลองดูคลิปด้านล่างนี้ครับ จะเห็นเลยว่าเมื่อโดรนบินเข้ามาใกล้ในระยะที่ไมค์รับได้ ระบบจะคำนวณกราฟความถี่และแจ้งเตือนออกมาได้แบบ Real-time

ตัวอย่าง Config เบื้องต้น

โปรเจกต์นี้เขียนด้วยภาษา C ผ่านโครงสร้าง ESP-IDF v5.x ใครที่เป็นสายฮาร์ดแวร์สามารถไปโหลดโค้ดมารันได้เลย โดยหัวใจสำคัญคือการปรับจูนค่าความไว (Calibration) ให้เข้ากับสภาพแวดล้อมบ้านเราครับ

View more (ดูตัวอย่างแนวคิดโค้ด / Copy Code)

ตัวอย่างแนวคิดการกำหนดค่า Threshold ใน Source Code เพื่อแยกระหว่างเสียงรบกวนกับเสียงโดรน


// ตัวอย่างแนวคิด (Pseudo-config) สำหรับการตั้งค่า batear
// ต้องมีการปรับจูน (Calibrate) ค่าเหล่านี้ให้เหมาะกับหน้างานจริง
// เพื่อป้องกันเสียงลมหรือเสียงรถยนต์ทำให้เครื่องเตือนมั่ว

// กำหนดสัดส่วนพลังงานเสียง (Ratio) ที่จะให้ระบบมองว่าเป็น "โดรน"
#define FREQ_RATIO_ON  5.0f   // ถ้าความถี่โดรนดังกว่าเสียงรอบข้าง 5 เท่า ให้เริ่มเตือน
#define FREQ_RATIO_OFF 2.5f   // ถ้าเสียงโดรนเบาลงจนสัดส่วนเหลือ 2.5 ให้หยุดเตือน

// ความถี่ของใบพัดโดรนที่ต้องการดักจับ (Hz)
// สามารถปรับเปลี่ยนได้ตามชนิดของโดรนที่คาดว่าจะเจอ
int target_frequencies[] = { 400, 800, 1200, 1600 }; 

void detect_drone() {
    float background_noise = get_broadband_noise();
    float drone_energy = run_goertzel_filter(target_frequencies);
    
    float ratio = drone_energy / background_noise;
    
    if (ratio >= FREQ_RATIO_ON) {
        trigger_alarm();
        printf("🚨 ตรวจพบโดรน! (Ratio: %.2f)\n", ratio);
    } else if (ratio <= FREQ_RATIO_OFF) {
        clear_alarm();
    }
}

ในอนาคต ผู้สร้างบอกว่าอาจจะมีการอัปเกรดไปใช้ระบบ AI เบาๆ อย่าง TensorFlow Lite Micro เพื่อให้แยกแยะเสียงในที่ที่มีเสียงรบกวนเยอะๆ ได้แม่นยำขึ้นไปอีก แต่แค่อัลกอริทึมคณิตศาสตร์เพียวๆ แบบปัจจุบัน ก็ถือว่าใช้งานได้จริงและคุ้มค่าสุดๆ แล้วครับ!

อัปเดตเทรนด์ฮาร์ดแวร์และ IoT ใหม่ๆ ได้ตลอดเวลา

สนใจอยากลองต่อวงจรไมโครคอนโทรลเลอร์เจ๋งๆ หรืออยากปรึกษาเรื่องโปรเจกต์ IoT? เข้ามาพูดคุยและหาซื้อของเล่นสาย Tech ไปลุยกันต่อได้เลยตามลิงก์ด้านล่างครับ:

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

แท็ก


Blog posts