라즈베리 파이 서보 HAT 완벽 설정 가이드: 하드웨어, 배선, 파이썬 제어
소개
SparkFun Pi 서보 HAT은 라즈베리 파이의 기능을 확장하여 I²C 버스를 통해 최대 16개의 하비 서보를 제어할 수 있게 합니다. 서보 전원과 통신을 HAT로 오프로드함으로써 파이의 GPIO 핀을 다른 프로젝트에 자유롭게 사용할 수 있고, 헤드리스 설정을 위한 편리한 시리얼 터미널도 제공합니다.
필요한 자료
이 가이드를 따라하려면 다음 항목들을 준비하세요. Pi Zero W 지원을 위해 최신 OS 이미지가 필요하므로 NOOBS 카드보다는 빈 마이크로 SD 카드를 권장합니다.
- Break Away Headers – Straight
- Wall Adapter Power Supply – 5.1V DC 2.5A (USB Micro-B)
- microSD Card with Adapter – 16GB (Class 10)
- Raspberry Pi GPIO Tall Header – 2×20
- Raspberry Pi Zero W
- SparkFun Pi Servo HAT
- Servo – Generic (Sub-Micro Size)
필요한 도구
기본 납땜 도구 외에 특수 장비는 필요 없습니다. 최상의 결과를 위해 30W 납땜 인두와 무연 납을 사용하세요.
하드웨어 개요
HAT은 의도적으로 단순하게 설계되었습니다. 주요 구성 요소:
- USB Micro-B 커넥터 - 서보에 5V 공급, 파이에도 전원 공급 가능. 헤드리스 설정용 시리얼 콘솔도 제공.
- 전원 격리 점퍼 - 기본적으로 닫혀 있어 서보 레일을 파이의 5V 레일에 연결. 고용량 서보 여러 개 사용 시 노이즈로 인한 파이 리셋 방지를 위해 열기.
- 서보 헤더 - 표준 하비 서보 커넥터용 16개의 0.1인치 간격 핀, 사전 배열됨.
하드웨어 조립
먼저 Pi Zero W에 수 헤더를 납땜한 후 Pi 서보 HAT을 부착하는 것을 권장합니다. 빠른 기술:
- 한 핀을 보드에 납땜
- 납이 아직 뜨거울 때 보드를 기울여 핀이 평평하게 앉도록 한 후 헤더 고정
- 나머지 핀 납땜 완료
암 헤더와 Pi 서보 HAT에도 같은 과정을 반복하세요. 짧은 핀이 보드 바닥에서 삽입되도록 하세요. 납땜 완료 전 헤더가 수평인지 확인하세요.
조립 완료 후 HAT을 Pi Zero W에 스택하세요. 채널 0에 하비 서보를 연결하고, 서보 데이터시트의 핀아웃을 참조하세요. PWR IN 레이블이 붙은 USB Micro-B 커넥터에 5V 벽면 어댑터를 연결하여 파이와 HAT에 전원을 공급하세요.
소프트웨어 - 파이썬
HAT의 PWM 컨트롤러는 I²C 장치로, 일반적으로 SMBus로 접근합니다. 전체 예제 코드는 제품의 GitHub 저장소에서 확인할 수 있습니다.
SMBus 초기화
import smbus
bus = smbus.SMBus(1) # 라즈베리 파이의 I2C 버스 1
addr = 0x40 # PWM 칩의 기본 I2C 주소
PWM 칩 구성
bus.write_byte_data(addr, 0x00, 0x20) # PWM 모듈 활성화
bus.write_byte_data(addr, 0xFE, 0x1E) # 레지스터 주소 자동 증가
채널 0의 펄스 폭 설정
bus.write_word_data(addr, 0x06, 0) # 시작 시간 (200Hz에서 항상 0)
bus.write_word_data(addr, 0x08, 1250) # 정지 시간 → 1.5ms 펄스
PWM 칩은 200Hz(5ms 주기)로 동작합니다. 정지 레지스터(0~4095)는 1.2µs 단위에 매핑되므로, 1250 ≈ 1.5ms로 대부분의 서보 중립 위치에 해당합니다.
다른 채널을 제어하려면 레지스터 주소에 4를 더하세요:
| 채널 | 시작 주소 | 정지 주소 |
| 0 | 0x06 | 0x08 |
| 1 | 0x0A | 0x0C |
| 2 | 0x0E | 0x10 |
| 3 | 0x12 | 0x14 |
| 4 | 0x16 | 0x18 |
| 5 | 0x1A | 0x1C |
| 6 | 0x1E | 0x20 |
| 7 | 0x22 | 0x24 |
| 8 | 0x26 | 0x28 |
| 9 | 0x2A | 0x2C |
| 10 | 0x2E | 0x30 |
| 11 | 0x32 | 0x34 |
| 12 | 0x36 | 0x38 |
| 13 | 0x3A | 0x3C |
| 14 | 0x3E | 0x40 |
| 15 | 0x42 | 0x44 |
각 도의 움직임에는 4.6 레지스터 카운트가 필요합니다. 예를 들어 중립에서 45° 오프셋은 207 카운트(45 × 4.6)로, 1250에 더하거나 빼서 원하는 펄스 폭을 설정합니다.
더 자세한 예제는 GitHub 저장소를 방문하여 포함된 파이썬 스크립트를 탐색하세요.
Pi Servo Hat Hookup Guide