반응형

 

 

 

아두이노(Arduino)에서 자주 사용하는 센서 및 모듈을 소개하는 시간으로 오늘은 적외선 센서에 대해 알아보겠습니다. 적외선 PIR (Passive Infrared Sensor) 센서는 외부에서 발생하는 적외선을 감지하는 센서입니다. 여기서 Passive가 붙은 이유는 센서가 수동적으로 주변의 적외선을 detecting하여 주변을 감지하기 때문입니다. 이와 반대로 센서에서 적외선을 방출하여 주변을 감지하는 적외선 센서도 있습니다.

 

지난 포스팅에서 초음파 센서 HC-SR04를 이용하여 사람의 동작을 감지할 수 있는 것을 살펴보았는데요. 초음파 센서에 비해 적외선 PIR 센서가 view angle이 더 넓습니다. 즉, 주변을 감지할 수 있는 범위가 더 넓은데, 이는 초음파 센서는 센서에서 초음파가 발생하여 물체에 반사되어 다시 센서가 detecting하기까지 경로가 있기 때문에 적외선 센서에 비해 좁은 영역을 감지할 수밖에 없습니다.

 

Arduino 아두이노 초음파(거리) 센서(ultrasounds sensor) 사용방법

앞서 포스팅에서 온습도 센서(Temperature and Humidity sensor)만 가지고 아두이노의 기본적인 동작법이나 파일 저장법, 그래프 그리기, 엑셀(Excel)과 연동하는 방법들을 알아보았습니다. 그리고 인터넷(

it-g-house.tistory.com


 

1. 적외선 PIR (Passive InfraRed) 센서 HC-SR501

 

아두이노에서 자주 사용되고 온라인에서 쉽게 구할 수 있는 HC-SR501 적외선 PIR 센서 모듈입니다. 가격도 저렴한 편인데 사용하기도 편하고 생각보다 많은 설정이 가능해서 널리 사용되는 듯 합니다. 오늘 예시는 이 HC-SR501 모듈로 진행하겠습니다.

 

 

아두이노 적외선 PIR 센서 (HC-SR501)

 

동작전압 (Operating voltage) 5~12VDC
출력전압 (Output voltage) 0 V (Low) / 3.3V (High)
감지각도 (View angle) 110~120도
설정 기능 (Setting option) 감도(거리), 지연시간, 신호방식

설정 기능은 아래 사진에서 볼 수 있듯이 돌릴 수 있는 나사 두개와 접선을 해주는 점퍼대로 여러 가지 조절이 가능합니다.

 

 

감도(거리, Distance) 조절 : 시계방향으로 돌리면 감도가 낮아져 적외선을 sensing할 수 있는 거리가 줄어듭니다.

 

지연시간 (Delay Time) 조절 : 적외선 감지후 감지된 신호(High)를 얼마간 유지할지 조절이 가능합니다. 시계방향으로 돌릴수록 신호를 유지하고 있는 시간이 짧아집니다.  

 

신호방식 조절 : 좌측의 점퍼대를 옮겨 연결하면 감지신호를 한번만 보내주는 모드이고, 다른 모드는 감지신호를 계속해서 보내 주는 모드입니다.  

 

▶ 적외선 센서 사러가기  smartstore.naver.com/storeplant/products/5347527847

 

 

2. 아두이노 (Arduino) 적외선 PIR (Passive InfraRed) 센서 배선

 

 

아두이노 적외선 PIR 센서 (HC-SR501) 배선

 


 

 

3. 아두이노 (Arduino) 프로그램 코딩

 

int inputPIN = 3;    
int PIRstatus = 0;    
int Readinput = 0;  
  
void setup() {  
   pinMode(inputPIN, INPUT);   
   Serial.begin(9600);    
}  
  
void loop(){  
  Readinput = digitalRead(inputPIN);    
  if(Readinput == 1 && PIRstatus == 0){
      Serial.println("Action!");    
      PIRstatus = 1;    
     }  
  if(Readinput == 0 && PIRstatus == 1){  
        Serial.println("End!");    
        PIRstatus = 0;  
       }  
    delay(1000);  
   }  
   

pinMode와 if 명령어를 사용하여 프로그램을 코딩합니다. 센서가 적외선을 감지(사람을 인지)하면 연결된 digital 3번 pin으로 High 신호를 보내고 아두이노가 신호를 읽어 시리얼 모니터에 "Action"이라고 메시지를 보냅니다. 사람이 지나가고 적외선 감지가 없으면 센서에 설정해놓은 감지시간이 지나고 아두이노에 Low 신호를 보내 "End" 메시지를 볼 수 있습니다.

 

pinMode와 if 명령어가 처음이신 분은 아래 링크 참조 부탁드립니다.

 

아두이노(Arduino) 프로그램 코딩 초급 (pinMode, digitalWrite, if 명령어)

지난 시간 스케치로 프로그램을 코딩할 때 자주 사용되는 꼭 필요한 명령어 몇 가지를 알아보았습니다. IT 비전공자가 프로그램 언어를 기본부터 완전히 이해하면서 배우는 것은 쉬운 일은 아닙

it-g-house.tistory.com

 


  이번 포스팅에서는 아두이노(Arduino)에서 많이 사용하는 적외선 PIR 센서에 대해 알아보고 사용방법에 대해 살펴보았습니다. 다음 포스팅에서는 적외선을 응용하여 자동센서등이나 자동문 등을 만들 수 있는 방법에 대해 공부해 보겠습니다.

 

오늘도 긴 글 읽어주셔서 감사합니다. 궁금하신 부분이나 조언주실 내용은 댓글로 언제든지 남겨주세요 ^^

 


 

▽ 적외선 FIR 센서를 이용한 홈 IoT 무드등 만들기 응용편!! 

 

아두이노(Arduino) 응용, 적외선 FIR센서를 이용한 무드등 만들기

아두이노(Arduino)를 이용한 홈 IoT (생활응용)에 적용하는 시간으로 적외선 FIR센서를 이용하여 무드등을 만들어보겠습니다. 최근 집에 머무르는 시간이 길어지면서 인테리어에 많은 관심이 생겼

it-g-house.tistory.com

 

 

 

반응형
반응형

 

 

 

아두이노(Arduino)의 센서들을 알아보는 시간으로 지난 포스팅에서 초음파 센서 사용법과 이를 이용하여 거리를 측정하는 방법을 알아보았습니다. 오늘은 이를 활용하여 사람이 다가가면 전자기기가 자동으로 작동하는 시스템을 만들어 보겠습니다. 원리는 간단한데 앞서 알아본 초음파 센서를 이용하여 설정 거리보다 가까이 사람이 있으면 전자기기에 전력을 공급하는 방식입니다. 초음파 센서로 거리를 측정하는 프로그램은 아래 링크 참조 부탁드리며, 그 이후부터 진행하도록 하겠습니다.

 

Arduino 아두이노 초음파(거리) 센서(ultrasounds sensor) 사용방법

앞서 포스팅에서 온습도 센서(Temperature and Humidity sensor)만 가지고 아두이노의 기본적인 동작법이나 파일 저장법, 그래프 그리기, 엑셀(Excel)과 연동하는 방법들을 알아보았습니다. 그리고 인터넷(Interne..

it-g-house.tistory.com


준비물은 아래와 같습니다.

 - 아두이노 UNO R3 보드

 - 초음파 센서(HC-SR04)

 - DC-DC 승압형 5V 600mA USB 모듈

 - 5V USB 구동 전자기기

 

새롭게 소개드릴 제품은 DC-DC 승압형 5V 600mA USB 모듈입니다. 저도 처음 사용해보는 건데요.. 아두이노의 출력 전압을 이용하여 5V USB 충전이나 기타 USB 구동 전자기기들을 사용할 수 있게 연결해주는 모듈입니다. 아마 온라인상에서 쉽게 구할 수 있을 거예요 ㅎㅎ

DC-DC 습압형 5V 600mA USB 모듈

 

 

아두이노의 디지털 pin을 통한 출력 전압은 5V이니까 이번 프로젝트뿐만 아니라도 5V USB 구동 전자기기들을 이용할 때 유용하게 사용할 수 있을 듯합니다. ㅎㅎ 그리고 이번 프로젝트를 위해 USB 5V 전력으로 구동되는 전자기기를 사용해야 하는데 특별히 소유하신 전자기기가 없으면 휴대폰 USB 충전기로도 충분히 테스트해 볼 수 있습니다. 

 


 

1. 아두이노와 초음파 센서, USB 모듈 연결하기

 

먼저 아두이노와 초음파 센서를 연결하고 전자기기의 USB 전원이 연결될 DC-DC 승압형 5V 600mA USB 모듈을 아두이노와 연결합니다. USB 모듈의 '+' 단자와 아두이노의 디지털핀(Digital Pin) 13번과 연결하고(프로그램에서 수정가능하니 꼭 13번이 아니어도 됩니다), '-' 단자는 그 옆의 GND에 연결합니다. 연결된 USB 모듈에 앞서 준비한 5V USB 구동 전자기기를 이용해서 사람이 다가가면 자동으로 켜지는 시스템을 만들 수 있습니다.

 

아두이노(Arduino), 초음파 센서(HC-SR04) 센서를 활용한 자동 선풍기 만들기 배선

 

 

 

 

2. 프로그램 코딩 

 

스케치에서 pinMode, digitalWrite, if 명령어를 사용해 앞서 링크드린 초음파 센서로 거리를 측정하는 프로그램과 조합하여 프로그램 코딩을 합니다. pinMode와 digitalWrite, if 명령어에 대해서는 아두이노 프로그램 코딩 초급 부분에서 정리하였으니 참고 부탁드립니다.

 

아두이노(Arduino) 프로그램 코딩 초급 (pinMode, digitalWrite, if 명령어)

지난 시간 스케치로 프로그램을 코딩할 때 자주 사용되는 꼭 필요한 명령어 몇 가지를 알아보았습니다. IT 비전공자가 프로그램 언어를 기본부터 완전히 이해하면서 배우는 것은 쉬운 일은 아닙니다. 그렇기 때문..

it-g-house.tistory.com

int echo = 8;
int trig = 12;
int power = 13;

void setup() {
  Serial.begin(9600);
  pinMode(trig, OUTPUT);
  pinMode(echo, INPUT);
  pinMode(power, OUTPUT);
}

void loop() {
  float cycletime;
  float distance;
  
  digitalWrite(trig, HIGH);
  delay(10);
  digitalWrite(trig, LOW);
  
  cycletime = pulseIn(echo, HIGH); 
  
  distance = ((340 * cycletime) / 10000) / 2;  

  Serial.print("Distance:");
  Serial.print(distance);
  Serial.println("cm");
  
  if(distance < 50){ 
    digitalWrite (power, HIGH); 
    } 
    else{ 
    digitalWrite (power, LOW); 
    }
  delay(500);
}

 

초음파 센서의 'echo'와 'trig' pin 설정을 각각 8, 12번으로 설정하고, 5V Output power pin을 13번으로 설정하였습니다. 그리고 초음파 센서로 거리를 측정한 후 거리가 50cm 이하가 되면 13번 pin에 연결되어 있는 USB 모듈을 통해 5V가 출력됩니다. 그러면 전자기기가 켜지겠죠? 아닐 경우는 출력 power가 없으니 자동으로 전원이 꺼지도록 'if 명령문'을 사용하였습니다.

 

3. 자동 동작 시스템 확인

 

저는 USB 5V 구동 소형 LED 전등으로 동작 테스트를 해보았습니다. 시리얼 모니터(Serial Monitor)에서 거리를 확인하면 아래와 같이 출력되고, 초음파 센서에 가까이 다가가면(사람과 센서 사이 거리가 50cm 이하 일 때) LED 전등이 자동으로 동작합니다. 와우~ ㅎㅎ

 

아두이노 초음파 센서를 이용한 자동으로 작동하는 전자기기 시스템 만들기

 

초음파 센서의 위치에 따라 거리는 적절히 조절하여 편하게 적용하시면 됩니다. ^^ 앞서 언급하였지만 USB 휴대폰 충전기로도 충분히 테스트 진행 가능합니다. 주의하실 부분은 아두이노의 디지털 Pin의 Output 최대 출력 전류가 40mA이기 때문에 소비전력이 높은 전자기기들은 따로 외부 전력이 필요합니다.


여기까지 아두이노(Arduino)의 초음파 센서(HC-SR04)를 활용해서 사람을 인식하여 자동으로 전자기기를 작동하는 시스템을 구성해 보았습니다. 너무 간단하게 구성해서 허접해 보일 수도 있지만 대부분 이런 방법의 응용으로 수가 많아지고 조금 더 디테일하게 복잡해질 뿐입니다. 쉽게 생각하셔도 괜찮습니다 ^^

 

오늘도 긴 글 읽어주셔서 감사합니다.

 

 

 

반응형
반응형

 

 

 

앞서 포스팅에서 온습도 센서(Temperature and Humidity sensor)만 가지고 아두이노의 기본적인 동작법이나 파일 저장법, 그래프 그리기, 엑셀(Excel)과 연동하는 방법들을 알아보았습니다. 그리고 인터넷(Internet) 사용법과 웹서버(Web server) 만드느라 많은 시간을 보냈는데요 ^^ 오늘은 재미있는 센서를 하나 소개드리려고 합니다. 

 

바로 초음파(ultrasound(s), ultrasonic wave) 센서입니다. 인터넷에 찾아보면 거리 센서라고 많이 검색되는데 초음파를 쏴서 돌아오는 시간을 계산해서 거리를 측정할 수 있는 예제가 많이 알려져서 그런 것 같습니다 ^^ 이번 포스팅에서는 초음파 센서 사용방법과 프로그램 코딩에 대해 알아보겠습니다.


  • HC-SR04 초음파 센서

온라인에서 '초음파 센서'를 검색하면 아두이노용으로 많이 사용하는 모델은 'HC-SR04' 모듈입니다. 생긴건 마치 스피커처럼 생겼는데요 ㅎㅎ 아두이노 작품들 중에 로봇류는 대부분 이 HC-SR04 센서로 눈처럼 꾸며서 사용하는걸 많이 보았습니다. 

 

아두이노 HC-SR04 초음파 센서

"초음파(超音波, 영어: ultrasound(s), ultrasonic wave)는 인간이 들을 수 있는 가청 최대 한계 범위를 넘어서는 주파수를 갖는 주기적인 '음압'(音壓, sound pressure)을 의미한다." (출처: 위키피디아) 즉, 사람이 들을 수 없는 고주파수 영역대의 음파를 말합니다. 건강하고 젊은 사람이 대략 20KHz의 영역을 들을 수 있고 사람이 들을 수 있는 이상의 영역이 초음파 영역이라고 생각하시면 됩니다.

 

아두이노에서 사용할 HC-SR04 초음파 센서는 대락 40KHz 영역대의 초음파를 방출합니다. 송신기와 수신기인 두개의 초음파 트랜스 듀서(Ultrasonic transducer)가 있고, 수신기(Chirp: 주파수 변조 방식을 사용하는 펄스 압축의 하나)에서 방출된 초음파가 물체에 반사되어 수신기(Echo)에 돌아온 시간을 통해서 거리를 계산하는 방법을 사용합니다.

 

초음파 센서(ultrasounds sensor) 작동원리

동작 전압 5V DC
동작 전류 15mA
발생 초음파 약 40kHz
effectual angle <15도
측정 범위 2 ~ 400 cm
오차 0.3 cm
초음파 속도 340 m/s

 


 

  • HC-SR04 초음파 센서 연결방법

HC-SR04 초음파 센서는 5V 구동입니다. 모듈의 VCC 핀을 아두이노의 5V에 연결하고 GND는 GND에 연결합니다. 위에서 설명한 송신부인 Chirp는 모듈에서 Trig 핀이며 아두이노 12번 Pin에 연결하고, 수신부 Echo 핀을 8번 Pin에 연결합니다. Trig와 Echo 핀이 연결된 아두이노의 디지털 핀(DIGITAL Pin)은 프로그램상으로 변경 가능하니 원하시는 데로 임의로 연결하셔도 됩니다. 

 

아두이노(Arduino) HC-SR04 초음파 센서 사용방법: 연결 배선

 

 

  • HC-SR04 초음파 센서 프로그램 코딩 방법

HC-SR04 초음파 센서는 따로 '라이브러리(Library)'가 없어도 됩니다. 앞서 아두이노 프로그램 코딩 초급편에서 다루었던 'pinMode''digitalWrite' 명령어를 주로 사용하고 추가로 'pulseIn' 명령어를 사용하여 거리를 측정하는 프로그램을 코딩하도록 하겠습니다. 'pinMode'와 'digitalWrite' 명령어에 대한 내용과 간단한 예제는 아래 링크 참조 부탁드립니다.

 

아두이노(Arduino) 프로그램 코딩 초급 (pinMode, digitalWrite, if 명령어)

지난 시간 스케치로 프로그램을 코딩할 때 자주 사용되는 꼭 필요한 명령어 몇 가지를 알아보았습니다. IT 비전공자가 프로그램 언어를 기본부터 완전히 이해하면서 배우는 것은 쉬운 일은 아닙니다. 그렇기 때문..

it-g-house.tistory.com

 

명령어 기능 사용법
pinMode I/O 핀의 입출력 설정 pinMode(pin#, mode);
digitalWrite 디지털 핀에 High, Low 값 출력  digitalWrite(pin#, HIGH); or digitalWrite(pin#, LOW);
pulseIn 아두이노 핀으로 입력되는 펄스의 시간을 측정하는 함수 pulseIn(pin#, High); or pulseIn(pin#, Low);
int echo = 8;
int trig = 12;

void setup() {
  Serial.begin(9600);
  pinMode(trig, OUTPUT);
  pinMode(echo, INPUT);
}

void loop() {
  float cycletime;
  float distance;
  
  digitalWrite(trig, HIGH);
  delay(10);
  digitalWrite(trig, LOW);
  
  cycletime = pulseIn(echo, HIGH); 
  
  distance = ((340 * cycletime) / 10000) / 2;  

  Serial.print("Distance:");
  Serial.print(distance);
  Serial.println("cm");
  delay(500);
}

 

 

HC-SR04 모듈을 아두이노에 연결한대로 trig = 12, echo = 8로 지정해주고 pinMode를 통해 trig는 Output(송신), echo는 Input(수신)으로 설정하였습니다. 그리고 cycletime(시간), distance(거리)를 실수(float)로 변수 지정을 하고, digitalWrite를 통해 trig에서 초음파가 송신하도록 'High' 명령을 주고 10 msec delay 후 'Low'로 신호를 끕니다. 그럼 송신된 초음파가 물체에 반사되어 echo에 수신 (신호가 High로 전환)될 때까지의 시간을 pulseIn 명령어를 통해 distance 변수에 저장합니다. 마지막으로 초음파가 물체를 맞고 돌아온 시간과 초음파의 속도 340 m/s를 이용하여 cm 단위로 거리를 계산합니다. 왕복거리라 마지막에 나누기 2가 들어갑니다. ^^

 

프로그램 코딩 완료 후 스케치(Sketch)를 통해 아두이노에 업로드 후 시리얼 모니터(Serial Monitor)를 실행하면 아래와 같이 거리를 계속 센싱하여 출력해서 보여줍니다. 통신속도(Baudrate) 맞추는 건 이제 기본으로 하시죠? ㅎㅎ

 

아두이노(Arduino) HC-SR04 초음파 센서 사용방법: 거리 측정 값 시리얼 모니터 출력


여기까지 아두이노(Arduino)로 HC-SR04 초음파 센서(ultrasounds sensor) 사용방법 과 거리를 측정하는 간단한 프로그램을 코딩해보았습니다. 정말 재미있는 센서인 거 같습니다. ^^ 조만간 초음파 센서를 이용하여 거리를 측정하는 것뿐만 아니라 적외선 센서처럼 물건이나 사람을 감지할 수도 있으니 사람을 감지하여 외부기기를 동작하거나 멈추는 간단한 프로젝트를 진행해 보도록 하겠습니다.

 

오늘도 긴 글 읽어주셔서 감사합니다. 질문이나 추가적으로 필요하신 내용 있으면 언제든지 댓글로 남겨주세요~ ^^

 

 

 

반응형

+ Recent posts