กลับหน้าหลัก
views
วิธีใช้งานเซ็นเซอร์เสียง KY-037 กับ Arduino
Last updated on

วิธีใช้งานเซ็นเซอร์เสียง KY-037 กับ Arduino


วิธีใช้งานเซ็นเซอร์เสียง KY-037 กับ Arduino

เซ็นเซอร์เสียง KY-037 เป็นโมดูลตรวจจับเสียงที่ให้ output ได้ทั้งแบบ analog และ digital มีความไวสูง เหมาะกับโปรเจกต์ที่ต้องการวัดระดับเสียงหรือตรวจจับเสียงที่เกิดขึ้น

อุปกรณ์ที่ต้องใช้

  • Arduino UNO R3
  • สาย USB สำหรับ upload โค้ด
  • เซ็นเซอร์เสียง High Sensitivity Sound KY-037
  • LED สีแดง 1 ดวง
  • ตัวต้านทาน 220 Ohm
  • บอร์ดทดลอง (Breadboard)
  • สายไฟจัมเปอร์

ต่อวงจร Arduino กับ KY-037

วงจรเชื่อมต่อ Arduino UNO กับเซ็นเซอร์ KY-037 และ LED บน Breadboard แสดงขา 5V, GND, A5 และ Pin 2
Arduino UNOอุปกรณ์หมายเหตุ
Pin 2LED (ผ่าน R 220Ω)ควบคุม LED ติด-ดับ
5VKY-037 ขา +จ่ายไฟให้เซ็นเซอร์
GNDKY-037 ขา Gกราวด์ร่วม
A5KY-037 ขา A0อ่านค่า analog

โค้ด Arduino อ่านค่าเสียงจาก KY-037

const int soundPin = A5;    // ขา analog อ่านค่าเสียง
const int ledPin = 2;       // ขา LED
const int threshold = 725;  // ค่าเกณฑ์ ปรับได้ตามสภาพแวดล้อม
int ledState = LOW;         // สถานะ LED เริ่มต้น

void setup() {
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
  pinMode(soundPin, INPUT);
}

void loop() {
  int soundValue = analogRead(soundPin);  // อ่านค่า 0-1023
  Serial.println(soundValue);             // แสดงใน Serial Plotter


  // ถ้าค่าเสียงเกินเกณฑ์ ให้สลับสถานะ LED
  if (soundValue > threshold) {
    ledState = !ledState;                 // สลับ ติด->ดับ, ดับ->ติด
    digitalWrite(ledPin, ledState);
    delay(200);                           // debounce ป้องกันทำซ้ำเร็วเกิน
  }
}

วิธีทดสอบด้วย Serial Plotter

  1. Upload โค้ดลง Arduino
  2. เปิด Serial Plotter ที่ Tools → Serial Plotter หรือ Serial Monitor
  3. สังเกตค่าที่แสดงขณะเงียบ ค่าจะอยู่ที่ประมาณ 0-50
  4. ตบมือหรือทำเสียงดังข้างเซ็นเซอร์ ค่าจะพุ่งขึ้น
  5. ปรับ threshold ในโค้ดตามค่าที่วัดได้จริงในสภาพแวดล้อมของตัวเอง
หน้าต่าง Serial Plotter แสดงกราฟค่า analog จากเซ็นเซอร์เสียง โค้งขึ้นเมื่อมีเสียง

จุดที่ต้องปรับแต่งเพิ่มเติม

  • threshold — ถ้า LED ติดเองทั้งที่เงียบ แปลว่าค่า threshold ต่ำเกินไป ให้เพิ่มค่าขึ้น ถ้าเสียงดังแล้ว LED ไม่ติด ให้ลดค่าลง
  • delay(200) — ปรับระยะ debounce ได้ ค่าน้อย = ตอบสนองเร็ว แต่อาจกระพริบหลายครั้งจากเสียงเดียว
  • ขา A0 — สามารถเปลี่ยนเป็น A0-A4 ตามชอบ แก้ค่าในโค้ดด้วย
เปรียบเทียบหน้าต่าง Serial Monitor และ Serial Plotter แสดงค่าจาก KY-037

ต่อ digital output สำหรับงาน simpler

ถ้าต้องการแค่ตรวจจับว่ามีเสียงหรือไม่ (HIGH/LOW) ไม่ต้องใช้ analog ใช้ขา D0 แทน

const int digitalPin = 4;  // ขา digital ของ KY-037 (D0)
const int ledPin = 2;

void setup() {
  Serial.begin(9600);
  pinMode(digitalPin, INPUT);
  pinMode(ledPin, OUTPUT);
}

void loop() {
  int digitalValue = digitalRead(digitalPin);
  Serial.println(digitalValue);
  digitalWrite(ledPin, digitalValue);  // LED ติดเมื่อมีเสียง
}

หมายเหตุ: ขา D0 จะตั้งค่า HIGH/LOW โดยอัตโนมัติจาก trimpot บนบอร์ด หมุนปรับความไวได้เลย

วิดีโออ้างอิง

อยากทำโปรเจคแบบนี้?

รับทำโปรเจค Arduino / IoT จบงานไว ส่งงานครบ พร้อมสอน

หากต้องการ รับทำโปรเจคอาดูโน่ หรือระบบ IoT แบบเร่งด่วน สามารถดูรายละเอียดบริการได้ที่หน้าแรก

จ้างทำโปรเจคเลย

ความคิดเห็น