Arduino搭載スマート灌漑コントローラー - 天候・光センサー連携の自動散水システム
必要な部品と用品
| 部品 | 数量 |
|---|---|
| Arduino Nano R3 | 1 |
| IO Expander(I/O拡張ボード) | 1 |
| IO Expander Bundle | 1 |
使用アプリ・オンラインサービス
- Arduino IDE
プロジェクト概要
スマート灌漑コントローラーの構築
動的な散水サイクルで庭を知的に灌漑します。雨が降っている、または前回の散水以降に雨が降った場合は散水を停止。光センサーで日の出時刻を検出し、自動的に散水開始時刻を調整。気温が低すぎる場合も散水を停止します。
主な機能
- 外気温センサー
- 雨センサー
- 光センサー(日の出検出)
- 電池バックアップ付きリアルタイムクロック(週次スケジュール)
- 不揮発性ストレージ(停電時も散水設定を保持)
- スマート散水で水道代を節約
- 日の出前に散水し、十分な浸透時間を確保
- 低温時の散水停止で菌類の繁殖を抑制
- 簡単なスケジュール管理
必要な部品(詳細)
- IO Expander
- 1-Wire to I2C コンバーター ×2
- 1-Wire Junction
- 光コネクター、スプリッター
- Arduino Nano
- 4チャネル 5V リレーモジュール
- TSL2561 光センサー
- DS18B20 防水温度センサー
- 光学式赤外線水位センサー
- DS3231 AT24C32 IIC 高精度 RTC
- I2C SSD1306 OLED 128x64 ディスプレイ
- 防水プラスチックケース(大・小)
- IP68 PG7 / PG11 防水ケーブルグランド
- RJ11 キーストーンジャック、RJ11 ケーブル
- タクトスイッチ ×2、12V 1A ACアダプター
配線図
OLEDディスプレイ操作
メニューボタンでメニュー表示、繰り返し押すと項目切り替え。30秒無操作で自動非表示。セレクトボタンで機能実行。
IO Expanderを使用する理由
- 設計がシンプル、市販部品で構築可能
- 1-Wire、RTC、EEPROM、OLED、温度センサー、雨センサーのドライバー不要
- Arduinoのコード容量を大幅節約(約39%のみ使用)
- 標準RJ11電話ケーブルで配線簡単、センサーケーブル長の問題なし
- 市販システムより低コスト、個別要件への対応容易、単一電源で動作
システム構築手順
- Arduino NanoをIO Expanderに接続し、スケッチを書き込み(6ピンヘッダーはデバッグ用、最終設置時は不要)
- スケッチ内の
ONEWIRE_TO_I2C_ROM1とONEWIRE_TO_I2C_ROM2のアドレスを実機に合わせて変更 - スプリッターのR2に0Ω抵抗(0603)をハンダ付けし、光学センサーと1-Wire線を分離
- ケースに穴を開け、ケーブルグランド、ボタン、センサーを取り付け
- リモートセンケースを家の東側高所に設置、光学センサーと光センサーを天空に向ける
- 動作テスト後、両面テープと梱包フォームで基板を固定して完成
プルアップ抵抗の調整(重要)
1-Wire to I2C、DS3231、SSD1306の3デバイスがSDA/SCLにプルアップ抵抗を持つと、合成抵抗が約1.56kΩになり強すぎて画面乱れの原因になります。以下の抵抗を取り外してください。
- 1-Wire to I2C: R3, R4
- SSD1306 OLED: R6, R7
スケッチ(メインコード)
スケッチは長大なため、主要な定数と構造体定義、初期化部分を抜粋します。完全なコードは元記事を参照してください。
主要定数
#define WATER_TIME_BEFORE_SUNRISE 60 // 日の出前散水時間(分)
#define SUNRISE_LUX 100 // 日の出判定照度
#define RAIN_DETECT_LEVEL 4.0 // 雨検出閾値
#define DO_NOT_WATER_TEMP 4.4444 // 散水停止温度(40°F = 4.44℃)
#define MAX_ZONES 4 // 最大散水ゾーン数
スケジュール構造体
typedef struct {
uint8_t zone;
uint8_t days;
int8_t hour;
int8_t min;
uint8_t duration;
} SCHEDULE;
SCHEDULE schedule[] = {
{ZONE1, SUNRISE | EVERYDAY, -1, 0, 4}, // 日の出基準
{ZONE2, EVERYDAY, 6, 15, 5}, // 固定時刻
{ZONE3, EVERYDAY, 6, 0, 10},
{ZONE4, EVERYDAY, 6, 10, 6},
};
主な処理フロー
setup(): シリアル初期化、ウォッチドッグタイマー有効化loop(): 毎分センサー読み取り(温度、照度、雨)、スケジュール判定、散水制御、ボタン操作、OLED更新、NVRAM保存- 日の出検出: 照度が閾値未満でカウントダウン、60分継続で日の出確定
- 雨検出: 雨センサー値が閾値以下で各ゾーンの雨カウンター増加
- 散水判定: スケジュール時刻到達で散水開始、低温・雨・OFFモード時はキャンセル
回路図
製造プロセス
- SensorflareとRaspberry Piで433MHzスマートホームコントローラーを構築
- Raspberry Pi、MCP9808、InfluxDB、Grafanaで作る家庭温度モニター
- スマートゴミ箱:自動廃棄物管理のためのセルラーIoTソリューション
- スマートバーテンダー:Raspberry Pi駆動の自作カクテルステーション
- エモーションセンサー&EEG:リアルタイム感情検知のための低コストハードウェア
- スマート灌漑コントローラー:Windows 10 IoT、Raspberry Pi、XBee水分センサーで実現
- センサ生産に革命:Sensata がスマートメカトロニクスを活用
- オープンソース・スマートファーミングシステムの構築──手頃で相互運用可能なIoTで農家をエンパワー
- ECM3532:Eta Compute初の統合超低消費電力AIセンサーボード、エッジ開発を加速
- スマートテキスタイル向け超高感度・高耐久ひずみセンサーを開発
- 革新的超薄型センサーがスマートコンタクトレンズ機能を強化