アルコール除菌ポンプを手を触れずに噴霧できるようになるArduinoモジュールの製作(実装編)
先日、Arduinoを使ってアルコール消毒液ポンプを自動噴霧する記事を載せました。
これは自宅で作ったのですが、会社のオフィスに持っていくと明るすぎてセンサーがなかなか動作しなかったりします。使用環境に応じてセンサー動作の閾値を変える必要があったのと、この設定を表示できること、さらには、消耗度合いなどを管理できるように使用回数を表示できることが必要と考えました。
今回は使用回数表示やセンサーの感度調整を追加して、オフィスで使えるようにケースに実装を行いました。
実際の動作ムービーはこちら。
部品も安くて入手性の良いものを用いてますので、みなさんのご家庭やオフィスのアルコール消毒液ポンプの機能拡張にも役立てていただければと思います。
目次
回路図
回路図を示します。
fritzingの回路図データはgithubにて公開しています。
ポイントは以下の通り。
CdSセンサー
Arduinoのアナログ入力A0ピンにCdSセンサー(最大0.5MΩ)を接続。
CdSセンサーは暗いところでは抵抗値が大きくなり、明るいところでは抵抗値が小さくなります。この特性に従ってArduinoのアナログ入力値が変化するので、センサーに手をかざしてちょうど良いポイントでサーボモーターを動かせば、自動噴霧器の基本動作が実現できます。
また、センサーを置く位置も使い勝手に影響します。
ポンプの噴射口から離れると手をかざしにくくなりますし、Arduino基板の近くに実装してポンプの噴霧口の近くに置くと基板にアルコールがかかり、故障の原因になるかもしれません。
そこで、CdSセンサーは小型の丸いケースに入れて、センサーの端子だけ導線で伸ばしてArduinoの制御ユニットとはコネクタで接続するようにしました。CdSセンサーに極性はありませんので、ケースに2つ穴を空けて動線を通し、センサーと結線するだけで作成することができます。ケースは上が透明で水の侵入を防げれば何でもOKです。
これで取り回しのしやすいセンサーユニットが完成します。
サーボモーター
前回の記事では2.0kg・cmの小型サーボを使っていましたが、今回はAmazonで見つけた20kg・cmのより強力なもの(DS3218 20kg高トルク フルメタルデジタルステアリングサーボ 防水サーボ バハのラジコン対応 (180°))に変えています。
今回使ったポンプのボタンがなかなか重たくて、輪ゴムで予め引っ張って補助していたものの蓋の固定器具が少しでもずれるとサーボの力が足りず、引っ張れなくなったりするので、力ずくで解決しました。
キャラクタ液晶
16文字2行表示のキャラクタ液晶「1602A」(HiLetgo® 2個セットDC 5V HD44780 1602 LCD ディスプレイモジュール 16×2キャラクタ LCDブルーブラックライト [並行輸入品])を使用しました。
今回は噴霧した回数とセンサーの閾値設定のみを表示するのに使っています。結線の本数は多いですが、制御はArduinoのLCDライブラリがそのまま使えるので表示制御は簡単です。(詳しくはソースコードで。)
キャラクタ液晶1602Aは、VOピンへの入力電圧でコントラストを調整することができます。今回の作品ではセンサーの閾値設定にボリューム可変抵抗を使い、同じようなボリュームが増えると操作がわからなくなるので、事前にちょうど良さそうな抵抗値を見つけて固定の抵抗素子(4.7kΩ)をはさんでます。
電源
今回使用したサーボモーターとArduino制御基板はともに5Vを電源とします。
また、計測してみると最大電流は2A弱まで必要とわかりましたので、iPadを充電できるぐらいの2A出力できるUSB電源を用いることにしました。
USBから電源を取るためにAmazonで安いコネクタを購入。
最初、これをArduino制御基板に直接半田付けしたのですが、表面実装のコネクタにそれほど強度を確保できず、少しでもコネクタにストレスがかかると基板から剥がれてしまいます。(これで何度も半田付けすることに・・・。)
結果、このコネクタ部分を外に出して、Arduino制御基板とは普通のピンヘッダで接続することにしました。
これでUSBコネクタが壊れてもここだけ交換すればOKです。
Arduinoソースコード
githubで公開しています。
基本的な制御は、ボリューム可変抵抗の値を閾値として読んで、CdSセンサーから得た値がそれを下回ったらサーボモーターを回してポンプを動かすというものです。
センサーの検知周期などはお好みにあわせてカスタマイズしてください。
ユニバーサル基板への実装
Arduino、LCD(1602A)、スイッチ、コネクタ類をユニバーサル基板に実装します。
センサーユニット、USB電源ケーブル、サーボモーターとはピンヘッダで接続します。
裏側の参考実装はこちら。
- 一番結線の多いArduinoの10番ピン~13番ピン、LCDのD4~D7を真横に並べて指すことで配線を減らしています。
- LCDで多用するVCCライン、GNDラインを確保することで、できるだけ接続をシンプルにしています。
- 電源側のピンが3つ余ってますが、これは追加の外付けデバイスを 接続できるように予め用意したものです。
- ArduinoのPC接続用ピン5本を残しています。これは、ソフトアップデート用です。
最終的に組み上げたシステム構成がこちら。
最後に
今回はArduinoと制御しやすくて安いCdSセンサーを用いたシステムを組みました。実装もシンプルなので、複数台作るのもそれほど難しくないと思います。
ただ、明るさは部屋によってまちまちで、誤動作も起きそうな気がします。調整機能はつけましたが、そこが扱いづらい点だと思います。
将来的には、CdSセンサーを距離センサー(ELEGOO Arduino用 HC-SR04超音波距離センサー5PCS)に置き換えて、センサーに手を近づけたときだけ動作するように置き換えたいなあと考えてます。
パーツリスト
今回使った主要な部品をリストアップしておきます。
- Arduino pro mini互換品
- キャラクタ液晶
- CdSセンサー
- ボリューム型可変抵抗
- トグルスイッチ
- 抵抗
- ユニバーサル基板
- ケース