반응형

【 아두이노 센서#22】 HC-SR04 초음파 센서 경보회로 with LCD

 지난시간 초음파 센서로 접근 경보회로 기본을 다루었다. 그럼 이제 LCD를 부착하여 거리값을 LCD에 표시해보자. 이렇게 된다면 포터블하며 실제로 자동차등에 부착할 수 있는 형태가 되어 훨씬 실용적으로 활용할 수 있게 된다.


▶ 선수 학습 :

  1. 초음파 센서 다루기 #1   강좌보기클릭

  2. 초음파 센서 다루기 #2   강좌보기클릭

  

▶ 실습에 사용되는 부품 자료 ( HC-SR04 ) 






▶ 실습 목표 :  


1. 초음파 신호의 반사된 시간을 이용해서 물체까지의 거리값을 계산할 수 있다.

2. 물체가 일정거리(40cm) 이하로 감지가 되면 경보음과 함께 LED가 깜빡이게 하고, 가까울 수록 점점 더 빠르게 반응 하도록 프로그래밍 한다. 

3. 스피커와 LED는 각각 포트로 제어 할 수 있으나, 지금은 하나의 포트(13)로 제어할 것이며, LCD(1602)를 부착하여 초음파로 측정된 거리 값을 LCD를 통해 표시할 수 있다. 


▶ 실습 회로도면 :

  (이미지 클릭하면 확대 가능)


※ 아두이노 포트의 작은 출력으로 소리와 함께 LED를 작동 시키기 때문에, 기본적으로 소리가 작게 날 수 있으며, 스피커는 와트(w) 수가 작은 것을 사용해야 들을 수 있다. 또한 진동판을 전류로 울려서 소리를 내는 방식의 스피커 보다는 피에조 타입의(압전) 스피커를 사용하는 것이 좋다.


▶ 실습 절차  : 

1.    위 회로 연결도를 참고하여 부품들을 연결한다
2.    초음파 센서의 거리 값을 16x2 LCD로 표시하라
3.    LCD거리값을 표시 할 경우 큰 수치에서 작은 수치로 줄어들어 이전 수치값이 남아 있어 값을 읽을 때 혼란스러운 현상이 일어난다. 이럴경우 몇가지 방법이 있으나, 간단한 방법은, 임의의 공백을 적당(2~10) 딜레이()와 함께 사용하면 해결할 수 있다.
4.    실제 거리와 유사한지 비교해본다


▶ 프로그램 코드 및 설명 : 


/*  초음파 센서(HC-SR04 모듈)로 물체와의 거리측정하기 */


#include <LiquidCrystal.h>// LCD 사용을 위한 헤더 선언

int distance;

int triggerPin = 10;

int echoPin = 11;

int alertPin=3;    //   스피커 & LED 연결 핀 설정

LiquidCrystal lcd(2,3,4,5,6,7);//LCD 핀 배열 설정


void setup( )  {

  Serial.begin(9600);

  pinMode(triggerPin, OUTPUT);  // 트리거 핀을 출력으로 설정

  pinMode(echoPin, INPUT);       // 에코 핀을 입력으로 설정

}


void loop( ) {

 digitalWrite(triggerPinLOW);    // 트리거 핀 초기화

  digitalWrite(echoPin, LOW);      //  에코 핀 초기화

  delayMicroseconds(2);

  // 트리거 핀으로 10 us의 펄스를 발생

  digitalWrite(triggerPin, HIGH);

  delayMicroseconds(10);

  digitalWrite(triggerPin, LOW);

  // 에코 핀 입력으로부터 거리 값을  cm 단위로 계산

  distance = pulseIn(echoPin, HIGH) / 58;

  Serial.println("Distance(cm) = " + String(distance));

  delay(1000);

  distance = distance>100? 100:distance;//100이상의 값은 모두100


  if (distance 40) {       //  40 이하의 값부터 경보 시작

    digitalWrite(alertPin,HIGH);

    delay(10);

   digitalWrite(alertPin,LOW);

   delay(distance); // 거리가 가까울수록  음이 빨라지도록 딜레이값을 조정

  }

 lcd.setCursor(0,0);  //커서를 첫 열 첫 행으로 이동

 lcd.print("Distance(cm):");

 lcd.print(distance);

 delay(2);   // 거리값 표시를 위한 약간의 딜레이를 준다. 

 lcd.print("            ");  //거리 값이 계속 바뀌어 나타나는 잔상제거를 위한 공백

}


▶ 실행영상:  

(전체화면 보기로 보세요)
# 아래 영상은 동일한 회로와 프로그래밍이 되어 있으며, 휴대성을 위해 아두이노 보드만, 우노 R3에서 나노 보드로 교체한 회로 영상이다.



▶ 아두이노 파일(다운) :

Ultrasonic_buzzer_LCD_.ino


반응형
반응형

【 아두이노 센서#21】 HC-SR04 초음파 센서 다루기 #2

 이번 시간은 초음파 센서 다루기 두 번째 시간으로, 초음파 경보회로를 만들어보려한다. 지난시간 초음파 센서를 이용해서 거리값을 계산해 낼 수 있었다. 이번시간은 이 거리값을 이용해서 특정 거리 영역으로 인지되면 경보음을 울리는 회로를 구성해보려 한다. 그리고 마치 자동차 범퍼에 달려 있는 접근 경보 센서 회로 처럼, 가까이 근접할 수록 신호음과 불 빛을 더 빨리 울리도록 해볼 것이다. 


▶ 선수 학습 :

  1. 초음파 센서 다루기 #1        강좌보기클릭☜


  

▶ 실습에 사용되는 부품 자료 ( HC-SR04 ) 






▶ 실습 목표 :  


1. 초음파 신호의 반사된 시간을 이용해서 물체까지의 거리값을 계산할 수 있다.


2. 물체가 일정거리(40cm) 이하로 감지가 되면 경보음과 함께 LED가 깜빡이게 하고, 가까울 수록 점점 더 빠르게 반응 하도록 프로그래밍 한다. 


3. 실습1은 스피커와 LED를 같이 묶어 포트 하나로 간단히 제어 해 볼 것이고, 실습2는 포트 두 개를 사용하여 각각 제어 해 볼 것이다(출력 공급이 조금 더  좋아짐)



▶ 실습 회로도면 :

  (이미지 클릭하면 확대 가능)




※ 아두이노 포트의 작은 출력으로 소리와 함께 LED를 작동 시키기 때문에, 기본적으로 소리가 작게 날 수 있으며, 스피커는 와트(w) 수가 작은 것을 사용해야 들을 수 있다. 또한 진동판을 전류로 울려서 소리를 내는 방식의 스피커 보다는 피에조 타입의(압전) 스피커를 사용하는 것이 좋다.



※ 본 실습 처럼 단순한 음을 듣기 위한 회로에서는 스피커의 극성 구분은 크게 의미가 없다. 


▶ 실습 1 절차  : 

1. 위 회로 연결도를 참고하여 부품들을 연결한다. 
2. 스피커와 LED를 하나의 포트에 연결하여 동시에 제어 해본다.


▶ 프로그램 코드 및 설명 : 


/*  초음파 센서(HC-SR04 모듈)로 물체와의 거리측정하기 */


int distance;

int triggerPin = 7;

int echoPin = 6;

int alertPin=3;    //   스피커 & LED 연결 핀 설정


void setup( )  {

  Serial.begin(9600);

  pinMode(triggerPin, OUTPUT);  // 트리거 핀을 출력으로 설정

  pinMode(echoPin, INPUT);       // 에코 핀을 입력으로 설정

}


void loop( ) {

 digitalWrite(triggerPinLOW);    // 트리거 핀 초기화

  digitalWrite(echoPin, LOW);      //  에코 핀 초기화

  delayMicroseconds(2);

  // 트리거 핀으로 10 us의 펄스를 발생

  digitalWrite(triggerPin, HIGH);

  delayMicroseconds(10);

  digitalWrite(triggerPin, LOW);

  // 에코 핀 입력으로부터 거리 값을  cm 단위로 계산

  distance = pulseIn(echoPin, HIGH) / 58;

  Serial.println("Distance(cm) = " + String(distance));

  delay(1000);

  distance = distance>100? 100:distance;//100이상의 값은 모두100


  if (distance < 40) {       //  40 이하의 값부터 경보 시작

    digitalWrite(alertPin,HIGH);

    delay(10);

   digitalWrite(alertPin,LOW);

   delay(distance); // 거리가 가까울수록  음이 빨라지도록 딜레이값을 조정

   }

}



▶ 실습 1 실행영상:  

(전체화면 보기로 보세요)



▶ 아두이노 파일(다운) :


Ultrasonic01_Basic.ino




▶ 실습 2 절차  : 

1. 위 회로 연결도를 참고하여 부품들을 연결한다. 
2. 스피커와 LED를 분리하여 각각의 아두이노 포트를 사용하여 연결한다.
▶ 실습 회로도면 :
 (이미지 클릭하면 확대 가능)



▶ 프로그램 코드 및 설명 : 


int distance;

int alertLED=9;   //   LED  연결 포트

int alertBuzz=8; //   Buzzer  연결 포트

int triggerPin = 7;

int echoPin = 6;


void setup() {

  Serial.begin(9600);

  pinMode(alertLED, OUTPUT);    // 경보용 LED포트를 출력으로 설정

  pinMode(alertBuzz, OUTPUT);   // 경보용 Buzzer를 출력으로 설정

  pinMode(triggerPin, OUTPUT);  // 트리거 핀을 출력으로 설정

  pinMode(echoPin, INPUT);         // 에코 핀을 입력으로 설정

}


void loop() {

 digitalWrite(triggerPin, LOW);    // 트리거 핀 초기화

  digitalWrite(echoPin, LOW);      //  에코 핀 초기화

  delayMicroseconds(2);

//   ----- 트리거  핀으로 10us의 펄스를 발생  -----

 digitalWrite(triggerPin, HIGH);

  delayMicroseconds(10);

  digitalWrite(triggerPin, LOW);

//---------------------------------------

  distance = pulseIn(echoPin, HIGH) / 58; //  거리값

 distance = distance>100? 100:distance;//100이상의 값은 모두100

if (distance < 40) {      //  40cm 미만 값 부터 경고음(Led) 시작

    digitalWrite(alertLED,HIGH);

    digitalWrite(alertBuzz,HIGH);

    delay(10);

    digitalWrite(alertLED,LOW);

    digitalWrite(alertBuzz,LOW);

    delay(distance);

 }

  Serial.println(String(distance)+"(cm)");

  delay(10);

}


▶ 실습 2 실행영상:  

(전체화면 보기로 보세요)



▶ 아두이노 파일(다운) :

Ultrasonic_buzzer2.ino


반응형
반응형

【 아두이노 센서#20】 HC-SR04 초음파 센서 다루기 #1


 이번 시간 부터, 아두이노에서 가장 활용도가 높은 초음파 센서를 다루어 보려고 한다. 앞으로 라즈이노에서 올리는 실습을 보면서, 차근 차근 하나씩 해보면 생각만큼 복잡하지 않으며 아두이노가 더욱 재미 있어질 것이다. 

게다가 초음파 센서를 이용하여 다양한 응용작품을 만들어 보려고 한다. 


▶ 선수 학습 :

  특별한 선수학습 없음

  

▶ 실습에 사용되는 부품 자료 ( HC-SR04 ) 







▶ 실습 목표 :  


1. 초음파 센서의 구동 원리에 대해 이해한다. 


2. 초음파 신호의 반사된 시간을 이용해서 물체까지의 거리값을 계산할 수 있다.


3. 측정된 값을 시리얼 모니터상에 거리값(cm)으로 표시한다.



▶ 실습 회로도면 :

  (이미지 클릭하면 확대 가능)









▶ 실습 절차  : 

1. 위 회로 연결도를 참고하여 부품들을 연결한다. 
2. 시간값 계산식


3. 초음파센서의 거리측정 메카니즘을 이해한다.






▶ 프로그램 코드 및 설명 : 


/*  초음파 센서(HC-SR04 모듈)로 물체와의 거리측정하기 */


int distance;

int triggerPin = 7;

int echoPin = 6;


void setup( )  {

  Serial.begin(9600);

  pinMode(triggerPin, OUTPUT);  // 트리거 핀을 출력으로 설정

  pinMode(echoPin, INPUT);       // 에코 핀을 입력으로 설정

}


void loop( ) {

 digitalWrite(triggerPin, LOW);    // 트리거 핀 초기화

  digitalWrite(echoPin, LOW);      //  에코 핀 초기화

  delayMicroseconds(2);

  // 트리거 핀으로 10 us의 펄스를 발생

  digitalWrite(triggerPin, HIGH);

  delayMicroseconds(10);

  digitalWrite(triggerPin, LOW);

  // 에코 핀 입력으로부터 거리 값을  cm 단위로 계산

  distance = pulseIn(echoPin, HIGH) / 58;

  Serial.println("Distance(cm) = " + String(distance));

  delay(1000);

}




▶ 실행 영상:  【 시리얼 모니터 화면 】





▶ 아두이노 파일(다운) :


Ultrasonic.ino


반응형