ESP32

프로그래밍 예제를 통해 ESP32 버튼 시작하기

지구빵집 2024. 4. 3. 07:15
반응형

프로그래밍 예제를 통해 ESP32 버튼 시작하기

목차
ESP32 버튼 소개
ESP32 버튼 이해
ESP32 버튼 배선
프로그래밍 예제
결론

ESP32 버튼 소개


ESP32는 다양한 특징과 기능을 제공하는 강력한 마이크로컨트롤러입니다. 주요 기능 중 하나는 버튼과 인터페이스하여 프로젝트에 사용자 입력을 추가할 수 있는 기능입니다. 이 기사에서는 ESP32 버튼 작업의 기본 사항을 살펴보고 시작하는 데 도움이 되는 몇 가지 프로그래밍 예제를 제공합니다.

ESP32 버튼 이해


ESP32 버튼은 일반적으로 프로젝트에서 특정 작업이나 이벤트를 트리거하는 데 사용됩니다. ESP32의 GPIO 핀에 연결할 수 있으며 일반적으로 입력 핀으로 구성됩니다. 버튼을 누르면 회로가 완성되고 마이크로컨트롤러에 신호가 전송되며, 마이크로컨트롤러는 원하는 작업을 수행하는 데 사용될 수 있습니다.


ESP32 버튼은 순간 버튼과 토글 버튼의 두 가지 유형으로 분류할 수 있습니다. 순간 버튼은 누르고 있을 때만 활성화되는 버튼입니다. 버튼을 놓으면 원래 상태로 돌아갑니다. 반면에 토글 버튼은 버튼을 놓은 후에도 다시 누를 때까지 활성 상태를 유지합니다.




ESP32 버튼 배선


프로그래밍 예제를 살펴보기 전에 먼저 ESP32 버튼을 연결하는 방법을 이해해 보겠습니다. 버튼을 ESP32에 연결하려면 버튼의 한쪽 다리를 GPIO 핀에 연결하고 다른 쪽 다리를 접지(GND) 핀에 연결해야 합니다. 안정적인 판독을 보장하기 위해 풀업 또는 풀다운 저항(220ohm)을 추가할 수도 있습니다.

다음은 ESP32 버튼의 배선을 보여주는 간단한 다이어그램입니다.

 

ESP32 버튼 회로도



다이어그램에 묘사된 회로는 ESP32 마이크로 컨트롤러와 풀다운 저항으로 강화된 순간 푸시 버튼 스위치 사이의 간단한 인터페이스입니다. 핵심적으로 ESP32 보드는 Wi-Fi 및 Bluetooth 기능으로 인해 IoT 프로젝트에서 선호되는 강력한 구성 요소이며 다양한 디지털 및 아날로그 기능을 수행할 수 있는 수많은 핀이 장착되어 있습니다.

이 설정에서는 푸시 버튼 스위치가 디지털 입력 역할을 합니다. ESP32에 연결되어 버튼을 누르면 ESP32의 3.3V 전원 공급 장치에서 입력 핀(GPIO 2)으로 전류가 흐르도록 하는 폐쇄 회로가 생성되어 효과적으로 마이크로컨트롤러에 HIGH 신호를 보냅니다. 그런 다음 ESP32에서 이 신호를 읽고 프로그래밍된 응답을 원하는 만큼 트리거할 수 있습니다.

회로에 저항기를 포함시키는 것은 중요한 기능을 수행합니다. 이는 GPIO 핀과 접지 사이에 연결된 풀다운 저항으로 구성됩니다. 그 역할은 버튼을 누르지 않을 때 GPIO 핀을 LOW 로직 레벨로 유지하는 것입니다. 이는 전기적 노이즈로 인해 예측할 수 없는 동작이 발생할 수 있는 핀의 부동을 방지하는 데 중요합니다. 풀다운 저항은 핀에서 안정적이고 정의된 전압(0V)을 보장하여 버튼 상태가 눌려지지 않음에서 눌림으로 변경될 때 ESP32에 명확한 신호를 제공합니다.

배선은 간단합니다. 빨간색 와이어는 ESP32에서 스위치로 전원을 공급하고, 노란색 와이어는 스위치에서 GPIO 핀으로 신호를 전송하며, 검정색 와이어는 풀다운 저항을 접지에 연결합니다. 그 결과 사용자 입력을 위한 안정적이고 반응성이 뛰어난 메커니즘이 탄생했으며, 이는 다양한 전자 프로젝트 및 애플리케이션에서 보다 복잡한 상호 작용을 위한 구성 요소입니다.




프로그래밍 예제


이제 ESP32 버튼과 연결 방법을 잘 이해했으므로 사용법을 보여주기 위해 몇 가지 프로그래밍 예제를 살펴보겠습니다. 이 예제에서는 Arduino IDE를 사용하지만 MicroPython 또는 ESP-IDF와 같은 다른 프로그래밍 플랫폼을 사용할 수도 있습니다.

예제 1: 버튼 상태 읽기
첫 번째 예는 ESP32에 연결된 버튼의 상태를 읽는 방법을 보여줍니다. 버튼입력의 개념을 이해하는데 도움이 되는 기본적인 예제입니다. 코드는 다음과 같습니다.

 

const int buttonPin = 2; // GPIO pin connected to the button 
int buttonState = 0; // variable to store the state of the button 
void setup() { 
  Serial.begin(9600);
pinMode(buttonPin, INPUT); // set the button pin as input
 } 
void loop() { 
  
buttonState = digitalRead(buttonPin); // read the state of the button 

if (buttonState == LOW) {
 // button is pressed 
Serial.println("button Pressed");
 } else { 
// button is not pressed 
Serial.println("button  not Pressed");
} 
}




출력:

 

ESP32 버튼 읽기 버튼 상태가 눌러지지 않음

 


버튼을 누를 때

 

ESP32 버튼이 눌려진 버튼 상태를 읽는 중입니다.

 


이 코드는 버튼 핀을 입력으로 설정하고 루프에서 해당 상태를 지속적으로 읽습니다. 버튼 상태에 따라 프로젝트에서 다양한 작업을 수행하거나 특정 이벤트를 트리거할 수 있습니다.


예제 2: 디바운싱을 사용하여 버튼 상태 읽기
버튼 디바운싱은 정확한 버튼 판독을 보장하는 중요한 기술입니다. 버튼을 누르면 기계적 진동으로 인해 여러 개의 빠른 신호가 생성되는 경우가 있습니다. 이러한 잘못된 판독을 제거하기 위해 코드에서 버튼 디바운싱을 구현할 수 있습니다. 예는 다음과 같습니다.

 

const int buttonPin = 2; // GPIO pin connected to the button
int buttonState = 0; // variable to store the state of the button
int lastButtonState = 0; // variable to store the previous state of the button
unsigned long lastDebounceTime = 0; // variable to store the last time the button was pressed
void setup() {
  Serial.begin(9600);
  pinMode(buttonPin, INPUT); // set the button pin as input
}
void loop() {
  int reading = digitalRead(buttonPin); // read the state of the button
  // debounce the button
  if (reading != lastButtonState) {
    lastDebounceTime = millis();
  }
  if ((millis() - lastDebounceTime) > 50) {
    // update the button state
    if (reading != buttonState) {
      buttonState = reading;
      if (buttonState == LOW) {
        // button is pressed // perform desired action
        Serial.println("button pressed");
      } else {
        // button is not pressed
        Serial.println("button not pressed");
      }
    }
  }
  lastButtonState = reading;
}



출력:

 

버튼 디바운싱을 사용하여 버튼 상태를 읽는 ESP32 버튼

 


이 코드는 시간 지연을 사용하여 디바운스 메커니즘을 구현합니다. 이는 버튼이 일정 시간 동안 안정된 경우에만 버튼 상태가 업데이트되도록 보장하여 기계적 진동으로 인한 잘못된 판독을 방지합니다.


결론


ESP32 버튼은 프로젝트에 사용자 입력을 추가하는 좋은 방법입니다. 배선 및 프로그래밍의 기본 사항을 이해하면 대화형 및 반응형 애플리케이션을 만들 수 있습니다. 이 기사에서는 ESP32 버튼의 기본 사항을 다루고 배선 지침을 제공했으며 두 가지 프로그래밍 예제를 공유했습니다. 이 기사가 ESP32 버튼을 시작하는 데 도움이 되었기를 바랍니다.

 

참고: Getting Started with ESP32 Buttons with Programming Examples

 

 

 

반응형