라즈베리 파이 피코 서보 모터

이 가이드는 Raspberry Pi Pico를 사용하여 서보 모터를 작동하는 방법을 보여줍니다. 다룰 내용은 다음과 같습니다:

라즈베리 파이 피코 서보 모터

준비물

1×라즈베리 파이 피코 W 아마존
1×라즈베리 파이 피코 (또는) 아마존
1×마이크로 USB 케이블 아마존
1×서보 모터 쿠팡 | 아마존
1×점퍼케이블 쿠팡 | 아마존
1×(추천) 라즈베리 파이 피코용 스크루 터미널 확장 보드 아마존
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.

서보 모터에 대하여

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

핀아웃

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

  • VCC 핀: 빨간색 전선을 VCC (5볼트)에 연결합니다.
  • GND 핀: 검은색 또는 갈색 전선을 GND (0볼트)에 연결합니다.
  • 신호 핀: 노란색 또는 주황색 전선을 Raspberry Pi Pico 핀에서 PWM 제어 신호를 받도록 연결합니다.
서보 모터 핀 배열

선연결

온라인 다이어그램은 서보 모터의 VCC 핀과 Raspberry Pi Pico 보드의 VBUS 핀 사이의 연결을 보여줄 수 있습니다. Raspberry Pi Pico 보드에 손상을 줄 수 있으므로 이를 피하십시오.

라즈베리 파이 피코 서보 배선도

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

라즈베리 파이 피코 보드를 안전하게 유지하기 위해, 서보 모터에는 별도의 전원 공급 장치를 사용하세요. 아래 다이어그램은 이 전원에 서보 모터를 연결하는 방법을 설명합니다.

라즈베리 파이 피코 서보 모터 배선도

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

외부 전원 공급 장치의 GND(접지)와 Raspberry Pi Pico 보드의 GND를 반드시 연결하십시오. 이는 올바른 작동을 위해 매우 중요합니다.

라즈베리 파이 피코 코드

/* * 이 라즈베리 파이 피코 코드는 newbiely.kr 에서 개발되었습니다 * 이 라즈베리 파이 피코 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/raspberry-pico/raspberry-pi-pico-servo-motor */ from DIYables_MicroPython_Servo import Servo import utime # Create a Servo object servo = Servo(28) # The Raspberry Pi Pico pin GP28 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가 설치되어 있는지 확인하세요.
  • Raspberry Pi Pico에 MicroPython 펌웨어가 설치되어 있는지 확인하세요.
  • Raspberry Pi Pico를 처음 사용한다면, 자세한 설명은 라즈베리 파이 피코 - 시작하기 튜토리얼을 참고하세요.
  • 제공된 다이어그램에 따라 Raspberry Pi Pico를 서보 모터에 연결하세요.
  • USB 케이블을 사용해 Raspberry Pi Pico를 컴퓨터에 연결하세요.
  • 컴퓨터에서 Thonny IDE를 실행하세요.
  • Thonny IDE에서 Tools Options로 이동한 후 MicroPython (Raspberry Pi Pico) 인터프리터를 선택하세요.
  • Interpreter 탭에서 드롭다운 메뉴에서 MicroPython (Raspberry Pi Pico)를 선택하세요.
  • 올바른 포트가 선택되어 있는지 확인하세요. Thonny IDE가 자동으로 포트를 감지해야 하지만, 경우에 따라 수동으로 선택해야 할 수 있습니다 (예: Windows의 COM3 또는 Linux의 /dev/ttyACM0).
  • Thonny IDE에서 Tools Manage packages로 이동하세요.
  • “DIYables-MicroPython-Servo”를 검색한 후, DIYables가 제작한 서보 모터 라이브러리를 찾으세요.
  • DIYables-MicroPython-Servo를 클릭한 후 Install 버튼을 클릭하여 서보 모터 라이브러리를 설치하세요.
라즈베리 파이 피코 서보 모터 라이브러리
  • 위의 코드를 복사하여 Thonny IDE의 편집기에 붙여넣습니다.
  • 다음 단계에 따라 Raspberry Pi Pico에 스크립트를 저장합니다:

• 저장 버튼을 클릭하거나 Ctrl+S 키를 사용합니다.

• 저장 대화 상자에서 "This computer"와 "Raspberry Pi Pico" 두 섹션이 표시됩니다. Raspberry Pi Pico를 선택합니다.

• 파일 이름을 main.py로 저장합니다.

  • 녹색 Run 버튼을 클릭하거나 F5 키를 눌러 스크립트를 실행합니다. 스크립트가 실행됩니다.
  • 동작을 관찰합니다: 서보 모터가 0도에서 180도까지 점진적으로 회전한 후, 다시 180도에서 0도까지 점진적으로 회전합니다.

스크립트 이름을 main.py로 지정하고 Raspberry Pi Pico의 루트 디렉터리에 저장하면 Pico가 전원이 켜지거나 리셋될 때마다 자동으로 실행됩니다. 이는 전원이 켜지자마자 즉시 실행되어야 하는 독립형 애플리케이션에 유용합니다. 스크립트 이름을 main.py가 아닌 다른 이름으로 지정한 경우, Thonnys의 셸에서 수동으로 실행해야 합니다.

코드 설명

위의 Raspberry Pi Pico 코드 주석 섹션에서 설명을 찾을 수 있습니다.

서보 모터 속도 제어 방법

아래의 MicroPython 스크립트는 Raspberry Pi Pico에서 서보를 제어하여 각도를 비동기적으로 부드럽게 전환합니다. 이 스크립트는 시간 측정을 위해 utime 모듈을 사용하여 프로그램을 일시정지하지 않고 정기적으로 서보의 위치를 업데이트합니다. 이러한 방식은 메인 루프가 다른 작업에 반응할 수 있도록 유지합니다.

/* * 이 라즈베리 파이 피코 코드는 newbiely.kr 에서 개발되었습니다 * 이 라즈베리 파이 피코 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/raspberry-pico/raspberry-pi-pico-servo-motor */ from DIYables_MicroPython_Servo import Servo import utime # Create a Servo object servo = Servo(28) # The Raspberry Pi Pico pin GP28 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 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.