HydroMazing スマートガーデンシステム – IoTで実現する高度な植物栽培管理
必要な部品と材料
- Raspberry Pi 3 Model B × 1 (オプション: IoT/通知用)
- Arduino Nano R3 × 2
- Arduino Nano 拡張シールド × 2
- DHT21/22 温湿度センサー × 1 (VCC-Data間に10kΩ必要な場合あり)
- フォトセルモジュール (照度) × 1
- nRF24L01 2.4GHz 無線トランシーバー × 1 (SMAアンテナ付き/なし)
- Dallas温度センサー (養液温度用) × 1
- 433MHz RF送受信モジュール × 1
- ワイヤレス制御コンセントセット (リモコン付き, 3-5個) × 1
- DFRobot LCDボタンシールド (Arduino Uno用) × 1
必要な工具
- はんだごて (汎用)
使用するアプリとオンラインサービス
- Arduino IDE
- Microsoft Visual Studio 2015
プロジェクト概要
「植物を最適な環境で育てたい」というシンプルな願いから始まったプロジェクト。市販のプログラマブルサーモスタットコンセントをArduinoで置き換える試みから、無線制御コンセント+433MHz送信機による家電制御、nRF24L01による無線モニタリング、Raspberry Pi経由のWebインターフェース・アラート通知まで、段階的に進化した総合的なスマートガーデンシステムです。
ホームオートメーションへのアプローチ
最初はリレー直結を試みましたが配線が煩雑に。無線制御コンセントのリモコンをハックし、Arduinoから433MHzでON/OFF信号を送る方式に転換。RCSwitchライブラリでリモコンのコードを解析・再送信することで、確実に家電(換気扇、ヒーター、加湿器、ポンプ等)を制御できるようになりました。
プログラミング設計: 「TheDecider」アルゴリズム
センサー読み取りと閾値に基づき家電を制御する独自アルゴリズム「TheDecider」を実装。タイマー管理、センサーオブジェクト、家電オブジェクトをモジュール化し、水耕栽培・キノコ栽培など様々な環境に対応できる汎用設計としています。Arduino Unoのプログラム容量制限 (32KB) に直面し、効率的なコード設計とカスタムライブラリ化、さらに2台目のArduino Nano追加で機能分散を図りました。
インターネット非依存の無線モニタリング
nRF24L01でベースステーション (LCDシールド付きArduino) と通信。センサー値、家電状態、アラートをローカル表示。クラウド不要で動作する自立システムとして設計されています。
インターネット監視 (Raspberry Pi連携)
Raspberry Pi + nRF24L01でデータ受信。ログファイル・現在値・アラートをファイル出力し、PHPでWeb表示、Pythonでメール/SMS通知。データベース蓄積による分析・レポート生成も可能。独自の「HydroMazing Garden Wizard」で栽培ガイドも提供。
養液モニタリング (水耕栽培向け)
養液レベル低下を検知し給水ポンプで「トッピングオフ」(濃度調整)。pH・ECセンサー連携で養液管理を自動化し、調整が必要なときのみ通知します。
コア設定 (CoreSettings.h 抜粋)
// nRF24L01 ネットワーク設定
const uint64_t nRFbaseAddress = 1034834473100;
uint64_t tx_pipes[3] = { 0xF0F0F0F0F8LL, 0xF0F0F0F0F7LL, 0xF0F0F0F0F6LL };
uint64_t rx_pipes[3] = { 0xF0F0F0F0F1LL, 0xF0F0F0F0F2LL, 0xF0F0F0F0F3LL };
// 433MHz ワイヤレスコンセント コード (ETEKCITY #0319 例)
uint8_t totalSwitches = 5;
unsigned long mySwitchOn[] = {24,333107,333251,333571,335107,341251};
unsigned long mySwitchOff[] = {24,333116,333260,333580,335116,341260};
// タイマー定義 (ミリ秒)
Timer Timer_txData = { TIMER_TX_DATA, 30000UL, true, false, 0, NULL };
Timer Timer_Lcd = { TIMER_LCD, 12000UL, true, false, 0, &Timer_Log };
Timer Timer_Sensor_Read = { TIMER_SENSOR_READINGS, 7000UL, true, false, 0, &Timer_Save_Settings };
Timer Timer_Alerts = { TIMER_ALERTS, 45000UL, true, false, 0, &Timer_Sensor_Read };
Timer Timer_rxData = { TIMER_RX_DATA, 6000UL, true, false, 0, &Timer_Save_Settings };
// 家電定義 (ID, 有効, タイプ, 時間, 自動, 状態, 次ポインタ)
Appliance Appliance_Light_1 = {101, 1, APPLIANCE_LIGHT, DEFAULT_TIME, true, false, OFF, NULL};
Appliance Appliance_IntakeFan = {104, 1, APPLIANCE_INTAKE_FAN, DEFAULT_TIME, true, false, OFF, &Appliance_Light_1};
Appliance Appliance_ExhaustFan = {103, 1, APPLIANCE_EXHAUST_FAN, DEFAULT_TIME, true, false, OFF, &Appliance_IntakeFan};
Appliance Appliance_Humidifier = {102, 0, APPLIANCE_HUMIDIFIER, DEFAULT_TIME, true, false, OFF, &Appliance_ExhaustFan};
Appliance Appliance_Heater = {101, 0, APPLIANCE_HEATER, DEFAULT_TIME, true, false, OFF, &Appliance_Humidifier};
Appliance Appliance_FeedPump = {105, 1, APPLIANCE_PUMP, DEFAULT_TIME, true, false, OFF, &Appliance_Heater};
uint8_t totalAppliances = 6;
// センサー定義 (ピン, ノード, タイプ, 頻度, 最小, 最大, タイムスタンプ, 値, 次ポインタ)
Sensor Sensor_Photocell = { PIN_A0, 1, SENSOR_PHOTO, 100, 50, 100, 0, 25, NULL };
Sensor Sensor_Temp = { PIN7, 1, SENSOR_TEMPF, 50, 70, 80, 0, 75, &Sensor_Photocell };
Sensor Sensor_Humidity = { PIN7, 1, SENSOR_HUMIDITY, 50, 40, 70, 0, 50, &Sensor_Temp };
Sensor Sensor_WaterTemp = { PIN3_INT1,1, SENSOR_WATER_TEMPF,100, 50, 70, 0, 65, &Sensor_Humidity };
Sensor Sensor_Flow = { PIN2_INT0,2, SENSOR_FLOW, 100, 50, 50, 0, 75, &Sensor_WaterTemp };
Sensor Sensor_Float = { PIN_A2, 1, SENSOR_FLOAT, 100, 0, 1, 0, 1, &Sensor_Flow };
Sensor Sensor_Voltage = { PIN1_TX,1, SENSOR_VOLTAGE, 100, 0, 100, 0, 50, &Sensor_Float };
uint8_t totalSensors = 7;
関連リンク
- 詳細ブログ: hydroMazing.com (英語)
- 関連記事: 「なぜDIYなのか」「スマートガーデンとは」「室内栽培の始め方」「養液管理」など
回路図・構成図
- 無線コンセント経由で換気扇・ライト・ヒーター・除湿機・ポンプを自動制御
- 一般的なワイヤレス制御コンセントの内部
- 組み立て・テスト中の様子
- Webインターフェース (ダッシュボード・アラート通知)
製造プロセス
- Raspberry PiとDS18B20によるプロフェッショナルな温度監視
- AT89S52マイコンとLM35センサーによる温度ベース機器制御システム
- MCP3008 ADCでRaspberry Piにアナログセンサーを読み取る
- ABS(アンチロック・ブレーキ・システム)の仕組み:完全ガイド
- 電子点火システムの仕組み:完全ガイド
- マグネトー点火システムの仕組み:原理・用途・メリットデメリット
- 「アメリカン・システム・オブ・マニュファクチャリング」:歴史・手法・影響
- 携帯型点字ディスプレイの理解:主要洞察と革新
- スマートホームのスキルギャップを埋める:なぜ英国は欧州に後れを取るのか
- 都市生活の未来:新興スマートシティの主要特徴 – パート1
- IoT対応液体レベル監視で飲料生産を強化