前言
最近太忙了,好久没更博客了,主要是想想做做弄了个智能宿舍项目,电控、物联网层面我都做好了,可能还缺少一个工程的大佬帮我部署到寝室里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代表停止,0和180分别表示往一边一直转。
还有一个功能定时器触发的,其实在点灯APP上稍微设置一下就行了,没什么难点。
然后剩下的就是部署在寝室了,工程大佬帮帮我