スマート温室:Arduinoによる自動気候制御システム
概要
温室内の環境条件は常に変化するため、効率的な監視システムが必要です。自動化システムを導入することで、作業負担の軽減だけでなく、PCやスマートフォンから自宅で投資状況を確認できるようになります。また、データベースへのデータ蓄積により、収益の改善につながる重要な判断材料が得られます。リアルタイム制御により、栽培トラブルを未然に防ぐことも可能です。
本システムは、環境データを取得するセンサーとアクチュエーター(スレーブ)、それらを無線で統括する中央装置(マスター)、データをWebサーバーへ送信する構成で構築されています。マスターはスレーブへの閾値変更などの指示送信も行います。
システム構成
1. マスター(Arduino MKR1000)
アクセスポイントモードで待機し、スレーブから温湿度データを受信。データ処理後、WiFi経由でWebサーバーへ送信します。新しい閾値設定がある場合はCRC-8(Dallas/Maxim方式)を計算し、UDPパケットでスレーブへ返送します。
2. スレーブ(Arduino Uno + DHT22 + WiFiシールド)
5分ごとにDHT22で温湿度を測定し、マスターへUDP送信。マスターからの閾値更新パケットを受信すると、CRCを検証し、一致すればEEPROMに保存します。ヒーター、加湿器、ファン(ブラシレスモーター)を閾値に基づき制御します。
3. Webサーバー(PHP + MySQL)
受信データをデータベースに蓄積。グラフ表示用PHPスクリプト(JPGraph使用)と、Androidアプリ向けJSON出力スクリプトを用意しています。
4. Androidアプリ
期間を指定してグラフ表示可能。HTTP GETでPHPスクリプト(getdati)を呼び出し、JSONデータを取得してGraphViewライブラリで描画します。
主要コンポーネント
- Arduino MKR1000(マスター)
- Arduino Uno(スレーブ)
- DHT22温湿度センサー
- Arduino WiFi Shield 101(WINC1500)
- DCモーター制御シールド(BTN8982、Infineon)
- Android端末
ソフトウェア・ツール
- Arduino IDE
- Eclipse
回路図
Arduino Uno、DHT22、リレーの接続図が提供されています。
ソースコード
マスター側(C/C++)
/* Automation greenhouse project */
/* Authors: Antonio La Mura, Umberto Festa */
/* Date: 03/03/2016 */
#include <SPI.h>
#include <WiFi101.h>
#include <RTCZero.h>
#include <WiFiUDP.h>
// 以下、マスターのメインコード(アクセスポイント運用、UDP受信、CRC計算、Webサーバー送信など)
// 詳細は元記事参照
スレーブ側(C/C++)
/* Automation greenhouse project */
/* Authors: Antonio La Mura, Umberto Festa */
/* Date: 21/03/2016 */
#include <SPI.h>
#include <WiFi101.h>
#include <WiFiUdp.h>
#include <EEPROM.h>
#include <DHT22.h>
// 以下、スレーブのメインコード(センサー読み取り、UDP送信、CRC検証、EEPROM保存、アクチュエーター制御など)
// 詳細は元記事参照
Webサーバー関連(PHP / SQL)
- グラフ生成スクリプト(JPGraph使用)
- データ保存スクリプト
- テーブル作成SQL
- アプリ連携用JSON出力スクリプト(getdati)
GitHubリポジトリ
アプリのソースコード: https://github.com/cormaz/app_greenhouse.git
製造プロセス
- ILI9341 2.4インチTFTタッチシールドでのビットマップアニメーション実装ガイド
- Web制御DMX照明システム:Arduino Megaマスターコントローラー
- Bluetooth操作のArduinoスパイボットを自作する
- FlickMote:ジェスチャー操作のIRリモコンでスマートホームを制御
- 自作Arduino TV-B-Gone:全テレビ対応の万能リモコン
- 12メートル先から見える大型LEDマスタークロック(アラーム機能付き)を自作しよう
- HSVクロック:Arduino愛好家向けの鮮やかでカスタマイズ可能な時計
- Android加速度センサーで操作するラジコン車両:Raspberry Pi・Arduino・モーターシールド連携
- ArduinoとBluetoothで作るスマート紛失防止タグ「Find Me」
- Arduinoプロジェクトのための最適化電源ソリューション
- ワイヤレスArduinoプログラミングシールド – HC-05 BluetoothでUSBケーブル不要に