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というモジュール名でググると、このUSBリレーモジュールに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
ググるとこんなのもあった。
$ echo -e -m '\x01' > /dev/ttyUSB0
xxdを使わないでechoだけで送信。最後の動画ではこの送信方法を使っている。
で、リレーを操作するのだが、4chのリレーモジュールなので00から0fまで4ビット16通りを送信すれば良いっぽい。このUSBリレーモジュールではビットを立てると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以外は何も返さないのでコマンド送りっぱなしということ。不完全でも良いからリレーの状態は知りたいなぁ。
赤点灯
黄点灯
写真だとほとんど白に見えるけど目で見ると「緑」
赤・黄・緑以外に、同時点灯の組み合わせで中間の色のパターンがあるが、ぱっと見で色の識別が難しいので赤・黄・緑だけを使うのが良さそう。あと、ブザーは静かな環境だとうるさすぎるし、サーバー室のような轟音のする部屋ではちょっと音量が不足。中途半端なので使わないかな。
後日、これをシステムの監視用として使う予定。
関連記事: