images本日のPython備忘録シリーズ。



USBリレーモジュールという
シリアル通信で回路のONとOFFを切り替えるという
シンプルなデバイスを見つけました。

具体的にはUSBに接続して、対象のシリアルポートに
「1」を送信すればONに、「0」を送信すればOFFになる仕組み。
ちなみに送信する1と0は単純にテキストデータでOKらしい。
※Unicodeのバイナリデータですが。

なにそれ、おもしろ







今回の玩具。

今日はこれでパルスジェネレータが作れんかな?
という天啓が舞い降りたので作ってワクワク。(大馬鹿)

ボーレートは9600bps。
1ビットあたり1ミリ秒くらいの速度ですね。

てことはまあ大体2ミリ秒間隔でスイッチすると
500Hzくらいのパルスが発生できるわけです。

なんで500Hzのパルス信号が必要なのかは追々、別記事にしたためます。
というわけで以下Python。


import
time
import serial

# USBシリアルポートの設定
serial_port = 'COM_X'  # 仮想シリアルポートのパス
baud_rate = 9600  # ボーレート

# パルス信号の間隔(秒)
pulse_interval = 0.002  # 約2ミリ秒

# パルスの生成と制御
start_time = time.time()  # スクリプト開始時刻を取得
duration = 10  # パルス生成を行う時間(秒)


# USBシリアルポートとの接続
ser = serial.Serial(serial_port, baud_rate)
def send_pulse(state):
    #with serial.Serial(serial_port, baud_rate) as ser:
        if state == 1:
            # パルスON時の処理
            ser.write(b"1")  # USBリレーモジュールに「1」を送信
        else:
            # パルスOFF時の処理
            ser.write(b"0")  # USBリレーモジュールに「0」を送信

# パルス生成
def gen_pulse():
    while time.time() - start_time < duration:
        send_pulse(1)  # パルスON
        time.sleep(pulse_interval)
        send_pulse(0)  # パルスOFF
        time.sleep(pulse_interval)

# メインの処理
gen_pulse()  # パルス送信を実行
ser.close()  # シリアルポートを閉じる



で、まぁ結果できるには出来たのですが
思ったよりリレーモジュールがうるさい

というか

そもそもそんなに高速でスイッチするように出来てない気がする。

ので。


良い子は真似しないでね!