이 튜토리얼에서는 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가 센서의 출력 상태를 읽을 수 있습니다.
설정이 완료되고 코드가 업로드되면 직렬 모니터에 장애물 감지 여부에 따라 0 또는 1이 표시되는 것을 볼 수 있습니다. 장애물이 감지 범위 내에 있으면 출력이 0으로 읽히고 부저가 울립니다. 장애물이 제거되면 출력이 1로 읽히고 부저가 멈춥니다. 이 기능은 비디오(비디오 12:30)에서 시연됩니다.
일반적인 문제로는 잘못된 배선으로 인해 센서가 제대로 작동하지 않거나, 직렬 모니터의 보드율이 일치하지 않아 데이터가 정확히 표시되지 않는 경우가 있습니다. 문제가 발생하면 이러한 측면을 확인하세요.
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);
}