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 제어해 보기
사용된 예제소스
주의사항
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 서보모터 제어해 보기
사용된 예제소스
주의사항
가장 주의해야 할 점은 마이크로 서보모터이긴 하지만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 서보모터 제어해 보기
'Arduino(아두이노) 활용 강좌' 카테고리의 다른 글
Arduino Uno 로 충돌센서 스위치 모듈을 사용해서 서보모터와 LED를 제어해 보기 (0) | 2023.11.17 |
---|---|
Arduino Uno 로 IR 적외선 장애물 감지센서를 사용해서 MAX7219 (8X8) 도트매트릭스 모듈 제어해 보기 (0) | 2023.08.28 |
Arduino Uno 로 SW-520D 기울기센서 모듈을 사용하는 방법을 알아보고 LED와 Buzzer를 제어해 보기 (0) | 2023.03.24 |
Arduino Uno 로 조이스틱 모듈(Joystick Module)을 사용해서 28BYJ-48 스테핑모터 제어해 보기 (0) | 2023.02.13 |
Arduino Uno 로 MAX7219 (32X8) 도트매트릭스를 사용해서 다양한 문자 이미지 출력해 보기 (0) | 2023.02.01 |
댓글