본문 바로가기

관리하지않음/아두이노

[아두이노] 진동센서(충격센서) 사용법

작년에 나간 해커톤에서 아두이노 센서 키트를 받았었습니다.

받은 키트는 디바이스마트에서 아두이노 37종 DIY 센서 키트라는 이름으로 판매되고 있는 제품이었습니다.

 

아두이노 37종 센서키트

오늘은 37종의 센서 중에서 충격 센서(진동센서) 사용법을 정리해봤습니다.

키트에서 제공하는 충격센서의 모델명은 SW-520D입니다.

 

아두이노 충격센서(진동센서)

인터넷을 뒤져봐도 SW-420D에 대한 설명은 있어도, SW-520D에 대한 설명은 잘 없더라고요.

영어로 적힌 홈페이지를 참고해서 코드를 작성했습니다.

 

먼저 보드 구성은 다음과 같이 해줍니다.

충격 센서 SW-520D의 핀마다 설명이 없는데, 순서대로 output-5V-GND 핀입니다.

output은 아두이노 3번 핀에, 5V는 아두이노 5V에, GND는 아두이노 GND와 연결해주세요.

 

충격센서(진동센서) 보드 구성

먼저, 충격(진동)이 있는지 없는지의 유무만 감지하는 코드입니다.

int pin = 3;

void setup() {
  Serial.begin(9600);
  pinMode(pin, INPUT);
}

void loop() {
  if(digitalRead(pin)==HIGH){
    Serial.write("SHOCK!!\n");
  } else {
    Serial.write("not SHOCK!!\n");
  }

  delay(1000);
}

코드를 업로드 한 다음, 시리얼 모니터를 켭니다.

 

충격 감지 센서가 평평하게 있다면 not SHOCK를, 조금이라도 기울어져 있다면 SHOCK를 출력합니다.

아두이노 시리얼 모니터

위 코드는 0, 1처럼 충격이 있는지 없는지의 유무만 판단할 수 있는 코드여서 활용도가 낮습니다.

 

활용도를 높이기 위해 AnalogRead로 충격받은 정도를 값으로 확인하는 방법도 있습니다.

충격 센서의 output핀을 3번이 아니라 A0에 연결하고 아래 코드를 업로드합니다.

int pin = A0;

void setup() {
  Serial.begin(9600);
}

void loop() {
   int val = analogRead(pin);
   Serial.println(val);
   if(val>512){
    Serial.write("SHOCK!!\n");
   }
   delay(1000);
}

아두이노 시리얼 모니터

충격 센서에서 0~1023 사이의 값을 출력하고 있습니다.

센서의 기울기와 흔드는 정도에 따라서 값이 왔다 갔다 하는 것을 확인할 수 있습니다.

 

코드는 간단한데, SW-520D 센서에 대한 정확한 설명이 없어서 삽질을 조금 했습니다.

하지만 센서는 생각보다 정확도가 높지 않아서ㅠ 이것 말고 더 비싼 센서를 구매해서 프로토타입을 제작할 것 같습니다.

진동센서를 테스트해봤다는 점에 의의를 둬야겠습니다 :)


잘못된 내용이 있다면 언제든지 댓글이나 메일로 알려주시면 감사하겠습니다.

이 포스팅이 도움이 되었다면 공감 부탁드립니다.

궁금한 점은 언제든지 댓글 남겨주시면 답변해드리겠습니다:D