안녕하세요. 디바이스마트입니다. ^^
오늘은 레이더 센서를 통해 움직임, 속도 측정 포스팅을 한 번 해보겠습니다.
레이더 센서는 자동차/장비, 교통, 의료, 보안 등 폭넓은 분야로 쓰이고 있는데요!!
이번에 포스팅할 레이더 센서는 인지니어스(주)에서 개발한 MDR Mini A Ver 2.0 모듈입니다.
MDR이란 Motion Detection Radar란 뜻으로 움직임 감지, 속도 측정(Ver 2.0)이 주 분야인데요.
위 제품의 특징을 간단히 설명드리면
24GHz K-band RADAR
원보드 형식
안테나 및 DSP 모듈 포함
소형 사이즈/ 저가 비용
저전력 소비
GPIO, UART or I2C(옵션) 인터페이스
사용자 편리성을 고려한 출력
쉬운 사용법
PIR 센터 대체 가능
입니다!!!
아두이노와 연결해 사용할 수 있는데요.
준비물 : MDR Mini A Ver 2.0, 아두이노 우노, 점퍼선 5개
MDR Mini A Ver 2.0 | 아두이노 우노 |
1번 핀(빨강) | 5V |
2번 핀(녹색) | GND |
3번 핀(노랑) | D7 |
8번 핀(파랑) | D8 |
9번 핀(흰색) | D9 |
핀은 5개로 아두이노와 연결해주시면 됩니다.
MDR Mini A Ver 2.0 예제
예제는 인지니어스(주)에서 제공하는 소스코드를 이용해 업로드 해보았습니다.
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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | #include <SoftwareSerial.h> // 소프트웨어 시리얼 라이브러리 등록 /*------------------------ 아두이노 보드마다 소프트웨어 시리얼로 사용할 수 있는 핀 번호가 다르므로 주의 요망 ---------------------------*/ #define RX 8 // 소프트웨어 RX포트로 사용할 핀 번호 정의 #define TX 9 // 소프트웨어 TX포트로 사용할 핀 번호 정의 /*------------------------ 아두이노 보드마다 소프트웨어 시리얼로 사용할 수 있는 핀 번호가 다르므로 주의 요망 ---------------------------*/ SoftwareSerial Arduino_to_Radar_Serial(RX, TX); // 소프트웨어 시리얼 객체명 선언(설정 보드의 RX 핀, 설정보드의 TX 핀) int Radar_Signal_Read_Pin = 7; // Radar 모듈 신호선(3번핀)과 아두이노에 연결된 핀번호 // 변수 int val = 0; // Read한 Radar 모듈 신호선의 값을 저장할 변수 /*------------------------ CLI_Command 종류 ---------------------------*/ // MotionDataEnable 0 : MDR이 측정하고 있는 MotionData를 주기적으로 출력 // MotionDataEnable 1 : MDR이 측정하고 있는 MotionData를 주기적으로 출력 // DetectLevel : 현재 설정되어 있는 DetectLevel 확인 // DetectLevel 11000 : DetectLevel [11000] 설정 // HoldTime : 현재 설정되어 있는 HoldTime 확인 // HoldTime 2000 : HoldTime [2000ms] 설정 /*------------------------ CLI_Command 종류 ---------------------------*/ void setup() { // put your setup code here, to run once: pinMode(Radar_Signal_Read_Pin, INPUT); // 디지털 7번핀을 GPIO INPUT으로 설정 pinMode(LED_BUILTIN, OUTPUT); // LED_BUILTIN는 아두이노 보드에 자체적으로 달린 LED이며, 이를 Signal Out핀으로 설정 Serial.begin(9600); // Serial 객체는 PC와 Arduino와의 시리얼 통신을 담당하며, Baud Rate = 9600 설정 Arduino_to_Radar_Serial.begin(9600); // Arduino_to_Radar_Serial 객체는 Arduino와 Radar 모듈과의 시리얼 통신을 담당하며, Baud Rate = 9600 설정 } void loop() { // put your main code here, to run repeatedly: val = digitalRead(Radar_Signal_Read_Pin); // Radar로부터의 움직임 신호를 Read하여 val 변수에 저장 digitalWrite(LED_BUILTIN, val); // val 변수의 값에 따른 LED의 High, Low 상태 결정 /*------------------------ 움직임이 있을 경우 수행하고 싶은 코드를 입력하세요 Start ---------------------------*/ if(val > 0) { // 움직임이 있을 경우 수행하고 싶은 코드를 입력하세요. } /*------------------------ 움직임이 있을 경우 수행하고 싶은 코드를 입력하세요 End ---------------------------*/ // 시리얼 모니터 -> 아두이노 -> Radar 모듈 if(Serial.available()) { // read the incoming byte: char Transmit_Char = Serial.read(); // 시리얼 모니터를 통해 전송할 데이터를 1바이트씩 읽고 Transmit_Char 변수에 저장 Arduino_to_Radar_Serial.write(Transmit_Char); // Transmit_Char 변수에 저장된 1바이트 값을 Radar 모듈로 송신 Serial.print(Transmit_Char); // 아두이노 사용자가 자신이 전송한 데이터를 알 수 있도록 Transmit_Char 변수에 저장된 1바이트 값을 시리얼 모니터에 표시 } // Radar 모듈 -> 아두이노 -> 시리얼 모니터 if(Arduino_to_Radar_Serial.available()) { // read the incoming byte: char Receive_Char = Arduino_to_Radar_Serial.read(); // Radar 모듈이 보낸 데이터를 1바이트씩 읽고 Receive_Char 변수에 저장 Serial.print(Receive_Char); // Radar 모듈이 보낸 데이터를 아두이노 사용자가 알 수 있도록 Receive_Char 변수에 저장된 1바이트 값을 시리얼 모니터에 표시 } } |
친절하게 한줄한줄 주석까지 달려져 있습니다!
아두이노의 시리얼 모니터로 동작하는걸 확인해 볼까요?
처음 실행하시면 아무 화면도 안뜨는데 이 때 당황하지 마시고 소스코드 15~22번째 줄을 읽어보시면 CLI Command 종류가 있습니다.
여기서 MotionDataEnable 1 을 작성하신 후 전송버튼을 누르면!!!
MotionData가 계속 나오는 것을 확인하실 수 있습니다.
수신 데이터 숫자의 의미는
순서대로 Detect Value, 속도(km/h), 신호선으로
첫 번째 데이터는 Detect Value로 움직임이 클수록 값도 따라서 커진다고 해요.
두 번째 데이터는 속도인데요, 방향도 감지한다고 합니다.
레이더로 접근하면 -, 레이더에서 멀어지면 + 값을 나타내며 단위는 (km/h)입니다.
3번째 숫자는 감지시 1, 미감지시 0의 값을 추출합니다.
지금까지 레이더 모듈을 간단하게 사용해보았습니다.
센서 기능을 잘 이용한다면 다양한 프로젝트에 사용될 수 있을 것으로 보입니다.
본 포스팅에 사용된 MDR Series 센서는 아래 링크에서 구매 가능합니다.
https://www.devicemart.co.kr/goods/brand?code=2148
감사합니다.
0 댓글