สร้างเครื่องดักฟังเสียง "โดรน" ด้วยงบไม่ถึง 600 บาท! (โปรเจกต์ batear ด้วย ESP32)

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

เข้าสู่ระบบ

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

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