自己的项目一点点成形,很开心。这次就可以用以上的一些模块,实现点灯app上关闭手动模式时,当天黑时,如果检测到有声音或有人体靠近,则esp8266内置灯亮(身边没有别的led灯),当打开手动模式时,以上功能无法实现,改为用手机app控制点灯
用到的东西 我自己买的是HC-SR501人体感应蓝板,三个引脚的声控模块(便宜),四脚的光敏模块,esp8266nodemcu开发板,电脑端arduinoIDE,手机端点灯blinker app,跳线若干,还要一个可以提供5v电源的模块
看到这篇文章的小伙伴建议自行配置好arduino的开发环境
—————————————————————————————————
1.
除此之外我们还要下载安装blinker-Arduino的库:
方法一:打开arduino,点击项目,——加载库——管理库下搜索blinker安装最新版本
方法二:浏览器搜索点灯科技,找到官网,打开官方开发文档,点击快速入门——esp8266WiFi接入
点击下载,根据要求安装
手机app点灯下载
点灯科技官网 : https://www.diandeng.tech/home
在手机中进入点灯科技官网,点击 APP下载
下载完成后
按照图片上的步骤可以获取到secret Key ,代码上要用到
3. 打开arduino,新建文件,输入代码
#define BLINKER_WIFI
#include <Blinker.h>
char auth[] = "你的密匙";
char ssid[] = "WiFi名称";
char pswd[] = "WiFi密码";
int pattern=0;
// 新建组件对象
BlinkerButton Button1("btn-pattern");
BlinkerButton Button2("btn-abc");
BlinkerNumber BRIGHTNESS("brightness");
int brightness_read;
void heartbeat()
{
BRIGHTNESS.print(brightness_read);
}
// 按下按键1即会执行该函数
void button1_callback(const String & state) {
BLINKER_LOG("get button state: ", state);
if (state=="on") {
pattern=1;
// 反馈开关状态
Button1.print("on");
} else if(state=="off"){
pattern=0;
// 反馈开关状态
Button1.print("off");
}
}
//当按下按键二执行该函数
void button2_callback(const String & state) {
if(pattern==1)
digitalWrite(LED_BUILTIN,!digitalRead(LED_BUILTIN));
}
void setup() {
// 初始化串口
Serial.begin(115200);
// 初始化有LED的IO
pinMode(D2,INPUT); //将光感DO口接到D2
pinMode(D5,INPUT); //将声控的out接到D5
pinMode(D6,INPUT);//人体感应的out接到D6
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, HIGH);
// 初始化blinker
Blinker.begin(auth, ssid, pswd);
Button1.attach(button1_callback);
Button2.attach(button2_callback);
Blinker.attachHeartbeat(heartbeat);
}
void loop() {
Blinker.run();
brightness_read=analogRead(A0);
brightness_read=(1023-brightness_read)/10.23-1;
int d2=digitalRead(D2); //读出D2的高低电平赋值给D2
int d5=digitalRead(D5);//读出D5的高低电平赋值给D5
int d6=digitalRead(D6);
if(pattern==0){ //当关闭手动模式时
if(d2==1&&(d5==1||d6==1))
{
digitalWrite(LED_BUILTIN,LOW);//当检测到天暗且有声音或者感应到人体时,点亮led
Blinker.delay(5000);//延时五秒
}
else
digitalWrite(LED_BUILTIN,HIGH);}
if(brightness_read == 0)
BLINKER_LOG("Failed to read from sensor");
else
BLINKER_LOG("Brightness",brightness_read,"cd/m/m");
Blinker.delay(100);
}
那么把代码烧录进去
4. 硬件连接
首先把光感和声控的vcc和Gnd分别接在esp8266的3v和接地上,然后
将光感DO口接到D2 将声控的out接到D5
其次现在连接人体感应模块,我设置的是可触发模式,将vcc和gnd分别接在5v供电模块上,然后将5v的供电模块的接地和esp8266上的接地用跳线连接,共地,人体感应的out接到D6
最后把光感的AO口接在esp8266的AO口上
- 重启开发板,发现点灯app上的设备在线
然后在手机上添加组件
设置两个按键,一个数据
按照这样进行设置
然后就可以看到效果啦
打开手动模式时,点击点我开关灯,可以控制灯的亮灭,关闭就没有用,变成一个人体感应声控灯,感兴趣的可以试一试,成本很低