设计床下感应小夜灯的教程分享

2023-06-20  

  背景

  你是否有过曾经试图在晚上安静地起床,结果却被什么东西绊倒,结果把整个房子的人都吵醒了的经历?小心地安装在床下的运动感应夜灯可提供足够明亮的低光,引导您绕过那些散落的乐高积木;同时又足够暗,因此不会使你在熟睡的时候醒来。除了感应运动外,还可以在固定(或不确定)的时间长度内将灯光编程为您选择的颜色。它们为任何卧室增添了凉爽的光芒和氛围。使用一些基本套件、一些额外的部件,你可以在几个小时内相对轻松地安装这些灯。


  第 1 步:测量床

  将床翻转到一侧,以便轻松够到底座。为控制箱找一个合适的位置,我们选择了靠近床头的稍高的区域(见图)。测量床的周长及其长度和宽度(见图)。记下您的测量值。确定三个传感器的位置。您需要一个面向不靠墙的床的三个侧面中的每一个。我们选择了靠近床边但不可见的位置。测量传感器位置到控制箱的距离。

poYBAGMMdaSACYVmAAa2OXhlEjo029.png

  第 2 步:剪断电线和 LED 灯条

  将 LED 灯条剪到床围的长度。接下来,剪断电线:每个传感器需要三个,LED 灯条需要三个,每个都通向控制箱 - 总共 12 个。取三段不同颜色的线,切成合适的尺寸。我们使用了黄色、绿色和橙色——公认的惯例是红色代表电源,黑色代表接地,另一种(粗体)颜色代表信号。

  第 3 步:将电缆焊接到运动传感器

  我们将运动传感器安装在 3D 打印的外壳中。这步并不是必要的,但可以让传感器更整洁一点,并且更容易放在床底。如果您使用的是 3D 打印的外壳,请先将三根不同颜色的电线穿过盖子。运动传感器具有三个不同的引脚:接地 (GND)、电源 (VCC) 和信号 (S)。当如图所示握住传感器时(即,引脚位于模块底部边缘),将三种不同颜色的电线连接到各自的引脚并将它们焊接到位。然后,使用热收缩覆盖电线。对三个传感器中的每一个切割的电线重复此操作。之后,将运动传感器的圆顶推入主外壳上的孔。

pYYBAGMMdaCAEu1ZAAcDZInWCPg203.png

pYYBAGMMdZuAA-D9AAJ4cIijrik871.png

poYBAGMMdZiALSc-AAMgIZrdc_Y984.png

  第 4 步:连接 LED 灯条

  LED 灯条具有三个相同的连接:电源、信号和接地 - 除了信号引脚是输入。这些 LED 接收来自 Arduino 的指令,每一个都是可寻址的。我们可以改变颜色(RGB)和亮度。将三根彩色电线焊接到 LED 灯条上,这些将用于稍后连接到 Arduino。

poYBAGMMdZOAVBV0AAHFUQQ5q0A011.png

  第 5 步:电源开关

  如果您使用的是 3D 打印控制箱,则需要安装电源开关并将其连接到电线上。首先,确保插头末端没有任何东西,如果有,请将其切断。将电线穿过盒子前面的孔,然后再次穿过紧挨着它的开关的孔。剥去 AC 线的外壳,以便可以看到 10 厘米的三根内线(火线、零线和接地线)。然后,剪掉 8 厘米长的火线(红色)和零线(蓝色)线,留待以后使用。使用交流插头线末端的剩余 2 厘米,将火线(红色)和零线(蓝色)焊接到底部两个插脚的开关上(如图所示)。下一个,将您之前剪下的 8 厘米长的火线(红色)和零线(蓝色)线焊接到开关顶部的两个插脚上(如图所示) - 这些线将连接到控制器内的电源盒盒子。首先拉出电线,将开关推入盒子中的孔中。

pYYBAGMMdZCAXxXwAANhmE41scg774.png

pYYBAGMMdYyAEIApAAVoxrnnyng458.png

  第 6 步:连接电源

  将电源放入盒子中,使接线点朝向开关。将开关的火线(红色)和零线(蓝色)连接到电源上的火线和零线连接点(分别标记为 l 和 n)。电源上的连接点是螺钉,一旦电线就位,请确保这些连接点拧紧。

poYBAGMMdYiADmNyAAda2a5fv3o143.png

  第 7 步:连接 Arduino

  电源具有 5V 和接地的输出连接(见图)。拿起 Arduino 并剪下大约 8 厘米长的电源线(通常为红色)。通过将电源线的一端拧入“5V”连接点并将另一端焊接到 Arduino 上的“VIn”,将 Arduino 连接到电源。使用接地线(黑色或您选择的任何颜色)重复此过程,连接电源和 Arduino 上的“GND”。

pYYBAGMMdYSABK-dAAIBd1vNu00930.png

  第 8 步:将 LED 灯条连接到电源和 Arduino

  将 LED 灯条的电线穿过盒子中剩余的空孔。剥去 LED 灯条的电源线和地线。将电源(红色)线连接到电源的“5V”连接点(Arduino 已连接到此),将接地(黑色)线连接到电源“GND”连接点(Arduino 已连接到此,也)。将 LED 灯条的信号线焊接到 Arduino 的数字引脚 9。

  第 9 步:将运动传感器连接到 Arduino

  将运动传感器的电线(总共 9 条)穿过 LED 灯条电线所在的孔。将三根电源线焊接到 Arduino 的 +5V,将地线焊接到 Arduino 的地线,并将各个信号线焊接到 Arduino 引脚 10、11 和 12。

  第 10 步:对 Arduino 进行编程

  使用“motion_sensing_lights.ino”的代码。然后使用 Arduino 软件,将代码上传到您的 Arduino 模块。代码非常简单:它会不断检查运动传感器是否输出信号,如果是,则启动计时器并打开 LED 灯条以发光,保持亮着一分钟,然后发光下来。

  第 11 步:模拟

  关闭控制箱 - 它外面唯一的东西应该是 LED 灯条和交流插头。将盒子贴在您选择的位置的床底 - 我们使用强力双面胶带做到这一点。然后,使用双面胶带将运动传感器连接到床底。运动传感器应沿着床的三个侧面朝外,而不是沿着墙壁。接下来,将 LED 灯条安装在床的周围。虽然 LED 灯条有一个粘性背面,但这不足以支撑它的重量。因此,我们使用塑料线夹将其固定在床底。插上电源并打开控制箱,然后将床正确向上转动。

pYYBAGMMdX-ARUboAAOlbV6gAF0387.png

  第 12 步:调整、测试和实战

  测试您的运动感应床下照明。您可以通过将螺丝刀穿过外壳顶部的孔并扭转灵敏度电阻来调整运动传感器的灵敏度。

poYBAGMMdXuAH6H8AAJ-Ob6qjPk479.png

  第 13 步:更进一步(可能的扩展)

  使用 ESP8266 模块而不是 Arduino,可以通过将 LED 灯条链接到开源家庭自动化平台Home Assistant来用手机或 Alexa 控制 LED 灯条。

poYBAGMMdXiAZ1v1AAO4OTGsltY124.png

  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(leds, NUM_LEDS);
  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();

  }


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。