遠隔水やりアプリ
開発背景
私たちは「家庭で植物を育てたいが、つい水やりを忘れて枯らしてしまう」という課題に注目しました。植物を育てたいというニーズは多くある一方で、
- いつ水をやればよいかわからない
- 水の適切な量が判断できない
- 忙しくて水やりの習慣が定着しない
といった理由から、断念してしまう人も少なくありません。そこで、誰でも簡単に植物の管理ができる「遠隔水やりアプリ」の開発を目指しました
設計と実装
本アプリには、次のような機能があります。
- 土壌の乾燥度センサと連携し、水やりの適切なタイミングを判定する機能
- ボタンひとつで適量の水を自動で与える機能
- 水やりの履歴(日時や量)を記録・表示する機能
使用した機器は以下のとおりです。
- Raspberry Pi
- 土壌センサー
- ポンプ(モーターとホース)
- モータードライバ TA7291P
- 電池
実装の概要
このレポートでは、土壌水分センサーを使った自動水やりシステムの実装について説明します。主な技術要素としては、以下の3点があります。
- Javaによる時刻取得
- HTTP通信を利用したモーター制御
- SPI通信を用いたセンサー値の取得
ログイン情報の記録
システムのアクセスや処理の開始時刻を記録するために、Javaの System.currentTimeMillis() メソッドを使用しました。これはUNIXエポック(1970年1月1日)からの経過時間をミリ秒単位で返すため、高精度の時刻情報を取得することができます。
モーター(ポンプ)のON/OFF制御
モーターの制御は、JavaプログラムからHTTP経由でPHPスクリプトを呼び出す方法で行いました。処理の流れは以下の通りです。
- JavaプログラムがHTTPリクエストを送信
- PHPスクリプトがラズベリーパイ上のシェルスクリプト(例:
motor_control)を実行 - シェルスクリプトがGPIOを制御し、モーターを動作させる
この仕組みにより、遠隔からの水やり制御が可能となっています。
土壌センサーの値取得
使用デバイス
- 土壌水分センサー(電極式)
- MCP3002(10ビットA/Dコンバータ)
- Raspberry Pi(SPI接続)
センサー値の読み取りコード(C言語)
以下は、SPI通信を通じてMCP3002からアナログ値を取得するC言語の関数です。
この関数では、wiringPiSPIDataRW() を使ってSPI通信を行い、2バイトのデータを受信します。その中の10ビットを抽出して、0~1023の値として土壌の湿り具合を判断します。
コメント