📳 سنسور لرزش SW-420 (SW-420 Vibration Sensor)

اسم انگلیسیSW-420 Vibration Sensor
در ووکوی (Wokwi)نسخه‌ی آماده‌ای سراغ نداریم
دسته🌡️ سنسورها
در شبیه‌ساز فارسیمود ساده (بدون کد) و مود آردوینو · رایگان

سنسور لرزش SW-420 (Vibration Sensor) در شکل خامش یک استوانه‌ی فلزی کوچک دوپایه است که داخلش یک فنر و یک میله‌ی فلزی هست. در حالت سکون اتصال داخلی بسته است؛ با هر ضربه یا تکان، فنر می‌لرزد و مدار برای کسری از میلی‌ثانیه قطع و وصل می‌شود. همین پالس‌های کوتاه چیزی است که باید بشماری. با آن دزدگیر دوچرخه، حسگر ضربه به در، شمارنده‌ی لرزش ماشین لباسشویی یا بازی «تکانش بده» می‌سازی.

سنسور لرزش در ووکوی (Wokwi)

تا جایی که می‌دانیم ووکوی نسخه‌ی آماده‌ی این قطعه را ندارد. نزدیک‌ترین جایگزین یک wokwi-pushbutton است: هر بار فشار دادنش مثل یک ضربه، لبه‌های قطع و وصل روی پین می‌سازد. پایه‌ی 1.l را به پین 2 و 2.l را به GND وصل کن.

{
  "parts": [
    { "type": "wokwi-arduino-uno", "id": "uno", "top": 0, "left": 0, "attrs": {} },
    { "type": "wokwi-pushbutton", "id": "btn1", "top": -100, "left": 150, "attrs": { "color": "yellow" } }
  ],
  "connections": [
    [ "btn1:1.l", "uno:2", "green", [] ],
    [ "btn1:2.l", "uno:GND.1", "black", [] ]
  ]
}

خود SW-420 در تینکرکد فارسی، هم به شکل قطعه‌ی خام و هم به شکل ماژول SW-420، رایگان شبیه‌سازی می‌شود.

سیم‌کشی با آردوینو

سنسور خام قطبیت ندارد. پین 2 را انتخاب کرده‌ایم چون در اونو یکی از دو پینی است که وقفه‌ی خارجی (Interrupt) دارند؛ دیگری پین 3 است.

پایه‌ی قطعهوصل به
پایه‌ی اول سنسورپین 2 (با INPUT_PULLUP)
پایه‌ی دوم سنسورGND
LED نشانگرLED داخلی برد روی پین 13

سنسور را محکم به جسمی که می‌خواهی لرزشش را حس کنی بچسبان یا پیچ کن. سنسوری که روی بردبورد آزاد افتاده، ضربه به میز را خیلی ضعیف حس می‌کند.

کد نمونه

پالس‌های SW-420 آن‌قدر کوتاه‌اند که digitalRead در حلقه بیشترشان را از دست می‌دهد. برای همین هر تغییر پین یک وقفه صدا می‌زند که فقط یک شمارنده را زیاد می‌کند. حلقه هر نیم ثانیه شمارنده را می‌خواند و صفر می‌کند؛ اگر تعداد پالس‌ها از حد گذشت، یعنی «تکان شدید» و LED روشن می‌شود. درس وقفه‌ها (Interrupts) این ابزار را از پایه توضیح می‌دهد.

// Bare SW-420 on pin 2: count pulses with an interrupt.
const int SENSOR_PIN = 2;          // pin 2 has an external interrupt on the Uno
const int SHAKE_LIMIT = 5;         // pulses per half second that mean shaking

volatile unsigned int pulses = 0;

void onPulse() {
  pulses++;                        // keep interrupt code tiny
}

void setup() {
  Serial.begin(9600);
  pinMode(SENSOR_PIN, INPUT_PULLUP);
  pinMode(LED_BUILTIN, OUTPUT);
  attachInterrupt(digitalPinToInterrupt(SENSOR_PIN), onPulse, CHANGE);
}

void loop() {
  delay(500);
  noInterrupts();                  // copy and clear the counter safely
  unsigned int count = pulses;
  pulses = 0;
  interrupts();

  if (count > 0) {
    Serial.print("pulses: ");
    Serial.println(count);
  }
  digitalWrite(LED_BUILTIN, count >= SHAKE_LIMIT ? HIGH : LOW);
}

با SHAKE_LIMIT حساسیت را تنظیم کن: عدد کم یعنی یک تقه هم هشدار می‌دهد و عدد زیاد یعنی فقط تکان‌های طولانی.

اشتباه‌های رایج

آموزش‌های مرتبط

سؤال‌های رایج

چرا digitalRead لرزش را از دست می‌دهد؟

پالس‌های سنسور SW-420 خیلی کوتاه‌اند و ممکن است بین دو خواندن حلقه تمام شوند. با attachInterrupt روی پین 2 یا 3 هر پالس، هر قدر هم کوتاه، شمرده می‌شود.

سنسور لرزش خام بهتر است یا ماژول SW-420؟

ماژول با مقایسه‌گر LM393 و پیچ حساسیت، خروجی تمیزتری می‌دهد و برای شروع ساده‌تر است. سنسور خام ارزان‌تر و کوچک‌تر است ولی به پول‌آپ و معمولاً وقفه نیاز دارد.

📖 طرز کار، مشخصات فنی و نکته‌های خرید این قطعه در دانشنامه‌ی تینکرکد فارسی: سنسور لرزش SW-420 آمده است.

قطعه‌های دیگرِ سنسورها

🧲

سنسور اثر هال

Hall Effect Sensor (A3144)

🚪

رید سوییچ (سوییچ ریدی)

Reed Switch

🌱

سنسور رطوبت خاک

Soil Moisture Sensor

🖐️

سنسور خمش (فلکس)

Flex Sensor

👆

سنسور لمسی TTP223

TTP223 Capacitive Touch Sensor

🧩

ماژول سنسور لرزش SW-420

SW-420 Vibration Sensor Module

همه‌ی ۱۰۵ قطعه ← · آموزش مدار

سنسور لرزش SW-420 را در شبیه‌ساز امتحان کن 🚀