前の記事でウォーターポンプを使用した自動アルコールディスペンサーを作成しましたが、IRセンサーだとやはり周りの光に影響され誤動作が起こります。
そこで、光に影響されない超音波センサーを使用した物に変更したいと思います。
前回作成したIRセンサー式の記事
blogdaichan.hatenablog.com
使用部品
超音波センサー:HC-SR04、前回のパーツのIRセンサーを超音波センサーに変更します。
抵抗:1kΩ×1本 2kΩ×1本、5V⇒3.3Vにプルダウンするため
回路図
IRセンサーを超音波センサーに変え、プルダウン用の抵抗を追加しました、3.3Vに接続しプルダウン抵抗無しで動くかも知れません、試していませんが。
ケースの一部変更(超音波センサー取付のため)
超音波センサーを取り付けるためケースの一部を変更します、またスプレーノズルを市販のスプレーボトルのノズル部分を使用するよう変更しました(前回記事のパーツリストにあるスプレーボトルのノズルに対応しています)。
プログラムコード(2021/08/08 更新)
HC-SR04 のライブラリーを使用するとプログラムが簡単になりますので 、Thonnyを使用しライブラリーをインストールします。
Thonny を起動し [ツール]⇒[ Manage packages] を開き [hcsr04] で検索し、検索された中の [mPython-hcsr04] をクリックしインストールするとMicroPython用のライブラリーがインストールできます。
MicroPython プログラムコード
動作させると Thonny で以下のエラーが出ますが問題なく動きます。
WARNING: Could not sync device's clock: 'RTC' object has no attribute 'init'
WARNING: Device's real-time clock seems to be off by 18960713 seconds
これについての関連記事がありました。
このフォーラムによると Thonny を Ver.3.3.11 にすると出ないようです、ちなみに私のはVer.3.3.10でした。
from machine import Pin from hcsr04 import HCSR04 from utime import sleep relay = Pin(16,Pin.OUT) led_red = Pin(17,Pin.OUT) led_blue = Pin(18,Pin.OUT) sonic = HCSR04(trigger_pin=14,echo_pin=15,echo_timeout_us=1000000) while True: distance = int(sonic.distance_cm()) print (distance) if distance > 6: relay.value(0) led_red.value(1) else: led_red.value(0) led_blue.value(1) sleep(0.2) relay.value(1) sleep(0.3) relay.value(0) sleep(2) led_blue.value(0)
動作試験(仮組み)
動作試験を行うため仮組みしました、最初画像の上側の超音波センサーを使用しましたが動作が不安定で下側の超音波センサーに変えました、同じHC-SR04ですが全くの別物です。
手持ちに水晶発振子の付いた画像下側の超音波センサーがなかったので、不具合が出た超音波センサーを使用しましたが距離測定が不安定ではまりました、。
組み込んだ画像です、スプレーノズルはホットグルーで超音波センサーに貼り付けました、見た目は良くありませんが蓋で隠れますので。(^_^;