- A+
所属分类:软件分享
自己的项目一点点成形,很开心。这次就可以用以上的一些模块,实现点灯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,新建文件,输入代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
#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口上