프로젝트

나도 메이커! 메이커스 여러분들의 작품/프로젝트를 공유하는 공간입니다.

귀중품 도난 방지 장치 만들기★

2015-04-23 09:49:59

공공 장소에서 잠시 자리를 비울 때면 자리에 두고 온 노트북은 잘 있는지, 태블릿은 잘 있는지

불안한 마음에 화장실도 잘 못가신 적은 누구나 있을겁니다 ㅠㅠ 특히 시험기간일때의 도서관과 까페에선

그 불안함과 분실율이 더욱 높아지는데요... 그래서!! 저렴하고 작은 아두이노 보드로 고가의 귀중 품을 지킬 수 있는

도난 방지 장치를 만들어 보았습니다.

 

 

<개요>

 

귀중품의 무게와 움직임을 감지하여 그 변화를 블루투스 통신으로 스마트 폰에 전달하여 유저에게 도난 여부를

알리는 장치 입니다.

 

 

<사전 개념 이해하기>

 

자이로센서 사용하기

압력센서 사용하기

블루투스 통신 이해하기

 

 

<동영상 미리보기>

 

 

<제작과정>

 

우선 오렌지 보드와 빵판이 전부 들어갈 수 있는 크기의 판을 만들어 줍시다~

어때요? 딱 맞죠?

 

휴대용 도난 방지 장치이기 때문에 장치의 부피를 줄이는 것이 중요합니다. 장치의 두께를 줄이기 위해 배선은

최대한 짧게 만들어 연결해 줍니다.

 

귀중품이 올라갈 뚜껑입니다. 압력센서를 뚜껑의 중심에 잘 배치해 줍니다~!

 

마지막으로 기둥을 만들어주시고 뚜껑과 밑면을 붙여줍니다~

 

완성된 도난 방지 장치 입니다 ^^

 

 

 

<부품 리스트>

 

NO PART QTY Etc
1 오렌지 보드 1  
2 압력 센서 1  
3 자이로 or 가속도 센서 1 NTC-AM-3AXIS
4 블루투스 모듈 1 HC-05
5 LED 2  
6 버튼 스위치 1  
7 브레드 보드(소형) 2  
8 저항 4 1K

 

오렌지 보드 압력 센서 자이로/가속도 센서 블루투스 모듈

 

 

<하드웨어 메이킹>

 

브레드보드 레이아웃

 

회로도

 

<아두이노 코드>

 

#include <SoftwareSerial.h>

SoftwareSerial BTSerial(8, 9);
int bufferPosition;
int w=0;
int psensor = A0;
int button1 = A1;
int button2 = A2;
int led1 = 2;
int led2 = 3;
int flag = 0;
int gyrox = A3;
int gyroy = A4;
int x=0;
int y=0;
char A,B;

void setup() 
{
  Serial.begin(9600);
  BTSerial.begin(9600);
  pinMode(button1,INPUT);
  pinMode(button2,INPUT);
  pinMode(led1,OUTPUT);
  pinMode(led2,OUTPUT);
  Serial.println("SLEEP MODE");
  BTSerial.println("SLEEP MODE");
  digitalWrite(led2,HIGH);
  digitalWrite(led1,LOW);
}

void loop() 
{
   

  if(analogRead(button1) == 1023 && flag == 0) // 버튼 1이 눌렸을 때 감지 시작
  { 
    if(flag == 0)
    {
     Detecting_Mode();
     flag = 1;
    }     
  }
  else if( BTSerial.read() == 'B')             // 블루투스로 'B'문자 받았을 경우 감지 종료
  {
    if(flag == 1)
    {
      Standby_Mode();
      flag = 0;
    }
  }

}

void Detecting_Mode() // <감지모드함수> 가속도 x,y축 변화값, 압력 센싱값 추출
                      // 센서 값 변화량이 일정 값 이상일 경우 블루투스로 'A'문자 전송
{
  while(1)
  {
  digitalWrite(led1,HIGH);
  digitalWrite(led2,LOW);
  w = analogRead(psensor);
  x = analogRead(gyrox);
  y = analogRead(gyroy);
  if(w < 30){BTSerial.println("A");}
  else if(x < 290){BTSerial.println("A");}
  else if(x > 310){BTSerial.println("A");}
  else if(y < 290){BTSerial.println("A");}
  else if(y > 310){BTSerial.println("A");}
  delay(1000);
  if(  BTSerial.read() == 'B'){flag = 1; break;} // 블루투스로 'B'문자 받을 경우 루프 탈출
  }
}

void Standby_Mode()
{
  BTSerial.println("SLEEP MODE");
  digitalWrite(led2,HIGH);
  digitalWrite(led1,LOW);
  delay(1000);  
}

 

최초 전원이 들어올 경우 대기 상태로 있게 됩니다. 이후 장치에 부착된 버튼을 누를 경우

감지를 시작하고 감지를 중단하고 귀중품을 회수할 땐 스마트 폰 어플로 아두이노에 'B' 문자를 전송하도록 합니다.

도난이 감지 될 경우 아두이노에서 스마트 폰으로 'A'를 전송하고 스마트 폰에서는 'A'를 받을 경우 진동이 울리도록 합니다.

SaBo