Search Code

ESP32 튜토리얼 19/55 - 적외선 센서를 사용한 장애물 감지 | SunFounder의 ESP32 IoT 학습 키트

ESP32 튜토리얼 19/55 - 적외선 센서를 사용한 장애물 감지 | SunFounder의 ESP32 IoT 학습 키트

이 튜토리얼에서는 ESP32 모듈과 적외선 장애물 회피 센서를 사용하여 장애물을 감지하는 방법을 배우겠습니다. 이 프로젝트는 장애물이 감지되었을 때 센서가 부저를 울리게 하는 방법을 보여줍니다. 또한 설정은 직렬 모니터에 감지 상태를 표시하여 센서의 기능을 명확하고 상호작용적으로 관찰할 수 있는 방법을 제공합니다.

우리는 Wi-Fi 및 Bluetooth 기능을 갖춘 ESP32 마이크로컨트롤러가 포함된 SunFounder ESP32 IoT 학습 키트를 사용할 것입니다. 적외선 센서는 적외선 빛을 방출하여 근처의 장애물에 반사됩니다. 빛이 반사되어 돌아오면 센서는 코드에서 읽을 출력 신호를 트리거합니다. 또한 장애물이 감지될 때 활성화되어 청각적 경고를 제공하는 부저도 포함할 것입니다.

하드웨어 설명

이 프로젝트의 주요 구성 요소는 ESP32 모듈, 적외선 장애물 회피 센서 및 부저입니다. ESP32 모듈은 중앙 처리 장치 역할을 하여 센서 입력을 처리하고 출력을 제어합니다. 리튬 배터리로 전원을 공급할 수 있어 다양한 응용 분야에 휴대성과 유연성을 제공합니다.

적외선 장애물 회피 센서는 송신기와 수신기로 구성됩니다. 송신기는 적외선 빛을 방출하고, 수신기는 근처 물체에서 반사된 빛을 감지합니다. 장애물이 있으면 센서의 출력 핀이 낮아져 ESP32에 부저를 켜는 등의 조치를 취하도록 신호를 보냅니다.

데이터시트 세부 정보

제조업체SunFounder
부품 번호적외선 장애물 회피 센서
작동 전압3.3V - 5V
출력 유형디지털(장애물 감지 시 낮음)
감지 범위최대 20cm
응답 시간10ms 미만
패키지모듈

  • 전원 공급: 작동을 위해 3.3V ~ 5V.
  • 장애물이 감지되면 출력 신호가 낮아집니다.
  • 가변 저항을 통해 감도 조절 가능.
  • 일반적인 감지 범위는 최대 20cm입니다.
  • 10ms 미만의 빠른 응답 시간.

배선 지침

ESP32-19-obstacle_voide-wiring

적외선 장애물 회피 센서를 ESP32에 배선하려면 먼저 센서의 VCC 핀을 ESP32의 5V 핀에 연결하세요. 다음으로 센서의 GND 핀을 ESP32의 GND 핀 중 하나에 연결하세요. 마지막으로 센서의 OUT 핀을 ESP32의 GPIO 핀 14에 연결하세요.

부저의 경우 음극 단자를 GND에 연결하고 양극 단자를 GPIO 핀 27에 연결하세요. 모든 연결이 안전하고 센서가 올바르게 전원이 공급되는지 확인하세요. 센서와 부저는 간단한 전원 및 신호 연결만 필요하므로 배선은 간단해야 합니다.

코드 예제 및 설명

코드에서 먼저 장애물 회피 센서에 연결된 핀을 정의합니다. 이는 avoidPin 식별자를 14로 설정하여 수행됩니다. 또한 센서의 출력 상태를 저장할 변수 avoidState를 선언합니다.

const int avoidPin = 14;  // 회피 모듈 핀 번호

int avoidState = 0;

설정 함수에서 직렬 통신을 초기화하고 avoidPin을 입력으로 설정합니다. 이를 통해 ESP32가 센서의 출력 상태를 읽을 수 있습니다.

void setup() {
  Serial.begin(115200);  
  pinMode(avoidPin, INPUT);
}

루프 함수 내에서 digitalRead(avoidPin)을 사용하여 센서의 출력을 지속적으로 읽고 결과를 avoidState에 저장합니다. 이 값은 직렬 모니터에 출력되어 장애물이 감지되었을 때(출력 0) 또는 감지되지 않았을 때(출력 1)를 확인할 수 있습니다.

void loop() {
  avoidState = digitalRead(avoidPin);
  Serial.println(avoidState);
}

전체 코드는 기사 아래의 로딩 섹션을 참조하세요.

시연 / 예상 결과

설정이 완료되고 코드가 업로드되면 직렬 모니터에 장애물 감지 여부에 따라 0 또는 1이 표시되는 것을 볼 수 있습니다. 장애물이 감지 범위 내에 있으면 출력이 0으로 읽히고 부저가 울립니다. 장애물이 제거되면 출력이 1로 읽히고 부저가 멈춥니다. 이 기능은 비디오(비디오 12:30)에서 시연됩니다.

일반적인 문제로는 잘못된 배선으로 인해 센서가 제대로 작동하지 않거나, 직렬 모니터의 보드율이 일치하지 않아 데이터가 정확히 표시되지 않는 경우가 있습니다. 문제가 발생하면 이러한 측면을 확인하세요.

비디오 타임스탬프

  • 00:00 시작
  • 1:57 프로젝트 소개
  • 4:33 장애물 회피 배선
  • 5:55 장애물 회피를 위한 Arduino 코드
  • 7:36 Arduino IDE에서 ESP32 보드 및 COM 포트 선택
  • 9:18 프로젝트 시연
  • 10:42 감도 조정 및 범위 증가
  • 12:39 장애물 감지 시 조치
  • 14:24 장애물 감지 시 부저 사용

이미지

ESP32-19-obstacle_voide-schematic
ESP32-19-obstacle_voide-schematic
ESP32-19-obstacle_voide-wiring
ESP32-19-obstacle_voide-wiring
818-ESP32 Tutorial 19/55- Arduino code for obstacle avoidance module
언어: C++
// set pin
const int avoidPin = 14;  // the number of the avoid avoid module pin

// variable for storing the avoid status 
int avoidState = 0;

void setup() {
  Serial.begin(115200);  
  // initialize the avoid pin as an input
  pinMode(avoidPin, INPUT);
}

void loop() {
  // read the state of the avoid value
  avoidState = digitalRead(avoidPin);
  Serial.println(avoidState);
}

자원 및 참고자료

파일📁

파일이 없습니다.