아두이노 SW-420 진동 센서

충격, 부딪힘, 흔들림은 사람은 쉽게 느낄 수 있지만 아두이노 혼자서는 알아차리기 어렵습니다. SW-420 진동 센서 모듈이 그 빈자리를 채워 줍니다. 이 모듈은 기계적인 흔들림을 감시하고 이를 간단한 디지털 신호로 알려 주므로, 보안 경보기, 충격 기록기, 또는 무언가가 부딪히거나 흔들릴 때 반응해야 하는 모든 프로젝트에 유용합니다.

이 튜토리얼에서는 다음을 배웁니다:

아두이노 sw-420 진동 센서

기본 스케치가 동작하면, 진동이 감지될 때마다 부저를 울리거나, LED를 깜박이거나, 알림을 보내도록 확장할 수 있습니다.

준비물

1×아두이노 우노 R3 쿠팡 | 아마존
1×USB 2.0 타입 A-to-B 케이블 (USB-A PC용) 쿠팡 | 아마존
1×USB 2.0 타입 C-to-B 케이블 (USB-C PC용) 아마존
1×SW-420 Vibration Sensor Module 아마존
1×점퍼케이블 쿠팡 | 아마존
1×(추천) 아두이노 우노용 스크루 터미널 블록 쉴드 쿠팡 | 아마존
1×(추천) Sensors/Servo Expansion Shield for Arduino Uno 쿠팡 | 아마존
1×(추천) 아두이노 우노용 브레드보드 쉴드 쿠팡 | 아마존
1×(추천) 아두이노 우노용 케이스 쿠팡 | 아마존
1×(추천) 아두이노 우노용 프로토타이핑 베이스 플레이트 & 브레드보드 키트 아마존
공개: 이 포스팅 에 제공된 일부 링크는 아마존 제휴 링크입니다. 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

SW-420 진동 센서에 대하여

SW-420 진동 센서 모듈은 주변의 흔들림, 부딪힘, 충격에 반응합니다. 모듈 내부에는 금속 접점 가까이에 작은 스프링식 스위치가 있습니다. 진동이 스프링을 흔들면 보드에 있는 LM393 비교기가 그 기계적인 흔들림을 깨끗한 디지털 신호로 바꿔 주므로, 아두이노는 노이즈가 많은 아날로그 값을 다룰 필요 없이 HIGH 또는 LOW 핀 상태만 읽으면 됩니다.

SW-420 진동 센서 핀아웃

SW-420 모듈에는 세 개의 핀이 있습니다:

  • VCC 핀: VCC(3.3V ~ 5V)에 연결해야 합니다
  • GND 핀: GND(0V)에 연결해야 합니다
  • DO 핀: 출력 핀입니다. 모든 것이 정지해 있을 때는 LOW이고, 진동이나 충격이 감지되는 순간 HIGH가 됩니다. 이 핀은 아두이노의 입력 핀에 연결해야 합니다.
sw-420 진동 센서 핀아웃
image source: diyables.io

보드에는 LED가 두 개 있습니다:

  • 전원 표시용 LED 하나
  • DO 핀이 HIGH가 될 때(진동 감지 시) 켜지는 표시용 LED 하나

보드에 있는 작은 가변저항으로 감도를 높이거나 낮출 수 있습니다. 돌리는 방향에 따라 가벼운 두드림에도 출력이 작동하거나, 더 강한 충격에만 작동하도록 할 수 있습니다.

작동 원리

  • 모듈이 정지해 있는 동안에는 스프링 스위치가 열린 상태로 유지되고, 비교기는 출력을 LOW로 유지하며, 트리거 LED는 꺼져 있습니다.
  • 진동이나 충격이 스프링을 흔들면 스위치가 순간적으로 닫히고, 비교기가 출력을 HIGH로 만들며, 트리거 LED가 켜집니다.

선연결

아두이노 sw-420 진동 센서 배선도

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

SW-420 진동 센서 프로그래밍 방법

  • pinMode() 함수로 아두이노 핀을 디지털 입력 모드로 설정합니다. 예를 들어 5번 핀
pinMode(5, INPUT);
  • digitalRead() 함수로 그 핀의 현재 논리 레벨을 읽습니다.
int vibrationState = digitalRead(5);

아두이노 코드 - 진동 감지

/* * 이 아두이노 코드는 newbiely.kr 에서 개발되었습니다 * 이 아두이노 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino/arduino-sw-420-vibration-sensor */ // Arduino's pin connected to DO pin of the SW-420 vibration sensor #define SENSOR_PIN 5 int previousState = LOW; // the previous reading from the input pin (LOW = idle) int currentState; // the current reading from the input pin void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600); // initialize the Arduino's pin as an input pinMode(SENSOR_PIN, INPUT); } void loop() { // read the state of the input pin: currentState = digitalRead(SENSOR_PIN); if (previousState == LOW && currentState == HIGH) Serial.println("Vibration detected!"); else if (previousState == HIGH && currentState == LOW) Serial.println("Vibration stopped."); // save the current state for the next loop previousState = currentState; }

빠른 단계

  • 위 코드를 복사하여 Arduino IDE에서 엽니다
  • Arduino IDE에서 Upload 버튼을 클릭하여 코드를 아두이노에 업로드합니다
  • SW-420 모듈을 가볍게 두드리거나 흔들어 봅니다
  • 시리얼 모니터에서 결과를 확인합니다.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno' on 'COM15')
New Line
9600 baud
Vibration detected! Vibration stopped. Vibration detected! Vibration stopped.
Ln 11, Col 1
Arduino Uno on COM15
2

여기서부터 진동이 감지될 때마다 부저를 울리거나, LED를 켜거나, 알림을 보낼 수 있습니다. 더 자세한 정보와 단계별 안내는 이 튜토리얼 끝에 있는 튜토리얼들에서 찾을 수 있습니다.

문제 해결

SW-420 진동 센서가 제대로 동작하지 않으면 다음 단계를 시도해 보세요:

  • 감도 조절: 보드의 가변저항을 돌려 모듈의 감도를 높이거나 낮춥니다. 전혀 작동하지 않는다면 반대 방향으로 돌려 보세요.
  • 모듈 분리: 주변의 기계, 팬, 발걸음 등이 모듈이 설치된 표면을 흔들어 오작동을 일으킬 수 있으므로, 관련 없는 진동원에서 멀리 떨어진 곳에 설치하세요.
  • 배선 확인: VCC, GND, DO 핀이 올바르게 연결되어 있는지 확인하세요.
  • 전원 공급 확인: 일정한 측정값을 얻으려면 전원 공급이 안정적인지 확인하세요.

동영상

비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.

댓글

관련 튜토리얼