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

SW-420 진동 센서 모듈은 주변에서 발생하는 갑작스러운 충격이나 흔들림을 감지할 수 있어서, 노크 감지기, 충격 경보기, 또는 부딪힘을 알아차려야 하는 모든 프로젝트에 유용한 구성 요소입니다.

이 가이드에서는 Arduino Nano ESP32와 함께 SW-420 진동 센서를 사용하는 방법을 배웁니다. 자세히 말하면 다음을 배웁니다:

아두이노 나노 ESP32와 sw-420 진동 센서 모듈

기본 스케치가 동작하면, 모듈이 충격을 감지할 때마다 부저를 울리거나, LED를 깜빡이거나, 알림을 보내도록 수정할 수 있습니다.

준비물

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

SW-420 진동 센서에 대하여

SW-420 진동 센서 모듈은 주변의 흔들림, 두드림, 충격에 반응합니다. 모듈 내부에는 금속 접점 옆에 배치된 작은 스프링 방식의 스위치가 있으며, 온보드 LM393 비교기가 이 스위치를 감시하다가 진동이 스위치를 흔드는 순간 깨끗한 디지털 신호를 만들어 냅니다. 보드의 트리머 가변저항으로 트리거를 보고하기 전에 필요한 흔들림의 정도를 조절할 수 있습니다.

핀아웃

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

  • VCC 핀: VCC(3.3V ~ 5V)에 연결합니다
  • GND 핀: GND(0V)에 연결합니다
  • DO 핀: 디지털 출력 핀으로, 모듈이 정지해 있는 동안은 LOW이고 진동이나 충격이 감지되는 순간 HIGH가 됩니다. 이 핀을 Arduino Nano ESP32의 입력 핀에 연결합니다.
sw-420 진동 센서 핀아웃
image source: diyables.io

두 개의 온보드 LED로 빠르게 눈으로 확인할 수 있습니다:

  • 전원 LED는 모듈에 전원이 공급되는 동안 계속 켜져 있습니다.
  • 트리거 LED는 진동이 감지될 때마다 DO 핀과 함께 켜집니다.

작동 원리

출력 핀은 내부 스위치의 상태를 따릅니다:

  • 정지 상태에서는 스프링 스위치가 열려 있으므로, 비교기가 출력 핀을 LOW로 유지합니다.
  • 충격이나 진동이 스위치를 흔들면 스위치가 순간적으로 닫히고, 비교기가 출력 핀을 HIGH로 만듭니다.

배선도

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

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

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

  • pinMode()를 사용하여 센서의 DO 출력에 연결된 핀을 디지털 입력으로 설정합니다. 예를 들어 D3 핀
pinMode(D3, INPUT);
int vibrationState = digitalRead(D3);

Arduino Nano ESP32 코드 - 진동 감지

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

빠른 단계

다음 지침을 단계별로 따르세요:

  • Arduino Nano ESP32를 처음 사용한다면 아두이노 나노 ESP32 - 소프트웨어 설치을 참고하세요.
  • 위의 배선도에 따라 부품을 연결합니다.
  • 위의 코드를 Arduino IDE에 복사합니다.
  • 올바른 보드와 COM 포트를 선택한 다음, Upload 버튼을 클릭합니다.
  • 센서 모듈을 가볍게 두드리거나 살짝 흔들어 봅니다.
  • 시리얼 모니터를 열어 보고된 이벤트를 확인합니다.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Nano ESP32
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Nano ESP32' on 'COM15')
New Line
9600 baud
Vibration detected! Vibration stopped. Vibration detected! Vibration stopped.
Ln 11, Col 1
Arduino Nano ESP32 on COM15
2

여기서부터 SW-420이 충격을 보고할 때마다 LED를 켜거나, 부저를 울리거나, 알림을 보내도록 스케치를 확장할 수 있습니다. 다음에 무엇을 해볼지 아이디어를 얻으려면 이 페이지 하단에 링크된 튜토리얼을 확인하세요.

문제 해결

SW-420 진동 센서가 예상대로 동작하지 않는다면, 다음 항목을 차례로 확인하세요:

  • 감도 조절: 온보드 가변저항을 돌려 출력을 트리거하는 데 필요한 흔들림의 정도를 높이거나 낮춥니다.
  • 주변 진동 차단: 모터, 팬 등 오작동을 일으킬 수 있는 지속적인 배경 진동원에서 떨어진 곳에 모듈을 설치합니다.
  • 배선 확인: VCC, GND, DO 핀이 Arduino Nano ESP32의 올바른 핀에 연결되어 있는지 확인합니다.
  • 전원 확인: 모듈에 안정적인 3.3V ~ 5V 전원이 공급되는지 확인합니다.

동영상

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

댓글

관련 튜토리얼