Raspberry Pi用リレー制御基板の利用

Posted by: otsuka

Raspberry Piでリレー制御を行ってみます。

Raspberry Piで使用できるリレー制御回路基板には様々な種類のものがありますが、
今回は Raspberry Pi の 40 pi ヘッダーに差す HAT 形式のリレー制御拡張基板
ADRSRU2 を使用します。

ADRSRU2はリレーが2回路付いたモデルで、4回路のADRSRU4と8回路のADRSRU8も存在します。
リレーユニットは NINGBO SONGLE RELAY CO.,LTD の SRD-05VDC-SL-C
AC 250V/10A, DC30V/10A までの電圧/電流に対応。

github に詳細な情報ページが用意されています。
https://github.com/bit-trade-one/ADRSRU-RaspberryPi-Relay-Unit

使用例のサンプルプログラムも用意されています。
https://github.com/bit-trade-one/ADRSRU-RaspberryPi-Relay-Unit/tree/master/sample

この公式の sample プログラムは RPi.GPIO を使って全ポートが使用可能か順に on/off しています。
2回路版の使用 GPIO ポートは 4 と 17、
4回路版は 4, 17, 27, 22、
8回路版は 4, 17, 27, 22, 18, 23, 24, 25
を使います。
基板上に LED があるのでリレーに機器を繋いでいなくても on/off の状態が分かるようになっています。

特定の端子に接続した機器一台だけをon/offするなら、RPi.GPIO を使って以下のようなコードで制御できます。
#!/usr/bin/env python3
# - coding: utf-8 -

import RPi.GPIO as GPIO
import time

GPIO.setwarnings(True)        # False にしていない場合、前回起動時の設定が残っていると warning が出る
GPIO.setmode(GPIO.BCM)        # pin の割り当てを Raspi の BOARD に合わせたものにするか 
                              # Broadcom の chip に合わせたものにする

GPIO.setup(4, GPIO.OUT)       # in にするか out にするか
                 # setup の最後の option に initial=GPIO.HIGH を加えて
                              # まず high にしておくこともできる。

port = 4                      # 1番目の端子 = GPIO 4 を制御 

for i in range(3):            # 3回繰り返し
    GPIO.output(port, True)   # 1 / GPIO.HIGH / True = on
    time.sleep(2)
    GPIO.output(port, False)  # 0 / GPIO.LOW / False = off
    time.sleep(2)

GPIO.cleanup()                # 後始末の cleanup をすると 0 になる。

なお、BC-11ah では GPIO 2 と 3 を使いますので ADRSRU シリーズとは同時に使用することができます。