新たに入荷したリレーの制御チップはCH552Gで、
ARCELI SRD-05VDC-SL-C 2ウェイ5Vリレーモジュール
違ってるのは予定通りだが、TINY45のチェックプログラムを修正しても、CH552Gでは動作しない。
調べてみてもUSBリレーのHIDモードの規定は見つからない。
monicaで質問し、CH552Gで動くプログラムができたが、TINY45はそのプログラムで動作しない。
試行錯誤を繰り返し、2種類のリレーを似たような表現で動作させるプログラムができた。
各リレーモジュールのレビューに記載したが、コメントを追加したコードを記す。
import hid # HIDAPIライブラリ使用/HIDライブラリ使用不可(インストールしてはダメ)
import time
# リレーモジュールのVIDとPID
VID1 = 0x16c0 #制御チップTINY45
PID1 = 0x05df
VID2 = 0x0519 #制御チップCH552G
PID2 = 0x2018
# リレーモジュール2を1よりもWin11に先に認識させると、正常に認識しないことがあり
# 制御チップTINY45とCH552Gでは、左右が逆になるので注意
# リレーモジュール1の制御コマンド
RELAY_ON_CMD11 = [0x00, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00] #制御チップTINY45 右
RELAY_OFF_CMD11 = [0x00, 0xfd, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00]
RELAY_ON_CMD12 = [0x00, 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00] #制御チップTINY45 左
RELAY_OFF_CMD12 = [0x00, 0xfd, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00]
# リレーモジュール2の制御コマンド
RELAY_ON_CMD21 = [0x00, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] #制御チップCH552G 左
RELAY_OFF_CMD21 = [0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
RELAY_ON_CMD22 = [0x00, 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] #制御チップCH552G 右
RELAY_OFF_CMD22 = [0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
# HIDデバイス1を開く
device1 = hid.device() #制御チップTINY45
device1.open(VID1, PID1)
# HIDデバイス2を開く
device2 = hid.device() #制御チップCH552G
device2.open(VID2, PID2)
# リレー1をONにする
device1.send_feature_report(RELAY_ON_CMD11) #制御チップTINY45
device2.write(RELAY_ON_CMD21) #制御チップCH552G
time.sleep(2) # 一時停止2秒
# リレー2をONにする
device1.send_feature_report(RELAY_ON_CMD12) #制御チップTINY45
device2.write(RELAY_ON_CMD22) #制御チップCH552G
time.sleep(2) # 一時停止2秒
# リレー1をOFFにする
device1.send_feature_report(RELAY_OFF_CMD11) #制御チップTINY45
device2.write(RELAY_OFF_CMD21) #制御チップCH552G
time.sleep(2) # 一時停止2秒
# リレー2をOFFにする
device1.send_feature_report(RELAY_OFF_CMD12) #制御チップTINY45
device2.write(RELAY_OFF_CMD22) #制御チップCH552G
time.sleep(2) # 一時停止2秒
# HIDデバイスを閉じる
device1.close()
device2.close()
ON/OFFの所がどうしても統一できなかった。
初心者の私には、なぜこうなるのかは、わからない。
左右が逆になっているのは、実際に設置する場合にややこしい。
リレーモジュールの認識の問題は、自分の環境のみの問題かもしれない。
コメント
コメントを投稿