ESP32 마이크로파이썬 포텐셔미터

이 튜토리얼은 ESP32와 MicroPython을 사용하여 가변저항기를 사용하는 방법을 보여줍니다. 자세히는, 다음 내용을 배웁니다:

ESP32 마이크로파이썬 가변저항

준비물

1×ESP32 ESP-WROOM-32 개발 모듈 쿠팡 | 아마존
1×USB 케이블 타입-A to 타입-C (USB-A PC용) 쿠팡 | 아마존
1×USB 케이블 타입-C to 타입-C (USB-C PC용) 아마존
1×포텐셔미터 쿠팡 | 아마존
1×노브가 있는 포텐셔미터 모듈 쿠팡 | 아마존
1×브레드보드 쿠팡 | 아마존
1×점퍼케이블 쿠팡 | 아마존
1×(추천) ESP32용 스크루 터미널 확장 보드 쿠팡 | 아마존
1×(추천) ESP32용 전원 분배기 쿠팡 | 아마존
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.

포텐셔미터에 대하여

회전식 포텐셔미터, 즉 회전각 센서라고도 불리는 이 장치는 스테레오 볼륨, 램프 밝기 또는 오실로스코프의 확대 정도와 같이 설정을 수동으로 조정하는 데 사용됩니다.

포텐셔미터 핀아웃

핀아웃

포텐셔미터는 보통 세 개의 핀을 가지고 있습니다.

  • GND 핀: GND (0 볼트)에 연결
  • VCC 핀: VCC (5 볼트 또는 3.3 볼트)에 연결
  • 출력 핀: ESP32의 입력 핀으로 전압 전송
포텐셔미터 핀아웃

※ 주의:

GND 핀과 VCC 핀의 위치를 바꿀 수 있습니다.

작동 원리

포텐셔미터의 샤프트는 GND 근처의 0도에서 VCC 핀 근처에 위치한 최대 위치인 ANGLE_MAX까지 회전합니다.

출력 핀의 전압은 접지(GND) 전압부터 공급 전압(VCC)까지 범위입니다. 축을 회전시키면 출력 전압이 그에 따라 변화합니다.

  • 각도가 0도이면 출력 핀에 전압이 없습니다 (0 볼트).
  • 각도가 ANGLE_MAX이면 출력 핀의 전압은 VCC의 전압과 동일합니다.
  • 0도와 ANGLE_MAX 사이의 각도에 대해서는 출력 전압을 다음과 같이 계산합니다: angle × VCC / ANGLE_MAX.

※ 주의:

ANGLE_MAX의 값은 제조사에 따라 달라집니다. 일반적으로 회전각을 계산할 필요가 없는 한, ANGLE_MAX의 값에 주목하지 않습니다 (사용 사례 섹션 참조).

포텐쇼미터 작동 원리

ESP32 - 회전식 포텐셔미터

ESP32의 ADC 핀은 아날로그 입력으로 작동할 수 있으며, 0볼트에서 VCC까지의 전압 범위를 0부터 4095 사이의 정수로 변환합니다. 이러한 숫자들은 ADC 값 또는 아날로그 값이라고 합니다.

포텐셔미터의 출력 핀을 ESP32의 아날로그 입력 핀 중 하나에 연결하면 ESP32가 ADC 값을 읽어 사용 가능한 숫자로 변환할 수 있습니다.

ESP32에서 얻은 숫자는 각도나 직접적인 전압이 아니라 0부터 4095 사이의 정수입니다. 이 값은 특정 애플리케이션에 필요한 경우 다른 범위로 매핑되거나 변환될 수 있습니다.

사용 사례

  • ADC 값을 각도로 변환합니다.
  • ADC 값을 전압으로 변환합니다.
  • ADC 값을 조절 가능한 값(예: 스테레오의 볼륨, 밝기, 모터의 속도)으로 변환합니다. 이는 가장 일반적인 사용 사례입니다.

범위 재조정

FROM TO
Anglerotated by userANGLE_MAX
Voltagefrom potentiometer's pin 0V3.3V
ADC valueread by ESP32 04095
Other valueconverted by ESP32 VALUE_MINVALUE_MAX

선연결

  • ESP32와 포텐셔미터를 브레드보드를 사용하여 연결하는 방법
ESP32 마이크로파이썬 포텐쇼미터 배선 다이어그램

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

ESP32와 포텐쇼미터를 연결하는 방법

ESP32 MicroPython 코드

/* * 이 ESP32 마이크로파이썬 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP32 마이크로파이썬 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp32-micropython/esp32-micropython-potentiometer */ from machine import ADC, Pin import time # Define a function to map a value from one range to another def map_value(x, in_min, in_max, out_min, out_max): return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min # Initialize the analog pin for reading adc = ADC(Pin(36)) # The ESP32 pin GPIO36 (ADC0) connected to the light sensor # Set the ADC width (resolution) to 12 bits adc.width(ADC.WIDTH_12BIT) # Set the attenuation to 11 dB, allowing input range up to ~3.3V adc.atten(ADC.ATTN_11DB) # Infinite loop while True: # Retrieve analog value from pin A0: adc_value = adc.read() # Convert the analog value to a voltage (0-3.3V range): voltage = map_value(adc_value, 0, 4095, 0, 3.3) # Output the analog value and corresponding voltage to the console: print("Analog: {}, Voltage: {:.2f}V".format(adc_value, voltage)) # Wait for a second before repeating the loop: time.sleep(1)

자세한 사용 방법

ESP32에서 Thonny IDE를 사용하여 MicroPython 코드를 설정하고 실행하는 방법에 대한 지침은 다음과 같습니다:

  • 컴퓨터에 Thonny IDE가 설치되어 있는지 확인하세요.
  • ESP32 보드에 MicroPython 펌웨어가 로드되어 있는지 확인하세요.
  • MicroPython이 탑재된 ESP32를 처음 사용하는 경우, 단계별 안내를 위해 ESP32 마이크로파이썬 - 시작하기 가이드를 확인하세요.
  • 제공된 도표에 따라 ESP32 보드를 포텐셔미터에 연결하세요.
  • ESP32 보드를 USB 케이블로 컴퓨터에 연결하세요.
  • 컴퓨터에서 Thonny IDE를 실행하세요.
  • Thonny IDE에서 도구 옵션으로 이동하세요.
  • 인터프리터 탭에서 드롭다운 메뉴에서 MicroPython (ESP32)을 선택하세요.
  • 올바른 포트를 선택했는지 확인하세요. Thonny IDE가 보통 자동으로 감지하지만, 수동으로 선택해야 할 수도 있습니다 (예: Windows의 COM12 또는 Linux의 /dev/ttyACM0).
  • 제공된 MicroPython 코드를 복사하여 Thonny 편집기에 붙여넣으세요.
  • ESP32에 코드를 저장하려면:
    • 저장 버튼을 클릭하거나 Ctrl+S를 누릅니다.
    • 저장 대화상자에서 MicroPython 장치를 선택하세요.
    • 파일 이름을 main.py로 지정하세요.
  • 스크립트를 실행하려면 초록색 실행 버튼을 클릭하거나 F5를 누르세요.
  • 포텐셔미터를 조절하세요.
  • Thonny 하단의 쉘에서 메시지를 확인하세요.
Shell x
>>> %Run -c $EDITOR_CONTENT
MPY: soft reboot Analog: 0, Voltage: 0.00V Analog: 0, Voltage: 0.00V Analog: 504, Voltage: 0.41V Analog: 1124, Voltage: 0.91V Analog: 2068, Voltage: 1.67V Analog: 3016, Voltage: 2.43V Analog: 3624, Voltage: 2.92V Analog: 4092, Voltage: 3.30V Analog: 4092, Voltage: 3.30V
MicroPython (ESP32) • CP2102 USB To UART Bridge Controller @ COM12 ≡

※ 주의:

이 튜토리얼에서는 가변 저항기에 연결된 ADC(아날로그-디지털 변환기)에서 값을 읽기 위해 adc.read() 함수를 사용하는 방법을 보여줍니다. ESP32의 ADC는 높은 정밀도가 필요 없는 프로젝트에 적합합니다. 그러나 프로젝트에 정확한 측정이 필요한 경우 다음 사항을 유념해야 합니다:

  • ESP32 ADC는 완벽하게 정확하지 않으며 정밀한 결과를 위해 보정이 필요할 수 있습니다. 각 ESP32 보드는 약간씩 다를 수 있으므로 개별 보드마다 보정이 필요합니다.
  • 보정은 특히 초보자에게 어려울 수 있으며 항상 원하는 정확한 결과를 얻을 수 있는 것은 아닙니다.

높은 정밀도가 요구되는 프로젝트의 경우, ESP32와 함께 외부 ADC(예: ADS1115)를 사용하거나 보다 신뢰할 수 있는 ADC를 가진 Arduino를 사용하는 것을 고려해 보십시오. ESP32 ADC를 보정하려는 경우, ESP32 ADC 보정 드라이버를 참조하십시오.

동영상

비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.

관련 튜토리얼