ماژول سنسور ضربه و ضربه‌زن

(Tap/Knock Sensor Module)

حسگر تشخیص ضربه، تپ و لرزش

سنسور ضربه/تپ (Tap/Knock Sensor): حسگر ساده اما موثر برای تشخیص ضربه‌های فیزیکی و تعامل لمسی

ماژول سنسور ضربه و تپ یک حسگر پیزوالکتریک یا MEMS است که تشخیص ضربه، تپ (ضربه آرام)، لرزش و ضربات فیزیکی را ممکن می‌سازد. این ماژول برای پروژه‌های تعاملی، سیستم‌های امنیتی، اسباب‌بازی‌های هوشمند و رابط‌های کاربری فیزیکی ایده‌آل است.


اصول کار و تکنولوژی

۱. سنسور پیزوالکتریک (رایج‌تر):

  • اثر پیزوالکتریک: تولید ولتاژ در اثر تنش مکانیکی.

  • ساختار: کریستال پیزو که در پاسخ به فشار یا ضربه ولتاژ تولید می‌کند.

۲. سنسور MEMS شتاب‌سنج:

  • شناسایی شتاب: تشخیص تغییر سرعت ناشی از ضربه.

  • حساسیت بالا: قادر به تشخیص ضربه‌های بسیار ملایم.


ویژگی‌های کلیدی و مزایا

  • حساسیت قابل تنظیم: پتانسیومتر برای تنظیم آستانه حساسیت به ضربه.

  • خروجی دوگانه:

    • DO (دیجیتال): خروجی HIGH/LOW برای تشخیص ساده.

    • AO (آنالوگ): خروجی متناسب با شدت ضربه (در برخی مدل‌ها).

  • پاسخ سریع: زمان پاسخ کمتر از ۱ میلی‌ثانیه.

  • مصرف انرژی پایین: در حالت عادی کم مصرف.

  • نصب آسان: چسباندن روی سطوح مختلف.


مشخصات فنی (مدل پیزوالکتریک رایج)

پارامتر مشخصات فنی
ولتاژ کاری ۳.۳ تا ۵ ولت DC
جریان مصرف < ۱ میلی‌آمپر (غیرفعال)، ≈ ۵mA (فعال)
سنسور المنت پیزوالکتریک (قطر معمولی: ۱۵-۲۷mm)
ولتاژ خروجی پیزو تا ۲۰V پیک (نیاز به مدار محدودکننده)
خروجی دیجیتال TTL (HIGH/LOW) – فعال با پتانسیومتر
خروجی آنالوگ ۰-۵V (متناسب با شدت ضربه – در مدل‌های پیشرفته)
فرکانس پاسخ ۰.۱Hz تا ۱۰kHz
دمای کاری -۲۰°C تا +۷۰°C
حساسیت قابل تنظیم با پتانسیومتر چنددور

پین‌های ماژول

پین ماژول نام عملکرد
VCC تغذیه ۳.۳V یا ۵V
GND زمین اتصال زمین
DO خروجی دیجیتال HIGH=تشخیص ضربه، LOW=عادی
AO خروجی آنالوگ سیگنال آنالوگ (در مدل‌های دارای این قابلیت)
سنسور کانکتور ۲ پین اتصال به سنسور پیزو (معمولاً سیم‌های قرمز/سیاه)

اتصال و کد نمونه (حالت دیجیتال)

// اتصال ساده - حالت دیجیتال
// VCC -> 5V
// GND -> GND
// DO -> پین دیجیتال (مثلاً D2)

const int knockPin = 2;
int knockState = 0;
int knockCount = 0;
unsigned long lastKnockTime = 0;
const int debounceDelay = 50; // زمان دبانس (میلی‌ثانیه)

void setup() {
  pinMode(knockPin, INPUT);
  Serial.begin(9600);
  Serial.println("سنسور ضربه آماده است...");
}

void loop() {
  knockState = digitalRead(knockPin);
  
  if (knockState == HIGH) {
    // بررسی دبانس برای جلوگیری از شمارش چندباره
    if (millis() - lastKnockTime > debounceDelay) {
      knockCount++;
      Serial.print("ضربه شماره: ");
      Serial.println(knockCount);
      
      // تشخیص الگوهای ضربه (مثلاً ۲ ضربه سریع)
      lastKnockTime = millis();
      
      // فعال کردن یک عمل (مثلاً روشن کردن LED)
      digitalWrite(LED_BUILTIN, HIGH);
      delay(100);
      digitalWrite(LED_BUILTIN, LOW);
    }
  }
  
  // ریست شمارنده هر ۵ ثانیه
  if (millis() - lastKnockTime > 5000 && knockCount > 0) {
    Serial.println("ریست شمارنده...");
    knockCount = 0;
  }
}

کد پیشرفته: تشخیص الگوی ضربه (مثل کد مخفی)

const int knockPin = 2;
const int maxKnocks = 10;
int knockPattern[maxKnocks];
int knockIndex = 0;
unsigned long lastKnock = 0;
const int knockTimeout = 2000; // زمان انتظار برای الگو (میلی‌ثانیه)

// الگوی مخفی: کوتاه-کوتاه-بلند (مثل: تاپ-تاپ-تاپ___)
int secretPattern[] = {1, 1, 3}; // 1=کوتاه, 3=بلند
int secretLength = 3;

void setup() {
  pinMode(knockPin, INPUT);
  Serial.begin(9600);
  Serial.println("سیستم تشخیص الگوی ضربه آماده است...");
}

void loop() {
  if (digitalRead(knockPin) == HIGH) {
    unsigned long knockTime = millis();
    unsigned long interval = knockTime - lastKnock;
    lastKnock = knockTime;
    
    // طبقه‌بندی ضربه (کوتاه یا بلند)
    if (interval > 50 && interval < 1000) {
      int knockType = (interval < 300) ? 1 : 2; // 1=کوتاه, 2=بلند
      
      if (knockIndex < maxKnocks) {
        knockPattern[knockIndex] = knockType;
        knockIndex++;
        
        Serial.print("ضربه نوع: ");
        Serial.print(knockType == 1 ? "کوتاه" : "بلند");
        Serial.print(" | فاصله: ");
        Serial.println(interval);
      }
    }
    
    delay(50); // دبانس
  }
  
  // بررسی الگو اگر زمان گذشته باشد
  if (millis() - lastKnock > knockTimeout && knockIndex > 0) {
    checkPattern();
    resetPattern();
  }
}

void checkPattern() {
  Serial.print("الگوی وارد شده: ");
  for (int i = 0; i < knockIndex; i++) {
    Serial.print(knockPattern[i]);
    Serial.print(" ");
  }
  Serial.println();
  
  // مقایسه با الگوی مخفی
  if (knockIndex == secretLength) {
    bool correct = true;
    for (int i = 0; i < secretLength; i++) {
      if (knockPattern[i] != secretPattern[i]) {
        correct = false;
        break;
      }
    }
    
    if (correct) {
      Serial.println("✅ الگو صحیح! در باز شد!");
      // فعال کردن رله، سروو یا ...
    } else {
      Serial.println("❌ الگو نادرست!");
    }
  }
}

void resetPattern() {
  knockIndex = 0;
  for (int i = 0; i < maxKnocks; i++) {
    knockPattern[i] = 0;
  }
}

کاربردهای خلاقانه

  1. قفل‌های مخفی: باز کردن در با الگوی ضربه خاص (مانند فیلم‌ها).

  2. کنترل لمسی: کنترل دستگاه‌ها با تپ‌های مختلف (مثلاً ۲ بار تپ برای روشن کردن).

  3. ساخت درام الکترونیکی: تشخیص ضربه به سطوح مختلف.

  4. سیستم‌های امنیتی: تشخیص ضربه به پنجره، درب یا دیوار.

  5. اسباب‌بازی‌های تعاملی: عروسک‌های پاسخگو به ضربه.

  6. دستگاه‌های ورزشی: شمارش ضربات (مثل درازونشست).

  7. رابط‌های هنری: ساخت سازهای دیجیتال.


نکات حیاتی برای عملکرد بهینه

⚠️ نصب صحیح: سنسور پیزو را محکم و با چسب روی سطح مورد نظر بچسبانید. نصب شل باعث کاهش حساسیت می‌شود.
🔧 تنظیم حساسیت: پتانسیومتر را طوری تنظیم کنید که فقط ضربه‌های مورد نظر را تشخیص دهد.
🔌 مقاومت Pull-down: در برخی مدارات، نیاز به مقاومت Pull-down (۱۰kΩ) روی پایه DO است.
🌡️ دمای محیط: سنسورهای پیزو در دمای بسیار بالا ممکن است دقت کمتری داشته باشند.
📏 محل نصب: برای تشخیص بهتر، روی سطوح صلب و محکم نصب شود. سطوح نرم (مثل فرش) ضربه را جذب می‌کنند.


پروژه عملی: درام الکترونیکی با ۸ پد

قطعات:

  • ۸ عدد ماژول سنسور ضربه

  • آردوینو MEGA (پین‌های زیاد)

  • ماژول SD کارت برای ضبط

  • بلندگو یا آمپلی‌فایر صوتی

  • پدهای فلزی یا چوبی

نحوه کار: هر ضربه به یک پد، نت موسیقی خاصی را از کارت SD پخش می‌کند. امکان ضبط و ریتم‌گذاری وجود دارد.


مقایسه با سایر سنسورهای حرکتی/لمسی

سنسور سنسور ضربه (پیزو) سنسور لمس خازنی سنسور فشار (FSR) میکروفون
نحوه تشخیص تنش مکانیکی تغییر ظرفیت خازنی مقاومت در برابر فشار امواج صوتی
حساسیت بالا (ضربه‌های ملایم) بالا (لمس سطحی) متوسط (فشار مستقیم) بسیار بالا
نصب پشت سطوح (مخفی) روی سطح (لمس مستقیم) روی سطح نزدیک منبع صدا
مقاومت بسیار بادوام حساس به رطوبت فرسایش با زمان حساس به نویز
هزینه ⭐⭐⭐ (متوسط) ⭐⭐⭐⭐ (کم) ⭐⭐ (گران) ⭐⭐⭐ (متوسط)

سوالات متداول (FAQ)

✅ آیا می‌تواند ضربه‌های بسیار ملایم را تشخیص دهد؟
بله، با تنظیم حساسیت روی ماکزیمم، حتی تپ‌های بسیار آرام با ناخن را نیز تشخیص می‌دهد.

✅ تفاوت این سنسور با ویبریشن سنسور چیست؟
سنسور ضربه برای ضربه‌های لحظه‌ای بهینه شده. ویبریشن سنسور برای لرزش‌های ممتد (مثل موتور) مناسب‌تر است.

✅ آیا به ضربه مستقیم نیاز دارد؟
خیر. سنسور پشت سطح نصب می‌شود و ارتعاش منتقل شده از ضربه به سطح را تشخیص می‌دهد.

✅ چگونه برای پنجره ضد سرقت استفاده کنم؟
سنسور را به قاب پنجره بچسبانید. هر ضربه به شیشه، ارتعاش را به قاب و سپس سنسور منتقل می‌کند.

✅ آیا می‌توان چند سنسور را به یک پین متصل کرد؟
خیر. هر سنسور نیاز به پین مجزا دارد. برای تعداد زیاد از مولتی‌پلکسر آنالوگ/دیجیتال استفاده کنید.

✅ طول عمر سنسور چقدر است؟
سنسورهای پیزو طول عمر بسیار بالایی دارند (میلیون‌ها ضربه). اما سیم‌های اتصال ممکن است با زمان شل شوند.

✅ آیا برای تشخیص صدا هم کار می‌کند؟
به طور محدود. سنسورهای پیزو می‌توانند صداهای بم و قوی را تشخیص دهند اما برای صداهای معمولی میکروفون مناسب‌تر است.


چرا این ماژول را از ما بخرید؟

✅ سنسور با کیفیت: استفاده از دیسک پیزوالکتریک با کیفیت بالا و پایداری طولانی‌مدت.
✅ مدار محافظ: مدارهای محدودکننده ولتاژ و فیلتر نویز برای عملکرد مطمئن.
✅ تست کامل: تست حساسیت، دامنه تشخیص و استقامت مکانیکی.
✅ پشتیبانی فنی: ارائه کدهای الگوی پیشرفته، نقشه نصب و راهنمای تنظیم.


پکیج پیشنهادی برای پروژه‌های تعاملی

  1. ماژول سنسور ضربه (۵ عدد)

  2. آردوینو نانو/UNO با کابل USB

  3. سوکت سیم سنسور (برای اتصال راحت‌تر)

  4. چسب دوطرفه صنعتی (برای نصب محکم)

  5. بازر پیزو (برای بازخورد صوتی)

  6. ال‌ای‌دی‌های رنگی (برای بازخورد بصری)


نحوه انتخاب و نصب

  • برای تشخیص ضربه محکم: حساسیت را روی مقدار متوسط تنظیم کنید.

  • برای تشخیص تپ آرام: حساسیت را روی ماکزیمم تنظیم کنید.

  • نصب: سنسور را با چسب اپوکسی یا دوطرفه قوی در مرکز سطح بچسبانید.

  • سیم‌کشی: از سیم‌های نازک و انعطاف‌پذیر استفاده کنید تا انتقال ارتعاش کم شود.