ESP32 SW-420 진동 센서

SW-420 진동 센서 모듈은 주변에서 발생하는 충격, 두드림, 흔들림을 감지하여, 단순한 기계적 움직임을 ESP32가 처리할 수 있는 디지털 신호로 바꿔 줍니다.

이 튜토리얼에서는 ESP32와 SW-420 진동 센서를 사용하여 진동을 감지하는 방법을 배웁니다. 다음 내용을 자세히 살펴봅니다:

ESP32 sw-420 진동 센서

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

필요한 하드웨어

1×38-pin ESP32 ESP-WROOM-32 Dev Module - Narrow 쿠팡 | 아마존
1×(또는) 38-pin ESP32 ESP-WROOM-32 Dev Module - Wide 쿠팡 | 아마존
1×(또는) 30-pin ESP32 ESP-WROOM-32 Dev Module - Wide 아마존
1×(또는) ESP32 Uno-form board 아마존
1×(또는) ESP32 S3 Uno-form board 아마존
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 for ESP32 아마존
1×(추천) ESP32용 스크루 터미널 확장 보드 쿠팡 | 아마존
1×(추천) Breakout Expansion Board for ESP32 쿠팡 | 아마존
1×(추천) ESP32용 전원 분배기 쿠팡 | 아마존
공개: 이 포스팅 에 제공된 일부 링크는 아마존 제휴 링크입니다. 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

SW-420 진동 센서 소개

SW-420 진동 센서 모듈은 장착된 물체의 충격과 흔들림을 감지하도록 만들어졌습니다. 모듈 내부에는 금속 접점 근처에 작은 스프링식 진동 스위치가 있습니다. 온보드 LM393 비교기가 이 스위치를 감시하다가 진동이나 충격이 가해지면 깨끗한 디지털 신호를 출력하며, 온보드 가변 저항으로 출력을 트리거하는 데 필요한 흔들림의 정도를 조절할 수 있습니다.

SW-420 진동 센서 핀 배치

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

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

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

  • 하나의 LED 표시등은 전원 상태를 나타냅니다.
  • 다른 LED 표시등은 DO 핀이 HIGH가 될 때마다 켜져서 진동이 감지되었음을 알려 줍니다.

작동 원리

센서의 출력 핀은 다음과 같이 동작합니다:

  • 모듈이 가만히 있을 때는 내부 스위치가 열린 상태를 유지하고 출력 핀은 LOW가 됩니다.
  • 진동이나 충격이 모듈에 가해지면 내부 스위치가 순간적으로 닫히고 출력 핀은 HIGH가 됩니다.

배선도

  • 브레드보드를 사용하여 ESP32와 SW-420 진동 센서를 연결하는 방법
ESP32 sw-420 진동 센서 배선도

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

ESP32 및 다른 구성 요소에 전원을 공급하는 방법에 대해 잘 알지 못하는 경우, 다음 튜토리얼에서 안내를 찾을 수 있습니다: ESP32 전원 공급 방법.

ESP32와 sw-420 진동 센서를 연결하는 방법

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

  • pinMode() 함수를 사용하여 ESP32 핀을 디지털 입력 모드로 초기화합니다. 예: GPIO18 핀
pinMode(18, INPUT);
  • digitalRead() 함수를 사용하여 ESP32 핀의 상태를 읽습니다.
int vibrationState = digitalRead(18);

ESP32 코드 - 진동 감지하기

/* * 이 ESP32 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP32 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp32/esp32-sw-420-vibration-sensor */ #define SENSOR_PIN 18 // ESP32 pin GPIO18 connected to the DO pin of the SW-420 vibration sensor int lastState = LOW; // the previous state from the input pin (idle/resting state) int currentState; // the current reading from the input pin void setup() { // initialize serial communication at 9600 bits per second: 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 currentState = digitalRead(SENSOR_PIN); if (lastState == LOW && currentState == HIGH) Serial.println("Vibration detected"); else if (lastState == HIGH && currentState == LOW) Serial.println("Vibration stopped"); // save the the last state lastState = currentState; }

빠른 단계

  • ESP32를 처음 사용하는 경우, ESP32 - 소프트웨어 설치을 참조하세요.
  • 위 코드를 복사하여 Arduino IDE로 엽니다.
  • Arduino IDE에서 Upload 버튼을 클릭하여 코드를 ESP32에 업로드합니다.
  • SW-420 센서를 두드리거나 흔듭니다.
  • 시리얼 모니터에서 결과를 확인합니다.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
New Line
9600 baud
Vibration detected Vibration stopped Vibration detected Vibration stopped
Ln 11, Col 1
ESP32 Dev Module on COM15
2

이제 진동이 감지될 때마다 부저를 울리거나, LED를 깜박이거나, 알림을 보내도록 코드를 자유롭게 수정할 수 있습니다. 더 자세한 안내와 단계별 설명은 이 튜토리얼 끝에 있는 튜토리얼들을 참조하세요.

문제 해결

SW-420 진동 센서의 동작에 문제가 있다면 다음 문제 해결 단계를 확인해 보세요:

  • 감도 조절: 센서가 너무 쉽게 트리거되거나 전혀 트리거되지 않으면, 온보드 가변 저항을 돌려 감도를 높이거나 낮추세요.
  • 주변 진동으로부터 분리: 모터, 팬 또는 계속 진동하는 표면에서 떨어진 곳에 센서를 설치하세요. 그렇지 않으면 계속해서 잘못된 트리거가 발생할 수 있습니다.
  • 배선 확인: VCC, GND, DO 핀이 올바르게 연결되어 있는지 확인하세요.
  • 전원 공급 확인: 일관된 측정값을 위해 전원 공급이 깨끗하고 안정적인지 확인하세요.

동영상

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

댓글

관련 튜토리얼