아두이노 나노 SW-420 진동 센서

SW-420 진동 센서 모듈은 주변에 가해지는 진동이나 충격을 감지할 수 있습니다. 이 모듈을 사용하면 문을 두드릴 때 작동하는 경보기나, 운송 중에 부딪힌 소포를 알아내는 장치처럼 원치 않는 움직임에 반응하는 프로젝트를 만들 수 있습니다.

이 튜토리얼에서는 아두이노 나노와 SW-420 진동 센서를 사용하여 진동을 감지하는 방법을 알려 드립니다. 다음 내용을 살펴봅니다:

아두이노 나노 sw-420 진동 센서

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

준비물

1×아두이노 나노 쿠팡 | 아마존
1×USB A to Mini-B USB 케이블 쿠팡 | 아마존
1×SW-420 Vibration Sensor Module 아마존
1×점퍼케이블 쿠팡 | 아마존
1×(추천) 아두이노 나노용 스크루 터미널 확장 보드 쿠팡 | 아마존
1×(추천) 아두이노 나노용 브레이크아웃 확장 보드 쿠팡 | 아마존
1×(추천) 아두이노 나노용 전원 분배기 쿠팡 | 아마존
공개: 이 포스팅 에 제공된 일부 링크는 아마존 제휴 링크입니다. 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

SW-420 진동 센서에 대하여

SW-420 진동 센서 모듈은 주변 환경의 진동이나 충격을 감지하는 데 사용할 수 있습니다. 모듈 내부에는 작은 스프링식 진동 스위치가 금속 접점 가까이에 있고, 보드의 LM393 비교기가 그 스위치를 감시하다가 진동이나 충격이 스위치를 흔들 때마다 깨끗한 디지털 신호를 출력합니다. 모듈은 간단한 디지털 신호(ON/OFF)를 출력하므로 아두이노 나노와 쉽게 연결할 수 있습니다.

SW-420 진동 센서 핀아웃

SW-420 진동 센서에는 세 개의 핀이 있습니다:

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

SW-420 진동 센서 모듈에는 LED 표시등도 두 개 있습니다:

  • 하나의 LED는 전원 상태를 표시합니다.
  • 다른 LED는 트리거 상태를 표시합니다. 진동이 감지되면 켜지고, 모듈이 대기 중일 때는 꺼집니다.

작동 원리

SW-420 진동 센서 모듈은 스프링식 진동 스위치와 보드에 있는 비교기를 함께 사용합니다. 센서의 출력 핀은 다음과 같이 동작합니다:

  • 모듈이 흔들리지 않을 때는 스위치가 열린 상태로 유지되고 출력 핀은 LOW가 됩니다.
  • 진동이나 충격이 스위치를 흔들면 접점이 순간적으로 닫히고 출력 핀은 HIGH가 됩니다.
  • 보드의 가변저항으로 출력 핀이 HIGH로 바뀌기까지 필요한 흔들림의 정도를 조절할 수 있습니다.

선연결

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

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

Arduino Nano와 기타 부품에 전원을 공급하는 가장 효과적인 방법은 다음 링크를 참조하세요: 아두이노 나노 전원 공급 방법.

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

  • pinMode() 함수를 사용하여 아두이노 나노 핀을 디지털 입력 모드로 초기화합니다. 예를 들어 D2 핀
pinMode(2, INPUT);
  • digitalRead() 함수를 사용하여 아두이노 나노 핀의 상태를 읽습니다.
int vibrationState = digitalRead(2);

아두이노 나노 코드 - 진동 감지

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

빠른 단계

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

여기서부터 진동이 감지될 때마다 부저를 울리거나, LED를 켜거나, 연결된 앱으로 알림을 보내도록 스케치를 바꿀 수 있습니다. 더 자세한 정보와 단계별 안내는 이 가이드 끝에 있는 튜토리얼들을 참고하세요.

문제 해결

SW-420 진동 센서가 제대로 동작하지 않는 문제가 있다면, 다음 단계에 따라 문제를 해결할 수 있습니다:

  • 감도 조절: 원하는 진동 수준에서 확실하게 작동할 때까지 보드의 가변저항을 돌려 센서의 감도를 높이거나 낮춥니다.
  • 주변 진동으로부터 분리: 센서는 근처의 모터, 팬, 사람의 발걸음 등 관련 없는 진동을 감지할 수 있습니다. 오작동을 막으려면 감시하려는 물체에 단단히 고정하세요.
  • 배선 확인: VCC, GND, DO 핀이 올바르게 연결되어 있는지 확인하세요.
  • 전원 공급 확인: 노이즈는 측정값을 불안정하게 만들 수 있으므로, 전원 공급이 깨끗하고 안정적인지 확인하세요.

이 단계들을 따르면 흔한 문제를 해결하고 SW-420 진동 센서의 성능을 높일 수 있습니다.

동영상

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

댓글

관련 튜토리얼