今回はRaspberry Piを使って水位を計測するシステムの構築方法を解説します。
土壌水分センサーとADCで手軽に構築できますので、ぜひ活用してみてください。
また、当サイトのRaspberry Piを使った自動栽培に関する記事を以下のページでまとめていますので、あわせてご覧ください。

Raspberry Pi(ラズベリーパイ)とは
Raspberry Pi 5は、Raspberry Pi財団が開発した最新のシングルボードコンピュータで、従来モデルよりも大幅な性能向上を実現しています。

搭載される64ビットクアッドコアプロセッサは、クロック速度が最大2.4GHzに達し、前世代よりも処理速度が格段に向上しました。また、4GBまたは8GBのRAMを選択できるため、教育用途からリソースを必要とするプロジェクトまで幅広く対応可能です。
グラフィックス性能も強化され、4K解像度でのデュアルディスプレイ出力をサポートしています。さらに、新たにPCIeインターフェイスが追加され、外部ストレージや高速デバイスとの接続が容易になりました。Wi-Fi 6やBluetooth 5.2の導入により、無線通信も高速かつ安定。
教育、IoT、AI開発、メディア再生など、多様な用途に対応するRaspberry Pi 5は、初心者から上級者まで幅広いユーザーにとって魅力的な選択肢となっています。
Raspberry Piでできることについては以下の記事で解説していますので、あわせてご覧ください。


水分量を計測するシステムの構築方法
水位を測る土壌水分センサーとADコンバータを組み合わせて水位計測システムを構築します。
今回は植物の水耕栽培をするために100均で購入した食器を乾かすためのカゴに水を入れ、水位計測を行います。

土壌水分センサー
水位を計測するのに使用するセンサーは、Gravityのアナログ容量性土壌水分センサーです。
本来は土に差し込んで、土の中の水分量を計測するために使われるセンサーですが、直接水中に沈めても出力電圧が変化するため、今回は水位センサーとして使用することにしました。
センサーの詳細は以下のページで解説していますので、あわせてご覧ください。


ADコンバータ(ADC)
今回使用するADコンバータは、Ti製のADS1015です。このADCで土壌水分センサーの出力電圧をデジタル信号に変換し、I2CでRaspberry Pi 4に送信します。
ADS1015の詳細は以下の記事で解説していますので、あわせてご覧ください。



システムの構成
今回作成するRapsberry Piの水位計測システムは以下のような構成となっています。
特にはんだ付け等は必要なく、ジャンパーワイヤーで接続するだけで構成できます。

各モジュール間の回路の接続は以下のような構成となります。


作成したソースコード
今回、作成したソースコードは以下の通りです。
ADS1015からI2C通信で受け取ったデータを電圧地に変換し、出力するだけのプログラムです。
Raspberry PiとのI2C接続を行うには、事前にRaspberry Pi側でインタフェースの設定を行う必要があります。設定方法は先ほどのADS1015の解説ページを参考に、事前に済ませておいてください。
import time
import Adafruit_ADS1x15
###Ads1015初期化###
# ADS1015の設定をします
ads = Adafruit_ADS1x15.ADS1015()
GAIN = 1
RANGE = 4.096 * 2
UNIT = RANGE / 4096
# ループを100回繰り返します
for i in range(1000):
# ADSのアナログ入力ピンを指定します
ads1015_pin = 0
data = 0
volt = 0
# ADS1015からデータを取得します
data = ads.read_adc( ads1015_pin, gain=GAIN)
#data = ads.read_adc( ads1015_pin)
# 取得データから電圧を計算します
volt = data * UNIT
print("受信データ:" + str(data))
print("電圧 :" + "{:.3f}".format(volt))
# 1秒待機します
time.sleep(1)
print("done.")

実行結果
水位が低い場合
まずは写真のように水位が低い状態で電圧を計測します。

Raspberry Pi上で先ほどのPythonのプログラムを実行すると以下のように電圧を取得することができました。空に近い状態では3.3V付近となっています。

水位が高い場合(満水付近)
続いてカゴの中の水位が満水に近い状態まで水を入れてみます。

すると以下のように1.4V付近まで電圧が下がりました。

このように満水時の電圧を記憶しておいて、Raspberry Piでポンプを駆動して水を注ぎ、満水時の電圧になったらポンプを停止する、といった処理をプログラムで実装してやることで自動水やり器を構築できます。
\ Pythonを自宅で好きな時に学べる! /
まとめ
今回はRaspberry Piと土壌水分センサーを組み合わせて、水位計測システムをお構築する方法を解説しました。
植物の自動栽培に役立ちますので、ぜひ活用してみてください。

また、以下の記事で効率的にPythonのプログラミングスキルを学べるプログラミングスクールの選び方について解説しています。最近ではほとんどのスクールがオンラインで授業を受けられるようになり、仕事をしながらでも自宅で自分のペースで学習できるようになりました。
スキルアップや副業にぜひ活用してみてください。

スクールではなく、自分でPythonを習得したい方には、いつでもどこでも学べる動画学習プラットフォームのUdemyがおすすめです。
講座単位で購入できるため、スクールに比べ非常に安価(セール時1200円程度~)に学ぶことができます。私も受講しているおすすめの講座を以下の記事でまとめていますので、ぜひ参考にしてみてください。

それでは、また次の記事でお会いしましょう。


コメント