【导读】住过多人宿舍的你一定有这样的体验,当你晚上熄灯后要去卫生间,如果打开室内的灯,那么一定会影响到他人休息;如果不开灯,则只能自己摸黑瞎抓。近日,两国外骚年动手DIY了一种叫“MOVE(“动作感应夜航灯”)的LED自动感应灯条,能根据人的动作亮起来。极大的为在较暗的房间夜间行动的人提供了方便。
小编在浏览国外著名DIY网站Instructables时偶然发现这个DIY贴,目前为止已经吸引了近十万人回帖和下载,可以说是相当火热。自己切身体会,也认为这个设计非常有意义,简单翻译给大家。感兴趣的朋友可以去看原帖。
废话不多说啦,给大家介绍步骤吧,时间大概需要三小时。
一、准备材料及工具
所需的材料如下:
1、LED灯条
2、LED电源
3、一个Arduino
4、IRL520 MOSFET
5、7805CT线性稳压器
6、光电池(photocell)
7、PIR感应器(版本A)
8、100K电阻
9、10Mohm电阻
10、10' 2芯绞合线
11、10' 3芯绞合线
12、安装线
14、3个或更多的10-pin母头插座
15、几个0.1“公头插 针
16、面包板
17、热缩套管
18、美纹纸胶带或某种壁挂式安装材料
19、8.5“X11”纯白色的打印纸若干张
其他工具:
面包板原型
烙铁(焊锡)
剥线机/切割机
热风枪(或吹风机或更轻)
热胶枪(以固定松动的电线)
二、电路原理图及安装步骤

电路原理图
说明:光电管检测当前室内光照强度,PIR传感器检测人体移动。
步骤1:按电路原理图组装好电路
步骤2:Arduino编程
下面附上Arduino代码
// Automated Runner Lights (v1.0)
// Scott Martin & Todd Medema
// http://fabricate.io
// 10/3/2013
//
// Change this code to your heart's content!
// Constants won't change. They're used here to
// set pin numbers and thresholds:
const int motionPin = 6;// A6
const int lightAnalogPin = 7; // A7
const int ledPin = 3; // D3
const int LIGHT_THRESH = 1000;
const int MOTION_THRESH = 250;
const int TIMEOUT = 1000;
// variables will change:
int motionState = 0; // countdown after last motion
int lightState = 0; // countdown after last dark
int LEDActive = 0; // if LEDs are on
int LEDBrightness = 0; // current LED brightness (for fade in/out)
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop(){
if (analogRead(motionPin) > MOTION_THRESH) {
motionState = TIMEOUT;
}
if (analogRead(lightAnalogPin) < LIGHT_THRESH) { //Is Bright
lightState = 0;
} else {
lightState = TIMEOUT;
}
if (motionState > 0) motionState -= 1;
if (lightState > 0) lightState -= 1;
Serial.print("cell: ");
Serial.print(analogRead(lightAnalogPin));
Serial.print(", pir: ");
Serial.println(analogRead(motionPin));
if (motionState && (lightState || LEDActive)) {
LEDActive = true;
}
else {
LEDActive = false;
}
if (LEDActive) {
if (LEDBrightness < 255) {
LEDBrightness = min(LEDBrightness + 1, 255);
}
} else {
if (LEDBrightness > 0) {
LEDBrightness = max(LEDBrightness - 1, 0);
}
}
analogWrite(ledPin, LEDBrightness);
delay(10);
}
请注意,它包含两个参数,您可以自由定制自己的需要和情况:LIGHT_THRESH(它是如何对光敏感的-提高了灵敏度意味着它需要有较深的激活)和超 时(灯光多长时间留在。检测运动后-增加会造成灯呆上更长的时间),具有VIN断开,上传此代码到Arduino。打开串口监视器,看看高和低光照的 值,然后设定的阈值进行匹配。一定要测试此尽可能接近的地方,你要安装的传感器-光线条件下可以大大在几英尺的空间变化。从您的计算机断开的Arduino,并将其连接到12V电源!
步骤3:安装LED灯条
到目前为止,我们已经建立了电路和程序与适当的照明门槛Arduino的。现在是时候来安装LED灯条!把LED灯带安装在约6英寸以上的地板。
步骤4:传感器安装和重新校准
在有灯光的地方安装传感器,并重新检擦阈值和校准。