自動水やり機構の回路確認
水位センサーの作成
まず水位センサーを自作した。
回路図は以前の記事で示した通り。
raspberry pi picoに書き込んだコードは以下。
from machine import Pin
import time
# 水位センサー:GPIO 5
water_pin = Pin(5, Pin.IN)
# LED:GPIO 16
led = Pin(16, Pin.OUT)
led.off()
SAMPLE_COUNT = 10
def is_water_detected():
low_count = 0
for _ in range(SAMPLE_COUNT):
# 水に触れるとGPIO 5がLowになる
if water_pin.value() == 0:
low_count += 1
time.sleep_ms(10)
return low_count >= 8
while True:
if is_water_detected():
print("水位:電極に到達")
led.on()
else:
print("水位:電極より下")
led.off()
time.sleep(1)
動作確認。
水につけていない時にはLEDが消灯して、つけた時にはLEDが点灯。
はじめESP32で試したが出力電圧が3.3 Vで電流が小さくなってしまうため、この回路では水位センサーを実現できなかった。持っているRP2040ボードは5 V出力ができたため、そちらで試すと実現できた。


この回路では水位センサーでLEDの点灯を制御している。
これを応用して、リレーモジュールを介してポンプを制御するようにしたら自動水やり機構が実現できる。
水位とポンプ動作の連動
作成した水位センサーのLEDに入力している信号をリレーモジュールに入力するようにした。
また、水位が達していない場合にはポンプを動作させたい。つまりリレーをオンにしたいので
if is_water_detected():
print("水位:電極に到達")
led.off()
else:
print("水位:電極より下")
led.on()
とした。
リレーモジュールには小信号回路側、大電流側回路側のそれぞれに3端子用意されており、小信号側は5 V、GNDと入力信号(= GPIOと接続)のピンがある。大電流側にはNO、COM、NCが存在していてNOはリレー作動時COMと導通して、リレーが作動していない時にはNCとCOMが導通する(参考: https://tukumolog.com/relay-module-instructions/ )。
最終的には以下の写真のように回路を構成して動作した。
OFF時 = 水位が達している時

ON時 = 水位が足りない時

まとめ
回路の動作確認はできた。
次は3Dプリンタで作ったケースに回路を配置して、実際に自動水やりが実現するかを確かめたい。