아두이노 실습 6주차 (센서 활용하기)

2023. 10. 25. 21:52아두이노 (Arduino)

실습 6주차 (센서 활용하기)

 

이번주 실습에서는 다른 외부 센서들을 사용하여 아두이노를 조작하는 것을 해볼 예정이다.

 

피에조 부저, 광센서, 초음파 센서를 사용할 예정인데 이 3가지 센서 말고도 온도센서, 기울기 센서, 적외선 센서, 아날로그 조이스틱 등 다양한 센서들을 사용할 수 있다.

 

피에조 부저 (piezo buzzer)

처음 실습해볼 센서는 '피에조 부저'이다.

 

물리적인 압력을 주면 그 에너지를 전기 에너지로 바꾸고 반대로 전기 에너지를 주면 압축 또는 팽창하는 특성을 피에조 효과(piezoelectric effect) 또는 압전 효과라고 하고 피에조 부저(piezo buzzer)는 이런 피에조 효과를 이용한 소자이다.

 

아두이노는 다음과 같이 연결한다.

피에조 부저의 상단에 보면 어느 방향이 +극인지 표시되어 있다. 혹은 아래 출력핀이 더 긴 쪽이 +극이니 참고하자.

 

 

아두이노 보드의 핀으로 특정 주파수의 구형파를 생성하는 것과 관련된 함수로는 tone()noTone()이 있다.

 

tone(pin, frequency)

tone(pin, frequency, duration)

noTone(pin)

 

tone()함수의 매개변수 pin특정 주파수의 구형파가 출력되는 핀을 지정하고, frequencyunsigned int(부호 없는 정수) 자료형의 출력 주파수(Hz)를 지정한다.

 

그리고 duration에 값을 지정하면 그 값만큼 ms 단위로 출력 주파수를 지속시킨다. duration옵션값을 쓰지 않으면 noTone() 함수가 호출되거나 다음 주파수 출력이 있을 때까지 출력 주파수에 해당하는 소리가 지속된다.

 

noTone() 함수는 해당 핀의 주파수 출력을 중지시킨다.

 

아래 실습 영상을 살펴보자.

 

 

정상적으로 음역대가 높아졌다 낮아지는 것을 확인할 수 있다.

(빠르기도 하고 음질이 좋지 않아 잘 들리지는 않지만...)

 

 

 

멜로디 만들기

이번에는 피에조 부저를 이용해서 조금 더 재미있는 실습을 해보려고 한다.

 

우리에게 익숙한 동요 멜로디를 4옥타브 음계를 사용해서 만들어보자.

 

아두이노는 위에서 구성했던 것 그대로 사용하고 코드만 변경해주면 된다.

음계의 주파수와 주기

 

주파수가 소수점 4자리까지 표현되어 있는데 필자는 간단하게 반올림 하여 정수로 만들어 입력했다.

 

 

 

각각의 음계를 상수로 만들어 더 편하게 사용할 수 있다.

 

 

아래 실습 영상을 살펴보자.

 

잘 들릴지 모르겠지만 '학교종이 땡땡땡' 동요를 표현했다.

 

정확하게 잘 들리지는 않지만 비슷했으니 OK다. 우리의 목적은 주파수로 원하는 음을 낼 수 있다는 것을 확인하는 것이기 때문이다.

 

 


 

광센서

그다음으로 실습해볼 센서는 광센서이다.

 

빛을 받으면 그 에너지의 영향으로 내부에 자유 전자가 발생하여 전도율이 변하는, 이른바 광전효과를 가진 소자로 구성되어 있다. 황화카드뮴(CdS)을 소자로 사용하는 경우, CdS 센서라고 부른다.

 

조도 센서는 빛의 양에 따라 전도율이 변한다. 빛의 양이 많아질수록 전도율이 증가해 저항이 감소하고, 빛의 양이 적어질 수록 전도율이

감소해 저항이 증가하는 원리이다.

 

 

간단하게 빛의 밝기를 측정하여 LED의 빛의 밝기를 조절하는 실습을 진행해 보자.

 

아두이노는 아래와 같이 연결한다.

광센서가 연결된 lightPin의 값(밝기)을 읽어 시리얼 모니터에 출력하고,

광센서로 읽은 값을 2로 나눠 LED에 출력되게 한다.

 

아래 실습 영상을 살펴보자.

 

 

 

광센서로 읽어온 값이 시리얼 모니터에 정상적으로 출력되는 모습을 볼 수 있고, 그에 따라 LED의 밝기가 변하는 모습이다.

 

 

 


 

초음파 센서

마지막으로 사용할 센서는 초음파 센서이다.

 

사람의 청력으로 들리지 않는 20KHz 이상의 소리를 초음파(ultrasonic wave)라고 하며

초음파 센서는 초음파가 가지고 있는 파장의 분해능과 반사 특성을 이용하여 거리나 두께, 움직임, 농도 등을 검출하는 센서이다.

 

 

거리를 계산할 할 때는 HIGH 펄스가 유지된 시간에 초음파가 1 센티미터(cm), 또는 1 인치(inch)를 이동하는데 소요된 시간을 적용하면 된다.

초음파가 1 cm 이동하는데 걸리는 시간은 약 58 μs이고 1 인치의 경우 148 μs이다. 이 시간은 초음파의 왕복 시간이다.

 

 

이번 실습에서는 이 초음파 센서를 이용하여 거리를 측정해보려고 한다.

 

아두이노는 아래와 같이 연결한다.

 

1. 트리거 핀을 HIGH로 설정해 초음파를 발생시킨다.

2. 10μs(마이크로초)의 지연을 추가한다. 초음파가 왕복하는 것을 고려한 것이다.

3. 에코 핀에서 HIGH 상태가 유지된 시간을 측정하여 초음파의 왕복 시간을 구한다.

4. 초음파의 왕복 시간을 58로 나누어 거리(센티미터)를 계산한다.

이 공식은 초음파 속도(약 343 미터/초)를 고려하여 계산하였다.

 

아래 실습 영상을 살펴보자.

 

 

초음파 센서와 손과의 거리에 따라서 시리얼 모니터에 표시되는 거리가 달라짐을 확인할 수 있다.