מדריך חיבור חיישן קול ברגישות גבוהה KY-037 ל-Arduino ו-ESP32:
במדריך זה נלמד כיצד לחבר חיישן קול ברגישות גבוהה KY-037
לבקר Arduino UNO ולבקר ESP32.
נראה איך לזהות קול ורעשים בסביבה,
איך לקרוא את היציאה האנלוגית AO ואת היציאה הדיגיטלית DO,
ואיך להשתמש באירוע קול להפעלת פעולות בפרויקט.
נלמד גם כיצד לכוון את רגישות החיישן,
כיצד לזהות מחיאת כף או רעש חזק,
ומה ההבדל בין זיהוי סף דיגיטלי לבין ניתוח יחסי של האות האנלוגי.
מהו חיישן KY-037?
KY-037 הוא מודול מיקרופון ברגישות גבוהה המיועד לזיהוי קול ורעשים בסביבה.
המיקרופון שבקדמת המודול מגיב לשינויים בלחץ הקול,
והמעגל מאפשר לקרוא את האות בשתי דרכים שונות.
- AO — יציאה אנלוגית שמציגה את השינוי היחסי באות החיישן.
- DO — יציאה דיגיטלית שמחליפה מצב כאשר עוצמת האות עוברת את הסף שנקבע.
על המודול נמצא פוטנציומטר שמאפשר לכוון את סף ההפעלה של DO.
שבב LM393 משווה בין האות מהחיישן לבין הסף,
ומוציא מצב HIGH כאשר רמת האות עוברת את הערך שנקבע.
החיישן מתאים לפרויקטים של זיהוי מחיאת כף,
אזעקת רעש, תאורה שמגיבה לקול,
ממשקים אינטראקטיביים ומערכות שמפעילות פעולה בעקבות אירוע קול.
חשוב לדעת: KY-037 אינו מיקרופון להקלטת קול,
אינו מודד עוצמה מדויקת ב-dB ואינו מבצע זיהוי דיבור.
הוא מתאים בעיקר לזיהוי אירוע קול ולמדידה יחסית של שינוי באות.
איך החיישן עובד?
המיקרופון שבמודול מגיב לגלי הקול בסביבה ומייצר אות חשמלי משתנה.
האות מועבר ליציאה האנלוגית AO וגם למעגל ההשוואה של היציאה הדיגיטלית.
היציאה האנלוגית מאפשרת לבקר לראות את שינוי האות עצמו.
ב-KY-037 האות פועל בצורה הפוכה:
אות חזק יותר יכול לגרום למתח נמוך יותר ביציאה האנלוגית.
היציאה הדיגיטלית פשוטה יותר:
כאשר האות עובר את הסף שנקבע בעזרת הפוטנציומטר,
DO עובר למצב HIGH.
- AO — מתאים לניתוח יחסי, כיול וחישוב שינוי באות.
- DO — מתאים לזיהוי פשוט של אירוע קול.
- פוטנציומטר — קובע את סף ההפעלה של DO.
- LED חיווי — מציג אם האות עבר את הסף.
פינים במודול KY-037
| פין | תפקיד |
|---|---|
| VCC / + | מתח הזנה למודול |
| GND / G | אדמה |
| AO / A0 | יציאה אנלוגית של אות החיישן |
| DO / D0 | יציאה דיגיטלית לפי הסף שנקבע |
רכיבים נדרשים
- חיישן קול ברגישות גבוהה KY-037
- Arduino UNO או ESP32
- Breadboard
- חוטי Dupont
- כבל USB
חיבור KY-037 ל-Arduino UNO

| KY-037 | Arduino UNO |
| VCC / + | 5V |
| GND / G | GND |
| AO / A0 | A0 |
| DO / D0 | D3 |
הסבר חיבור
ב-Arduino UNO מחברים את היציאה האנלוגית AO לכניסה A0
ואת היציאה הדיגיטלית DO לפין D3.
כך ניתן לקרוא במקביל את השינוי היחסי באות המיקרופון
ואת מצב הסף הדיגיטלי.
מומלץ להתחיל מכיוון הפוטנציומטר כך שהיציאה הדיגיטלית אינה פעילה כל הזמן,
ולאחר מכן להפיק קול או למחוא כף ולכוון עד שמתקבלת תגובה ברורה.
קוד Arduino בסיסי לקריאת AO ו-DO
const int soundAnalogPin = A0;
const int soundDigitalPin = 3;
void setup() {
Serial.begin(9600);
pinMode(soundDigitalPin, INPUT);
Serial.println("KY-037 sound sensor ready");
}
void loop() {
int analogValue = analogRead(soundAnalogPin);
int digitalValue = digitalRead(soundDigitalPin);
Serial.print("Analog value: ");
Serial.print(analogValue);
Serial.print(" | Digital value: ");
Serial.println(digitalValue);
if (digitalValue == HIGH) {
Serial.println("Sound threshold reached");
}
delay(100);
}הסבר הקוד
הקוד קורא את AO דרך A0 ואת DO דרך D3.
הערך האנלוגי מציג את השינוי היחסי באות,
והערך הדיגיטלי מציין אם האות עבר את הסף שנקבע.
כאשר DO במצב HIGH,
הקוד מציג הודעה שהחיישן זיהה אירוע שעבר את הסף.
אם DO נשאר תמיד HIGH או תמיד LOW,
יש לכוון את הפוטנציומטר שעל המודול.
הבנת היציאה האנלוגית
היציאה האנלוגית של KY-037 אינה מספקת ערך מוכן של עוצמת קול.
היא מציגה אות שמשתנה בהתאם למה שהמיקרופון קולט.
בנוסף, האות של המודול הפוך:
אות חזק יותר יכול לגרום למתח נמוך יותר.
לכן לא מומלץ לבדוק רק אם הערך גבוה או נמוך.
דרך טובה יותר להעריך פעילות קול יחסית
היא למדוד את ההפרש בין הערך הגבוה ביותר לנמוך ביותר
במשך חלון זמן קצר.
קוד Arduino למדידת פעילות קול יחסית
const int soundPin = A0;
int readSoundActivity() {
int minimumValue = 1023;
int maximumValue = 0;
unsigned long startTime = millis();
while (millis() - startTime < 50) {
int sample = analogRead(soundPin);
if (sample < minimumValue) {
minimumValue = sample;
}
if (sample > maximumValue) {
maximumValue = sample;
}
}
return maximumValue - minimumValue;
}
void setup() {
Serial.begin(9600);
}
void loop() {
int soundActivity = readSoundActivity();
Serial.print("Relative sound activity: ");
Serial.println(soundActivity);
delay(100);
}הסבר הקוד
במשך 50 מילישניות הקוד שומר את הערך הגבוה ביותר
ואת הערך הנמוך ביותר שנמדדו.
לאחר מכן מחושב ההפרש ביניהם.
ככל שהאות השתנה יותר במהלך חלון המדידה,
מתקבל בדרך כלל ערך פעילות גדול יותר.
שיטה זו מתאימה יותר לזיהוי פעילות יחסית
מאשר שימוש בקריאת ADC בודדת.
הערך שמתקבל אינו dB.
הוא משמש להשוואה יחסית בלבד בין מצב שקט לבין אירוע קול.
זיהוי מחיאת כף באמצעות DO
היציאה הדיגיטלית מתאימה במיוחד לזיהוי אירוע קצר,
לדוגמה מחיאת כף או נקישה.
כאשר האות עובר את הסף,
ניתן להפעיל LED, Buzzer או פעולה אחרת.
הפעלה וכיבוי של LED באמצעות קול
const int soundPin = 3;
const int ledPin = 13;
bool ledState = false;
bool previousSoundState = false;
unsigned long lastTriggerTime = 0;
const unsigned long cooldownTime = 300;
void setup() {
pinMode(soundPin, INPUT);
pinMode(ledPin, OUTPUT);
}
void loop() {
bool currentSoundState = digitalRead(soundPin);
if (
currentSoundState == HIGH &&
previousSoundState == LOW &&
millis() - lastTriggerTime > cooldownTime
) {
ledState = !ledState;
digitalWrite(ledPin, ledState);
lastTriggerTime = millis();
}
previousSoundState = currentSoundState;
}הסבר הקוד
כאשר החיישן מזהה אירוע קול חדש,
הקוד הופך את מצב ה-LED.
אם ה-LED כבוי הוא נדלק,
ואם הוא דולק הוא נכבה.
זמן ההמתנה של 300 מילישניות עוזר למנוע מצב שבו אירוע קול אחד
מזוהה כמה פעמים ברצף.
במערכת אמיתית ייתכן שיהיה צורך לשנות את זמן ההמתנה
לפי סוג הקול ורגישות החיישן.
חיבור KY-037 ל-ESP32

הערה חשובה לפני החיבור
ESP32 עובד ברמת לוגיקה של 3.3V.
לכן בחיבור ל-ESP32 מומלץ להזין את KY-037 מ-3V3.
כך היציאה האנלוגית והיציאה הדיגיטלית נשארות
בתחום שמתאים לכניסות הבקר.
אין להזין את המודול מ-5V ולחבר את AO ישירות לכניסת ADC של ESP32
ללא בדיקת רמת המתח.
| KY-037 | ESP32 |
| VCC / + | 3V3 |
| GND / G | GND |
| AO / A0 | GPIO34 |
| DO / D0 | GPIO27 |
הסבר חיבור
ב-ESP32 מחברים את AO ל-GPIO34
ואת DO ל-GPIO27.
GPIO34 מתאים לקריאה אנלוגית ומשמש כאן ככניסת ADC.
GPIO27 משמש לקריאת מצב הסף הדיגיטלי.
לאחר החיבור יש לכוון מחדש את הפוטנציומטר.
אין להניח שהכיוון שהיה מתאים ל-Arduino
יהיה מתאים גם ל-ESP32.
קוד ESP32 בסיסי לקריאת AO ו-DO
const int soundAnalogPin = 34;
const int soundDigitalPin = 27;
void setup() {
Serial.begin(115200);
pinMode(soundDigitalPin, INPUT);
analogReadResolution(12);
Serial.println("KY-037 sound sensor ready");
}
void loop() {
int analogValue = analogRead(soundAnalogPin);
int digitalValue = digitalRead(soundDigitalPin);
Serial.print("Analog value: ");
Serial.print(analogValue);
Serial.print(" | Digital value: ");
Serial.println(digitalValue);
if (digitalValue == HIGH) {
Serial.println("Sound threshold reached");
}
delay(100);
}הסבר הקוד
הקוד עבור ESP32 עובד באותו עיקרון כמו הקוד עבור Arduino.
היציאה האנלוגית נקראת דרך GPIO34,
והיציאה הדיגיטלית נקראת דרך GPIO27.
כאשר משתמשים ברזולוציית ADC של 12-bit,
הקריאה האנלוגית יכולה להגיע בדרך כלל עד 4095.
אין להשוות ישירות בין ערכי Arduino לבין ערכי ESP32,
משום שטווחי ה-ADC שונים.
מדידת פעילות קול יחסית ב-ESP32
const int soundPin = 34;
int readSoundActivity() {
int minimumValue = 4095;
int maximumValue = 0;
unsigned long startTime = millis();
while (millis() - startTime < 50) {
int sample = analogRead(soundPin);
if (sample < minimumValue) {
minimumValue = sample;
}
if (sample > maximumValue) {
maximumValue = sample;
}
}
return maximumValue - minimumValue;
}
void setup() {
Serial.begin(115200);
analogReadResolution(12);
}
void loop() {
int soundActivity = readSoundActivity();
Serial.print("Relative sound activity: ");
Serial.println(soundActivity);
delay(100);
}הסבר הקוד
הקוד מודד את טווח השינוי של האות במשך חלון של 50 מילישניות.
ככל שההפרש בין הערך הגבוה לנמוך גדול יותר,
כך הייתה בדרך כלל יותר פעילות באות בזמן המדידה.
גם כאן מדובר בערך יחסי בלבד,
ולא במדידת dB מכוילת.
כיוון רגישות החיישן
הפוטנציומטר שעל KY-037 קובע את סף ההפעלה של היציאה הדיגיטלית.
מומלץ לבצע את הכיוון בשלבים:
- להפעיל את המערכת בחדר שקט יחסית.
- לכוון כך שהנורית הדיגיטלית אינה פעילה כל הזמן.
- להפיק את הקול שאותו רוצים לזהות.
- לסובב את הפוטנציומטר בהדרגה עד שמתקבלת תגובה יציבה.
- לבדוק שהחיישן אינו מופעל מכל רעש קטן בסביבה.
אם החיישן רגיש מדי,
הוא עלול לזהות דיבור, תנועה או רעשים שלא קשורים לפרויקט.
אם הרגישות נמוכה מדי,
גם מחיאת כף חזקה עלולה לא לעבור את הסף.
AO או DO — במה כדאי להשתמש?
| יציאה | מתי להשתמש |
|---|---|
| DO | כאשר צריך לזהות אירוע פשוט: קול / אין קול מעל סף מסוים |
| AO | כאשר רוצים לנתח שינוי יחסי באות או לקבוע את הסף בתוכנה |
לפרויקט פשוט של מחיאת כף עדיף בדרך כלל להשתמש ב-DO.
לפרויקט שבו רוצים להשוות בין פעילות שקטה וחזקה יותר,
ניתן להשתמש ב-AO ולחשב את טווח השינוי של האות.
למה החיישן אינו מודד dB?
dB הוא מדד לוגריתמי שדורש מערכת מדידה מכוילת.
כדי למדוד עוצמת קול בצורה אמינה יש לדעת את מאפייני המיקרופון,
ההגברה, תגובת התדר ומתח הייחוס.
KY-037 אינו מגיע כמכשיר מדידה מכויל.
לכן אי אפשר לקחת ערך ADC,
לבצע המרה פשוטה ולהציג ממנו מספר dB מדויק.
ניתן להשתמש בו להשוואה יחסית:
לדוגמה לזהות שהחדר היה שקט ועכשיו התרחש אירוע קול חזק.
שגיאות נפוצות
אם DO נשאר תמיד HIGH,
בדרך כלל סף הרגישות מכוון נמוך מדי.
אם DO אינו מגיב כלל,
יש לבדוק את הפוטנציומטר,
את מתח ההזנה ואת מצב נורית החיווי.
אם הערך האנלוגי נראה הפוך,
זו אינה בהכרח תקלה:
ב-KY-037 אות חזק יותר יכול לגרום לערך נמוך יותר.
אם אירוע קול אחד מזוהה מספר פעמים,
יש להוסיף זמן המתנה קצר בין אירועים.
אם החיישן מגיב לרעשי רקע,
יש להפחית רגישות או למקם אותו קרוב יותר למקור הקול הרצוי.
טיפים לעבודה נכונה
- לכוון את הפוטנציומטר בתנאי הרעש שבהם הפרויקט יעבוד בפועל.
- להשתמש ב-DO לזיהוי אירועים פשוטים.
- להשתמש ב-AO לניתוח יחסי של שינוי באות.
- לא להשתמש בקריאת ADC בודדת כמדד אמין לעוצמת קול.
- להוסיף Cooldown כאשר מזהים מחיאת כף או נקישה.
- להרחיק את החיישן ממנועים ורכיבים שיוצרים רעש מכני.
- לא להציג את הערכים כ-dB ללא מערכת כיול מתאימה.
פרויקט לדוגמה
מערכת גישה באמצעות קוד נקישות סודי עם KY-037

בפרויקט זה משתמשים בחיישן קול KY-037 יחד עם Arduino UNO
כדי לבנות מערכת שמזהה רצף של נקישות.
המשתמש צריך להכניס את רצף הנקישות שנקבע בתוכנית.
החיישן מזהה כל נקישה,
והבקר בודק את מספר הנקישות ואת התזמון של הרצף.
המערכת כוללת גם מסך LCD בתקשורת I2C,
שלוש נוריות LED וכפתור איפוס.
הנוריות מציגות את ההתקדמות ברצף,
והמסך מציג אם הגישה אושרה או נדחתה.
מעבר לחיישן עצמו,
הפרויקט משלב זיהוי אירוע קול,
מדידת זמן,
תצוגה למשתמש ולוגיקה של רצף פעולות.
לכן הוא מתאים ללמידה על שימוש מעשי ב-KY-037
מעבר לקריאה בסיסית ב-Serial Monitor.
סיכום
KY-037 הוא מודול מיקרופון ברגישות גבוהה
שמתאים לזיהוי קול ורעשים בפרויקטים עם Arduino ו-ESP32.
היציאה הדיגיטלית DO מאפשרת לזהות אירוע שעובר סף מוגדר,
והיציאה האנלוגית AO מאפשרת לנתח את השינוי היחסי באות.
החיישן מתאים למחיאת כף,
נקישות, אזעקות רעש,
תאורה שמגיבה לקול וממשקים אינטראקטיביים.
כדי לקבל עבודה יציבה חשוב לכוון את הפוטנציומטר לפי תנאי הסביבה,
להוסיף זמן המתנה בין אירועים
ולא להתייחס לקריאה האנלוגית כמדידה מדויקת של dB.