RaspberryPiで自動液体スプレーを作る!

6月 4, 2022

コロナ禍でたくさんの電子工作物が生まれましたが, 感染防止の観点で自動アルコールディスペンサーもありました. ただしその機構はプッシュ式のものを物理的にモータ等で駆動したものが多かった印象です. そこで今回はポンプを使って液体噴射してみます. ぜひお試しを!

準備したもの

セットアップ

ソフトウェア

pigpio

ポンプを稼働させるGPIO信号を生成させるためにインストールします.

# install gpio
pip3 install pigpio

ハードウェア

配線

RaspberryPi, モータドライバ, ポンプやACアダプタを結線します.

RaspberryPiモータドライバ
5VVcc
GNDGND
GPIO5INA1
GPIO12INA2
GPIO13PWMA
RaspberryPiとモータードライバーのピンの対応関係

モータードライバ仕様

ポンプを動作させるには12Vの電圧をそのモータに印加させる必要があります.
モータドライバTB67H420FTGの仕様を見ると, PWMAに1, INA1に1, INA2に0のGPIO信号を書き込むと12Vの電圧を印加できることがわかります. そうすると, モータが動き, 液体を噴射させることができます.

上記仕様に従って下記プログラムが記述されています.
配線して, 下記プログラムを実行し, 液体が噴射されれば, うまくセットアップできています.

import pigpio
import time

class Pump():
    def __init__(self, in1, in2, pwm):
        self.in1, self.in2, self.pwm = in1, in2, pwm
        self.pi_in1 = pigpio.pi()
        self.pi_in2 = pigpio.pi()
        self.pi_pwm = pigpio.pi()
        self.pi_in1.set_mode(self.in1, pigpio.OUTPUT)
        self.pi_in2.set_mode(self.in2, pigpio.OUTPUT)
        self.pi_pwm.set_mode(self.pwm, pigpio.OUTPUT)

    def spray(self, spraytime):
        self.pi_in1.write(self.in1, 1)
        self.pi_in2.write(self.in2, 0)
        self.pi_pwm.write(self.pwm, 1)
        time.sleep(spraytime)
        self.pi_in1.write(self.in1, 0)
        self.pi_in2.write(self.in2, 0)
        self.pi_pwm.write(self.pwm, 0)

if __name__ == '__main__':
    in1, in2, pwm = 5, 12, 13
    pump = Pump(in1, in2, pwm)
    pump.spray(0.1)

終わりに

今回はポンプを使って液体噴射してみました. 余計な機構がないので, パッケージ化すれば, コンパクトになると思います. 液体の中身を変えれば多様な使い方ができると思うので, ぜひ使ってみてください!