거리경보장치 응용(아두이노)

in #kr-newbie7 years ago

거리경보장치 응용(아두이노)



제 블로그에서 예전에 실험한 내용인데 초음파 응용편으로 소개할까 합니다.
거리경보장치는 실생활에 가장 유사한것이 자동차 후진 주차할때 경보장치를 연상하시면 될꺼에요. 뒤에 장애물과의 거리가 위험할때 나는 경보음을 생각하시면 아마 이해가 빠를꺼에요.

1. 회로도 구성


  • 준비물 : 초음파센서3핀 1개, led 2개, 저항 220옴 2개, 피에조부저 1개, 아두이노우노, 뻥판
  • 내용 : 장애물과의 거리가 50cm미만일때 경보음과 Red Led에 불이 들어오고 위험을 알리고, 50cm이상일때 Green Led에 불이 들어오고 안전상태를 표현합니다.

2. 코딩


  • Led : 선언-pinMode(핀번호, OUTPUT) 제어-digitalWrite(핀번호,상태값); 로 상태값 1(5V) or 0(0V)

  • 피에조부조 : 제어-tone(출력핀,음계,음길이), noTone(출력핀)으로 음과 음사이를 끊어줌

  • 초음파센서 : 선언pinMode(핀번호, 입/출력모드), delayMicroseconds(시간값)으로 마이크로초로 잡게 딜레이 시킴, pulseIn(7, HIGH)로 초음파가 장애물에 부딪치고 되돌아온 거리시간값을 입력받음

  • 거리계산 : ((float)(340 * 초음파거리시간값) / 10000) / 2;


코딩 설계는

  1. 초음파센서 거리 측정한다.
  2. Led 2개로 안전/위험 상태를 나타낸다.
  3. 피에조부조에서 위험거리일때 경보음이 울리게 한다.

1번 코딩 :
지난시간의 초음파 거리측정 코딩을 그대로 적용한다. 하지만 안전/위험 상태를 기준을 50cm로 설정한다면 어떻게 코딩해야할까요. 지난시간에 배웠던 문법 if문 조건이 참/거짓으로 나뉘면 쉽겠죠.

  • 거리측정은 7번핀에서 pulseIn(7, HIGH)로 거리시간값을 ((float)(340 * 초음파거리시간값) / 10000) / 2 로 거리가 구함
  • if(거리<50) {처리문1; } else {처리문2;}

2번 코딩 :
led 2개로 led은 위험, green은 안전으로 1번 코딩에서 50cm미만일때 red led 켜고, 50cm이상일때 green led 켜면 되겠죠.

if(거리<50){
    digitalWrite(11, HIGH);  
    digitalWrite(10, LOW);  
}
else
{
   digitalWrite(11, LOW);  
   digitalWrite(10, HIGH);  
}

참쉽죠

3번 코딩 :
경보음은 피에조부저에서 tone(), noTone()함수를 어떤 음계로 음의길이를 어느정도 할지는 자유입니다. 그런데 어디에 코딩할까. 50cm이하 일때 경보음을 울려야 겠죠.

if(거리<50){
    tone(12,523,1000/8);     // 도음으로 8분음표(음길이)
    delay(1000/4*1.30);             
    noTone(12);            
}
else
{
}

이렇게 해서 코딩은 간단히 해결되었습니다. 쪼개서 보면 별거 없습니다. 처음 기준이 되는 부품이 어떤 상태가 되면 다른 부품이 그 상태를 기준으로 어떻게 변화되는지만 글로 한번 설계해보시고 그걸 코딩으로 표현하시면 됩니다.

초음파센서로 거리가 50cm미만이면 위험상태(red led 켜고, 피에조부저 경보음)와 안전상태(green led 켜기)를 표현한 것 뿐이죠. 그런데 이걸 다 합쳐진 코딩을 보면 복잡해 보일 수 있습니다. 하지만 부품 한개 한개의 제어한 것들을 합치니깐 복잡해 보일뿐 부품을 개별적으로 생각하시면 아주 간단한 코딩입니다.

종합해서 코딩하면은

void setup() {  
  pinMode(11, OUTPUT);
  pinMode(10, OUTPUT);
}
void loop() {   
  pinMode(7,OUTPUT); //7번핀 출력모드로
  digitalWrite(7, LOW); 
  delayMicroseconds(2); 
  digitalWrite(7,HIGH); 
  delayMicroseconds(10); 
  digitalWrite(7,LOW); 
  
  pinMode(7,INPUT);    //7번핀 입력모드로
  float duration = pulseIn(7, HIGH);
  float distance = duration / 57.5;  
  

  if(distance < 50){    //50cm 미만 경보발동

    digitalWrite(11, HIGH);  
    digitalWrite(10, LOW);  

    tone(12,523,1000/8);     // 도음으로 8분음표(음길이)
    delay(1000/4*1.30);             
    noTone(12);            

  } else{                   //50cm 이상 안정거리
    digitalWrite(11, LOW);  
    digitalWrite(10, HIGH); 
  } 
}  

3. 결과


마무리


led, 피에조부저, 초음파센서를 각각 이전 시간에 배웠고 그걸 합쳐서 하나의 경보장치를 만들어 보았습니다.
또, 어떤것들이 있을까요 한번 상상의 나래를 펼쳐보세요.

초음파센서가 은근 재밌는 소재라 또다른 응용편을 다음에 소개 할께요.

Sort:  

스스로 홍보하는 프로젝트에서 나왔습니다.
오늘도 좋은글 잘 읽었습니다.
오늘도 여러분들의 꾸준한 포스팅을 응원합니다.

방문해주셔서 감사합니다.

이랗게도 활용이 되는군요 ^^ 기본을 보면서 혼자 상상하고 있습니다 ^^

교육용rc카 아두이노키트에서 자율주행하기 위한 장애물 감지센서로 초음파 응용하기도 해요.
레이더, 초음파줄자, 3D랜더링 등 그 응용을 거리 측정을 통해 할 수 있는 상상을 더하면 끝도 없지요.

아두이노는 정말 활용할 분야가 많네요. 팔로우 하고 종종 들러서 봐야겠습니다. ^^

실생활 적용할 수 있는게 많고 다루기 쉽다는게 장점이 있는것 같아요

경보 소리가 크네요. 깜짝 놀랐네 ㅋ

자동차 후진할때 뒤에 위험 경보멜로디 있죠
실생활 그걸 응용해서 아두이노로 표현해 봤어요.

실제 보드가없어도 툴로 돌릴수 있는지는 몰랐습니다 저툴 얼마에요?

온라인 실시간 무료에요.
제가 이걸로 연습 무자게 하고 나서 실제로 아두이노 키트를 구입해서 1시간 30분만에 모든 실험을 끝내고 서랍장으로 직행했지요.
작품을 만들려고 하니 부품가격이 만만치 않아서 실제로 작품 구현을 못했고 설계만 무자게 했어요
링크를 매 포스팅에 걸어놓은 이유는 혹시 모르시는 분들이 있을까 해서 계속 링크 걸어놨어요.
온라인 회원 가입하시고 바로 온라인상에서 실험하시면 돼요.
실제 실험하는거랑 동일하거든요.
가상으로 이것저것 실험한뒤에 실제로 부품들을 구입해서 작품을 만드시면 돼요.

감사합니다 좋은정보네요

툴로 설계한 그대로 제품을 사서 만들면 똑같이 되는 거죠? 참 신기하네요
소리가 너무 커서 깜놀했습니다 ㅋㅋ

네!
온라인상에서 가상시뮬레이터로 실험하시고 그대로 구현 하시면 돼요.
약간의 오차가 있긴 하는데 그것은 실제로 보정해야하는 부분이라서요.
실제로 아두이노를 사서 실험을 해도 보정작업은 필수이거든요.
기본베이스는 설계한 대로 그대로 부품을 구입하셔서 만드시면 됩니다.

그렇군요... 신기합니다.. 설명해주셔서 감사합니다 ㅎㅎ

^^ 즐거운 스티밋!!!

오늘도 활기찬 스티밋이요!!

Coin Marketplace

STEEM 0.17
TRX 0.16
JST 0.030
BTC 60172.85
ETH 2384.21
USDT 1.00
SBD 2.57