arduino智能小灯(人体感应,光线感应,蓝牙控制)

1.人体红外传感器HC-SR501

在这里插入图片描述
① 调节灵敏度 逆时针低
② 调节延时 逆时针低

1.调节延时电位器逆时针旋转,感应延时减短(约 0.5S),反之,感应延时加长(约300S)
2.调节距离电位器逆时针旋转,感应距离减小(约 3 米),反之,感应距离增大(约 7 米)
③ 触发方式选择
跳帽接上两个针脚(如上图),为H(可重复触发),在延时时段内,若感应到,将一直保持高电平
跳帽接下两个针脚,为L(不可重复触发),延时结束,自动从高电平转到低电平
当感应到人体,其IO输出3.3V高电平

2.蓝牙模块

在这里插入图片描述
在这里插入图片描述
VCC连接正极(有些是3.3V,有些是5V)
RXD:数据的接收端 (连接arduino的TXD)可以连接数字引脚
TXD:数据的发送端 (连接arduino的RXD)可以连接数字引脚
GND:连接负极
用蓝牙模块需要添加库
#include <SoftwareSerial.h>

3.继电器

在这里插入图片描述
在这里插入图片描述
一般情况下NC是闭合,当IN收到信号是低电平信号,接向NO,形成闭合回路,左端电路开始工作。

当IN端给高电平时,NO端断开,接向NC,负载即停止工作。

4.光敏电阻

在这里插入图片描述
在这里插入图片描述
光强会改变光敏电阻的阻值从而改变其两边的电压通过A0口监测电压变化就能够监测光强的变化

5.控制原理

当人体红外传感器HC-SR501检测到有人时输出高电平然后再判断蓝牙命令及光敏电阻的光亮强度来进行对小灯的控制

6.连线

1.蓝牙模块连接

因为外接的模块较多我们先将arduino的5v和GND接在面包板上
在这里插入图片描述
现在进行蓝牙模块连接
SoftwareSerial BluetoothSerial(10, 11); // RX, TX
定义10为RX接蓝牙模块TX
定义11为TX接蓝牙模块RX

1 vcc 2 GND 3 TX 4 RX

2.人体红外传感器HC-SR501连线

在这里插入图片描述

out口接2

3.光敏电阻连线

在这里插入图片描述
1为220欧电阻
2为光敏电阻

4.继电器连接

在这里插入图片描述
我们用十三号端口来控制继电器
当十三号端口高电平时继电器指向NC断开
当13低电平时指向ON电路接通

7.控制源码


#include <SoftwareSerial.h>
int sensorValue = 0; //保存读到的传感器模拟值
    SoftwareSerial BluetoothSerial(10, 11); // RX, TX
    String value;       //用于中转数据
int incomedate = 0;
int relayPin = 13; //继电器引脚
 int b=0;
 int body=0;
void setup()
 {
    
    
  pinMode(2,INPUT);
    pinMode(relayPin, OUTPUT);
    //设置引脚13为输出接口,Arduino 上我们用到的I/O 口都要进行类似这样的定义。  
    Serial.begin(9600); 
    //设置波特率为9600,这里要跟软件设置相一致。当接入特定设备时,我们也要跟其他设备的波特率达到一致。  
    // 设置蓝牙串口通讯的速率 HC06默认是9600
        BluetoothSerial.begin(9600);
}
 
void loop() 
{
    
    
  delay(1000);
      body=digitalRead(2);
      if(body==1){
    
    
        sensorValue = analogRead(A0);     //读取A0模拟口的数值
    Serial.print(sensorValue);
    Serial.print('\n');
    if(sensorValue>=950&&b==0){
    
    
      digitalWrite(relayPin, LOW);
    }
    else{
    
    
      digitalWrite(relayPin, HIGH);//关灯
    }
    if (BluetoothSerial.available()) {
    
    //检测蓝牙模块串口状态
       value = BluetoothSerial.readString();
       Serial.print(value); //单片机将指令发送到蓝牙模块
       if(value=="L"){
    
    
        digitalWrite(relayPin, HIGH);//关灯
        b=1;
       }
      
      else if(value=="H"){
    
        
        digitalWrite(relayPin, LOW);//开灯
        b=0;
      }
    
      
      
    }
      }
    else{
    
    
      digitalWrite(relayPin, HIGH);//关灯
    }
 
}

猜你喜欢

转载自blog.csdn.net/qq_62975494/article/details/130752994