- Arduino自動ブラインドの構築に必要なコンポーネント
- Arduinoを使用したローラーブラインドの制御
- ブラインドギアの設計と構築
- モーターホルダーとブラインドギアの3Dプリント
- Arduinoブラインド制御の回路図
- Arduinoブラインドコントロール用のBlynkアプリケーション
- Blynkを使用してブラインドを制御するためのNodeMCUのプログラミング
- Googleアシスタントを使用したブラインドの制御
- Arduinoベースの自動ウィンドウブラインドコントロール–デモンストレーション
"おはようございます。午前7時です。マリブの天気は72度です…」これらは、マーベルシネマティクスユニバースで紹介されたときのJARVISの最初の言葉でした。ほとんどのアイアンマンファンはこのシーンを思い出すことができ、JARVISが午前中にウィンドウ(一種)を開いて時間と天気の最新情報を提供できたことを覚えているはずです。映画では、窓ガラスは実際にはシースルータッチディスプレイで作られていました。そのため、JARVISはそれを黒から透明に変え、天気の統計を表示することができました。しかし、実際には、シースルータッチスクリーンから遠く離れており、ブラインドや制約を自動的に制御することができます。
したがって、このプロジェクトでは、まさにそれを構築します。事前定義された時間に自動的に開閉する自動電動ブラインドを構築します。これまで、ライトやモーターなどを自動化するホームオートメーションプロジェクトを数多く構築してきました。興味があればチェックしてみてください。そのため、戻ってきて、これらの Arduino制御ブラインドはGoogleアシスタントからコマンドを受け取ることもできるため、音声コマンドを使用してリモートでウィンドウブラインドを開閉できます。興味をそそる?次に、それを構築しましょう。
Arduino自動ブラインドの構築に必要なコンポーネント
プロジェクトは比較的単純で、必要なコンポーネントはそれほど多くありません。下記のアイテムを集めてください。
- NodeMCU
- ステッピングモーター– 28BYJ-48
- ステッピングモータードライバーモジュール
- LM117-3.3V
- コンデンサ(10uf、1uf)
- 12VDCアダプター
- パフォーマンスボード
- はんだ付けキット
- 3Dプリンタ
Arduinoを使用したローラーブラインドの制御
現在、市場には多くの種類のブラインドがありますが、最も一般的に使用されているものは、ブラインドを開閉するために引っ張ることができるビーディング付きのロープ(以下に示す)を備えています。
この円形のロープを時計回りに引くとブラインドが開き、このロープを反時計回りに引くとブラインドが閉じます。したがって、このプロセスを自動化する場合は、モーターを使用してこのロープを時計回りまたは反時計回りに引っ張るだけで済みます。実際、これがこのプロジェクトで行うことです。28BYJ-48ステッピングモーターとNodeMCUを使用して、ビーズロープを引っ張ります。
ブラインドギアの設計と構築
このプロジェクトのエレクトロニクスの部分はかなり単純で簡単でした。挑戦的な部分は、ビーズのロープを引っ張ることができるブラインドギアを構築することでした。それでは、この記事をブラインドギアの設計から始めましょう。ギアの設計方法の詳細については説明しませんが、この基本的な考え方が役に立ちます。ビーズが付いたロープの画像を以下に示します。
繰り返しになりますが、ロープには多くの種類がありますが、最も一般的に使用されるロープは、各ビーディングの中心間距離が6mmで、各ビードの直径が4mmです。この情報を使用して、歯車の設計を開始できます。ブラインドのロープの寸法が説明したものと同じである場合は、この手順をスキップして、この記事で提供されているSTLファイルをダウンロードし、ギアを印刷できます。ロープのビーディング配置が異なる場合は、これがブラインドギアを再設計する方法です。
最適な歯車のサイズを得るために、歯車に24個のビードを付けることにしました。歯車を大きくしたり小さくしたりするために、これに近い任意の数を選択できます。これで、各ビード間の距離が6mmであり、ギアに24個のビードが必要であることがわかりました。両方を掛けると、歯車の円周が得られます。このデータを使用して、歯車の半径を計算できます。上の画像でわかるように、私の歯車の直径は約46mmと計算されました。ただし、ビードの直径である4mmを考慮していないため、これは実際の歯車の直径ではないことを覚えておいてください。したがって、歯車の実際の直径は42 mmになります。最適な歯車を見つける前に、多くの歯車を印刷してテストしました。デザインに興味がない場合は、次の段落からSTLファイルをダウンロードして印刷し、プロジェクトを続行するだけです。
モーターホルダーとブラインドギアの3Dプリント
ギアに加えて、壁にドリルで穴を開けてステッピングモーターを所定の位置に保持できる小さなケーシングも必要になります。このプロジェクトで使用したケーシングとギアの両方を以下に示します。
完全なデザインファイルとSTLファイルは、以下のArduino Blind ControlThingiverseページにあります。ブラインドギアとモーターケースをダウンロードして印刷するだけです。
ブラインドギアとモーターケースのSTLファイルをダウンロードする
Arduinoブラインド制御の回路図
ギアとアセンブリの準備ができたら、電子機器とソフトウェアの部分に進むのは簡単です。IoTブラインド制御プロジェクトの完全な回路図を以下に示します。
セットアップ全体に電力を供給するために12Vアダプターを使用しました。LM1117-3.3Vレギュレータは、12Vを3.3Vに変換し、NodeMCUボードへの電力供給に使用できます。ステッピングモータードライバーモジュールは、12Vアダプターから直接給電されます。ステッピングモーターを5Vで動かしてみましたが、ブラインドを引くのに十分なトルクが得られなかったので、12Vも使用していることを確認してください。
それを除けば、回路は非常に単純です。ステッピングモーターを初めて使用する場合は、ステッピングモーターの記事の基本を調べて、その動作とマイクロコントローラーでの使用方法を理解してください。
Arduinoブラインドコントロール用のBlynkアプリケーション
ブラインドを制御するためのArduinoプログラムに入る前に、blynkアプリケーションを開いて、ブラインドを開閉できるボタンをいくつか作成しましょう。また、後でGoogleHomeから制御するためにこれが必要になります。
ブラインドを開閉するための2つのボタンと、毎日午前10時にブラインドを開くための1つのボタンを追加しました。複数のタイマーを追加して、1日のさまざまな間隔でブラインドを開閉できます。基本的に、ブラインドを閉じる必要がある場合は、仮想ピンV1をトリガーする必要があり、ブラインドを開く必要がある場合は、仮想ピンV2をトリガーする必要があります。ここで押されたボタンに基づいてステッピングモーターを制御するプログラムは、Arduino IDEで記述されます。これについては、以下で説明します。
Blynkを使用してブラインドを制御するためのNodeMCUのプログラミング
このブラインドコントロールプロジェクトの完全なESP8266コードは、このページの下部にあります。私たちのプログラムは、blynkアプリケーションからのコマンドを待つ必要があり、そのコマンドに基づいて、ステッピングモーターを時計回りまたは反時計回りに回転させる必要があります。コードの重要なセグメントについては、以下で説明します。
回路図によると、nodemcuのデジタルピン1、2、3、および4を使用してステッピングモーターを制御しています。したがって、以下に示すように、これらのピンを使用してステッパーと呼ばれるインスタンスを作成する必要があります。ピンを1、3、2、4の順序で定義していることに注意してください。これは意図的に行われたものであり、間違いではありません。モーターが正しく動作するには、ピン2と3を交換する必要があります。
//ステップとピンを使用してステッパークラスのインスタンスを作成しますステッパーステッパー(STEPS、D1、D3、D2、D4);
次のステップでは、blynkアプリケーション認証トークンと、IoTBlindコントローラーを接続する必要があるWi-Fi資格情報を共有する必要があります。このBlynk認証トークンを取得する方法がわからない場合は、Blynk LED Controlプロジェクトを参照して、blynkアプリケーションの基本とその使用方法を理解してください。
// Blynkアプリで認証トークンを取得する必要があります。//プロジェクト設定(ナットアイコン)に移動します。char auth = "l_b47mF1hioCc_7FzdKMJJeFnJjTxxxx"; // WiFi資格情報。//オープンネットワークの場合はパスワードを「」に設定します。char ssid = "CircuitDigest"; char pass = "dummy123";
コードを進めて、セットアップ関数の後で、blynkの2つのメソッドを定義しました。前述のように、仮想ピンV1とV2が実行する必要があることを定義する必要があります。そのためのコードを以下に示します。
BLYNK_WRITE(V1)//ブラインドを閉じる{Serial.println( "Closing Blinds"); if(opened == true){for(int c_val = 0; c_val <= 130; c_val ++)//反時計回りに回転して閉じる{stepper.step(c_val);産出(); } close = true;開いた= false; disable_motor(); //消費電力と暖房を減らすために使用後は常にステッピングモーターを無効にする}} BLYNK_WRITE(V2)//ブラインドを開く{Serial.println( "Opening Blinds"); if(closed == true){for(int cc_val = 0; cc_val> = -130; cc_val-)//時計回りに回転して開く{stepper.step(cc_val);産出(); } open = true;クローズ= false; } disable_motor(); //消費電力と暖房を減らすために、使用後は常にステッピングモーターを無効にします}
ご覧のとおり、V1はブラインドを閉じるために使用され、V2はブラインドを開くために使用されます。 forループは、 130のステップのために時計回りまたは反時計回り方向にモータを回転させるために使用されます。私はブラインドを実験して、130ステップでブラインドを完全に開閉できることを発見しました。あなたの数は変わるかもしれません。 forループを 時計回りと反時計回り方向に回転するステッピングモータに以下に示します。
for(int c_val = 0; c_val <= 130; c_val ++)//反時計回りに回転して閉じる{stepper.step(c_val); 産出(); } for(int cc_val = 0; cc_val> = -130; cc_val-)//時計回りに回転して{stepper.step(cc_val);を開きます。産出(); }
また、プログラムで2つのブール変数「opened」と「closed」に気付くことができます。これらの2つの変数は、モーターがブラインドを2回開閉するのを防ぐために使用されます。つまり、ブラインドは以前に閉じたときにのみ開き、以前に開いたときにのみ閉じます。
28BJY-48ステッピングモーターの速度を上げる方法は?
28BJY-48ステッピングモーターを使用することの1つの欠点は、それが非常に遅いことです。これらのモーターは元々、高精度の低速アプリケーションで使用するために製造されたものであるため、これらのモーターが高速で回転することは期待しないでください。Arduinoを使用してステッピングモーターの速度を上げたい場合は、変更できる2つのパラメーターがあります。1つは#defineSTEPS 64です。ステップを64と定義すると、モーターが比較的高速であることがわかりました。もう1つのパラメーターは stepper.setSpeed(500)です。ここでも、500が最適値であることがわかりました。それを超えると、実際にはステッピングモーターが遅くなります。
これらのモーターの速度を上げる他の方法を知っていますか?はいの場合は、下のコメントセクションに残してください。
ステッピングモーターの過熱を防ぐ方法は?
ステッピングモーターは、過熱を防ぐために、使用しないときは常に無効にする必要があります。ステッピングモーターの無効化は非常に簡単です。ステッピングモーターを制御している4つのGPIOピンすべてのピンステータスをローに変更するだけです。これは非常に重要です。そうしないと、モーターが+ 12Vで非常に熱くなり、永久に損傷する可能性があります。ステッピングモーターを無効にするプログラムを以下に示します。
void disable_motor()//加熱を避けるために完了したらモーターをオフにします{digitalWrite(D1、LOW); digitalWrite(D2、LOW); digitalWrite(D3、LOW); digitalWrite(D4、LOW); }
Googleアシスタントを使用したブラインドの制御
blynk APIを使用してGoogleアシスタントを介してブラインドを制御します。これは、音声制御のホームオートメーションプロジェクトに似ているため、興味がある場合は確認してください。基本的に、Googleアシスタントに事前定義されたフレーズを言うときは、以下のリンクをトリガーする必要があります。
//http://188.166.206.43/l_b47mF1hioCc_7FzdKMJJeFnJjTxxxx/update/V1?value=1 /
認証トークンを、blynkアプリケーションによって提供されるものに変更してください。Chromeブラウザでこのリンクをテストして、期待どおりに機能しているかどうかを確認することもできます。リンクの準備ができたので、IFTTTにアクセスして、ブラインドを開閉するように要求したときに仮想ピンV1とV2をトリガーできる2つのアプレットを作成する必要があります。繰り返しになりますが、これは何度も行っているため、詳細については説明しません。さらにヘルプが必要な場合は、この音声制御FMラジオプロジェクトを参照してください。adafruitサービスをwebhookに置き換えるだけです。参考のために、スニペットのスクリーンショットも共有しています。
Arduinoベースの自動ウィンドウブラインドコントロール–デモンストレーション
回路と3D印刷されたエンクロージャーの準備ができたら、壁に2つの穴を開けて、デバイスを壁に組み立てます。私の取り付けセットアップは下の写真に示されています。
その後、ブラインドが開いた状態にあることを確認してから、回路の電源を入れます。これで、blynkアプリケーションまたはGoogleアシスタントからブラインドを閉じることができ、機能するはずです。blynkアプリケーションでタイマーを設定して、1日の特定の時間にブラインドを自動的に開閉することもできます。
プロジェクトの完全な動作は、以下のビデオで見つけることができます。ご不明な点がございましたら、下のコメント欄にご記入ください。また、他の技術的な議論のために私たちのフォーラムを使用することができます。