ESP32 - 포텐쇼미터 | ESP32 - Potentiometer
이 튜토리얼은 여러분에게 ESP32를 포텐쇼미터와 함께 사용하는 방법을 안내합니다. 구체적으로, 우리는 다음을 학습할 것입니다:
- 전위차계의 작동 원리
- ESP32를 전위차계와 인터페이싱하는 방법
- ESP32가 전위차계에서 값을 읽어들이는 프로그래밍 방법
- 전위차계에서 읽은 값을 유용한 값으로 변환하는 방법
준비물
1 | × | ESP-WROOM-32 Dev Module | 쿠팡 | Amazon | |
1 | × | USB Cable Type-C | 쿠팡 | Amazon | |
1 | × | Potentiometer | 쿠팡 | Amazon | |
1 | × | Breadboard | 쿠팡 | Amazon | |
1 | × | Jumper Wires | Amazon | |
1 | × | (Optional) DC Power Jack | 쿠팡 | Amazon | |
1 | × | (Recommended) Screw Terminal Expansion Board for ESP32 | 쿠팡 | Amazon |
포텐쇼미터에 대하여
포텐쇼미터(회전 각도 센서로도 알려짐)는 설정을 변경하는 데 사용됩니다(예: 스피커의 볼륨, 방의 온도, 램프의 밝기 등).
포텐쇼미터 핀배열
포텐쇼미터는 보통 3개의 핀을 가지고 있습니다:
- VCC 핀: 이 핀을 VCC(5V 또는 3.3V)에 연결하세요.
- GND 핀: 이 핀을 GND(0V)에 연결하세요.
- 출력 핀: 이 핀에서 ESP32의 입력 핀으로 전압을 출력합니다.
※ NOTE THAT:
GND 핀과 VCC 핀은 서로 교환할 수 있습니다.
전위차계의 작동 원리
포텐쇼미터의 축은 0°(GND 핀에 가장 가까움)에서 VCC 핀에 가장 가까운 각도인 ANGLE_MAX까지 회전할 수 있습니다.
출력 핀의 전압은 축의 각도 위치에 직접적으로 비례하여 0에서 VCC까지 변화합니다. 아래 표는 각도와 출력 핀의 전압 사이의 관계를 보여줍니다:
Angle | Voltage |
---|---|
0° | 0v |
ANGLE_MAX° | VCC |
angle° | angle° × VCC / ANGLE_MAX° |
※ NOTE THAT:
ANGLE_MAX 값은 제조업체에 따라 다릅니다.
ESP32 - 로터리 포텐쇼미터
ESP32의 아날로그 입력 핀은 전압(0V와 3.3V 사이)을 정수 값(0부터 4095 사이)으로 변환합니다. 이것을 ADC 값 또는 아날로그 값이라고 합니다.
우리는 가변저항의 출력 핀을 ESP32의 아날로그 입력 핀에 연결한 다음, 핀에서 아날로그 값을 읽을 수 있습니다.
입력 핀에서의 아날로그 값을 다른 값으로 재조정할 수 있습니다. 사용 사례를 살펴봅시다:
- 아날로그 값을 포텐쇼미터의 각도에 맞게 재조정하세요.
- 아날로그 값을 포텐쇼미터의 전압에 맞게 재조정하세요.
- 아날로그 값을 설정 값(예: 스피커의 볼륨, 방의 온도, 램프의 밝기 등)에 맞게 재조정하세요.
범위 재조정
FROM | TO | |||
---|---|---|---|---|
Angle | rotated by user | 0° | → | ANGLE_MAX° |
Voltage | from potentiometer's pin | 0V | → | 3.3V |
ADC value | read by ESP32 | 0 | → | 4095 |
Setting value | converted by ESP32 | VALUE_MIN | → | VALUE_MAX |
포텐쇼미터와 ESP32 사이의 배선도
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
ESP32 및 다른 구성 요소에 전원을 공급하는 방법에 대해 잘 알지 못하는 경우, 다음 튜토리얼에서 안내를 찾을 수 있습니다: ESP32 전원 공급 방법.
포텐쇼미터를 프로그래밍하는 방법
analogRead() 함수를 사용하여 포텐쇼미터의 출력 핀에 연결된 입력 핀에서 값을 읽습니다.
맵(map) 함수를 사용하여 포텐쇼미터의 각도에 맞게 재조정하세요.
포텐쇼미터의 전압에 맞게 재조정하세요.
제어 가능한 값으로 재조정하기 (예: 스테레오 볼륨, 밝기, 직류 모터의 속도 등)
예를 들어, LED의 밝기에 맞게 다시 조정하는 것입니다. 이 튜토리얼에서 언급한 바와 같이, LED의 밝기는 0 (항상 꺼짐)부터 255 (항상 켜짐)까지의 PWM 값으로 조절할 수 있습니다. 따라서, 우리는 아날로그 값을 다음과 같이 LED의 밝기(꺼짐에서 가장 밝은 상태까지)에 매핑할 수 있습니다:
만약 당신이 밤 불빛에서 가장 밝은 빛까지 LED의 밝기를 조절하고 싶다면,
※ NOTE THAT:
map() 함수는 아날로그 값을 int 또는 long 유형 값으로 재조정하는 데에만 사용될 수 있습니다. 제어 가능한 값이 float 유형이라면, map() 함수 대신 floatMap() 함수를 사용해야 합니다.
floatMap() 함수:
ESP32 코드
사용 방법
- ESP32를 처음 사용하는 경우, Arduino IDE에서 ESP32 환경 설정하는 방법을 참조하세요.
- 위의 코드를 복사하여 Arduino IDE에 붙여넣으세요.
- Arduino IDE에서 Upload 버튼을 클릭하여 ESP32 보드에 코드를 컴파일하고 업로드하세요.
아두이노 IDE에서 시리얼 모니터 열기
- 전위차계를 회전시키세요.
- 시리얼 모니터에서 결과를 확인하세요. 아래와 같습니다:
동영상
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.