コンテンツにスキップ

配線・デバイスマッピング

シリアルデバイスの実体(/dev/ttyUSB* など)は接続順や環境で変化するため、 QUESTiX では udev ルール でエイリアスを固定し、設定ファイルから安定して参照します。

デバイスパス一覧

論理名 用途 既定の参照先 備考
サーボ tilt / trigger サーボ /dev/servo udev エイリアス(固定化)
UART コントローラ 操縦入力 /dev/ttyAMA0 Pi 内蔵 UART (GPIO14/15)
DDT モーター 走行 RS-485 変換器 RS-485 バス上で ID 識別
YDLiDAR スキャン USB ドライバの設定に従う

udev とデバイス固定化

hardware_interfaces / robot_autostart ロールが udev ルール(50-questix-robot.rules)を 適用し、シリアルデバイスのエイリアスやアクセス権限を設定します。これにより /dev/servo のような安定した名前でデバイスを参照できます。

# 現在のシリアルデバイスを確認
ls -l /dev/serial/by-id/
ls -l /dev/servo        # udev エイリアスが解決されているか確認

# udev ルールの再読み込み(変更時)
sudo udevadm control --reload-rules
sudo udevadm trigger

アクセス権限(グループ)

各デバイスへアクセスするには、対応するグループへの所属が必要です。

グループ 対象
dialout シリアルポート(/dev/ttyAMA0, /dev/servo, RS-485 変換器 等)
gpio GPIO(/dev/gpiochip4
input 入力デバイス(Joy 等)

raspberry_pi_setup ロールがユーザーをこれらのグループに追加します。systemd サービスも SupplementaryGroups=gpio input dialout を設定しています (自動起動 (systemd))。

# 現在のユーザーのグループを確認
groups

# 手動で追加する場合(反映には再ログイン or 再起動が必要)
sudo usermod -aG dialout,gpio,input "$USER"

UART の有効化

Pi 内蔵 UART(/dev/ttyAMA0)を使うには、/boot/firmware/config.txt で UART を有効化し、 シリアルコンソールを無効化する必要があります。hardware_interfaces ロールが I2C / SPI を含む これらの設定を行います。設定変更後は再起動してください。

接続が見つからないとき

  1. dmesg | tail でデバイスの認識を確認する。
  2. ls -l /dev/serial/by-id/ で実体パスを確認する。
  3. groups でアクセス権限(dialout / gpio)を確認する。
  4. ボーレート(モーター 57600 / サーボ 115200 / UART 115200)が設定と一致しているか確認する。