实验十四 灯光的自动开关

实验十四 灯光的自动开关


一、实验目的

通过本实验,熟悉常见楼道灯光的自动开关方式,掌握在Arduino项目中使用麦克风(声音)传感器实现声控灯、使用人体红外感应传感器实现感应灯、使用触摸传感器实现触摸灯的方法。


二、实验要求

 1、使用ESP 8266电路板、麦克风(声音)传感器(如图所示)、LED、电阻和导线搭建实验电路,并编写相应Arduino程序代码,实现通过声音控制LED亮起,一段时间后自动熄灭的效果,模拟现实生活中的声控灯。

14-1麦克风(声音)传感器

 2、将上步实验中的麦克风(声音)传感器拆除,添加1个人体红外感应传感器(如图所示),并使用导线搭建实验电路,修改程序代码,实现人(动物)进入红外感应区域时LED亮起,离开一段时间后自动熄灭的效果,模拟现实生活中的感应灯。

14-2人体红外感应传感器

 3、将上步实验中的人体红外感应传感器拆除,添加1个触摸传感器(如图所示),并使用导线搭建实验电路,修改程序代码,实现触摸传感器感应区域时LED亮起,一段时间后自动熄灭的效果,模拟现实生活中的触摸灯。

14-3触摸传感器


三、实验过程

 1、声控灯

1)使用导线分别连接面包板的电源总线正极和负极到电路板的3V3GND接口;放置1个麦克风(声音)传感器(注意不是高感度声音传感器,采集声音的头部区域较高感度声音传感器的小)在面包板上,分别使用导线将传感器的正极(+)和负极(GND)针脚连接到面包板电源总线正极和负极,A0针脚连接到电路板A0接口,D0针脚无需接线;在面包板上放置1LED,正极使用导线连接到电路板D2GPIO4)接口,负极通过11K电阻连接到面包板电源总线负极。电路连接如图所示。

14-4实验电路连接图

2)在新建的Arduino程序窗口中输入如下代码:

int soundPin = 0; //声音传感器接到A0

int ledPin = 4; //LED接到D2(GPIO4)   

void setup() {

  pinMode(ledPin, OUTPUT);

  Serial.begin(115200); //用于调试时查看当前的声音值

}  

void loop(){   

  int soundState = analogRead(soundPin);  //读取声音传感器的值  

  Serial.println(soundState);  //串口监视器输出声音传感器的值  

  //如果声音值大于100,亮灯,并持续5s,否则关灯  

  if (soundState > 100) {

    digitalWrite(ledPin, HIGH);   

    delay(5000);

  }

  else{

    digitalWrite(ledPin, LOW);

  }

}

3)将USB线缆插入计算机,待程序上传成功后打开串口监视器,通过在麦克风(声音)传感器附近发出声音观察串口监视器输出值(根据观察到的数值情况修改程序中的阈值并重新上传程序)及LED灯的变化。

该实验的结果是:接通电源时LED熄灭,在麦克风(声音)传感器附近发出声音后LED亮起,5秒后自动熄灭。

 2、人体红外感应灯

1)将第1步中的麦克风(声音)传感器拆除;使用1个人体红外感应传感器,分别使用公母线将传感器的正极(VCC)和负极(GND)针脚连接到面包板电源总线正极和负极,输出(OUT)针脚连接到电路板D2GPIO4)接口;将面包板上LED的正极使用导线连接到电路板D1GPIO5)接口,其它线路不变。电路连接如图所示。

14-5实验电路连接图

2)在新建的Arduino程序窗口中输入如下代码:

int sensorPin = 4; //红外传感器接到D2(GPIO4)

int ledPin = 5; //LED正极接到D1(GPIO5)

void setup(){

  pinMode(ledPin,OUTPUT); //设置LED接口为输出状态

  Serial.begin(115200);

}

void loop(){

  int val=digitalRead(sensorPin); //定义参数存储人体红外传感器读到的状态

  Serial.println(val);

  if(val == 1){ //如果检测到有动物运动(在检测范围内),亮灯5

    digitalWrite(ledPin,HIGH);

    delay(5000);

  }

  else{

    digitalWrite(ledPin,LOW);

  }  

}

3)将USB线缆插入计算机,待程序上传成功后打开串口监视器,通过在人体红外感应传感器附近移动身体观察串口监视器输出值及LED灯的变化。注意该传感器在接通电源后有1分钟左右的初始化过程,这期间LED会闪烁几次,可能无法出现预期的实验结果。

该实验的结果是:接通电源时传感器自动检测是否有人(动物)在感应范围内移动,若有则LED亮起,若持续5秒没有则自动熄灭。人体红外感应传感器上有2个旋钮,1个是调节感应距离,1个是调节持续时间,若实验没有出现预想的结果,可通过旋转这2个旋钮改变传感器灵敏度。

 3、触摸灯

1)将第2步中的人体红外传感器拆除;在面包板上放置1个触摸传感器,分别使用导线将传感器的正极(VCC)和负极(GND)针脚连接到面包板电源总线正极和负极,信号(SIG)针脚连接到电路板D2GPIO4)接口,其它线路不变。电路连接如图所示。

14-6实验电路连接图

2)在新建的Arduino程序窗口中输入如下代码:

int switchPin = 4;//触摸传感器接到D2(GPIO4)

int ledPin = 5;

void setup(){

  pinMode(ledPin,OUTPUT);

  Serial.begin(115200);

}

void loop(){

  int val=digitalRead(switchPin); //定义参数存储触摸传感器读到的状态

  Serial.println(val);

  if(val == 1){ //如果检测到触摸,亮灯5

    digitalWrite(ledPin,HIGH);

    delay(5000);

  }

  else{

    digitalWrite(ledPin,LOW);

  }  

}

3)将USB线缆插入计算机,待程序上传成功后打开串口监视器,通过在触摸传感器感应区域观察串口监视器输出值及LED灯的变化。

该实验的结果是:接通电源时LED熄灭,触摸传感器感应区域后LED亮起,5秒后自动熄灭。