본문 바로가기
Arduino(아두이노) 활용 강좌

Arduino Uno 로 SW-420 진동센서 모듈을 사용하는 방법을 알아보고 LED와 Buzzer를 제어해 보기

by 오마이엔지니어 2023. 4. 11.
반응형

Arduino Uno 로 SW-420 진동센서 모듈을 사용하는 방법을 알아보고 LED와 Buzzer를 제어해 보는 프로젝트입니다

<SW-420 진동센서 모듈 이미지>

SW-420 폐쇠형 진동센서 모듈은 충격과 진동의 다양한 모니터링과 테스트에 적합합니다
아두이노와 호환 가능하면 디지털 출력(DO) 이 가능합니다
진동을 감지하지 않을시에는 스위치가 닫혀있는 LOW 출력의 폐쇠형 (Normally Closed Type) 입니다
초경량 사이즈로 설치가 쉽고 가변저항으로 감도 조정이 가능합니다

<SW-420 진동센서 상세사양>

사용된 부품

Arduino Uno R3 (Italy)

브래드 보드
5mm LED
SW-420 진동센서 모듈

Active Buzzer
SG90 마이크로 서보모터
점퍼케이블
막대저항 220 Ohm

사용된 키트
아두이노 SW-420 진동 센서 키트

구성 배선도-진동 감지시 LED 제어해 보기

구성 배선도-진동 감지 LED와 Buzzer 제어해 보기

 


사용된 예제소스

Vibration LED.txt
0.00MB
Vibration Sensor LED Buzzer.txt
0.00MB


주의사항
SW-420 진동센서 모듈을 브래드 보드에 끼워서 테스트 하는 경우 모듈이 브래드보드에 꽉 꼽혀서 전원(파워 LED)이 잘 들어오도록 배선합니다
(브래드보드에 잘 꼽히지 않아 전원이 켜졌다 꺼졌다 한다면 숫놈-암놈 케이블로 따로 배선해 주면 잘 동작합니다)
LED는 긴 다리쪽이 (+)이고 짧은 다리쪽이(-)입니다,  Buzzer는 (+)표시쪽을 5번핀에 배선하고 반대쪽을 (-)로 배선합니다
별도 라이브러리를 사용하지 않으므로 간단하게 테스트 할수 있습니다

Vibration LED 예제코드를 살펴보면

int LED_Pin = 13;
int vibr_Pin =3;
LED는 아두이노 13번핀, 진동센서DO는 아두이노 3번핀에 연결합니다

void setup(){
  pinMode(LED_Pin, OUTPUT);
  pinMode(vibr_Pin, INPUT); 
셋업에서 진동센서 값을 받아서 LED로 출력해 줍니다

void loop(){
  long measurement =TP_init();
  delay(50);
 // Serial.print("measurment = ");
  Serial.println(measurement);
  if (measurement > 1000){
    digitalWrite(LED_Pin, HIGH);
  }
  else{
    digitalWrite(LED_Pin, LOW); 
  }
루프에서 출력값이 1000이 넘으면 LED가 HIGH 로 켜지게 되고 그밖에는 LOW로 꺼지게 됩니다

Serial.print("measurment = ");
시리얼 모니터로 출력값을 확인할수 있습니다


Vibration Sensor LED Buzzer
 예제코드를 살펴보면


int Led = 7; // define Blue LED pin
int Led2 = 8; // define Red LED pin
int Buzzer = 5; // define Buzzer pin
int buttonpin = 3; // define Vibration Sensor signal pin
int val; //define a numeric variable
블루 LED는 아두이노 7번핀, 레드 LED는 아두이노 8번핀, 부저는 아두이노 5번핀, DO핀은 아두이노 3번핀에 배선합니다

void setup()
{
  pinMode(Led, OUTPUT); // Blue LED pin as output
  pinMode(Led2, OUTPUT); // Red LED pin as output
  pinMode(Buzzer, OUTPUT); // Buzzer pin as output
  pinMode(buttonpin, INPUT); //Vibration Sensor pin as input
}
셋업에서 센서값을 입력받아서, Led, Led2, Buzzer 로 출력해 줍니다

void loop()

{
  val=digitalRead(buttonpin); //read the value of the sensor 
  if(val == HIGH) // turn on LED when sensor is blocked 
  {
    digitalWrite(Led,LOW);
    digitalWrite(Led2,HIGH);
    digitalWrite(Buzzer,HIGH);
  delay(1000);
  }
  else
  {
    digitalWrite(Led,HIGH);
    digitalWrite(Led2,LOW);
    digitalWrite(Buzzer,LOW);
  delay(1000);
  }
}
루프에서 if문을 사용해서 진동이 감지되면 레드 LED(Led2) 와 부저(Buzzer)가 켜지고
블루 LED(Led) 가 꺼집니다
else문을 사용해서 그밖의 진동이 감지되지 않으면 레드 LED(Led2)와 부저(Buzzer)가 꺼지고

블루 LED(Led) 는 켜집니다

진동센서는 출력값이 순간적으로 나오기 때문에 딜레이 타임 delay(1000); 1초 세팅이 필요합니다
(딜레이 타임을 자신이 원하는대로 적당하게 변경해서 테스트 해봅니다)

프로젝트 동영상-진동 감지시 LED 제어해 보기


프로젝트 동영상-진동 감지 LED와 Buzzer 제어해 보기

 


이어서 추가로 Arduino Uno 로 SW-420 기울기센서 모듈을 사용해 LED와 SG90 마이크로 서보 모터를

제어해 보는 프로젝트입니다

구성 배선도-진동 감지시 LED와 SG90 서보모터 제어해 보기

사용된 예제소스  

Vibration Sensor SG90.txt
0.00MB


주의사항
가장 주의해야 할 점은 마이크로 서보모터이긴 하지만SG90 서보모터 제대로 동작하려면
안정적인 전압과 전류가 필요하므로 SW-420 진동센서 모듈과 별도의 전압으로 5V로 연결해 줍니다
SW-420 진동센서 모듈 3.3V 에도 동작하므로 SG90 서보모터와 별도로 
3.3V로 연결해 줍니다

예제코드를 살펴보면
 #include <Servo.h>
기본 Servo.h 라이브러리를 사용합니다

 
  int pinvibration=5; //vibration sensor digital pin
  int pinServo=3; //servo motor pin
  int pinLED=2;
  int val=0;

SW-420 진동센서 모듈은 아두이노 5번핀
SG90 서보모터는 아두이노 3번핀

LED는 아두이노 2번핀에 연결합니다

void setup(){
  Serv.attach(pinServo);
  pinMode(pinLED,OUTPUT);
}
셋업에서 센싱값을 받아서 서보모터와 LED를 동작시킵니다


  void setup(){
    Serv.attach(pinServo);
    pinMode(pinLED,OUTPUT);
  }

  void loop(){
    val = digitalRead(pinvibration);
  
    if (val ==0) { 
      Serv.write(10);
      digitalWrite(pinLED,LOW);
      delay(1000);
    }
    else{
      Serv.write(150);
      digitalWrite(pinLED,HIGH);
      delay(1000);
    }
  }
루프에서 if문을 사용해서 디지털 센서값을 읽어서
진동이 감지되지 않을때는 서보모터가 10도 복귀하며 LED가 꺼집니다

else문을 사용해서 그밖의 진동이 감지되면 서보모터가 150도로 움직이고 LED가 켜집니다

예제코드의 Serv.write(10); 
10도 또는  Serv.write(150); 150도를 적당하게 바꾸어서 테스트 가능합니다
하단 동영상에서는 180도로 수정해서도 테스트 해보았습니다

역시 마찬가지로 진동센서는 출력값이 순간적으로 나오기 때문에 딜레이 타임 delay(1000); 1초 세팅이 필요합니다
(딜레이 타임을 자신이 원하는대로 적당하게 변경해서 테스트 해봅니다)


프로젝트 동영상-장애물 감지시 LED와 SG90 서보모터 제어해 보기

반응형

댓글