智能宿舍

前言

最近太忙了,好久没更博客了,主要是想想做做弄了个智能宿舍项目,电控、物联网层面我都做好了,可能还缺少一个工程的大佬帮我部署到寝室里hhhhhhh鄙人能力有限
来,先上方案的构想。

智能宿舍

emmm,这是一开始的构想,后面有稍微一点点的改动,且听我慢慢道来。

项目拆分实现

其实不管多大多复杂的项目,我们都应该把它拆分成一个个的小块去实现。
另外这里感谢酷基的方案,连接的是点灯平台,云服务用的应该是阿里云家的。

一、开灯

原来想着,用esp01(比8266廉价方便),再加个继电器,然后做成这个样子(理想型)。

智能宿舍

这个用灯控制的比较简单,然后实现的效果是这样的。本人第一次投稿b站视频:物联网灯
UI做的也挺干净整洁的

智能宿舍

这个源码比较简单,我就不上传了。上传一个后续的方案,当我看到这个设计:用舵机实现开关灯。

智能宿舍

那么我们就来解析一下这个舵机开灯的源代码吧(esp01)


#define BLINKER_WIFI

#include <Blinker.h>
#include<Servo.h>
Servo myservo;

char auth[] = "你的物联网密钥";
char ssid[] = "WIFI账号";
char pswd[] = "WIFI密码";
BlinkerButton Button1("btn-on");     //定义按钮数据
BlinkerButton Button2("btn-off"); 
BlinkerButton Button3("btn-aaa");  
bool oState = false;
int counter = 0;

void dataRead(const String & data)      // 如果未绑定的组件被触发,则会执行其中内容
{
    BLINKER_LOG("Blinker readString: ", data);

    Blinker.vibrate();
    
    uint32_t BlinkerTime = millis();
    
    Blinker.print("millis", BlinkerTime);
}

// 按下按键即会执行该函数
void button1_callback(const String & state)
{
    BLINKER_LOG("get button state: ", state);
    delay(500);
    myservo.write(60);
    delay(2000);
    myservo.write(90);
    delay(500);
}
void button2_callback(const String & state)     //点灯app内控制按键触发
{
    
    BLINKER_LOG("get button state: ", state);
    delay(500);
    myservo.write(-60);
    delay(2000);
    myservo.write(90);
    delay(500);


}

void button3_callback(const String & state)     //点灯app内控制按键触发
{  
  
    BLINKER_LOG("get button state:on", state);
     Blinker.print(state);
    if(state=="on"){
    digitalWrite(0,LOW);
   // Button3.print("on");
     }else if(state =="off"){
            digitalWrite(0,HIGH);
        
    //        Button3.print("off");
    }


}



void setup()
{
    Serial.begin(115200);
    BLINKER_DEBUG.stream(Serial);

    // 初始化舵机
    myservo.attach(0);
    // 90为停
    myservo.write(90);
    digitalWrite(0,HIGH);
    Blinker.begin(auth, ssid, pswd);
    Blinker.attachData(dataRead);  

    Button1.attach(button1_callback);  
    Button2.attach(button2_callback);     
    Button3.attach(button3_callback); 
}

void loop()
{
    Blinker.run();
}

注释基本都打好了,要注意的是,要自己写按键在点灯科技里,舵机的库函数myservo.write()中参数,90代表停止,0180分别表示往一边一直转。
还有一个功能定时器触发的,其实在点灯APP上稍微设置一下就行了,没什么难点。

然后剩下的就是部署在寝室了,工程大佬帮帮我

上一篇:2021CCPC网络赛(重赛) 1011.Jumping monkey


下一篇:2020-05-02