💬

Raspberry Pi や M5Stack でパトランプを制御

2022/07/03に公開

概要

Raspberry Pi や M5Stack を使ってパトランプを制御してみました。ハードウェアはド素人なので説明が雑なのはご容赦を..

写真

使用したもの

デバイス (Raspberry Pi / M5Stack) との接続

1 のパトランプは単三電池 3本 (4.5V) で回るだけのものだったので、電池の代わりにデバイスから 5V を与えます。2 の警告灯の場合は 12V の線と 24V の線が延びていたので、デバイスの 5V を昇圧型の DC-DC モジュールで 12V または 24V に変換して与えます。

またデバイスの 5V ポートは直接 ON/OFF できないので、GPIO を制御してトランジスタを使って ON/OFF します。

(1) 5V の場合

以下のように配線しました。(バイポーラ型)トランジスタは BE (Base-Emitter) 間に電流を流すと CE (Collector-Emitter) 間が通電するというもの。E を GND(0V) に接続し、B に接続した GPIO を ON にして BE 間に電流が流れると CE 間が 5V で通電、OFF にすると通電しなくなります。つまり GPIO がスイッチの役割となります。トランジスタ完全に理解した!

配線図

電池ボックス内で雑に実装しました😅

写真(パトランプ)

デバイス側は、黒: GND、赤: 5V、青: GPIO に接続します。以下は Raspberry Pi の GPIO 4、ATOM Lite の場合は GPIO 32 (G32) に接続したものです。

写真(Raspberry Pi) 写真(M5)

(2) 12/24V の場合

パトランプが 5V 駆動でない (12/24V など) 場合は、デバイスにつながる GND/5V の間に昇圧型の DC-DC モジュールをはさむだけです。出力電圧はつまみで調整します。

写真(パトランプ) 12/24V

制御例

GPIO を ON/OFF して点灯すれば完成です。あとは監視ソフトなどと組み合わせて動かしましょう!

Raspberry Pi

3 秒間隔で ON/OFF します。

import time
from RPi import GPIO

PIN_OUT = 4  // 接続したポート番号

GPIO.setmode(GPIO.BCM)
GPIO.setup(PIN_OUT, GPIO.OUT)

while True:
    GPIO.output(PIN_OUT, 1)
    time.sleep(3)
    GPIO.output(PIN_OUT, 0)
    time.sleep(3)

M5Stack

ボタンを押すと ON になります。

const int PIN_OUT = 32;  // 接続したポート番号

void setup()
{
    pinMode(PIN_OUT, OUTPUT);
}

void loop()
{
    M5.update();
    if (M5.Btn.isPressed())
    {
        digitalWrite(PIN_OUT, HIGH);
    }
    else
    {
        digitalWrite(PIN_OUT, LOW);
    }
    delay(100);
}

Discussion