約4ヶ月前、完全な暗闇の中で仕事から戻ったとき、私は首尾よく滑らず、左足の中足骨2本(指)を骨折した。 足を踏み入れるのは信じられないほど苦痛だったので、1か月間ベッドに落ちなければなりませんでした。 それから彼は石膏なしでさらに半月足を引きずりました(骨折した人はすぐに私を理解します)。 この悲しい話の後、階段の照明の自動化について考え始めました。 検索クエリで少し遊んだ後、お気に入りのArduinoマイクロコントローラーに基づいて、このブログで自分用の非常にシンプルなソリューションを見つけました。 回路は問題を引き起こしませんでしたが、実装する必要があるワイヤの数と長さを怖がらせました。 それ以前は、彼は何もしませんでした。 既製のソリューションを購入したり、誰かを雇うのは高価です。 1か月以内に必要なコンポーネントを注文し、急いで数日で階段に取り付けました。 その結果に興味を持っている人は誰でも、カットへの歓迎(慎重にトラフィック)!
コンポーネント
作業で使用されたすべてのコンポーネントのおおよそのコストを示します。 コンポーネントのほとんどは私の街の店で購入されたので、すべてがルーブルである。
Arduino Pro Mini | 300 r |
超音波モジュールHC-SR04距離センサー -2個 | 230 r |
M5450 LEDドライバー | 88 r |
電圧レギュレータL78M05CV | 26 r |
フォトレジストFR-764 | 16 p |
ケーブルチャンネル20x10 mm-10 M | 100 r |
ワイヤ2x0.12-100 M(テープマージンあり) | 190 r |
4x0.12-20 Mワイヤー(センサー用) | 60 r |
LEDストリップLSP0603W15白 -17個30 cm | 1020 r |
小さなもの:テキソライト15x15 cm、塩化第二鉄、ドリル0.9 mm、
PLSタイプのコネクター、BLSボード上のコネクター、熱収縮チューブ、 コンデンサと抵抗 | 200 r |
Sail 4アラームからの12V電源(別名ケース) | 無料で |
試作機
Arduinoのファームウェアのデバッグは、他のすべてと同様に、従来のLEDを使用してブレッドボードで行いました。
スキーム
悪名高いイーグルCAD設計環境を使用して、 著者の回路とプリント基板が完成しました。 ここで、電圧レギュレータを5 Vに追加し、センサーを3ピンの高価なPingから4ピンの安価なHC-SR04に変更しました 。 階段照明が暗闇でのみ機能するために、ソビエトFR-764フォトレジスタが回路に追加されました(別のフォトレジスタを使用できます)。
スケッチ
このスケッチでは、 M5450 LEDドライバーを使用するための自由に配布されたライブラリーと、HC-SR04超音波距離計を使用するためのライブラリーを使用しています。
#include "lightuino3.h" #include "Ultrasonic.h" // #define TRIG_PIN 12 #define ECHO_PIN 13 // #define TRIG2_PIN 10 #define ECHO2_PIN 11 // Ultrasonic OurModuleUp(TRIG_PIN, ECHO_PIN); // Ultrasonic OurModuleDown(TRIG2_PIN, ECHO2_PIN); // pins 0, 1 used by Serial const unsigned char DataPin = 6; const unsigned char clockPin = 7; // const long lightSpacing = 280; // const long lightHold = 10000; // const long pingReadDelay = 50; // const float minBottomIn = 33.0f; const float minTopIn = minBottomIn; LightuinoSink sinks(clockPin, DataPin, 100, 4); boolean bClimbStarted = false; boolean bDescentStarted = false; int val; void setup() { Serial.begin(9600); pinMode(DataPin, OUTPUT); pinMode(clockPin, OUTPUT); delay(1000); sinks.set(0,0,0); } void loop() { val = analogRead(0); // if (val>=1020){ UltrasonicDownFire();// if(bClimbStarted) { bClimbStarted = false; bDescentStarted = false; climbLightSequence(); } else { // UltrasonicUpFire(); if(bDescentStarted) { bClimbStarted = false; bDescentStarted = false; descentLightSequence(); } } delay(pingReadDelay); } } // void UltrasonicUpFire() { if((OurModuleUp.Ranging(INC) < minTopIn) && (OurModuleUp.Ranging(INC) > 0)) { // Serial.println("Top sensor tripped."); bDescentStarted = true; } } // ] void UltrasonicDownFire() { if((OurModuleDown.Ranging(INC) < minTopIn) && (OurModuleDown.Ranging(INC) > 0)) { // Serial.println("Bottom sensor tripped."); bClimbStarted = true; } } void climbLightSequence(){ LedsOnDown(); } void LedsOnDown(){ // byte ledState[9]; for (int j=0;j<9;j++) { ledState[j] = B00000000; } // for (int k=1;k>=0;k--) { for (int j=8;j>=1;j--) { ledState[k] = (ledState[k] >> 1) + 128; sinks.set(ledState); delay(lightSpacing); } } // delay(lightHold); // for (int k=1;k>=0;k--) { for (int j=8;j>=1;j--) { ledState[k] = (ledState[k] >> 1); sinks.set(ledState); delay(lightSpacing); } } delay(pingReadDelay); } void descentLightSequence(){ LedsOnUp(); } void LedsOnUp(){ // byte ledState[9]; for (int j=0;j<9;j++) { ledState[j] = B00000000; } // for (int k=0;k<=1;k++) { for (int j=0;j<9;j++) { ledState[k]=(ledState[k] << 1) + 1; sinks.set(ledState); delay(lightSpacing); } } delay(lightHold); for (int k=0;k<=1;k++) { for (int j=0;j<9;j++) { ledState[k]=(ledState[k] << 1); sinks.set(ledState); delay(lightSpacing); } } delay(pingReadDelay); }
インストールについて少し
私は最も単純な木製の階段(隆起したボードなし)があるので、各ステップの終わりからLEDストリップを固定しました。
液体の釘に接着されたワイヤーが敷かれたケーブルチャネルが全長に沿って延びています。 LEDストリップには最初は接着面があり、木に完全に接着します。
センサーは、階段の上部と下部の各最初のステップの開始時に取り付けられました。 留め具として、乾式壁には普通の石膏ボードを使用しました。
アラーム電源ユニットからバッテリーが切れたので、コントローラーを簡単に取り付けられました。
ふたが所定の位置にあります。 コントローラーをランディングの下に配置します。
結果
実際、ビデオは実際の画像を反映していません。 階段ははるかに美しく、より明るく照らされています。
必要なすべてのファイルを1つのアーカイブにダウンロードします
UPD! スキームをわずかに変更しました 。 PWMおよび高出力LEDストリップのサポートが追加されました。
VKontakte グループ vk.com/ledstairs (写真、ビデオ)