[아두이노] 아두이노에서 속도 측정과 움직임 감지 센서 사용해보기

 




속도 측정 + 움직임 감지 센서 사용해보기

TRM-121A

 



안녕하세요 디바이스마트입니다. ^^



오늘은 지난 시간 인지니어스(주) 레이다 센서 소개 포스팅에 이어,

TRM-121A 레이다 모듈을 이용해서 속도 측정, 움직임 감지 프로젝트를 만들어 보겠습니다.







TIONE은 Radar 전문기업으로 Radar 관련 칩과 모듈 공급 뿐만 아니라 하드웨어 및 소프트웨어 개발 관련 토탈 솔루션을 보유하고 있어

차별화된 기술력을 바탕으로 국내외 Radar 산업 성장 및 대중화에 노력하고 있는데요!!




 


오늘의 주인공!!




이번에 디바이스마트에서 새롭게 판매중인 상품입니다!!! :)


TRM-121A는 작은 사이즈로 기구에 장착 및 설치가 용이하며, 약 10M~15M까지 감지가 가능하다고 하는데요.


IPM-165 모듈에 신호증폭기 모듈을 추가한 형태로 가변저항을 이용해 조절할 수 있다고 합니다.


그 외 스펙은 추후 디바이스마트 상품 상세 Data Sheet를 통해 확인 하시기 바랍니다.



그럼 이제 아두이노를 이용해 시작해볼까요?



1) 회로도


 


 TRM-121A

 아두이노 우노

 VCC

 5V

 SOUT

 D11

 GND

 GND


회로는 위 표와 같이 연결해주시면 됩니다.



2) 움직임 감지 소스코드




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/*********************************************************************************/
/*                 TRM-121A Movement detection code                           */
/********************************************************************************/
int Sigpin = 11;        // 신호 핀
int LEDPIN = 13;        // 움직일시 점등되는 LED 핀
int Threshold = 3000;   // 감지조건 임계값
int MovementCNT = 0;    // 움직임 카운트
void setup() 
  Serial.begin(9600);
  pinMode(Sigpin, INPUT);
  pinMode(LEDPIN, OUTPUT);
}
void loop() 
{
 unsigned long Sig;
  Sig = pulseIn(Sigpin, HIGH) + pulseIn(Sigpin, LOW);
  if(Sig > Threshold)   // 감지 조건
 {
  MovementCNT++;
 }
 if(MovementCNT>1)   //움직임이 1번이상 감지되면 이하 조건 시작.
 {
    digitalWrite(LEDPIN, HIGH); //LED ON
    delay(1200);            //LED ON Delay 1.2s
    MovementCNT = 0;        //움직임 카운트를 초기화.
 }
 else           //움직임이 1번 이상으로 감지되지않으면 이하 조건 시작. 
 {
    digitalWrite(LEDPIN, LOW);  //LED OFF
    delay(20);          // LED OFF Delay 20ms
 }
}
cs



움직임을 감지하는 코드로 pulseIn() 함수를 이용해 작성한 예제입니다.

움직임 감지시 LED가 켜지고 감지되지 않았을 때 LED를 꺼줍니다.



3) 움직임 감지 동작 영상





4) 속도 측정 소스코드


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
int v;      //속도
int vmax;       //최대 속도
int Sigpin =  11 ;  // 신호 입력 핀
void  setup ()
{
  Serial.begin ( 9600 );
  pinMode (Sigpin , INPUT);
}
void  loop ()
  unsigned  long T;          // 주기
  double f;                 // 주파수 
  char s [ 20 ];               // Serial 출력 Length
  vmax = 0 ;
  while (digitalRead (Sigpin)); 
  while ( ! digitalRead (Sigpin));
 
  T =pulseIn (Sigpin , HIGH) + pulseIn (Sigpin , LOW); // 주기 측정
  f = 1 / ( double ) T;            // 주파수 측정
  v = int ((f * 1e6 ) /44.0 );    // 속도 측정   
  vmax = max (v, vmax);       // 속도의 Max값 측정
  sprintf (s, "% 3d km / h" , vmax);  // Serial 출력
  Serial.println (s);        // Serial 출력
  delay ( 500 );              // Delay 500m/s
}
cs



주파수의 주기를 측정해 속도를 계산하는 예제입니다.



5) 속도 측정 동작 영상







6) 추가 동작 영상





티원에서 제공하는 추가 영상입니다.


https://www.devicemart.co.kr/goods/view?no=13004094




지금까지 레이다 모듈을 이용한 프로젝트를 진행해보았는데요.


대학생분들이라면 공모전이나 졸업작품 등 다양한 프로젝트에 사용할 수 있을 것으로 보입니다.


디바이스마트에서 만나볼 수 있으니 많은 관심 부탁드립니다!!!


안녕~





댓글 쓰기

0 댓글