マカロニペンギンの健忘録

特にテーマを決めているわけじゃないが、私が気になったことを書いていく予定です。

AliexpressのRelay Board-4 V1.2を使ってみた

2023年07月24日 | プログラミング
 以前からModbus over rs485通信を使ってみたかった。しかし、この通信方法を使った製品で日本製はどれも高すぎるのでプライベートで使う値段ではない。
そこでAliExpressだ。賛否両論なのは当然知っているが、とりあえずプライベートで電子工作をしている人にとってはなによりの味方である。

 使用しているのはAliExpress内の「モジュールrs485 ttl通信4チャンネル入力リレーモジュール12v/24v modbus rtu 4チャンネルリレーモジュール」です。現在は取り扱いは終了しているようですが、AliExpressの中の他のブースでも似たようなボードを販売されているようなので、同じようなものを選んでも使用できるのではないかと思います。

 とにかく販売しているホームページ上で資料が少なすぎる。中国の方はこれを見ただけでスラスラって使えてしまうのだろうか。私はスラスラとは行かなかったので、ここにチュートリアルというか、すべてを知り尽くしているわけではない私が知り得た限りをここに記載しようということです。

私の開発環境は
  OS = Debian (Desktop = LXQt)
  Programming Language = Python
  Install Library = PySerial
  PC Side USB-RS485 Conversion adapter = UsbにRS485 485変換アダプタ

Example-1

# blog:https://blog.goo.ne.jp/soratobu_macaronipenguin 
# FaceBook:https://www.facebook.com/akihiro.sugawara1
import serial
import time
send_data = [None] * 2 
send_data[0] = "01 05 00 01 01 00 9d 9a" #Relay No.1 ON 
send_data[1] = "01 05 00 01 00 00 9c 0a" #Relay No.1 OFF 
relay_status = True 
#c_port = 'COM3' # Windows 
#c_port = '/dev/ttyCH341USB0' 
c_port = '/dev/ttyUSB0' #Debian 
def plus(i): 
    return(int(i,16)) 
def send_process(i): 
    #送信データを作成 
    l_d1 = list(map(plus,send_data[i].split())) 
    send_binary = bytes(l_d1) 
    # pyserialで送信 
    with serial.Serial(port=c_port,baudrate=9600,bytesize=8,parity='N',stopbits=1,timeout=0.2) as ser: 
        res = ser.write(send_binary) 
        b_reply = ser.read(8) 
        # print(b_reply) 
#メイン 
while True: 
    send_process(relay_status) 
    # print(relay_status) 
    i = "0" 
    while i != "1": 
        i = input("1を入力してください") 
    relay_status = not(relay_status) 

参考文献は
  M-System Modbusプロトコル概説書
  Twins Chip Modbus RTU 4CH 12V RS485 module