大人の冬休み宿題工作 マイ警告灯を作ろう 後編

大人の冬休み宿題工作 マイ警告灯を作ろう 前編の続き

警告灯動作テスト 1

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以外は何も返さないのでコマンド送りっぱなしということ。不完全でも良いからリレーの状態は知りたいなぁ。

警告灯動作テスト 2
赤点灯

警告灯動作テスト 3
黄点灯

警告灯動作テスト 4
写真だとほとんど白に見えるけど目で見ると「緑」

赤・黄・緑以外に、同時点灯の組み合わせで中間の色のパターンがあるが、ぱっと見で色の識別が難しいので赤・黄・緑だけを使うのが良さそう。あと、ブザーは静かな環境だとうるさすぎるし、サーバー室のような轟音のする部屋ではちょっと音量が不足。中途半端なので使わないかな。

後日、これをシステムの監視用として使う予定。

関連記事: