セーリングボート用高度オートパイロット - Arduinoで精密自動操舵
主要コンポーネント
- Arduino UNO (メインCPU) × 1
- Arduino Nano (ウォッチドッグ) × 1
- Beitian BN-220T GPS (2Hz, $GNRMC出力) × 1
- ステッピングモーター 23LM (54ステップ=1/4回転) × 1
- L298 モータードライバー (Keyes) × 1
- 433MHz RFリモコン (XD-YK04, 4ボタン) + コイルアンテナ × 1
- タクトスイッチ × 6 (赤×2, 緑×2, 黒×1, 青×1)
- 電源スイッチ × 1
- 6ピン丸型コネクタ (モーター用) × 1組
- ブザー × 1
- LCD1602 (I2C変換基板付き) × 1
- LED × 3 (赤、青、黄)
- EEPROM 24C04 (I2C, 512B) × 1
- マルチプレクサ 4051 × 1
- LiPo 2S 7.4V 2600mAh × 1
- レギュレータ 7805 + 放熱板 × 1
- サーミスタ NTC MF52-103 10k × 1
- 自己復旧ヒューズ 2A × 1
- ダイオード 1N4148 × 6
- 各種抵抗・コンデンサ
- 透明防水ケース
システム概要
単独航海時に「ティータイム」を楽しむための自動操舵システムです。GPSで船首方位を保持し、ステッピングモーターでラダーを制御。ウォッチドッグ (Nano) がUNOを監視し、フリーズ時にリセットします。
操作インターフェース
- 本体ボタン: 青=一時停止/再開、赤/緑=±1°/±10°、黒=設定モード
- リモコン: 同機能の4ボタン (±1°, ±10°)
- LED表示: 黄=ウォッチドッグ稼働(1Hz点滅)、青=オートパイロットON、赤=リモコン受信

回路設計のポイント
- ウォッチドッグ: UNOのピン3→Nano A0へ2.5秒ごとにパルス出力。欠落時はNanoがUNOリセット。
- 省ピン化: LCDはI2C、ボタン/リモコンは抵抗分圧でアナログ1ピンに集約 (1%抵抗使用)。
- GPS: BN-220Tを2Hz/$GNRMCのみ出力に設定。UNOのRX(ピン0)に接続 (書き込み時は外す)。
- EEPROM: 操舵パラメータ (間隔、最小/最大角、係数) を不揮発保存。
- センサー監視 (4051多重化): 電池電圧、消費電流、レギュレータ温度を10秒ごとにチェック。低電圧 (7V未満) や過熱 (50℃超) でブザー警告。








PCBと組み立て
片面基板2枚をスタック (下:電源、上:オートパイロット)。ジャンパー線で配線し、全てピンヘッダ/デュポンコネクタで接続 (将来的な再利用と修理性重視)。本番運用では全ハンダ付け推奨。


パラメータ設定 (黒ボタンで項目切替、±ボタンで変更)
| 項目 | 初期値 | 範囲 | 説明 |
|---|---|---|---|
| Interval | 2000 ms | 1000-5000 | 操舵試行間隔 |
| Minimum | 2° | 0-20 | 介入する最小偏差 |
| Max | 40° | 10-45 | 1回の最大操舵角 |
| Coefficient | 1.50 | 0.1-4.0 | 操舵角ゲイン (偏差×係数) |





