ESP32 SW-420 진동 센서 (MicroPython)

이 튜토리얼에서는 MicroPython을 실행하는 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×(추천) ESP32용 스크루 터미널 확장 보드 쿠팡 | 아마존
1×(추천) Breakout Expansion Board for ESP32 쿠팡 | 아마존
1×(추천) ESP32용 전원 분배기 쿠팡 | 아마존
공개: 이 포스팅 에 제공된 일부 링크는 아마존 제휴 링크입니다. 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

SW-420 진동 센서에 대하여

SW-420 진동 센서 모듈은 부착된 물체의 두드림, 부딪힘, 흔들림을 알아차려야 할 때 유용합니다. 모듈 내부에는 작은 스프링 방식의 스위치가 금속 접점 가까이에 떠 있습니다. 보드의 LM393 비교기가 이 스위치를 계속 감시하다가, 진동이나 충격이 스위치를 건드리는 순간 깔끔한 디지털 신호를 출력합니다. 보드의 작은 가변저항으로 출력이 동작하기까지 얼마나 흔들려야 하는지를 정확하게 조정할 수 있습니다.

핀아웃

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

  • VCC 핀: VCC(3.3볼트 ~ 5볼트)에 연결합니다
  • GND 핀: GND(0볼트)에 연결합니다
  • DO 핀: 이 출력 핀은 정지 상태에서는 LOW를 유지하다가, 진동이나 충격이 감지되는 순간 HIGH로 바뀝니다. ESP32의 입력 핀에 연결합니다.
sw-420 진동 센서 핀아웃
image source: diyables.io

모듈에는 LED도 두 개 달려 있습니다.

  • 한 LED는 보드에 전원이 들어왔는지 확인해 줍니다
  • 다른 LED는 DO 핀이 HIGH가 될 때마다, 즉 진동이 감지될 때마다 켜집니다

작동 원리

덮개 아래에는 고정 접점 옆에 작은 스프링 스위치가 놓여 있습니다.

  • 모듈이 정지해 있는 동안에는 스프링이 접점에 닿지 않으므로 출력 핀은 LOW로 읽힙니다.
  • 진동이나 충격으로 스프링이 접점에 닿으면 비교기가 출력 핀을 HIGH로 만듭니다.
  • 보드의 가변저항을 돌리면 스위치가 동작하는 데 필요한 흔들림의 정도를 높이거나 낮출 수 있어, 가벼운 두드림부터 강한 충격까지 조정할 수 있습니다.

배선도

  • 브레드보드를 사용하여 ESP32와 SW-420 진동 센서를 배선하는 방법
ESP32 마이크로파이썬 sw-420 진동 센서 배선도

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

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

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

  • ESP32 핀을 디지털 입력으로 설정합니다.
sensor_pin = Pin(SENSOR_PIN, Pin.IN)
  • ESP32에서 해당 핀의 현재 상태를 읽습니다.
vibration_state = sensor_pin.value()

ESP32 MicroPython 코드 - 진동 감지

/* * 이 ESP32 마이크로파이썬 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP32 마이크로파이썬 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp32-micropython/esp32-micropython-sw-420-vibration-sensor */ from machine import Pin import time SENSOR_PIN = 18 # The ESP32 pin GPIO18 connected to DO pin of the SW-420 vibration sensor prev_vibration_state = 0 # the previous state from the input pin vibration_state = 0 # the current reading from the input pin # Initialize the sensor pin as an input sensor_pin = Pin(SENSOR_PIN, Pin.IN) # Main loop while True: # Read the state of the input pin vibration_state = sensor_pin.value() if prev_vibration_state == 0 and vibration_state == 1: print("Vibration detected!") elif prev_vibration_state == 1 and vibration_state == 0: print("Vibration stopped") # Save the last state prev_vibration_state = vibration_state time.sleep(0.1) # Delay for 100 milliseconds

빠른 단계

Thonny IDE를 통해 ESP32에서 MicroPython 스크립트를 실행하려면 다음 단계를 따르세요:

  • 아직 설치하지 않았다면 컴퓨터에 Thonny IDE를 설치하세요.
  • ESP32 보드에 MicroPython 펌웨어가 이미 플래시되어 있는지 확인하세요.
  • ESP32에서 MicroPython을 처음 사용하시나요? 계속하기 전에 ESP32 마이크로파이썬 - 시작하기 가이드를 먼저 따라 해 보세요.
  • 위의 배선도에 따라 SW-420 진동 센서를 ESP32에 배선하세요.
  • USB 케이블로 ESP32를 컴퓨터에 연결하세요.
  • Thonny IDE를 실행하세요.
  • Thonny에서 Tools Options로 이동하세요.
  • Interpreter 탭에서 드롭다운 메뉴의 MicroPython (ESP32)를 선택하세요.
  • 올바른 포트가 선택되어 있는지 확인하세요. Thonny는 보통 자동으로 찾지만, 수동으로 선택해야 할 수도 있습니다(Windows에서는 COM12, Linux에서는 /dev/ttyACM0 등).
  • 아래 MicroPython 코드를 복사하여 Thonny 편집기에 붙여넣으세요.
  • 스크립트를 ESP32에 저장하세요:
    • Save 버튼을 클릭하거나 Ctrl+S를 누릅니다.
    • 저장 대화상자에서 MicroPython device를 선택합니다.
    • 파일 이름을 main.py로 지정합니다.
  • 초록색 Run 버튼을 누르거나 F5 키를 눌러 스크립트를 시작하세요.
  • SW-420 센서를 두드리거나 흔들어 감지할 진동을 주세요.
  • Thonny 하단의 Shell 창에 출력되는 메시지를 확인하세요.
Shell x
>>> %Run -c $EDITOR_CONTENT
MPY: soft reboot Vibration detected! Vibration stopped Vibration detected! Vibration stopped
MicroPython (ESP32) • CP2102 USB To UART Bridge Controller @ COM12 ≡

문제 해결

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

  • 감도 조정: 보드의 가변저항을 돌려 센서의 감도를 높이거나 낮춘 다음, 가볍게 두드려 보고 조금 더 세게 두드려 다시 테스트하세요.
  • 주변 진동으로부터 분리: 주변 잡음으로 동작하지 않도록 센서를 단단히 고정하고, 모터, 팬, 또는 스스로 흔들리는 표면에서 멀리 두세요.
  • 배선 확인: VCC, GND, DO 핀이 올바르고 단단하게 연결되어 있는지 확인하세요.
  • 전원 확인: 전압 강하가 불규칙한 읽기 값을 일으킬 수 있으므로, ESP32에 안정적인 전원이 공급되는지 확인하세요.

동영상

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

관련 튜토리얼