WaterPi:観葉植物のリモート散水および監視システム
コンポーネントと消耗品
> ![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
![]() |
| × | 1 |
アプリとオンラインサービス
> ![]() |
| |||
![]() |
| |||
![]() |
|
このプロジェクトについて
はじめに
このシステムは、家の植物を愛し、世話をしたいが、それを行うために日常の仕事で非常に忙しい人々に適したソリューションです。植物を育てるには、毎日水をやるなどの定期的なことがあるため、成功するには時間と労力が必要です。人々は時々彼らの植物の世話をするのを忘れます。また、旅行が多く、家で過ごす時間が少ない人もいます。この文脈では、彼らは一般的に彼らの観葉植物の世話をするために助けを求めます、さもなければ彼らは単にそれらを持っていることをあきらめます。 WaterPicanはそれらの人々が植物のために定期的なことをするのを助けます。また、リモートで制御できるため、植物の所有者は必要に応じて散水プロセスを簡単に妨害できます。
このシステムは、場所の温度と湿度、および地面の土壌水分を監視し、プラントにリモートで水を供給し、AWSIoTを介してすべてのデータをDynamoDBに保存します。収集されたデータは、植物が繁殖する条件をよりよく理解するために、さまざまなチャートや図で視覚化されます。
Raspberry Piは、nodejsアプリケーションを実行して、すべてのセンサーとウォーターポンプを制御します。その目的のために、私はJohnny-Fiveライブラリを使用することを好みました。 AWSと通信するために、JavaScript用のAWS IoTSDKを使用しました。
ステップ1:DynamoDBをセットアップする
DynamoDBは、センサーによって収集されたデータを保存するために使用されます。 DynamoDBページに移動し、次の属性を持つ新しいテーブルを作成します。
- テーブル名: waterpi_sensor_data
- パーティションキー:キー
- [並べ替えキーの追加]をクリックして、タイムスタンプを追加します
重要なことは、キーとタイムスタンプのタイプは文字列でなければならないということです。
<図>
ステップ2:AWSIoTをセットアップする
AWS IoTコンソールページに移動し、次の手順を実行します。
raspi-water-pump という名前の物を作成します
<図>
新しいポリシーを作成します。ポリシー名 pump-policy、 アクション iot:*、 リソース * 、許可、を選択します 次に、[ステートメントの追加]と[作成]をクリックします。
<図>
1-証明書の作成をクリックして証明書を作成します 。次に、公開鍵、秘密鍵、および証明書をダウンロードします。
<図>
次に、作成した証明書を選択して、次の手順を実行する必要があります。
- [アクション] をクリックします> アクティブ化 証明書のボタン
- [アクション>ポリシーを添付する]をクリックします 、作成したポリシー名を入力し、[添付]をクリックします
- [アクション>ものを添付する]をクリックします 、raspi-water-pumpと入力し、[添付]をクリックします
次のルールを作成します。
- 名前 saveToDynamoDB
- 属性 *
- トピックフィルターセンサー/データ
- アクションを選択しますデータベーステーブルにメッセージを挿入します
- テーブル名 waterpi_sensor_data
- ハッシュキー値 $ {topic()}
- 範囲キー値 $ {timestamp()}
- 役割名> [新しい役割を作成]をクリックします [許可]をクリックします 開始ページからボタンをクリックし、[役割名]ドロップダウンから選択します

ステップ3:Arduinoを準備する
水位、土壌水分センサーの出力はアナログ出力です。したがって、それらをRaspberry Piに直接配線する代わりに、Arduinoを使用してそれらのアナログ値を取得し、デジタル値としてArduinoを介してPiに送信することを好みます。 Arduinoコードはpiによって更新されるため、このステップで行う必要があるのは、Arduinoをコンピューターに接続し、標準の会社をコンピューターにアップロードすることだけです。
Arduino IDEをお持ちでない場合は、こちらの手順に従ってインストールしてください。
- 開く Arduino IDE
- ファイル>の例> Firmata> StandardFirmata を開く 例
- アップロード Arduinoにスケッチする

Arduinoスキーマへの土壌水分の配線は次のようになります;
- VCC(電源)->ピン7
- GND(グランド)-> GND
- AO(アナログ出力)-> A1
Arduinoスキーマへの水位センサーの配線は次のようになります;
- (+)-> PIN 4
- (-)-> GND
- S-> A0

その後、USBケーブルを介してarduinoをラズベリーパイに接続する必要があります。また、土壌水分センサーを植木鉢に入れ、水位センサーを水タンクに入れることを忘れないでください。
ステップ4:ラズベリーパイの準備
液晶画面、dht11、ラズベリーパイ付きリレーを介したウォーターポンプを配線します。
<図>
DHT11をPiに配線する
- S-> GPIO4(ピン7)
- (+)-> 3V3(ピン1)
- (-)-> GND(ピン25)
LCD画面の配線
- VCC-> 5V(ピン2)
- GND-> GND(ピン6)
- SDA-> GPIO2(ピン3)
- SCL-> GPIO3(ピン5)
ウォーターポンプ用配線リレー
- S-> GPIO18(ピン12)
- (+)-> 5V(ピン4)
- (-)-> GND(ピン20)
リレーとバッテリーパック付きのウォーターポンプの配線
- ウォーターポンプには2本のケーブルがあります。 1つはリレーに接続し、もう1つはバッテリーパックケーブルで配線する必要があります。
- 他のバッテリーパックケーブルをリレーに接続する必要があります。それらを接続する方法については、上の図を確認してください。
ステップ5:PiでNodejsアプリを実行する
このパートでは、piでnodejsアプリケーションを実行して、センサーデータを収集し、ウォーターポンプを制御します。 Raspberrypiはインターネットに接続する必要があります。イーサネットまたはwifi経由でそれを行うことができます。
先に進む前に、ノードをpiにインストールする必要があります。以前にnodejsをインストールしたことがない場合は、こちらのチュートリアルに従ってインストールしてください。
ラズベリーパイを接続し、以下を実行します:
git clone [email protected]:demirhanaydin / waterpi-node.gitcdwaterpi-nodenpmインストール
aws iotページからダウンロードした公開鍵、秘密鍵、および証明書ファイルを証明書の下に配置する必要があります フォルダ。また、ルート証明書からルートCA証明書ファイルをダウンロードする必要があります。そのファイルをrootCA.pemとして保存し、証明書の下に置きます フォルダ。
次に、 device.js を開きます お気に入りのテキストエディタでファイルを作成し、これらの行をファイルパスで更新します。 IOT_DEVICE_URL を取得する必要があります AWSIoTプラットフォームからクリックしてください。 https://XXXXXXXXX.iot.us-east-1.amazonaws.com のようになります
次に実行します
sudo node index.js
すべてが正しければ、液晶画面にセンサー値が印刷されているのを確認できるはずです。
<図>
また、DynamoDBテーブルに値が表示されます。アプリケーションはセンサーデータを20秒ごとにIoTプラットフォームに送信します
<図>
ステップ6:Webアプリケーションの実行
基本的なsinatraアプリケーションは、ハイチャートを使用してdynamodbテーブルにあるデータを視覚化します。また、ウォーターポンプを遠隔操作することもできます。ユーザーが開始/停止ボタンをクリックするたびに、AWSIoTプラットフォームにイベントを公開します。 Raspberry Piはこのイベントを受け取り、ポンプを開始するか停止するかを処理します。
チュートリアルを続行するには、Rubyをコンピューターにインストールする必要があります。そうでない場合は、このページをチェックアウトしてインストールしてください。
ターミナルを開き、次のコマンドを実行します
git clone [email protected]:demirhanaydin / waterpi-web.gitcdwaterpi-webbundleインストール
公開鍵、秘密鍵、証明書、およびrootCAファイルを証明書の下に配置する必要があります フォルダ。次に、 boot.rb を開きます これらの行を適切な値で更新します。 AWSマネジメントコンソールの[セキュリティクレデンシャル]ページからawsアクセスキーとシークレットを取得する必要があります。
完了したら、次のようにプロジェクトを実行する必要があります
ruby app.rb
ブラウザを開き、「 http:// localhost:4567 / 」と入力します dynamodbから収集されたセンサーデータをチャートで確認できるはずです。
<図>
[開始]をクリックすると、ポンプで植物に水をやり始めます。
これが私がプロジェクトを開発していたときに撮った写真です
<図>




おめでとうございます!
コード
Raspberry PiNodejsソースコード
ソースコードをraspberrypiにクローンし、awsiot証明書ファイルをcertsフォルダーに追加します。また、awsiotのurlhttps://github.com/demirhanaydin/waterpi-nodeでdevice.jsを更新する必要がありますWaterPiWebクライアント
boot.rbを資格情報で更新することを忘れないでくださいhttps://github.com/demirhanaydin/waterpi-web 回路図


製造プロセス
- ADLINKのMCMソリューションは、リモート監視と管理を強化します
- ラズベリーパイ制御アクアポニックス
- MoteinoとRaspberryPiを使用して室温を監視する
- RaspberryPiを使用した天気のリモートモニタリング
- ラズベリーパイ温度および光センサー
- ラズベリーパイセンサーとアクチュエーター制御
- カメラとPIRセンサーを備えたRaspberryPiホームセキュリティシステム
- GEは遠隔監視および診断会社SmartSignalを買収
- ITおよびOT向けのCiscoIntrosIoTリモートモニタリングソリューション
- IoTベースのリモートオイルおよびディーゼルタンク監視システム
- クラウドモニタリング、リモートコントロールシステム