Windows 10 IoT対応 スマート植物監視システム
必要な部品と材料
- Arduino Due × 1 (ARMベース、3.3V動作のため選択)
- Raspberry Pi 2 Model B × 1
- Adafruit BMP180 気圧/温度/高度センサー × 1 (互換品を使用)
- Adafruit ADS1115 16ビットADC × 1 (互換品を使用)
- SparkFun 土壌水分センサー (ネジ端子付き) × 4 (コンパレータモジュール付き互換品を使用)
- サーボ Tower Pro MG996R × 2
- リレー (汎用) × 2
- ブレッドボード (汎用) × 1
アプリとオンラインサービス
- Microsoft Visual Studio 2015
- Arduino IDE
プロジェクト概要
プロジェクト紹介
このプロジェクトは、植物の監視と自動給水システムの構築を目的としています。主なタスクは、サーボとリレーの制御、および植物からの土壌湿度データの収集です。多くのセンサーがアナログ信号を出力しますが、Raspberry Piにはアナログ-デジタル変換器(ADC)が内蔵されていません。この問題を解決するため、外部ADCモジュールとArduinoゲートウェイを使用しました。これらは内蔵ADCを持っています。環境とインタラクトする際には通常PWM(パルス幅変調)が必要です。これを解決する3つの方法を見つけました。1つ目はソフトウェアPWM、2つ目はArduinoゲートウェイ、3つ目はPWM対応モジュール/ICの使用です。I2Cデバイスの実装経験があったため、最初の2つの方法を実装しました。ADCとPWMはArduino界隈で頻繁に使用されるため、Raspberry PiのGPIOを使う際にもこれらの機能の少なくとも1つが欲しくなります。
アプリケーション

アプリケーションには2つのモードがあります。植物が水を必要としているかを検知する自動モードと、サーボとリレーを手動で制御する手動モードです。サーボは約180度回転するため、1つのサーボで2株の植物に給水できます。自動モードがデフォルトです。土壌湿度センサーの値を読み取る際、5段階に分類します。最も乾燥しているカテゴリ5はGUI上で赤、逆にカテゴリ1は緑で表示されます。タイマーが定期的にこれらの値をチェックし、「植物A」または「植物B」のカテゴリが許容値を超える(土が乾きすぎている)場合、より乾燥している方に給水します。同じ周期で「植物C」と「植物D」も同様にチェック・給水し、これを毎周期繰り返します。
コンポーネント詳細
サーボ SG90
サーボ駆動には通常、高いGPIOクロック周波数が必要です。デフォルトのプロバイダでは不十分なため、Lightningプロバイダを使用しました。最初のRaspberry Pi用電源に問題がありました。Piにはより高性能な電源が必要との情報があり、サーボは他のセンサーに比べて消費電力が大きいです。これら2点がパフォーマンス問題を引き起こしました。現在はiPadの充電器を使っており、だいぶ改善しましたが、時々まだ躊躇することがあります。外部電源を用いたサーボ回路で解決できます:

この方法で問題が解決し、今では完璧に動作します。サーボのVccを外部電源の5Vに接続し、信号線はそのまま、グランドを共通にしました。新しい接続はこちら:

ただし、この方法が必須というわけではありません。より良いRaspberry Pi用電源やソフトウェアの改善で、サーボの問題がすべて解決する可能性もあります。
ADS1115 16ビット I2C ADC
ADS1115 16ビットADCに可能な限りすべての機能を実装しようとしました。まだ開発中です。例えば、閾値レジスタは未設定で、独自のプロジェクト/チュートリアルに値します。総じて、ほぼ完全に機能するADCドライバになりつつあります。論理的な問題が残っている可能性があり、すべての組み込み機能が完全にテストされたわけではありません。
BMP180 I2C温度・気圧センサー
使用したBMP180ドライバは、基本的にこのプロジェクトで使われているものと同じです。Lightningプロバイダと完全互換ではなかったため、初期化部分のみ修正しました。温度と気圧の測定は、気象観測や植物監視などのプロジェクトに適しています。
リレー
リレー駆動はシンプルなGPIO操作のみです。ソースコードから容易に理解できます。
フォトダイオード回路
この測定が類似プロジェクトでも有用だと考え、このモジュールを使用しました。増幅回路はLTC1050のデータシートに記載されています。フォトダイオードは日光に最適化されたOsram BPW21を使用しています。
Arduinoゲートウェイ
ゲートウェイにはArduino Dueを使用しました。3.3VプルアップされたI2Cバスを持つためです。電圧レベル変換器や、独自のプルアップを持つ別のバスを使うことも可能でした(Arduino 2560など、複数のI2Cバスを持ちプルアップされていないボードならそれが使えます)。コードは非常にシンプルです。
土壌湿度センサー
コンパレータモジュール付きの互換品を使用しました。
プロジェクトまとめ
このプロジェクトは、植物への給水方法の基本的なアイデアを提供するとともに、以下のような機能をご自身のプロジェクトに応用できるでしょう:
- ArduinoボードとのI2C通信(Arduinoゲートウェイ)
- Raspberry PiでのADC利用
- Raspberry PiでのPWM利用(サーボ制御)
今後の計画
- Azure接続
- Xamarinによるモバイルアプリ開発
- Arduinoとの通信をI2CからBluetoothに置き換え
コード
Arduino側コード
https://github.com/horvathm/plant-monitoring-system-arduino.git
Raspberry Pi側コード
https://github.com/horvathm/plant-monitoring-system-raspberry.git
回路図

フォトダイオード増幅回路はLTC1050のデータシートを参照してください。

製造プロセス
- スマートゴミ箱:自動廃棄物管理のためのセルラーIoTソリューション
- Windows IoTとRaspberry Piで作るセキュアな顔認証ドアロック
- Windows 10 IoT CoreとSHT15センサーで高精度な温湿度モニタリング
- Raspberry Pi 3 Model B+へのWindows 10 IoT Coreインストール:ステップバイステップガイド
- Windows 10 IoT Coreで音声制御ロボットを構築 - Raspberry Pi 2編
- GoPiGo v2をWindows 10 IoT Coreで拡張 - Raspberry Pi 3対応
- クラウド監視:リアルタイム資産管理のためのリモート制御システム
- AI搭載IoTシステムで森林火災を超早期検知・樹木健康を監視
- IoT対応オイル・ディーゼルタンク遠隔監視システム
- IoT搭載フリート重量監視の8つの主要メリット
- IoT対応ミルクレベル監視で酪農管理を革新