**Autonomous driving tech./Learning

[2024자율로봇대회] IR Sensor 흰색,검정색 탐지 후 측정값

2wnswoo 2024. 11. 10. 21:02

시리얼 모니터는 아두이노 IDE에 내장된 기능으로, 아두이노와 컴퓨터 간에 텍스트 기반으로 데이터를 주고받을 수 있는 도구입니다. 쉽게 말해, 아두이노에서 측정한 값이나 메시지를 컴퓨터 화면에 표시하고, 컴퓨터에서 아두이노로 명령을 전송할 수 있는 창입니다.

시리얼 모니터의 주요 기능:

  • 데이터 확인: 아두이노에서 센서 값, 변수 값, 디버깅 메시지 등을 Serial.print() 함수를 이용하여 시리얼 모니터에 출력하여 확인할 수 있습니다.
  • 명령 전송: 컴퓨터에서 시리얼 모니터를 통해 아두이노로 텍스트 명령을 전송하여 아두이노의 동작을 제어할 수 있습니다.
  • 통신 설정: 시리얼 통신 속도 (baud rate) 를 설정하여 아두이노와 컴퓨터 간의 통신 속도를 맞춰야 합니다. 일반적으로 9600 baud rate를 사용합니다.

센서 값 측정에서 시리얼 모니터 활용:

적외선 센서 값을 측정할 때 시리얼 모니터를 사용하면 다음과 같은 이점이 있습니다.

  • 실시간 값 확인: 센서에서 측정되는 값을 실시간으로 확인하여 흰색 선과 검은색 바닥에서 센서 값이 어떻게 변하는지 파악할 수 있습니다.
  • threshold 값 설정: 시리얼 모니터에 출력되는 센서 값을 보고 흰색과 검은색을 구분할 수 있는 적절한 threshold 값을 결정할 수 있습니다.
  • 디버깅: 센서 값이 예상과 다르게 출력될 경우, 시리얼 모니터를 통해 문제를 파악하고 해결할 수 있습니다.

시리얼 모니터 사용 방법:

  1. 아두이노 IDE에서 툴 메뉴 > 시리얼 모니터를 클릭하거나, 오른쪽 상단의 돋보기 아이콘을 클릭합니다.
  2. 시리얼 모니터 창에서 아두이노 보드와 연결된 포트를 선택하고, baud rate를 아두이노 코드에서 설정한 값과 동일하게 설정합니다.
  3. 아두이노 코드에서 Serial.print() 함수를 사용하여 센서 값을 출력합니다.
  4. 시리얼 모니터 창에서 출력되는 센서 값을 확인합니다.

예시 코드:

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

측정 방법:

  1. 회로 연결: 적외선 센서를 아두이노 보드에 연결합니다. 센서의 VCC 핀은 아두이노의 5V 핀에, GND 핀은 GND 핀에, OUT 핀은 아날로그 입력 핀 (예: A0) 에 연결합니다.
  2. 코드 작성: 센서 값을 읽어 시리얼 모니터에 출력하는 코드를 작성합니다. 예시 코드는 다음과 같습니다.
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); // 잠시 대기
}
코드를 사용할 때는 주의가 필요합니다.
 
  1. 코드 업로드: 작성한 코드를 아두이노 보드에 업로드합니다.
  2. 센서 값 측정:
    • 시리얼 모니터를 열어 센서 값을 확인합니다.
    • 적외선 센서를 검은색 바닥에 비추고 센서 값을 여러 번 측정합니다.
    • 적외선 센서를 흰색 선에 비추고 센서 값을 여러 번 측정합니다.
  3. 값 기록: 측정한 값들을 기록하고, 검은색 바닥과 흰색 선에서 측정된 값의 차이를 확인합니다.

threshold 값 설정:

측정된 값을 바탕으로 흰색과 검은색을 구분할 수 있는 적절한 threshold 값을 결정합니다. 일반적으로 검은색 바닥에서 측정된 값과 흰색 선에서 측정된 값의 중간값을 사용하지만, 센서의 특성이나 주변 환경에 따라 조정이 필요할 수 있습니다.

이렇게 측정한 값을 바탕으로 threshold 값을 설정하면 로봇이 흰색 선을 정확하게 인식하고, 경기장 환경에 맞게 동작할 수 있도록 프로그래밍할 수 있습니다.