目次
雨が降ったら勝手に閉まる「自動窓」をつくりたい
スマートホームが流行っています。
家中の家電製品や照明器具がネットにつながり、便利で快適な暮らしを実現するスマートホーム。
amazon「Alexa」のようなスマートスピーカーを用いて、音声で照明器具や家電を動かすのも一般的となりました。
他にも、家中のセンサーを活用してあらゆることが自動化されつつあります。
人を検知してエアコンを起動させたり、雨が降ってきたら自動的に窓が閉まったり。
とても便利ですね。
マイコンが安価に入手できる時代、スマートハウスとは無縁の古い民家でも、意外と簡単にスマート化できるかもしれません。
今回はArduinoとステッピングモータを使って、自動窓の作成にチャレンジしたいと思います。
スマートハウス化の第一歩として、とりあえず「窓が動く」ことを目指します。
今回製作する自動窓のメカニズム
今回対象とする窓はこちら。
以前漆喰を塗ってリメイクした部屋の窓です。
縦130×横80×2面の一般的な窓。
窓枠の下側のスペースを利用して機構を設置します。
送りねじを用いた窓の開閉機構
動作機構には送りねじを使います。
送りねじとステッピングモータの接続にはカップリングを自作しました。
ステッピングモータはUsongshineの17HS4401を使用。
3Dプリンターによく使われるモータです。
窓との接続は手動で開閉したいシチュエーションも考慮して、手軽にロックを外せるクラッチ式にしました。
ここは廃材を活用して自作。
送りねじナットと一体化させた窓の接続用クラッチがこちらです。
Arduinoとステッピングモータを繋ぐ電子回路
マイコンにはArduino Uno、モータドライバICにはSN754410を使用。
接続は以下のようにブレッドボード上に実装しました。
ボタンを押すと5Vが供給されてモータが動きます。
ステッピングモータの動作電圧は、本来独立して必要ですが、面倒くさいのでArduinoの5Vを供給しました。
これが後ほど影響してしまうのですが・・・。
Stepperを使用したArduinoのプログラム
プログラムはシンプルに下記のように組みました。
//Steppingmotor Test
#include <Stepper.h>
const float turnSteps = 200;
float rpm = 180;
float Steps = 50;
Stepper myStepper(turnSteps, 8,9,10,11);
void setup() {
Serial.begin(9600);
myStepper.setSpeed(rpm) ;
}
void loop() {
Serial.print(" Rotational Spped:");
Serial.print(Steps / turnSteps * 360,0);
myStepper.step(Steps);
}
Stepperを使うことで短い行数で記述できます。
さすがArduinoです。
完成した自動窓を実際に動かしてみた
すべての要素が完成したところで、いよいよ動かします。
ステッピングモータも単独で試運転済み。
クラッチを接続して、ボタンを押します。
動きました!
送りねじが回転し、窓が動いています。
・・が。
10秒後。
めちゃくちゃ遅い。
10秒経ってわずか5センチ、秒速5ミリ。
ボタンを押す指が痛くなってくる程の遅さ。
手で窓を開けた方がよっぽど早いしラク。
考えられる原因は、ステッピングモータの外部電源を省略したせいでしょう。
Arduinoのわずかな電力で頑張ってモータが動作しているせいで、ギリギリのトルクしか出せていません。
スムーズに動いているというより、詰まりながら悲鳴を上げているような動きでした。
とりあえず、今回は動いたのでOKとします。
課題が山積みになりました。
- 動作の高速化(せめて5秒くらいで全開)
- 開閉動作の実現(現状開放のみ)
- 入出力の自動化(リモコンorセンサー)
あとは、リミットスイッチも必要です。
現状だと端部で詰まって強制停止してしまいます。
スマートホームへの道のりは長いです。
2022.10追加改造
さすがに遅すぎるのでちょっと改造します。
自作したカップリングはガタつきが顕著であったため、一般的なカップリングに交換。
さらにモータの動力部、Arduino直接5V供給の部分を外部バッテリー駆動6Vに変更。
パワーを上げて伝達効率も改善。
いざ動かしてみます。
結果は、、やっぱり遅いです。
改善後も開閉速度は秒速5ミリ程度と、結局変わりませんでした。
窓の摩擦が大きく、モータ容量自体が不足しているような印象です。
まだまだ改善の余地があります。