3주차: ESP32 GPIO 입출력 실습 - dhryu60/SmartDevice_2025-1 GitHub Wiki
📌 3주차: ESP32 GPIO 입출력 실습
📖 1장: 강의 개요
- 목표: ESP32의 GPIO를 활용하여 디지털 및 아날로그 입출력을 실습한다.
- 핵심 개념: GPIO, 디지털 입력/출력, 아날로그 입력/출력, PWM, ADC
- 실습 장비: ESP32 개발 보드, LED 모듈, 버튼 모듈, 가변 저항, 점퍼 케이블
📖 2장: ESP32의 GPIO란?
- GPIO (General Purpose Input Output)란?
- 다목적 입출력 핀으로, 디지털 신호를 입력받거나 출력할 수 있다.
- ESP32는 최대 34개의 GPIO 핀을 제공한다.
- GPIO 핀의 역할
- 디지털 입력/출력 (HIGH, LOW)
- 아날로그 입력 (ADC)
- PWM 출력 (LED 밝기 조절, 모터 속도 조절)
📖 3장: ESP32의 GPIO 핀 구성
- 사용 가능한 핀
- 대부분의 GPIO 핀은 자유롭게 사용할 수 있다.
- 단, 일부 핀은 특정 기능이 예약되어 있다.
- 입력 전용 핀: GPIO 34, 35, 36, 39
- PWM/DAC 출력 가능 핀
- PWM: GPIO 0-19, 21-23, 25-27, 32-33
- DAC: GPIO 25, 26
- Wi-Fi 사용 시 제한되는 핀: ADC2 핀 (GPIO 4, 0, 2, 15, 13, 12, 14, 27, 25, 26)
📖 4장: 디지털 출력 – LED 켜고 끄기
- 디지털 출력이란?
- GPIO 핀을 HIGH(1) 또는 LOW(0)로 설정하여 전자 장치를 제어하는 방식.
- 실습 목표:
- ESP32를 이용하여 LED를 제어해 보자.
📖 5장: 디지털 출력 회로 연결
📌 필요한 부품
✅ ESP32 보드
✅ LED 모듈
✅ 점퍼 케이블
📌 회로 연결 방법
- ESP32 GPIO 4 → LED 모듈 S
- ESP32 GND → LED 모듈 G
- ESP32 3.3V → LED 모듈 V
📖 6장: 디지털 출력 코드 작성
#define LED_PIN 4
void setup() {
pinMode(LED_PIN, OUTPUT); // LED 핀을 출력으로 설정
}
void loop() {
digitalWrite(LED_PIN, HIGH); // LED 켜기
delay(1000); // 1초 대기
digitalWrite(LED_PIN, LOW); // LED 끄기
delay(1000); // 1초 대기
}
📖 7장: 아날로그 출력(PWM) – LED 밝기 조절
PWM(Pulse Width Modulation)란?
- 디지털 신호를 일정한 비율로 조절하여 아날로그처럼 동작하게 하는 방식.
- LED 밝기 조절, 모터 속도 제어 등에 사용된다. ESP32의 PWM 기능
- 0~255 값 범위 설정 가능 (LED 밝기 조절)
📖 8장: 아날로그 출력 회로 연결
📌 필요한 부품
✅ ESP32 보드
✅ LED 모듈
✅ 점퍼 케이블
📌 회로 연결 방법
- ESP32 GPIO 4 → LED 모듈 S
- ESP32 GND → LED 모듈 G
- ESP32 3.3V → LED 모듈 V
📖 9장: 아날로그 출력 코드 작성
#define LED_PIN 4
void setup() {
pinMode(LED_PIN, OUTPUT);
}
void loop() {
for (int brightness = 0; brightness <= 255; brightness++) {
analogWrite(LED_PIN, brightness);
delay(10);
}
for (int brightness = 255; brightness >= 0; brightness--) {
analogWrite(LED_PIN, brightness);
delay(10);
}
}
📖 10장: 디지털 입력 – 버튼을 이용한 LED 제어
디지털 입력이란?
- 버튼, 스위치와 같은 장치에서 HIGH(1) 또는 LOW(0)를 감지하는 방식.
실습 목표:
- 버튼을 누르면 LED가 켜지고, 놓으면 꺼지는 기능 구현.
📖 11장: 디지털 입력 회로 연결
📌 필요한 부품
✅ ESP32 보드
✅ LED 모듈
✅ 버튼 모듈
✅ 점퍼 케이블
📌 #회로 연결 방법#
- ESP32 GPIO 4 → LED 모듈 S
- ESP32 GND → LED 모듈 G
- ESP32 GPIO 33 → 버튼 모듈 S
- ESP32 GND → 버튼 모듈 G
📖 12장: 디지털 입력 코드 작성
#define LED_PIN 4
#define BUTTON_PIN 33
void setup() {
pinMode(LED_PIN, OUTPUT);
pinMode(BUTTON_PIN, INPUT);
}
void loop() {
if (digitalRead(BUTTON_PIN) == HIGH) {
digitalWrite(LED_PIN, HIGH);
} else {
digitalWrite(LED_PIN, LOW);
}
}
📖 13장: 아날로그 입력 – 가변 저항을 이용한 LED 밝기 조절
아날로그 입력이란?
- 0~4095 범위의 값을 읽어 다양한 센서 데이터를 처리하는 방식.
실습 목표:
- 가변 저항을 사용하여 LED 밝기를 조절해 보자.
📖 14장: 아날로그 입력 회로 연결
📌 필요한 부품
✅ ESP32 보드
✅ LED 모듈
✅ 가변 저항
✅ 점퍼 케이블
📌 회로 연결 방법
- ESP32 GPIO 4 → LED 모듈 S
- ESP32 GND → LED 모듈 G
- ESP32 GPIO 34 → 가변 저항 S
- ESP32 3.3V → 가변 저항 V
- ESP32 GND → 가변 저항 G
📖 15장: 아날로그 입력 코드 작성
#define LED_PIN 4
#define POT_PIN 34
void setup() {
pinMode(LED_PIN, OUTPUT);
}
void loop() {
int potValue = analogRead(POT_PIN); // 0~4095 범위의 값 읽기
int brightness = map(potValue, 0, 4095, 0, 255);
analogWrite(LED_PIN, brightness);
}
📖 16장: ESP32 GPIO 실습 정리
- 디지털 출력: LED 켜고 끄기
- 아날로그 출력: PWM을 이용한 LED 밝기 조절
- 디지털 입력: 버튼을 이용한 LED 제어
- 아날로그 입력: 가변 저항을 이용한 LED 밝기 조절
📖 17장: 실습 결과 확인
✅ 버튼을 누르면 LED가 켜지는지 확인하라.
✅ 가변 저항을 돌려 LED 밝기가 조절되는지 확인하라.
✅ PWM을 이용한 LED 밝기 변화가 부드러운지 확인하라.
📖 18장: 추가 실습
🔹 두 개의 버튼을 이용하여 LED 밝기를 증가/감소시키는 코드를 작성해 보아라.
🔹 아날로그 입력을 이용하여 온도 센서 값을 읽고 표시해 보아라.
📖 19장: 질의응답
궁금한 사항?
📖 20장: 다음 주 예고
🔹 4주차: ESP32 Wi-Fi & Bluetooth 실습
- 0~255 값 범위 설정 가능 (LED 밝기 조절)