SparkFun Pi Servo HAT完全セットアップガイド:ハードウェア、配線、Python制御
はじめに
SparkFun Pi Servo HATは、Raspberry Piの機能を拡張し、I²Cバス経由で最大16台のホビーサーボを制御できるようにします。サーボの電力と通信をHATにオフロードすることで、PiのGPIOピンを他の用途に解放し、ヘッドレスセットアップに便利なシリアルコンソールも提供します。
必要な材料
このガイドを実践するには以下のアイテムを用意してください。Pi Zero Wサポートには新しいOSイメージが必要なため、NOOBSカードではなく空のmicroSDカードを推奨します。
- ブレイクアウェイヘッダー – ストレート
- 壁面アダプター電源 – 5.1V DC 2.5A (USB Micro‑B)
- microSDカード(アダプター付き)– 16GB (Class 10)
- Raspberry Pi GPIOトールヘッダー – 2×20
- Raspberry Pi Zero W
- SparkFun Pi Servo HAT
動作確認用のホビーサーボも入手してください。汎用のサブマイクロサーボが最初の例題スクリプトに適しています。
- サーボ – 汎用 (サブマイクロサイズ)
必要な工具
基本的なはんだ付け用品以外に特別な機器は不要です。最良の結果を得るには、30Wのはんだごてと鉛フリーはんだを使用してください。
- 鉛フリーはんだ – 15gチューブ
- はんだごて – 30W (US, 110V)
ハードウェア概要
HATは意図的にシンプルに設計されています。主なコンポーネント:
- USB Micro‑Bコネクタ – サーボ用5Vを供給し、Piにも給電可能。また、モニターなしでPiを設定できるシリアルコンソールを提供。
- 電源分離ジャンパー – デフォルトで閉じており、サーボレールをPiの5Vレールに接続。複数の大電流サーボを駆動してPiがリセットされるのを防ぐため、必要に応じて開放します。
- サーボヘッダー – 標準的なホビーサーボコネクタに対応した16個の0.1インチピッチピン。
ハードウェア組み立て
まずPi Zero Wにオスヘッダーをはんだ付けし、その後Pi Servo HATを取り付けることを推奨します。手順:
- 1本のピンを基板にはんだ付け。
- はんだが熱いうちに基板を傾けてピンをフラットにし、ヘッダーを固定。
- 残りのピンをはんだ付け。
メスヘッダーとPi Servo HATでも同様に繰り返し、ショートピンが基板の底面から挿入されるようにします。すべてのピンが水平になるまで半田付けを完了させてください。
組み立て後、HATをPi Zero Wにスタックします。チャネル0にホビーサーボを接続(サーボのデータシートでピンアウト確認)。5V壁面アダプターを、PWR INとラベルされたUSB Micro‑Bコネクタに接続してPiとHATに給電します。
ソフトウェア – Python
HATのPWMコントローラーはI²Cデバイスで、一般的にSMBusとしてアクセスされます。完全なサンプルコードは製品のGitHubリポジトリで公開されています。
SMBusの初期化
import smbus bus = smbus.SMBus(1) # Raspberry Piの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 |
1度の動きには4.6レジスタカウントが必要です。例えば、中立から45°オフセットするには207カウント(45 × 4.6)を1250に加減算して目的のパルス幅を設定します。
より詳細な例は、GitHubリポジトリの付属Pythonスクリプトをご覧ください。
Pi Servo HATフックアップガイド
製造プロセス
- CNC試作ガイド:精度、速度、コスト効率の良い生産
- FLIR Lepton統合ガイド:ハードウェア、ソフトウェア、Raspberry Piセットアップ
- Raspberry Pi 3スターターキット セットアップガイド:組み立て、OSインストール、リモートアクセス
- SparkFun Qwiic HAT for Raspberry Pi 完全フックアップガイド
- プロフェッショナル40ピンRaspberry Pi Wedgeセットアップガイド
- シンプルPiロボット - Raspberry Piで2WD自律ローバーを構築
- パワーハンマー完全ガイド:現代鍛冶における種類・仕組み・選び方・実践
- 鍛冶炉をマスターする:包括的なガイド
- 精密鋳造完全ガイド:技術と用途
- GD&T平行度:クイックリファレンスガイド
- サーボプレスの基礎:パワー、精度、効率を解説