TIPS 2026年7月10日

ラズパイでシンプルにUSB接続の電磁リレーを使う

東京デバイセズのUSBリレー制御基板を使えば、Raspberry PiからUSB経由でリレーを簡単にON/OFFできます。
この記事では、TDFA30301TDFA30303IWT313-USBを対象に、Raspberry Pi OSで制御コマンド TD-USB を準備し、Pythonから1秒ごとにリレーをON/OFFするところまでをわかりやすく解説します。 リレーが「カチッ」と動作するところまでを確認しましょう。

1. USBリレー制御基板について

今回使う3製品は、いずれもTD-USBコマンドでリレーの状態を数値として設定できます。違いは主にチャンネル数、接点容量、電源です。

製品 チャンネル数 接点容量 電源 TD-USBのモデル名
TDFA30301 1接点 10A 250V AC / 10A 24V DC USBバスパワー tdfa30301
TDFA30303 3接点 10A 250V AC / 10A 24V DC USBバスパワー tdfa30303
IWT313-USB 8接点 6A 250V AC / 6A 24V DC 12V外部電源 iwt313

TDFA30301は0または1で1つのリレーを制御します。
TDFA30303とIWT313-USBは、各チャンネルのON/OFFをビットで表した数値で指定します。例えば1ならチャンネル1だけON、3なら二進数で11なのでチャンネル1と2がON、0ならすべてOFFです。

2. はじめる前に準備するもの

必要なもの 備考
Raspberry Pi Raspberry Pi OSをインストール済みで、ターミナル操作できる状態
対象のUSBリレー制御基板 TDFA30301 / TDFA30303 / IWT313-USB のいずれか
USBケーブル USB Type-A - mini-Bケーブル 推奨型番: TDAC-USB2B1M5
インターネット接続 パッケージ更新・GitHubからの取得に使用
12V ACアダプタ IWT313-USBをACアダプタで使う場合のみ必要。推奨ACアダプタ型番: IWAC12-1.0

TDFA30301とTDFA30303はUSBバスパワーで動作します。 IWT313-USBは別途12V電源が必要です。ACアダプタか汎用の12V電源を用意します。

3. 必要なツールをインストールしよう

Raspberry Piで次のコマンドを実行して、TD-USBのビルドに必要なツールをインストールします。

 sudo apt update
 sudo apt install -y git build-essential libusb-dev python3
  • git はソースコードのダウンロード用です。
  • build-essential はソースコードをビルドするためのツールです。
  • libusb-dev はUSB接続デバイスを扱うためのライブラリです。

4. USBの権限を設定する

一般ユーザーでもUSBリレー制御基板を使えるように、udevの設定を追加します。
3製品をまとめて使えるように、次の内容で設定ファイルを作ります。

 sudo tee /etc/udev/rules.d/99-usb-tokyodevices.rules <<'EOF'
 SUBSYSTEM=="usb", ATTR{idVendor}=="32ee", ATTR{idProduct}=="1786", MODE="0666"
 SUBSYSTEM=="usb", ATTR{idVendor}=="32ee", ATTR{idProduct}=="1787", MODE="0666"
 SUBSYSTEM=="usb", ATTR{idVendor}=="16c0", ATTR{idProduct}=="05df", MODE="0666"
 EOF

変更を反映します。

 sudo udevadm control --reload-rules
 sudo udevadm trigger

設定後、USBリレー制御基板をRaspberry Piに接続し直してください。 IWT313-USBを使う場合は、12V ACアダプタか汎用の12V電源を電源ターミナル端子に接続します。

5. 制御コマンドTD-USBをビルドする

GitHubから制御コマンドtd-usbをダウンロードして、Raspberry Pi上でビルドします。

 git clone https://github.com/tokyodevices/td-usb.git
 cd td-usb
 make

ちゃんと動くか試してみましょう。

 ./td-usb
 # バージョン情報が表示されれば成功!

6. コマンドでリレーをON/OFFしてみる

まずはPythonを使う前に、TD-USBコマンドだけでリレーを動かしてみます。
使っている製品に合わせて、次のうち1つを実行してください。

TDFA30301の場合:

 ./td-usb tdfa30301 set 1
 ./td-usb tdfa30301 get
 ./td-usb tdfa30301 set 0

TDFA30303の場合:

 ./td-usb tdfa30303 set 1
 ./td-usb tdfa30303 get
 ./td-usb tdfa30303 set 0

IWT313-USBの場合:

 ./td-usb iwt313 set 1
 ./td-usb iwt313 get
 ./td-usb iwt313 set 0

set 1でチャンネル1のリレーがON、set 0ですべてOFFになります。
getを実行すると、現在のリレー状態が数値で表示されます。

7. Pythonで1秒ごとにON/OFFする

次に、PythonからTD-USBを呼び出して、チャンネル1のリレーを1秒ごとにON/OFFしてみます。
td-usbディレクトリの中に、次の内容でblink_relay.pyを作成してください。 使う製品に合わせて、MODELの行を1つだけ有効にします。

 #!/usr/bin/env python3
 import subprocess
 import time

 # 使う製品に合わせて、どれか1行だけ有効にしてください。
 MODEL = "tdfa30301"   # TDFA30301
 # MODEL = "tdfa30303" # TDFA30303
 # MODEL = "iwt313"    # IWT313-USB

 try:
     while True:
         subprocess.run(["./td-usb", MODEL, "set", "1"], check=True)
         print("ON")
         time.sleep(1)

         subprocess.run(["./td-usb", MODEL, "set", "0"], check=True)
         print("OFF")
         time.sleep(1)

 except KeyboardInterrupt:
     subprocess.run(["./td-usb", MODEL, "set", "0"], check=True)
     print("\nOFFにして終了しました。")

保存したら、実行権限を付けます。

 chmod +x blink_relay.py

実行します。

 ./blink_relay.py

1秒ごとにリレーがON/OFFを繰り返せば成功です。終了するときはCtrl+Cを押してください。スクリプト終了時にリレーをOFFへ戻します。

まとめ

  • TDFA30301、TDFA30303、IWT313-USBはいずれもTD-USBコマンドから制御できます。
  • Raspberry Pi OSでは、最初にUSB権限の設定とTD-USBのビルドを行います。
  • Pythonからはsubprocess.run()./td-usbを呼び出せば、簡単にリレーをON/OFFできます。

まずは無負荷でリレーの動作を確認し、実際の機器を接続する場合は、接点容量や配線方法を製品マニュアルで確認してから進めてください。

この記事に関連する商品

この記事をシェア

最近のTIPS