ArduinoおよびACデバイス-自動ライト
コンポーネントと消耗品
> |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
必要なツールとマシン
|
アプリとオンラインサービス
> |
| |||
|
このプロジェクトについて
スマートハウスライト
このプロジェクトでは、超音波センサーとArduinoを備えたリレーを使用して、ホームライト(または任意のデバイス)をよりスマートにする方法を学習します。
私たちの目標は、部屋を出るときに省エネ電球をオフにし、戻ってくるときにオンにすることです。とても簡単 実装するのに少し時間がかかります。
このチュートリアルは、基本を前提としています Arduinoの知識。クールになる前にArduinoを使用したことがある場合。
注意:このプロジェクトではAC高電圧電源を使用しています。16歳未満の場合、または十分な経験がない場合は、経験豊富な担当者がAC部品を手伝ってくれる必要があります。
ただし、低電圧で動作し、同じ概念を証明するDCデバイスを使用してプロジェクトを完了することができます。危険になり始めたら、警告を明確に述べます。
コンポーネント
1)Arduino Uno
<図>2)マルチメータ
<図>3)ジャンパー線
<図>4)ブレッドボード
<図>5)本当にモジュール
<図>6)Arduino用の超音波センサー(HC-SR04)と超音波ライブラリは、ここで(New Ping)ライブラリと呼ばれます。Arduinoに外部ライブラリを初めてインストールする場合は、このリンクを確認してください。
<図>7)DC電源(オプション)
<図>8)ドライバー(+リレーモジュール用タイプ)
<図>9)取り付けと壁プラグが取り付けられた省エネ電球(プラグを入手するために古い無線電源ケーブルを使用しました)。
<図>また、ワイヤーの端を接着するためにグルーガンを使用しました。絶縁テープを使用する必要があります。
<図>10)Arduinoコードを書くためのVisual Studio、方法を知りたいですか?このリンクを確認してください。完全に無料です。 または、ArduinoIDEを使用できます。
始めましょう。
<図>
超音波の準備
まず、下の画像に示されているArduinoに超音波センサーを取り付ける方法を説明します。後で超音波センサーをテストする方法について説明します。
<図>リレーモジュール
次に、リレーモジュールの1つのチャネルを接続し(私が持っているチャネルには2つのチャネルがあるため)、Vccピンは5vになり、IN1はArduinoピン8(または任意のピン)になります。
私のリレーモジュールがアクティブローであることに注意する価値があります。アクティブローとアクティブハイの違いを知るには、このリンクを確認してください。したがって、続行する前に、リレーのアクティブモードを知っておく必要があります。これを行うには、VccとGNDを通常どおりに接続し、何も起こらない場合はINピンを5Vに接続し、アクティブローにしてINピンをGNDに接続します。
> <図>
ランプ
次に、ランプを壁のプラグに接続する準備をします。リレーの一方の端子はプラグに直接接続され、もう一方の端子は途中で切り込みがあり、切り込みの一方の端は通常開になりますリレーモジュールのピン(NO1)の場合、もう1つはCOM1ピンに接続され、次にプラグに接続されます。
<図> <図>最終的な回路は次のようになります(ランプは簡略化されています:))
<図>これでハードウェアは完成です。
<図>コードは次のことを行います
- 超音波からの距離を測定します
- 誰かがドアのそばを通りかかったかどうかを確認します
- ライトの状態を切り替えます
超音波からの値の読み取り
それでは、超音波センサーを試してみましょう。これは、ライブラリの例です。読み取った距離を印刷するだけなので、非常にシンプルで簡単です。
距離は、センチメートルまたはインチで取得できます(ソナーは超音波インスタンス名です)。
sonar.ping_cm();
//または
sonar.ping_inch();
ご覧のとおり、超音波センサーのピンと最大希望範囲も設定されています。
<図>残念ながら、超音波センサーが時々誤った距離を読み取ることがあります。
<図>意図せずにライトのオンとオフを切り替え続ける可能性があるため、この問題を修正するには、いくつかの読み取り値を取得して平均を選択する必要があります。これを修正する別の方法は、メディアンフィルターを使用することです。 これは、単にいくつかの読み取り値を取得し、それらを配列に並べ替えて、ノイズが頻繁に発生する場合にノイズを除去するために非常にクールな中央の値を選択します。
幸い、NewPingライブラリには、このフィルターが
という関数に実装されています。 sonar.ping_median(unsigned byte numReadings);
符号なしバイトを使用しているため、サンプルとして最大512と見なす読み取り値の数を渡すだけです。 。
この関数は、エコーが跳ね返るのに使用された時間を返します。これは、使用している長さの単位に変換する必要があります。これは、
を使用してライブラリに簡単に実装することもできます。 sonar.convert_cm(unsigned int echoTime);
//または
sonar.convert_in(unsigned int echoTime);
超音波に関する最後の落とし穴は、前に何もない場合は0を読み取ることです 、これは、0を読み取った場合にMAX_DISTANCEに距離を設定するように指示することで簡単に解決され、最終的にセンサーを読み取るためのコードは(距離はグローバル変数)になります:
<図>
何かが通り過ぎたことを検出する
次に、コーディングを開始しましょう。誰かが超音波を通過したことを知るには、ドアの幅の半分になり得る臨界距離を読み取る必要があります。だから私たちは常に誰かがドアを通り過ぎていると確信しています。
もう1つ覚えておきたいのは、ライトはのみになるということです。 超音波の前を何かが通過したときに切り替えます。これは、誰かが超音波の前に静止している場合、何も起こらないことを意味します。これを行うためのコードは次のとおりです
<図>おめでとう !!これで完了です。ライブラリを少し編集して(Visual Studioでは許可されていないため可変サイズ配列の代わりに動的メモリ割り当てを使用)、いくつかのドキュメントを追加して、VisualStudioプロジェクト全体を添付します。
utsource.netで電子部品をチェックしてください
尊重してください このプロジェクトが役に立ったら、他のプロジェクト:
Arduinoカラーミキサー
1Sheeldを使用したRCカー
記事
VisualStudioを使用したArduinoの開発
コード
- スマートハウスライト
- 超音波探傷試験
スマートハウスライト Arduino
このコードは、超音波からの入力読み取り値を取得し、それに応じてリレーを制御します#define TRIGGER_PIN 12 //超音波センサーのトリガーピンに接続されたArduinoピン#defineECHO_PIN 11 //超音波センサーのエコーピンに接続されたArduinoピン。#define MAX_DISTANCE 200 // pingする最大距離(センチメートル単位)。センサーの最大距離は400〜500cmです。 [これは任意の数です] #define RELAY_LINE1_PIN 8#include "NewPing.h" NewPing sonar(TRIGGER_PIN、ECHO_PIN、MAX_DISTANCE); //ピンと最大距離のNewPingセットアップ。unsignedintcritical_distance_cms=50; //ライトが切り替わるカットオフ距離[これは任意の数です] boolstate =0; void setup(){Serial.begin(9600); // pingの結果を確認するには、115200ボーでシリアルモニターを開きます。 pinMode(RELAY_LINE1_PIN、OUTPUT); digitalWrite(RELAY_LINE1_PIN、HIGH); //ライトをオフにします} void loop(){delay(50); // pingの間隔を50ミリ秒待ちます(約20 ping /秒)。 29msは、ping間の最短の遅延である必要があります。 unsigned int distance =readDistance(); //超音波センサーに面しているオブジェクトの現在の距離Serial.print( "Ultrasonic:"); Serial.print(距離); // pingを送信し、距離をcmで取得し、結果を出力します(0 =設定された距離範囲外)Serial.println( "cm"); //誰かがドアの近くにいますif(distance超音波探傷試験 Arduino
超音波を読み取るコードは、読み取った値を印刷します// ----------------------------------- ---------------------------------------- // pingを実行するNewPingライブラリスケッチの例1秒間に約20回// ------------------------------------------ ---------------------------------#include#define TRIGGER_PIN 12 // Arduinoピンはに接続されています超音波センサーのトリガーピン。#defineECHO_PIN 11 //超音波センサーのエコーピンに接続されたArduinoピン。#defineMAX_DISTANCE 200 // pingする最大距離(センチメートル単位)。センサーの最大距離は400〜500cmです。NewPingソナー(TRIGGER_PIN、ECHO_PIN、MAX_DISTANCE); //ピンのNewPingセットアップと最大距離.voidsetup(){Serial.begin(115200); // 115200ボーでシリアルモニターを開いて、pingの結果を確認します。} void loop(){delay(50); // pingの間隔を50ミリ秒待ちます(約20 ping /秒)。 29msは、ping間の最短の遅延である必要があります。 Serial.print( "Ping:"); Serial.print(sonar.ping_cm()); // pingを送信し、距離をcmで取得し、結果を出力します(0 =設定された距離範囲外)Serial.println( "cm");} スマートハウスライト
これは、編集されたライブラリを使用したVisualStudioの完全なプロジェクトですhttps://github.com/shakram02/Arduino_SmartHouseLights.git
回路図
これはプロジェクト全体を説明する完全な回路です 製造プロセス