🤖 Arduino Nano로 만드는 초음파 거리 측정기 🌟
안녕, 친구들! 오늘은 정말 재밌는 프로젝트를 함께 해볼 거야. 바로 Arduino Nano와 초음파 센서를 이용해서 거리 측정기를 만들어 볼 거란 말이지! 😎 이 프로젝트를 통해 우리는 프로그래밍의 기초부터 하드웨어 제어까지 다양한 걸 배울 수 있을 거야. 그럼 이제부터 우리의 멋진 여정을 시작해보자구!
💡 참고: 이 글은 재능넷(https://www.jaenung.net)의 '지식인의 숲' 메뉴에 등록될 예정이야. 재능넷은 다양한 재능을 거래하는 플랫폼이니, 이 프로젝트를 마스터하고 나면 너의 새로운 재능을 공유해볼 수도 있겠지?
🛠️ 준비물
자, 그럼 우리의 멋진 거리 측정기를 만들기 위해 필요한 준비물들을 살펴볼까?
- Arduino Nano 보드
- HC-SR04 초음파 센서
- 브레드보드
- 점퍼 와이어 (수-수, 수-암)
- USB 케이블 (Arduino Nano 연결용)
- OLED 디스플레이 (옵션)
- 9V 배터리 + 배터리 클립 (휴대용으로 만들고 싶다면)
이 정도면 충분해! 혹시 이 중에 뭔가 없다고? 걱정 마, 재능넷에서 다른 사람들의 도움을 받아 구할 수 있을 거야. 재능넷은 이런 식으로 서로의 재능과 자원을 공유하는 멋진 플랫폼이지. 😉
🧠 Arduino Nano: 작지만 강력한 두뇌
우리의 프로젝트의 핵심, Arduino Nano에 대해 좀 더 자세히 알아볼까? Arduino Nano는 작은 크기에 엄청난 성능을 가진 마이크로컨트롤러 보드야. 이름에서 알 수 있듯이, 정말 '나노' 사이즈지만 그 안에 담긴 기능은 어마어마해!
Arduino Nano의 주요 특징을 살펴볼까?
- 마이크로컨트롤러: ATmega328
- 동작 전압: 5V
- 입력 전압: 7-12V
- 디지털 I/O 핀: 14개 (6개는 PWM 출력 가능)
- 아날로그 입력 핀: 8개
- 플래시 메모리: 32 KB
- SRAM: 2 KB
- EEPROM: 1 KB
- 클럭 속도: 16 MHz
이 작은 보드 하나로 우리는 정말 다양한 프로젝트를 만들 수 있어. 오늘 우리가 만들 거리 측정기는 그중 하나일 뿐이지. 상상력을 발휘해보면 Arduino Nano로 할 수 있는 일들이 무궁무진해!
🌊 초음파 센서: 소리로 거리를 측정한다고?
자, 이제 우리의 두 번째 주인공인 초음파 센서에 대해 알아볼 차례야. 우리가 사용할 HC-SR04 초음파 센서는 어떻게 거리를 측정할까? 🤔
🦇 재미있는 사실: 박쥐들도 초음파를 이용해 주변 환경을 탐지하고 먹이를 찾아다녀. 우리의 센서는 마치 작은 박쥐처럼 동작한다고 볼 수 있지!
초음파 센서의 동작 원리는 다음과 같아:
- 초음파 발사: 센서에서 초음파를 발사해.
- 반사파 대기: 발사된 초음파가 물체에 부딪혀 돌아올 때까지 기다려.
- 시간 측정: 초음파가 돌아오는 데 걸린 시간을 측정해.
- 거리 계산: 측정된 시간을 이용해 거리를 계산해.
초음파의 속도는 대략 340m/s야. 이 속도를 이용해서 우리는 아주 정확하게 거리를 측정할 수 있지!
HC-SR04 초음파 센서의 주요 특징을 살펴볼까?
- 동작 전압: 5V
- 동작 전류: 15mA
- 동작 주파수: 40Hz
- 최대 범위: 4m
- 최소 범위: 2cm
- 측정 각도: 15도
- 트리거 입력 신호: 10µs TTL 펄스
- 반향 출력 신호: 입력 비례 TTL 펄스 폭
이 센서는 정말 대단해! 2cm에서 4m까지의 거리를 아주 정확하게 측정할 수 있지. 게다가 사용하기도 굉장히 쉬워. Arduino와 연결해서 몇 줄의 코드만 작성하면 바로 거리를 측정할 수 있다니, 정말 놀랍지 않아?
🔌 연결: Arduino와 초음파 센서의 만남
자, 이제 우리의 두 주인공을 연결할 시간이야! Arduino Nano와 HC-SR04 초음파 센서를 어떻게 연결하면 될까? 걱정 마, 생각보다 훨씬 쉬워. 😉
먼저, HC-SR04 초음파 센서의 핀 구성을 살펴볼게:
- VCC: 전원 공급 (5V)
- Trig: 트리거 신호 입력
- Echo: 에코 신호 출력
- GND: 접지
이제 이 핀들을 Arduino Nano와 연결해볼 거야. 여기 연결 방법을 자세히 설명해줄게:
- VCC → 5V: 센서에 전원을 공급해줘야 해. Arduino Nano의 5V 핀과 센서의 VCC 핀을 연결해줘.
- Trig → D9: 트리거 신호를 보내기 위해 Arduino의 디지털 핀 9번과 센서의 Trig 핀을 연결해.
- Echo → D10: 에코 신호를 받기 위해 Arduino의 디지털 핀 10번과 센서의 Echo 핀을 연결해.
- GND → GND: 마지막으로, 센서의 GND 핀을 Arduino의 GND 핀과 연결해줘.
이렇게 연결하면 기본적인 세팅은 끝이야! 정말 간단하지?
이 연결도를 보면서 차근차근 따라 해보자. 처음에는 좀 헷갈릴 수 있지만, 몇 번 해보면 금방 익숙해질 거야. 그리고 기억해, 항상 전원을 연결하기 전에 모든 연결이 제대로 되었는지 다시 한 번 확인하는 게 좋아. 안전이 최우선이니까! 🛡️
💻 코딩 시작: 거리 측정의 마법
자, 이제 하드웨어 연결은 끝났어. 다음은 뭐다? 바로 코딩이지! 🧙♂️ 우리의 Arduino에게 어떻게 동작해야 하는지 알려줄 시간이야. 걱정 마, 어려운 거 아니야. 한 줄 한 줄 차근차근 설명해줄게.
먼저, Arduino IDE를 열고 새로운 스케치를 시작해보자. 그리고 다음 코드를 입력해봐:
// HC-SR04 초음파 센서 핀 설정
const int trigPin = 9;
const int echoPin = 10;
// 변수 선언
long duration;
int distance;
void setup() {
// 시리얼 통신 시작
Serial.begin(9600);
// 핀 모드 설정
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
// 트리거 핀 초기화
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// 트리거 핀에 10µs 동안 HIGH 신호 보내기
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// 에코 핀으로부터 신호 읽기
duration = pulseIn(echoPin, HIGH);
// 거리 계산
distance = duration * 0.034 / 2;
// 시리얼 모니터에 거리 출력
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
delay(1000); // 1초 대기
}
우와, 코드가 좀 길어 보이지? 하지만 걱정 마. 하나씩 뜯어보면 정말 간단해. 자, 이제 코드를 자세히 살펴볼게.
1. 변수 선언 및 핀 설정
const int trigPin = 9;
const int echoPin = 10;
long duration;
int distance;
여기서는 우리가 사용할 핀 번호와 변수들을 선언하고 있어. trigPin
은 9번, echoPin
은 10번으로 설정했어. 이건 우리가 앞서 연결한 대로야. duration
은 초음파가 되돌아오는 시간을, distance
는 계산된 거리를 저장할 거야.
2. setup() 함수
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
setup()
함수는 프로그램이 시작될 때 한 번만 실행돼. 여기서는 시리얼 통신을 시작하고 (우리가 거리를 모니터로 볼 수 있게), 핀 모드를 설정하고 있어. trigPin
은 신호를 보내니까 출력으로, echoPin
은 신호를 받으니까 입력으로 설정했지.
3. loop() 함수
이제 진짜 중요한 부분이야. loop()
함수는 계속해서 반복 실행되는 부분이야.
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
delay(1000);
}
이 부분을 단계별로 설명해줄게:
- 트리거 신호 보내기:
trigPin
을 잠깐 HIGH로 설정했다가 다시 LOW로 바꿔. 이게 초음파를 발사하는 신호야. - 에코 신호 받기:
pulseIn()
함수로echoPin
이 HIGH가 되는 시간을 측정해. 이게 초음파가 물체에 부딪히고 돌아오는 데 걸린 시간이야. - 거리 계산: 측정된 시간을 이용해 거리를 계산해. 여기서 0.034는 음파의 속도(340m/s)를 cm/µs 단위로 바꾼 값이야. 2로 나누는 이유는 초음파가 왕복하니까!
- 결과 출력: 계산된 거리를 시리얼 모니터에 출력해.
- 대기: 1초 동안 기다렸다가 다음 측정을 시작해.
이렇게 하면 우리의 거리 측정기가 완성되는 거야! 정말 대단하지 않아? 이제 이 코드를 Arduino Nano에 업로드하고 실행해보자.
🚀 실행 및 테스트: 우리의 작품을 시험해보자!
드디어 우리의 거리 측정기가 완성됐어! 이제 실제로 동작하는지 테스트해볼 시간이야. 정말 흥미진진하지 않아? 😃
테스트 방법은 다음과 같아:
- Arduino IDE에서 '업로드' 버튼을 눌러 코드를 Arduino Nano에 업로드해.
- 업로드가 완료되면, IDE의 상단 메뉴에서 '도구' → '시리얼 모니터'를 선택해.
- 시리얼 모니터가 열리면, 우측 하단에 '9600 보드'가 선택되어 있는지 확인해.
- 이제 초음파 센서 앞에 물체를 놓고 거리를 측정해봐!
시리얼 모니터에 "Distance: XX cm"와 같은 형식으로 거리가 표시될 거야. 물체를 앞뒤로 움직여보면서 거리가 어떻게 변하는지 관찰해봐.
💡 팁: 처음에는 자를 이용해서 실제 거리와 측정된 거리를 비교해보는 것도 좋아. 이렇게 하면 우리의 거리 측정기가 얼마나 정확한지 알 수 있지!
만약 결과가 예상과 다르다면, 다음 사항들을 체크해봐: