WaterPi: 観葉植物の遠隔水やり&監視システム – Raspberry Pi & Arduino連携
必要な部品と材料
- Raspberry Pi 1 Model B × 1
- Arduino UNO × 1
- DHT11 温湿度センサー (4ピン) × 1
- YL-69 土壌湿度センサー × 1
- 水位センサー × 1
- LCD 16×2 (標準) × 1
- ウォーターポンプモーター × 1
- 5V リレー × 1
- 単3電池ボックス (4本用) × 1
使用するアプリとオンラインサービス
- AWS IoT Core
- AWS DynamoDB
- Johnny-Five (Node.js ロボティクス/IOフレームワーク)
プロジェクト概要
忙しくて植物の世話ができない人、旅行が多い人向けの自動水やり・監視システム。温湿度・土壌湿度・水位を監視し、遠隔で水やりを実行。全データをAWS IoT経由でDynamoDBに蓄積し、Webダッシュボードで可視化します。
システム構成
- Raspberry Pi: Node.js (Johnny-Five + AWS IoT SDK) でセンサー読み取り・ポンプ制御・AWS通信
- Arduino UNO: アナログセンサー (土壌湿度・水位) を読み取り、StandardFirmataでPiにデジタル値として転送
- AWS: IoT Coreでメッセージルーティング、DynamoDBで時系列データ保存、ルールエンジンで自動書き込み
- Webアプリ: Sinatra + Highcharts でデータ可視化、ボタンで遠隔ポンプ制御 (AWS IoT経由でPiに指令)
セットアップ手順
Step 1: DynamoDBテーブル作成
- テーブル名:
waterpi_sensor_data - パーティションキー:
key(String) - ソートキー:
timestamp(String)
Step 2: AWS IoT設定
- Thing作成: 名前
raspi-water-pump - ポリシー作成: 名前
pump-policy, アクションiot:*, リソース*, 許可 - 証明書作成 (1-Click): 公開鍵・秘密鍵・証明書をダウンロード
- 証明書をアクティベート、ポリシー・Thingをアタッチ
- ルール作成: 名前
saveToDynamoDB, トピックフィルターsensor/data, アクション「DynamoDBに挿入」、テーブルwaterpi_sensor_data, ハッシュキー${topic()}, レンジキー${timestamp()}, 新規ロール作成
Step 3: Arduino準備
- Arduino IDEで ファイル > スケッチ例 > Firmata > StandardFirmata を開き書き込み
- 配線:
- 土壌湿度: VCC→D7, GND→GND, AO→A1
- 水位: +→D4, -→GND, S→A0
- USBでRaspberry Piに接続、センサーを鉢と水タンクに設置
Step 4: Raspberry Pi配線
- DHT11: S→GPIO4(ピン7), +→3V3(ピン1), -→GND(ピン25)
- LCD (I2C): VCC→5V(ピン2), GND→GND(ピン6), SDA→GPIO2(ピン3), SCL→GPIO3(ピン5)
- リレー (ポンプ用): S→GPIO18(ピン12), +→5V(ピン4), -→GND(ピン20)
- ポンプ: 2線のうち1本をリレー、もう1本を電池ボックスへ。電池ボックスのもう1線をリレーへ (回路図参照)
Step 5: Node.jsアプリ実行
git clone git@github.com:demirhanaydin/waterpi-node.git
cd waterpi-node
npm install
- 証明書ファイル (公開鍵・秘密鍵・証明書・rootCA.pem) を
certs/に配置 device.jsのIOT_DEVICE_URL(例:https://xxxxxx.iot.us-east-1.amazonaws.com) と証明書パスを更新sudo node index.jsで起動- LCDにセンサー値表示、20秒ごとにDynamoDBへ送信されることを確認
Step 6: Webアプリケーション実行
git clone git@github.com:demirhanaydin/waterpi-web.git
cd waterpi-web
bundle install
- 証明書ファイルを
certs/に配置 boot.rbでAWSアクセスキー/シークレット等を設定ruby app.rbで起動、ブラウザでhttps://localhost:4567/にアクセス- Highchartsでセンサー推移を表示、Start/Stopボタンで遠隔水やり制御
ソースコード
- Raspberry Pi Node.js: waterpi-node (証明書配置・device.js更新要)
- Webクライアント (Sinatra): waterpi-web (boot.rb更新要)
回路図
製造プロセス
- GE、SmartSignalを買収完了しリモート監視・予知診断を強化
- Raspberry Pi制御アクアポニックスシステム:構築ガイド & コード
- ホームエナジーセンター:Raspberry PiとMoteinoで太陽光発電、ソーラー熱、室温を監視
- Raspberry Pi 3とPubNubでリモート気象監視
- Raspberry PiとDS18B20でマルチセンサー温度・光監視システムを構築
- Raspberry Piでセンサーとアクチュエータを制御:加速度計、サーボ、データストリーミング
- Raspberry Piでホームセキュリティシステムを構築:PIRモーション検知+カメラメール通知
- クラウド監視:リアルタイム資産管理のためのリモート制御システム
- ADLINK、リモート施設監視・予知保全向け高度MCMソリューションを発表
- シスコ、IT/OT環境向けクラウド管理型IoT監視を発表
- IoT対応オイル・ディーゼルタンク遠隔監視システム

