背景
你是否有過曾經(jīng)試圖在晚上安靜地起床,結(jié)果卻被什么東西絆倒,結(jié)果把整個(gè)房子的人都吵醒了的經(jīng)歷?小心地安裝在床下的運(yùn)動(dòng)感應(yīng)夜燈可提供足夠明亮的低光,引導(dǎo)您繞過那些散落的樂高積木;同時(shí)又足夠暗,因此不會(huì)使你在熟睡的時(shí)候醒來。除了感應(yīng)運(yùn)動(dòng)外,還可以在固定(或不確定)的時(shí)間長(zhǎng)度內(nèi)將燈光編程為您選擇的顏色。它們?yōu)槿魏闻P室增添了涼爽的光芒和氛圍。使用一些基本套件、一些額外的部件,你可以在幾個(gè)小時(shí)內(nèi)相對(duì)輕松地安裝這些燈。
第 1 步:測(cè)量床
將床翻轉(zhuǎn)到一側(cè),以便輕松夠到底座。為控制箱找一個(gè)合適的位置,我們選擇了靠近床頭的稍高的區(qū)域(見圖)。測(cè)量床的周長(zhǎng)及其長(zhǎng)度和寬度(見圖)。記下您的測(cè)量值。確定三個(gè)傳感器的位置。您需要一個(gè)面向不靠墻的床的三個(gè)側(cè)面中的每一個(gè)。我們選擇了靠近床邊但不可見的位置。測(cè)量傳感器位置到控制箱的距離。
第 2 步:剪斷電線和 LED 燈條
將 LED 燈條剪到床圍的長(zhǎng)度。接下來,剪斷電線:每個(gè)傳感器需要三個(gè),LED 燈條需要三個(gè),每個(gè)都通向控制箱 - 總共 12 個(gè)。取三段不同顏色的線,切成合適的尺寸。我們使用了黃色、綠色和橙色——公認(rèn)的慣例是紅色代表電源,黑色代表接地,另一種(粗體)顏色代表信號(hào)。
第 3 步:將電纜焊接到運(yùn)動(dòng)傳感器
我們將運(yùn)動(dòng)傳感器安裝在 3D 打印的外殼中。這步并不是必要的,但可以讓傳感器更整潔一點(diǎn),并且更容易放在床底。如果您使用的是 3D 打印的外殼,請(qǐng)先將三根不同顏色的電線穿過蓋子。運(yùn)動(dòng)傳感器具有三個(gè)不同的引腳:接地 (GND)、電源 (VCC) 和信號(hào) (S)。當(dāng)如圖所示握住傳感器時(shí)(即,引腳位于模塊底部邊緣),將三種不同顏色的電線連接到各自的引腳并將它們焊接到位。然后,使用熱收縮覆蓋電線。對(duì)三個(gè)傳感器中的每一個(gè)切割的電線重復(fù)此操作。之后,將運(yùn)動(dòng)傳感器的圓頂推入主外殼上的孔。
第 4 步:連接 LED 燈條
LED 燈條具有三個(gè)相同的連接:電源、信號(hào)和接地 - 除了信號(hào)引腳是輸入。這些 LED 接收來自 Arduino 的指令,每一個(gè)都是可尋址的。我們可以改變顏色(RGB)和亮度。將三根彩色電線焊接到 LED 燈條上,這些將用于稍后連接到 Arduino。
第 5 步:電源開關(guān)
如果您使用的是 3D 打印控制箱,則需要安裝電源開關(guān)并將其連接到電線上。首先,確保插頭末端沒有任何東西,如果有,請(qǐng)將其切斷。將電線穿過盒子前面的孔,然后再次穿過緊挨著它的開關(guān)的孔。剝?nèi)?AC 線的外殼,以便可以看到 10 厘米的三根內(nèi)線(火線、零線和接地線)。然后,剪掉 8 厘米長(zhǎng)的火線(紅色)和零線(藍(lán)色)線,留待以后使用。使用交流插頭線末端的剩余 2 厘米,將火線(紅色)和零線(藍(lán)色)焊接到底部?jī)蓚€(gè)插腳的開關(guān)上(如圖所示)。下一個(gè),將您之前剪下的 8 厘米長(zhǎng)的火線(紅色)和零線(藍(lán)色)線焊接到開關(guān)頂部的兩個(gè)插腳上(如圖所示) - 這些線將連接到控制器內(nèi)的電源盒盒子。首先拉出電線,將開關(guān)推入盒子中的孔中。
第 6 步:連接電源
將電源放入盒子中,使接線點(diǎn)朝向開關(guān)。將開關(guān)的火線(紅色)和零線(藍(lán)色)連接到電源上的火線和零線連接點(diǎn)(分別標(biāo)記為 l 和 n)。電源上的連接點(diǎn)是螺釘,一旦電線就位,請(qǐng)確保這些連接點(diǎn)擰緊。
第 7 步:連接 Arduino
電源具有 5V 和接地的輸出連接(見圖)。拿起 Arduino 并剪下大約 8 厘米長(zhǎng)的電源線(通常為紅色)。通過將電源線的一端擰入“5V”連接點(diǎn)并將另一端焊接到 Arduino 上的“VIn”,將 Arduino 連接到電源。使用接地線(黑色或您選擇的任何顏色)重復(fù)此過程,連接電源和 Arduino 上的“GND”。
第 8 步:將 LED 燈條連接到電源和 Arduino
將 LED 燈條的電線穿過盒子中剩余的空孔。剝?nèi)?LED 燈條的電源線和地線。將電源(紅色)線連接到電源的“5V”連接點(diǎn)(Arduino 已連接到此),將接地(黑色)線連接到電源“GND”連接點(diǎn)(Arduino 已連接到此,也)。將 LED 燈條的信號(hào)線焊接到 Arduino 的數(shù)字引腳 9。
第 9 步:將運(yùn)動(dòng)傳感器連接到 Arduino
將運(yùn)動(dòng)傳感器的電線(總共 9 條)穿過 LED 燈條電線所在的孔。將三根電源線焊接到 Arduino 的 +5V,將地線焊接到 Arduino 的地線,并將各個(gè)信號(hào)線焊接到 Arduino 引腳 10、11 和 12。
第 10 步:對(duì) Arduino 進(jìn)行編程
使用“motion_sensing_lights.ino”的代碼。然后使用 Arduino 軟件,將代碼上傳到您的 Arduino 模塊。代碼非常簡(jiǎn)單:它會(huì)不斷檢查運(yùn)動(dòng)傳感器是否輸出信號(hào),如果是,則啟動(dòng)計(jì)時(shí)器并打開 LED 燈條以發(fā)光,保持亮著一分鐘,然后發(fā)光下來。
第 11 步:模擬
關(guān)閉控制箱 - 它外面唯一的東西應(yīng)該是 LED 燈條和交流插頭。將盒子貼在您選擇的位置的床底 - 我們使用強(qiáng)力雙面膠帶做到這一點(diǎn)。然后,使用雙面膠帶將運(yùn)動(dòng)傳感器連接到床底。運(yùn)動(dòng)傳感器應(yīng)沿著床的三個(gè)側(cè)面朝外,而不是沿著墻壁。接下來,將 LED 燈條安裝在床的周圍。雖然 LED 燈條有一個(gè)粘性背面,但這不足以支撐它的重量。因此,我們使用塑料線夾將其固定在床底。插上電源并打開控制箱,然后將床正確向上轉(zhuǎn)動(dòng)。
第 12 步:調(diào)整、測(cè)試和實(shí)戰(zhàn)
測(cè)試您的運(yùn)動(dòng)感應(yīng)床下照明。您可以通過將螺絲刀穿過外殼頂部的孔并扭轉(zhuǎn)靈敏度電阻來調(diào)整運(yùn)動(dòng)傳感器的靈敏度。
第 13 步:更進(jìn)一步(可能的擴(kuò)展)
使用 ESP8266 模塊而不是 Arduino,可以通過將 LED 燈條鏈接到開源家庭自動(dòng)化平臺(tái)Home Assistant來用手機(jī)或 Alexa 控制 LED 燈條。
Motion Sensing LEDs:
/*
? ?T3chFlicks - Motion Sensing Under Bed Lighting
? ?Free to use and distribute.
? ?Find the tutorial and parts list at https://t3chflicks.com/shop/kit/motion-sensing-under-bed-lights/
*/
#include "FastLED.h"
#define LED_DATA_PIN 9
#define NUM_LEDS 250
CRGB leds[NUM_LEDS];
int onTime = 30*1000; // 30 seconds
int motion_sensor_left = 10;
int motion_sensor_right = 11;
int motion_sensor_front = 12;
int fadeTimeDiff = 50;
void setup() {
? FastLED.addLeds
? pinMode(motion_sensor_left, INPUT);
? pinMode(motion_sensor_right, INPUT);
? pinMode(motion_sensor_front, INPUT);
}
void loop() {
? if (digitalRead(motion_sensor_left) == 1 || digitalRead(motion_sensor_right) == 1 || digitalRead(motion_sensor_front) == 1) {
? ? fadeIn();
? ? delay(onTime);
? ? fadeOut();
? }
}
void fadeIn() {
? for (int led = 0; led < NUM_LEDS; led++) {
? ? leds[led] = CRGB( 150, 60, 15);
? }
? for (int b = 0; b < 255; b += 2) {
? ? FastLED.setBrightness(b);
? ? FastLED.show();
? ? delay(fadeTimeDiff);
? }
}
void fadeOut() {
? for (int led = 0; led < NUM_LEDS; led++) {
? ? leds[led] = CRGB( 150, 60, 15);
? }
? for (int b = 255; b > 0; b -= 2) {
? ? FastLED.setBrightness(b);
? ? FastLED.show();
? ? delay(fadeTimeDiff);
? }
? for (int led = 0; led < NUM_LEDS; led++) {
? ? leds[led] = CRGB::Black;
? }
? FastLED.show();
}
}
for (int led = 0; led 《 NUM_LEDS; led++) {
leds[led] = CRGB::Black;
}
FastLED.show();
}
評(píng)論
查看更多