United Statesからアクセスされていますが、言語設定をEnglishに切り替えますか?
Switch to English site

DesignSpark PCB: 新バージョン 13 - 発売開始

Skip to main content

遠隔水やりアプリ

by so-62kt

開発背景

私たちは「家庭で植物を育てたいが、つい水やりを忘れて枯らしてしまう」という課題に注目しました。植物を育てたいというニーズは多くある一方で、

  • いつ水をやればよいかわからない
  • 水の適切な量が判断できない
  • 忙しくて水やりの習慣が定着しない

といった理由から、断念してしまう人も少なくありません。そこで、誰でも簡単に植物の管理ができる「遠隔水やりアプリ」の開発を目指しました

設計と実装

本アプリには、次のような機能があります。

  • 土壌の乾燥度センサと連携し、水やりの適切なタイミングを判定する機能
  • ボタンひとつで適量の水を自動で与える機能
  • 水やりの履歴(日時や量)を記録・表示する機能

使用した機器は以下のとおりです。

  • Raspberry Pi
  • 土壌センサー
  • ポンプ(モーターとホース)
  • モータードライバ TA7291P
  • 電池

 

mceclip0_c6719ed30fe61c9ed9623a958156492d5864a3d4.png

実装の概要

このレポートでは、土壌水分センサーを使った自動水やりシステムの実装について説明します。主な技術要素としては、以下の3点があります。

  1. Javaによる時刻取得
  2. HTTP通信を利用したモーター制御
  3. SPI通信を用いたセンサー値の取得

 

ログイン情報の記録

システムのアクセスや処理の開始時刻を記録するために、Javaの System.currentTimeMillis() メソッドを使用しました。これはUNIXエポック(1970年1月1日)からの経過時間をミリ秒単位で返すため、高精度の時刻情報を取得することができます。 

モーター(ポンプ)のON/OFF制御

モーターの制御は、JavaプログラムからHTTP経由でPHPスクリプトを呼び出す方法で行いました。処理の流れは以下の通りです。

  1. JavaプログラムがHTTPリクエストを送信
  2. PHPスクリプトがラズベリーパイ上のシェルスクリプト(例:motor_control)を実行
  3. シェルスクリプトがGPIOを制御し、モーターを動作させる

この仕組みにより、遠隔からの水やり制御が可能となっています。

土壌センサーの値取得

使用デバイス

  • 土壌水分センサー(電極式)
  • MCP3002(10ビットA/Dコンバータ)
  • Raspberry Pi(SPI接続)

センサー値の読み取りコード(C言語)

以下は、SPI通信を通じてMCP3002からアナログ値を取得するC言語の関数です。

mceclip0_943694aba7c6c36f27f0aa158b837148a9803e36.png

この関数では、wiringPiSPIDataRW() を使ってSPI通信を行い、2バイトのデータを受信します。その中の10ビットを抽出して、0~1023の値として土壌の湿り具合を判断します。

デモ動画

so-62kt さんはまだ自己紹介を入力されていません...
DesignSpark Logo

DesignSparkアカウントを作成しませんか?

アカウントを作成すると、高機能な基板CADや使いやすい3次元CADが無料で使えるだけでなく、数千万点超の部品のCADライブラリやフットプリントや3Dモデルを検索しダウンロードできます。
アカウントを作成

アカウント作成済みの方はこちらからログイン

コメント