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×(추천) ESP32용 스크루 터미널 확장 보드 쿠팡 | 아마존
1×(추천) ESP32용 전원 분배기 쿠팡 | 아마존
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.

서보 모터에 관하여

서보 모터는 일반적으로 0도에서 180도까지 핸들을 회전시킬 수 있는 부품입니다. 이는 물체의 위치를 조정하는 데 사용됩니다.

핀아웃

이 예제는 3개의 핀이 있는 서보 모터를 사용하는 방법을 보여줍니다:

  • VCC 핀: 빨간색 전선을 VCC (5볼트)에 연결합니다.
  • GND 핀: 검정색 또는 갈색 전선을 GND (0볼트)에 연결합니다.
  • Signal 핀: 노란색 또는 주황색 전선을 연결하여 ESP32 핀에서 PWM 제어 신호를 받습니다.
서보 모터 핀아웃

선연결

온라인 다이어그램에서는 서보 모터의 VCC 핀과 ESP32 보드의 VBUS 핀 사이에 연결이 있는 것으로 보일 수 있습니다. ESP32 보드가 손상될 수 있으므로 이를 피하십시오.

ESP32 마이크로파이썬 서보 배선 다이어그램

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

ESP32 보드를 안전하게 유지하기 위해 서보모터에는 별도의 전원 공급 장치를 사용하세요. 아래 도표는 서보모터를 해당 전원에 연결하는 방법을 설명합니다.

ESP32 마이크로파이썬 서보 모터 배선도

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

ESP32와 서보 모터를 연결하는 방법

외부 전원 공급 장치의 GND(접지)를 ESP32 보드의 GND와 반드시 연결하십시오. 제대로 작동하기 위해 매우 중요합니다.

ESP32 마이크로파이썬 코드

/* * 이 ESP32 마이크로파이썬 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP32 마이크로파이썬 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp32-micropython/esp32-micropython-servo-motor */ from DIYables_MicroPython_Servo import Servo import utime # Create a Servo object servo = Servo(26) # The ESP32 pin GPIO26 connected to the servo motor while True: # Move servo to different angles servo.move_to_angle(0) utime.sleep(2) servo.move_to_angle(90) utime.sleep(2) servo.move_to_angle(180) utime.sleep(2)

자세한 사용 방법

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

  • 컴퓨터에 Thonny IDE가 설치되어 있는지 확인하십시오.
  • ESP32 보드에 MicroPython 펌웨어가 로드되었는지 확인하십시오.
  • MicroPython이 포함된 ESP32를 처음 사용하는 경우, 단계별 지침을 위해 ESP32 마이크로파이썬 - 시작하기 가이드를 확인하십시오.
  • 제공된 다이어그램에 따라 ESP32 보드를 서보 모터에 연결하십시오.
  • USB 케이블을 사용하여 ESP32 보드를 컴퓨터에 연결하십시오.
  • 컴퓨터에서 Thonny IDE를 실행하십시오.
  • Thonny IDE에서 도구 옵션으로 이동하십시오.
  • 인터프리터 탭에서 드롭다운 메뉴에서 MicroPython (ESP32)를 선택하십시오.
  • 올바른 포트가 선택되어 있는지 확인하십시오. Thonny IDE는 보통 자동으로 포트를 감지하지만, 수동으로 선택해야 할 수도 있습니다 (예: Windows에서는 COM12, Linux에서는 /dev/ttyACM0와 같이).
  • Thonny IDE에서 도구 패키지 관리로 이동하십시오.
  • “DIYables-MicroPython-Servo”를 검색한 다음, DIYables에서 만든 서보 모터 라이브러리를 찾으십시오.
  • DIYables-MicroPython-Servo를 클릭한 후, Install 버튼을 클릭하여 서보 모터 라이브러리를 설치하십시오.
ESP32 마이크로파이썬 서보 모터 라이브러리
  • 제공된 MicroPython 코드를 복사하여 Thonny 에디터에 붙여넣습니다.
  • 코드를 ESP32에 저장하려면:
    • Save 버튼을 클릭하거나 Ctrl+S를 누릅니다.
    • 저장 대화상자에서 MicroPython device를 선택합니다.
    • 파일 이름을 main.py로 지정합니다.
  • 초록색 Run 버튼을 클릭하거나 (또는 F5를 눌러) 스크립트를 실행합니다.
  • 서보 모터를 관찰합니다: 서보 모터가 0도에서 180도까지 천천히 회전한 후, 다시 180도에서 0도로 서서히 돌아갑니다.

코드 설명

위 ESP32 MicroPython 코드의 주석 영역에서 설명을 찾을 수 있습니다.

서보 모터 속도 제어 방법

아래의 MicroPython 스크립트는 ESP32에서 서보를 제어하여 프로그램을 차단하지 않고 각도 사이를 부드럽게 전환합니다. 이 스크립트는 타이밍을 위해 utime을 사용하며, 다른 작업에 대한 메인 루프의 반응성을 유지하면서 주기적으로 서보의 위치를 업데이트합니다.

/* * 이 ESP32 마이크로파이썬 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP32 마이크로파이썬 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp32-micropython/esp32-micropython-servo-motor */ from DIYables_MicroPython_Servo import Servo import utime # Create a Servo object servo = Servo(26) # The ESP32 pin GPIO26 connected to the servo motor # Define the start and stop angles and the duration for the movement start_angle = 30 stop_angle = 90 moving_time = 3000 # Duration in milliseconds # Function to map the progress to an angle 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 # Initial setup with timer move_start_time = utime.ticks_ms() # Main loop while True: progress = utime.ticks_diff(utime.ticks_ms(), move_start_time) # Calculate elapsed time since start if progress <= moving_time: # Calculate intermediate servo angle angle = map_value(progress, 0, moving_time, start_angle, stop_angle) servo.move_to_angle(angle) # Set servo position to calculated angle else: # Optionally, restart the motion or break the loop move_start_time = utime.ticks_ms() # Reset the timer to start the motion again

동영상

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