スマート都市型植物自動給水システム:センサー駆動の自動水やり
必要な部品と材料
電子部品
| 部品 | 数量 | 備考 |
|---|---|---|
| Arduino 101 (Intel Curie搭載) | 1 | パターンマッチングエンジン(PME)とBLE内蔵 |
| ブレッドボード 400穴(電源レール付き) | 1 | |
| ロータリーポテンショメータ | 1 | LCDコントラスト調整用 |
| 16x2 キャラクタLCD | 1 | ステータス表示用 |
| 抵抗 330Ω | 1 | LCDバックライト用 |
| TMP36 温度センサー | 1 | アナログ出力、-40〜125℃対応 |
| サーボモーター 180°(サーボホーン付き) | 1 | 給水バルブ制御用 |
| 雨滴センサー(制御基板付き) | 1 | 降雨検知で給水スキップ |
| 土壌湿度センサー(制御基板付き) | 2 | オプション:土壌水分過多時の給水防止 |
| ジャンパーワイヤー | 多数 | 配線用 |
非電子部品(給水タンク・構造部)
| 部品 | 数量 | 備考 |
|---|---|---|
| 牛乳パック(1Lまたは2L) | 1 | 給水タンク兼雨水貯留タンク |
| 柔軟なプラスチックチューブ(20〜30cm) | 1 | 給水パイプ用 |
| モデリングクレイ/ホットグルー | 適量 | チューブ接続部のシーリング |
| 短いプラスチックロッド | 1 | 給水パイプの支持材 |
| クラフトバスケット/収納ボックス | 1 | 電子部品の収納ケース |
| 高台(小さなテーブルやベンチ) | 1 | タンクを高く設置し重力給水を実現 |
| 植物(鉢植え) | 1 | 給水対象 |
工具
- ハサミ/カッター
- プラスドライバー(サーボホーン取付用)
- テープ(通常・絶縁両方)
電源オプション
- USB給電: USB A-Bケーブル(PCまたはACアダプタ接続)
- 電池駆動: 単3NiMH充電池 8本 + 4本用電池ボックス 2個(スイッチ付き)
ソフトウェア・アプリ
- Arduino IDE(Curie Core 2.0.2以上)
- Nordic Semiconductor nRF Connect(スマホアプリ:BLE経由で時刻設定)
- CuriePMEライブラリ(GitHubから取得)
プロジェクト概要
都市環境での植物栽培を自動化・最適化する給水システムです。Arduino 101の内蔵機能(リアルタイムクロック、Bluetooth Low Energy、パターンマッチングエンジン)と外部センサーを組み合わせ、「その環境での最適な給水時刻」を自律的に学習・判断し、自動で水やりを行います。
核心コンセプト
1. 重力と水圧を利用した給水機構
牛乳パックを加工して給水タンクを作成。高所に設置し、底部にチューブを通してサーボで開閉します。重力によって自然に水が流れ出る仕組みで、ポンプ不要・低消費電力を実現。雨水も上部の開口部から貯留でき、家庭用水道水を補完します。

2. TMP36温度センサー + Intel Curie PME(パターンマッチングエンジン)
植物の給水に最適な気温(約25℃)に最も近い時刻を、機械学習で特定します。
- 午前8時〜午後9時の14時間、毎時30回(2分間隔)温度を記録
- 最初の1回を除く29回の平均値をその時間帯の代表値としてPMEに学習
- PME(128ニューロンのハードウェアニューラルネット)が「25℃」という目標パターンを分類
- 分類されたカテゴリ(時刻)を翌日の給水時刻として採用

3. リアルタイムクロック (RTC) + Bluetooth Low Energy (BLE)
- RTCで時刻管理(給水時刻、データ記録時刻、月判定)
- 初期時刻設定をスマホアプリ(nRF Connect)経由でBLE通信により行う
- 16進数で「時・分・日・月」を順次送信(確認用ID含む計5回)

4. フラッシュメモリへの学習データ保存
- 初回学習完了後、PMEの知識をオンボードシリアルフラッシュに保存
- 電源断・再起動時も前回の最適時刻から継続可能
- ※フラッシュへの書き込みは初回のみ。月ごとの季節変化への適応はソフトウェア側で毎日再学習
動作フロー
- 起動・時刻設定: BLE接続待機 → nRF Connectで時刻入力 → 切断待ち
- 初回学習フェーズ: 翌日8時から14時間かけて温度データ収集・学習 → 25℃に最も近い時刻を特定 → フラッシュに保存
- 通常運用(無限ループ):
- 毎日8時から再学習開始(前日データはクリア)
- PMEで25℃を分類 → 該当時刻に給水実行
- 分類失敗時は月別デフォルト時刻(冬12時、春秋14時、初夏15時、真夏16時)を使用
- 給水時:雨センサー HIGH または 土壌湿度過多ならスキップ
組み立て手順
ステップ1: 回路配線
Fritzing図に従ってブレッドボード上に配線。土壌湿度センサーはオプション。雨センサーとサーボは設置場所まで配線延長が必要な場合あり。


ステップ2-4: 電池駆動の場合の電源準備
2つの電池ボックスを直列接続(片方の+ともう片方の-を接続)、テープで固定、Arduino基板の裏面に取り付け。カバーを一体化して電池交換を容易に。


ステップ5: ケースへの収納
クラフトバスケットに基板を入れ、側面に2つのスロットを切り出し(USBプログラミング用、センサー/アクチュエータ配線用)。

ステップ6-10: 給水タンクの製作
- 牛乳パックの上部をカット(持ち手付近まで)
- 底部の真下に小さな穴を開け、チューブを挿入
- クレイで穴周りをシーリング(チューブ内部に入らないよう注意)
- サーボをタンク底部近くに固定、サーボホーンにチューブ中間とプラスチックロッドをテープ固定
- 高台にタンクを固定


ステップ11: 最終設置
チューブ出口の真下に植物を配置。土壌湿度センサーを土に挿し、雨センサーを植物近くの床に置く。デバイスはタンク・植物から少し離れた場所に設置。
プログラミングと運用
書き込み
添付のスケッチをArduino IDEでArduino 101へアップロード(Curie Core 2.0.2以上)。コード内に詳細なコメントあり。
初回起動手順
- デバイス電源ON → LCDに「Input Time: BLE」表示
- スマホでnRF Connect起動 → "Arduino 101"に接続
- 特性値に16進数で順次入力:確認ID → 時 → 分 → 日 → 月
- 切断 → デバイスは翌朝8時を待機

日々の動作
- 給水実行時、LCDに「Running...」表示
- 雨天時:「Raining right now.」表示でスキップ
- 土壌過湿時(オプション):「Soil too moist.」表示でスキップ
- 正常給水時:サーボ135°回転(7秒間) → 元の位置に戻す → 「Done」表示

コードのポイント
- CuriePME: `learn()`でベクトル(平均気温)とカテゴリ(時刻)を学習、`classify()`で目標値25℃を分類
- EEPROM/フラッシュ: アラーム時刻、誕生日、バックライト設定等を不揮発保存
- DHT21対応: 温湿度表示フェイス追加(アップデートで対応)
- バイオリズム機能: 誕生日入力で身体・感情・知性の3サイクルを表示
既知の制限と改善案
- フラッシュ書き込みは初回のみ。季節変化への完全適応には毎日再学習に依存
- 電池駆動時の稼働時間は要検証(ソーラー充電追加で長期化可能)
- PME分類失敗時の月別デフォルトは概算値。地域別気候データの組み込みで精度向上
- 土壌湿度センサーの閾値(コード内400)は土質により要調整
まとめ
このシステムは、都市部での植物管理を「センサー×機械学習×重力給水」で自動化・最適化します。雨水活用で節水にも貢献し、Arduino 101のユニークな機能(PME、BLE、RTC、フラッシュ)を実践的に活用した好例です。コードはモジュール化されており、各機能の理解・拡張が容易です。
製造プロセス