コロナ過になってから至るお店に消毒用のアルコールが設置され、今では自動のものが多くなってきている印象を受けます。
皆さまのご家庭にも、1つは消毒アルコールがあるかと思います。もちろん私の家にもあります。
そこで、今更ではありますが、「自動アルコール消毒器」を自作してみました。
見た目は少しあれですが、サムネの画像にある通り、センサの下側に手をかざせばシュッとアルコールが吹き出すスタンダードなやつになります。
Raspberry Pi picoを使って簡単に出来る自動アルコール消毒器ですので、自作の自動アルコール消毒器を設置したい、と思っている方がいれば、ひとつ参考にでもしていただければ幸いです。
目次
初めに
準備するもの
・Raspberry pi pico × 1
・サーボモーター(SG90) × 1
・赤外線センサー(Treedix LM393) × 1
・ブレッドボード × 1
・ジャンピングワイヤー × 多数
・5V電源(micro USB)
・アルコール消毒器(握るタイプ) × 1
・細めの針金(20cm程度) × 1
・プッシュタイプの先のノズル(無ければストロー) × 1
使用するサーボモーターのトルクの関係上、本来使いたいはずの下向きに噴射する「プッシュタイプ」の容器が使えません(パワー不足)。ギアを組み合わせて大きな力に変換させる方法は実力不足によって断念しました。
そこで、握るタイプの容器(小さい力で噴射可能)を使い、噴射を水平から下向きに変更するために「プッシュ型のノズルの先」を引っこ抜き、握るタイプの先へ移植致しました(一応ストローでも可能でしたが、噴射時のアルコールが滴るように落ちてくるのが気になったので)。
試験用の回路とプログラム作成
ハードウェア
上図のような感じで、とりあえず仮で回路を組みます。
GPIO2をセンサー入力とし、センサーの信号の変化でGPIO0のpwm出力をON,OFFさせてサーボモーターを制御する回路です。
今回使用する Treedix LM393 の赤外線センサーは、発光部を遮るとその光が反射して受光部に入り込む事で、OUTのHIGH信号5VがLOW信号0Vに変化します。反応する距離はポテンショメータノブで調整できます。
続いてプログラムを書きます。
プログラム(python)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
from machine import PWM, Pin import time servo1 = PWM(Pin(0)) servo1.freq(50) pin = machine.Pin(2, machine.Pin.IN) max_duty = 65025 dig_0 = 0.0725 #0° dig_90 = 0.12 #90° mode = 1 while True: if pin.value() == 0 and mode == 1: servo1.duty_u16(int(max_duty*dig_0)) time.sleep(1) servo1.duty_u16(int(max_duty*dig_90)) time.sleep(1) mode = 0 elif pin.value() == 0 and mode == 0: time.sleep(1) else: mode = 1 time.sleep(1) |
サーボモーターの作動角度は90度としました。
また、手をかざした時に1度だけ噴射し、再度噴射させる場合は一度手をセンサから外し、再度センサに手をかざさないと噴射出来ないようにmode名の変数を使用しました。
pin.valueはセンサの出力になるので、LOW(手をかざした時)+mode変数が1の時だけ噴射する仕組みです。
modeは一度噴射すると0となり、一度手を抜いてpin.valueをHIGHにしなければ1にならないようになっています。
それでは、この段階で一度テストをしてみます。↓
容器加工と回路取り付け
ノズルの加工
ノズルの先に、前途したプッシュ型の先端を移植するか、ストローをL字型にして、下向きに取り付けます。
加工後に何度か噴射してみて、アルコールが適量出てくるか確認してみます。
回路の取り付け
握る部分に穴を空けて、そこに針金を通します。あとはその付近にサーボモーターをタイラップ等で固定して、サーボモーターのブレードの部分に針金をつなげます。針金の長さやブレードの位置については、都度調整して決めます。
ブレッドボードを背面に付けて、ノズルの先端にセンサーを取り付ければ完成です。
動作テスト
こんな感じになります。