【温室自作】arduinoで温室の温度を調整する

2018年3月31日

3月の終わりともなると日中の温室の温度が40度超の凄い事に!

そこで、出入り口をかねて温室の温度調整をしてみることにしました。

温室の温度が設定温度を超えたらビニールを少し巻き上げる。

更に温度が上がるようであれば全開にする。

設定温度以下になればビニールを下ろす。

このような動きをarduinoで実現させようと思います。

準備するもの

19ミリの農業用パイプ2M×2本

6mm インサートボールベアリング軸受け

arduino 本体

スイッチ2個

L298Nモーターコントロールモジュール 1

モーター取り付けブラケット 1

ギアボックスモーター 1

農業用パイプはホームセンターで購入。

モーターはギアボックスモーターを使用しました。12Vで動作して極性を変えれば反転します。

モーターの取り付けブラケットはこの商品を使いました。何でも3Dプリンタ用部品らしい…..。

L298Nモータードライバーは1個で2つのモーターを制御できます。

工具とかarduinoとか検索するにはこちらから。

ビニールの巻き上げ機をつくる

パイプの先端から1.5センチの位置に2箇所ドリルでネジを開けます。

その際、モーターシャフト固定ネジの位置が180度直線よりややズレがあるようですので穴あけもその位置にあうようにします。

モーターシャフトを固定するM 3ネジをパイプの外側から通し、モーターの回転がパイプに伝わるようにします。

でも、パイプの中でシャフト固定金具にネジを通すのはちょっと大変ですよね。持てませんからね。

そこで、カズは金具先端にM 4のネジを通して、そのネジを持って取り付けしました。

『 【arduino】自作温室の温度を調整する 』 温室,温度管理,自動,..持てませんからね。そこで、カズは金具先端にM 4のネジを通して、そのネジを持って取り付けしました。..

パイプの軸受け加工

パイプの軸受けは両端に必要ですよね。

一箇所はモーターの軸に固定ということで、既に加工しました。

そしてもう一箇所の芯になる部分はU字になっている(多分アンテナを固定するもの?)ものをカットしました。

『 【arduino】自作温室の温度を調整する 』 温室,温度管理,自動,..そしてもう一箇所の芯になる部分はU字になっている(多分アンテナを固定するもの?)ものをカットしました。..

これをパイプに差し込むとちょっと小さいようだったのでビニールテープで巻いてちょうど良い大きさにします。

『 【arduino】自作温室の温度を調整する 』 温室,温度管理,自動,..これをパイプに差し込むとちょっと小さいようだったのでビニールテープで巻いてちょうど良い大きさにします。..

軸受けはこんな感じです。モーターの高さと合うように調整しています。

『 【arduino】自作温室の温度を調整する 』 温室,温度管理,自動,..軸受けはこんな感じです。モーターの高さと合うように調整しています。..

取り付けるとこのようになります。

『 【arduino】自作温室の温度を調整する 』 温室,温度管理,自動,..取り付けるとこのようになります。..

板にモーターを固定する

軸受けが出来たのでパイプとモーターを取り付けることにします。

パイプの芯を軸受けに差し込み、モーター取り付け金具の位置を決め、ネジで留めて固定します。

『 【arduino】自作温室の温度を調整する 』 温室,温度管理,自動,..パイプの芯を軸受けに差し込み、モーター取り付け金具の位置を決め、ネジで留めて固定します。..

巻き上げ機の制御

arduino対応のL298Nモーターコントロールモジュール でモーターの極性を変え、ビニールシートを上げたり降ろしたりします。

参考にさせていただいたサイトです。

カズはmega2560でPWM出力は:0番~13番ということなので、3番を使うことにしました。

analogWrite()関数により、8ビットのPWMでアナログ電圧を出力することができます。

スイッチを改造する

ビニールが巻き上げられたらスイッチが入ってarduinoに信号を送り、巻き上げを止め、ビニールが降りてしまったらスイッチが入って降ろすのを止める。

このような動作をさせるために出入り口の上下にスイッチを取り付けようと思います。

入り口の下部は水やりや雨水がかかったりすることも考えられるために、自動水やり機で使ったフロースイッチを使うことにしました。

しかし、フロート部分は常に自重で下に下りています。そこでノック式ボールペンのスプリングを広げてフロートの下に取り付け、フロートの部分は上に上がった状態にしました。

また、フロートはドリルで穴を開け、洋ランの支柱を加工して画像のように取り付けました。

『 【arduino】自作温室の温度を調整する 』 温室,温度管理,自動,..しかし、フロート部分は常に自重で下に下りています。そこでノック式ボールペンのスプリングを広げてフロートの下に取り付け、フロートの部分は上に上がった状態にしました。また、フロートはドリルで穴を開け、洋ランの支柱を加工して画像のように取り付けました。..

パイプにはホースを固定する金具で固定しています。

ビニールを取り付けたバーが降りるとフロートが下がりスイッチが入る仕掛けです。

また、上部スイッチはモーターブラケットに取り付けします。

位置関係を実測します。

『 【arduino】自作温室の温度を調整する 』 温室,温度管理,自動,..また、上部スイッチはモーターブラケットに取り付けします。位置関係を実測します。..

スイッチの取り付け穴も加工します。

『 【arduino】自作温室の温度を調整する 』 温室,温度管理,自動,..スイッチの取り付け穴も加工します。..

この基盤にスイッチを取り付けます。

スイッチの配線

arduinoの5Vからスイッチに繋げて、一方は設定したピンに繋げます。また,プルアップ抵抗10KΩを通してマイナスに落とします。

カズは、ピンモードを30番と31番に設定しました。

セットアップ前の記述です。

int enA = 2;

int in1 = 28;

int in2 = 29;

int door_jyoukyou = 0;

int dousa = 0;

int tim =0;

セットアップの記述です。

//===============入り口開閉

pinMode(enA, OUTPUT); // 2

pinMode(in1, OUTPUT); //pinmode:28

pinMode(in2, OUTPUT); //pinmode:29

pinMode(31, INPUT); //入り口 上SW

pinMode(30, INPUT); //入り口 下SW

スケッチ

温室の温度が32度を超えたら少し開けて様子を見ることにします。

tim++;

if(temp_act>32 && dousa == 0 && door_jyoukyou !=11 && door_jyoukyou !=21){

digitalWrite(in1, HIGH);

digitalWrite(in2, LOW);

analogWrite(enA, 255);

tim =0 ; //開始

door_jyoukyou=10;

dousa =1;

}

タイマーを0にセットします。

タイマーリセット後90秒後に動作を止めるスケッチです。

//—————————-少し開けて停止

if(tim==90 && door_jyoukyou==10){

digitalWrite(in1, LOW);

digitalWrite(in2, LOW);

door_jyoukyou=11;

dousa =0;

}

少し開けても更に温度上昇が続き、35度を超えると全開になります。

//温室温度が35度になったらドアを全開する

if(temp_act>35 && dousa==0 && door_jyoukyou==11 && door_jyoukyou != 21){

digitalWrite(in1, HIGH);

digitalWrite(in2, LOW);

analogWrite(enA, 255);

door_jyoukyou=20;

dousa =1;

}

ここでモーターブラケットに取り付けたスイッチの出番です。

『 【arduino】自作温室の温度を調整する 』 温室,温度管理,自動,..ここでモーターブラケットに取り付けたスイッチの出番です。..

マイクロスイッチを使いましたがもっと大きめがいいかもしれません。ホントに『マイクロ』です。でも、10個111円(中国から送料込)は魅力です。動作は確実で問題ありません。

ビニールを取り付けたアンダーバーが上部スイッチに当たると信号が出て動作を止めるスケッチです。

if(digitalRead(31)==HIGH && door_jyoukyou==20 && dousa==1){

digitalWrite(in1, LOW);

digitalWrite(in2, LOW);

door_jyoukyou=21;

dousa =0;

}

夕刻になり、室温が下がって30度をきったらビニールを降ろします。

//温室温度が30度に下がったらドアを閉める

if(temp_act<30 && dousa==0 && door_jyoukyou ==11 || temp_act<30 && dousa==0 && door_jyoukyou ==21 ){

digitalWrite(in1, LOW);

digitalWrite(in2, HIGH);

analogWrite(enA, 250);

door_jyoukyou=30;

dousa =1;

}

そして、ビニールが降りたら動作を止めます。入り口下部に取り付けた改造フロースイッチの出番です。

if(digitalRead(30)==HIGH && door_jyoukyou ==30){

digitalWrite(in1, LOW);

digitalWrite(in2, LOW);

door_jyoukyou=31;

dousa =0;

}

温室の自動温度管理 まとめ

動作の温度設定はこれから検証する必要がありますね。

しかし、朝夕の自動水やりに加えて温度管理をほぼ自動化することで日常の管理がかなり楽になりました。