
USBリレーモジュールをPCに接続すると、最近のLinuxでは自動的にUSBシリアルポートとして認識されます。通常は /dev/ttyUSB0 や /dev/ttyUSB1 といったデバイスファイルになります。
ただし、一般ユーザーではアクセス権限が制限されているため、そのままでは操作できません。
$ ls -l /dev | grep ttyUSB crw-rw---- 1 root dialout 188, 0 12月 18 20:11 ttyUSB0 $ sudo chgrp root /dev/ttyUSB0 もしくは $ sudo chmod 777 /dev/ttyUSB0
chgrp でグループを変更した場合は、以後のコマンドも sudo を付けて実行する必要があります。これでLinux上からUSBリレーモジュールと通信できるようになります。
このモジュール(ICSE012)を調べると、初期化のために特定のコマンドを送信する必要があるようです。具体的には0x50を送信すると0xABが返ってきて、次に0x51を送信すると制御可能になるという情報があります。
$ echo '50' | xxd -r -p >> /dev/ttyUSB0 $ echo '51' | xxd -r -p >> /dev/ttyUSB0 $ echo '0f' | xxd -r -p >> /dev/ttyUSB0
50と51だけを送っただけではすぐに制御できない場合があります。何度か試すと動くようになりますが、より確実な方法として以下のようにまとめて送信する方法もあります。
$ echo '50 51 0f' | xxd -r -p >> /dev/ttyUSB0
他にも、xxdを使わずにechoだけで送信する方法があります。
$ echo -e -m '\x01' > /dev/ttyUSB0
後半の動画ではこの方法を使用しています。
このモジュールは4chリレーなので、00から0Fまでの4ビット(16通り)の値を送信して制御します。注意点として、このUSBリレーモジュールでは「ビットを1に立てるとOFF」になるため、通常のオン/オフの感覚と逆になります。
以下の表は、1=OFF、0=ONとしてまとめています。
リレースイッチ1 = 赤ランプ
リレースイッチ2 = 黄ランプ
リレースイッチ3 = 緑ランプ
リレースイッチ4 = ブザー(鳴/静)
赤 黄 緑 鳴
00 0 0 0 0 赤+黄+緑+鳴
01 1 0 0 0 黄+緑+鳴
02 0 1 0 0 赤+緑+鳴
03 1 1 0 0 緑+鳴
04 0 0 1 0 赤+黄+鳴
05 1 0 1 0 黄+鳴
06 0 1 1 0 赤+鳴
07 1 1 1 0 鳴
08 0 0 0 1 赤+黄+緑+静
09 1 0 0 1 黄+緑+静
0a 0 1 0 1 赤+緑+静 何故か鳴る
0b 1 1 0 1 緑+静
0c 0 0 1 1 赤+黄+静
0d 1 0 1 1 黄+静
0e 0 1 1 1 赤+静
0f 1 1 1 1 静
この内、0aを送信したときはランプの点灯パターンは想定通りですが、なぜかブザーが鳴ってしまいます。これはモジュールの仕様(またはバグ)と思われます。
各リレーの現在の状態を取得する方法は存在しないようです。初期化時に0xABが返ってくる以外は応答がないため、コマンドを送りっぱなしで制御することになります。状態を把握したい場合は、別途プログラム側で管理する必要があります。

赤点灯

黄点灯

写真ではほぼ白色に見えますが、実際には緑色です。
赤・黄・緑から複数色を同時に点灯させると中間色(オレンジなど)になりますが、遠くから一目で色を識別しにくいため、基本は単色(赤・黄・緑)のみを使うのがおすすめです。ブザーについては、静かな部屋では音が大きすぎ、サーバールームのような騒音環境では逆に音量不足で、中途半端に感じます。今回は使用しない方向で考えています。後日、この警告灯をシステム監視用途で活用する予定です。
後日、この警告灯をシステム監視用途で活用する予定です。
関連記事:















