시리얼 모니터는 아두이노 IDE에 내장된 기능으로, 아두이노와 컴퓨터 간에 텍스트 기반으로 데이터를 주고받을 수 있는 도구입니다. 쉽게 말해, 아두이노에서 측정한 값이나 메시지를 컴퓨터 화면에 표시하고, 컴퓨터에서 아두이노로 명령을 전송할 수 있는 창입니다.
시리얼 모니터의 주요 기능:
- 데이터 확인: 아두이노에서 센서 값, 변수 값, 디버깅 메시지 등을 Serial.print() 함수를 이용하여 시리얼 모니터에 출력하여 확인할 수 있습니다.
- 명령 전송: 컴퓨터에서 시리얼 모니터를 통해 아두이노로 텍스트 명령을 전송하여 아두이노의 동작을 제어할 수 있습니다.
- 통신 설정: 시리얼 통신 속도 (baud rate) 를 설정하여 아두이노와 컴퓨터 간의 통신 속도를 맞춰야 합니다. 일반적으로 9600 baud rate를 사용합니다.
센서 값 측정에서 시리얼 모니터 활용:
적외선 센서 값을 측정할 때 시리얼 모니터를 사용하면 다음과 같은 이점이 있습니다.
- 실시간 값 확인: 센서에서 측정되는 값을 실시간으로 확인하여 흰색 선과 검은색 바닥에서 센서 값이 어떻게 변하는지 파악할 수 있습니다.
- threshold 값 설정: 시리얼 모니터에 출력되는 센서 값을 보고 흰색과 검은색을 구분할 수 있는 적절한 threshold 값을 결정할 수 있습니다.
- 디버깅: 센서 값이 예상과 다르게 출력될 경우, 시리얼 모니터를 통해 문제를 파악하고 해결할 수 있습니다.
시리얼 모니터 사용 방법:
- 아두이노 IDE에서 툴 메뉴 > 시리얼 모니터를 클릭하거나, 오른쪽 상단의 돋보기 아이콘을 클릭합니다.
- 시리얼 모니터 창에서 아두이노 보드와 연결된 포트를 선택하고, baud rate를 아두이노 코드에서 설정한 값과 동일하게 설정합니다.
- 아두이노 코드에서 Serial.print() 함수를 사용하여 센서 값을 출력합니다.
- 시리얼 모니터 창에서 출력되는 센서 값을 확인합니다.
예시 코드:
C++
#define IR_SENSOR_PIN A0 // 적외선 센서 핀 번호
void setup() {
Serial.begin(9600); // 시리얼 통신 초기화
}
void loop() {
int sensorValue = analogRead(IR_SENSOR_PIN); // 센서 값 읽기
Serial.print("Sensor Value: ");
Serial.println(sensorValue); // 센서 값 출력
delay(100); // 잠시 대기
}
코드를 사용할 때는 주의가 필요합니다.
이 코드를 아두이노에 업로드하고 시리얼 모니터를 열면 센서 값이 "Sensor Value: XXX" 형식으로 출력됩니다. 이 값을 확인하여 흰색 선과 검은색 바닥에서 센서 값이 어떻게 변하는지 파악하고, 적절한 threshold 값을 설정할 수 있습니다.
---
적외선 센서를 이용하여 검은색 바닥과 흰색 선에서 반사되는 빛의 양을 측정하고, 그 값을 바탕으로 threshold 값을 설정하려면 다음과 같은 준비물이 필요합니다.
1. 하드웨어:
- 아두이노 보드: 아두이노 Uno, Nano, Mega 등 아두이노 보드 (이미 가지고 계시겠죠? 😊)
- 적외선 센서: 흰색 선을 감지할 수 있는 적외선 센서 (예: TCRT5000, GP2Y0A21YK0F)
- 점퍼 와이어: 센서와 아두이노 보드를 연결할 점퍼 와이어
- 브레드보드 (선택 사항): 센서와 아두이노를 연결하기 위한 브레드보드 (납땜 없이 회로를 구성할 수 있어 편리합니다.)
- 흰색 선과 검은색 바닥: 흰색 선과 검은색 바닥이 있는 환경 (실제 경기장과 유사한 환경일수록 좋습니다.)
2. 소프트웨어:
- 아두이노 IDE: 아두이노 코드를 작성하고 업로드하기 위한 아두이노 IDE
측정 방법:
- 회로 연결: 적외선 센서를 아두이노 보드에 연결합니다. 센서의 VCC 핀은 아두이노의 5V 핀에, GND 핀은 GND 핀에, OUT 핀은 아날로그 입력 핀 (예: A0) 에 연결합니다.
- 코드 작성: 센서 값을 읽어 시리얼 모니터에 출력하는 코드를 작성합니다. 예시 코드는 다음과 같습니다.
C++
#define IR_SENSOR_PIN A0 // 적외선 센서 핀 번호
void setup() {
Serial.begin(9600); // 시리얼 통신 초기화
}
void loop() {
int sensorValue = analogRead(IR_SENSOR_PIN); // 센서 값 읽기
Serial.print("Sensor Value: ");
Serial.println(sensorValue); // 센서 값 출력
delay(100); // 잠시 대기
}
코드를 사용할 때는 주의가 필요합니다.
- 코드 업로드: 작성한 코드를 아두이노 보드에 업로드합니다.
- 센서 값 측정:
- 시리얼 모니터를 열어 센서 값을 확인합니다.
- 적외선 센서를 검은색 바닥에 비추고 센서 값을 여러 번 측정합니다.
- 적외선 센서를 흰색 선에 비추고 센서 값을 여러 번 측정합니다.
- 값 기록: 측정한 값들을 기록하고, 검은색 바닥과 흰색 선에서 측정된 값의 차이를 확인합니다.
threshold 값 설정:
측정된 값을 바탕으로 흰색과 검은색을 구분할 수 있는 적절한 threshold 값을 결정합니다. 일반적으로 검은색 바닥에서 측정된 값과 흰색 선에서 측정된 값의 중간값을 사용하지만, 센서의 특성이나 주변 환경에 따라 조정이 필요할 수 있습니다.
이렇게 측정한 값을 바탕으로 threshold 값을 설정하면 로봇이 흰색 선을 정확하게 인식하고, 경기장 환경에 맞게 동작할 수 있도록 프로그래밍할 수 있습니다.
'**Autonomous driving tech. > Learning' 카테고리의 다른 글
[2024자율로봇대회] 아두이노 하드웨어 구성요소 (0) | 2024.11.11 |
---|---|
[2024자율로봇대회] 120도 회전 (0) | 2024.11.11 |
[2024자율로봇대회] TinkerCAD학습 04- IR Sensor (0) | 2024.11.09 |
[2024자율로봇대회] TinkerCAD학습 03-DC motor (1) | 2024.11.09 |
[2024자율로봇대회] TinkerCAD학습 02-Ultrasonic Sensor (0) | 2024.11.09 |