속도 측정 + 움직임 감지 센서 사용해보기
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 댓글