Raspberry Pi Zero W + ESP32 サーボ制御プロジェクト まとめ
使用ハードウェア
| パーツ | 型番 |
|---|---|
| マイコン | Raspberry Pi Zero W |
| ESP32 | XIAO ESP32-C3 |
| サーボ | S3071 2BBMG |
| LED | 汎用LED |
配線
サーボ(Raspberry Pi)
| サーボ | Raspberry Pi |
|---|---|
| 茶(GND) | Pin 6 |
| 赤(VCC) | 外部5V |
| オレンジ(信号) | Pin 12(GPIO18) |
LED(Raspberry Pi)
| Raspberry Pi | |
|---|---|
| +(330Ω経由) | Pin 18(GPIO24) |
| – | GND |
トラブルと解決
| トラブル | 原因 | 解決 |
|---|---|---|
| サーボが全く動かない | ジャンパーワイヤーの断線 | ワイヤー交換 |
| サーボが震える | 角度の端っこでサーボが頑張りすぎ | パルス幅の範囲を狭める |
| カクカク動く | スイープのステップが荒い | ステップを1度以下に細かくする |
サーボのパルス幅
S3071 2BBMGの実測値:
| 角度 | パルス幅 |
|---|---|
| 0° | 600μs |
| 90° | 1400μs |
| 180° | 2200μs |
pulse = int(600 + (angle / 180.0) * 1600)
作成したスクリプト
1. 永遠にスイープするスクリプト
while True:
sweep(0, 180, step=0.5, delay=0.01)
sweep(180, 0, step=0.5, delay=0.01)
2. 角度入力スクリプト
シリアルで数字を入力するとその角度に動く。quitで終了。
3. ESP32経由WiFi制御スクリプト(esp_rasp_wifi_servo.py)
- XIAO ESP32-C3のシリアルモニタで角度を入力
- WiFi経由でRaspberry Piに送信
- サーボが指定角度に移動
- 120度超えでLED点灯
ESP32のセットアップ
| 項目 | 内容 |
|---|---|
| ボード | XIAO_ESP32C3 |
| USB CDC On Boot | Enabled |
| ボードパッケージ | esp32 by Espressif 2.0.17 |
| シリアル | Serial(USBSerialは不可) |
GitHubリポジトリ
https://github.com/harleyzero/ESP32-WIFI-RspizeroW_servo-controller
構成
ESP32-WIFI-RspizeroW_servo-controller/
├── README.md
├── raspberry_pi/
│ └── esp_rasp_wifi_servo.py
└── esp32/
└── esp32_servo_controller.ino
Gitセットアップ手順
1. Gitのインストールと設定(初回のみ)
sudo apt install git -y
git config --global user.name "harleyzero"
git config --global user.email "あなたのメールアドレス"
2. Personal Access Tokenの取得(初回のみ)
- https://github.com → 右上アイコン →
Settings - 左メニュー一番下
Developer settings Personal access tokens→Tokens (classic)Generate new token (classic)repoにチェック →Generate token- 表示されたトークンをコピー(二度と表示されない)
3. リポジトリをクローン(初回のみ)
cd ~
git clone https://github.com/harleyzero/ESP32-WIFI-RspizeroW_servo-controller.git
4. Token認証の設定(初回のみ)
git remote set-url origin https://harleyzero:トークンを貼り付け@github.com/harleyzero/ESP32-WIFI-RspizeroW_servo-controller.git
git config --global credential.helper store
5. .gitignoreの作成
nano .gitignore
以下を記入:
__pycache__/
*.pyc
.env
6. ファイルの追加とプッシュ
cd ~/ESP32-WIFI-RspizeroW_servo-controller
mkdir raspberry_pi esp32
cp /home/zero/scripts/esp_rasp_wifi_servo.py raspberry_pi/
git add .
git commit -m "初回コミット:サーボ制御スクリプトとREADME追加"
git push origin main
日常的なGit操作
ラズパイでファイルを変更したら
cd ~/ESP32-WIFI-RspizeroW_servo-controller
git add .
git commit -m "変更内容のメモ"
git push origin main
WindowsのESP32スケッチを更新したら
GitHubのWebUIから:
esp32フォルダを開くAdd file→Upload files- ファイルをドラッグ&ドロップ
Commit changes
今後のアイデア
- スマホのブラウザからWebUIで操作
- 複数サーボの制御
- センサーと組み合わせた自動制御
https://github.com/harleyzero/ESP32-WIFI-RspizeroW_servo-controller