esp-01s接入天猫精灵与relay继电器控制电灯
学习arduino已经两个多月了,第一次动手做了一个天猫精灵控制的台灯,并且记录和分享一下学习的过程,做的不好,有什么不对的地方还请多多指正
这两个模块加起来才10块钱,也不是很贵
首先需要使用esp8266和blinker的库文件,然后在arduino上选择正确的开发板
Arduino库文件
ESP8266
blinker
下载解压到C:\Program Files (x86)\Arduino\libraries这个文件夹里面
库文件解压后,选择对应的开发板,像这样
开发板选择后就可以编译程序上传了
如果报错可能是以下原因
1,开发板选择错误;重新检查一下板子对不对
2,库文件的原因;建议重新看一下,解压到Arduino\libraries这个文件夹里面
3,库文件重复,下载多个库文件安装了;还是去Arduino\libraries这个文件夹里,把多余的对应多余的库文件删除
以上都是我曾经遇到过的问题
效果图
这是我接完线安装在台灯线上的效果,虽然不好看,但是挺好用的
接线
这个普通的继电器模块,与relay原理一样,接线是公共端和常闭
这里有一些继电器和esp-01s的资料分享给你们
继电器https://pan.baidu.com/s/1H0HfQlp9C5gi6IOaPC4hYA
提取码:1234
esp-01s
https://pan.baidu.com/s/1_U_t_YPj0jjgfFz9vTZtCw
提取码:r0do
esp-01s接入天猫精灵有很多开源的代码可以去接入,不过需要定义继电器才可以使用
接入天猫精灵方法
代码如下
接入blinker,添加设备一定要选择阿里云.
#define BLINKER_PRINT Serial
#define BLINKER_WIFI
#define BLINKER_ALIGENIE_OUTLET
#include <Blinker.h>
#define relay1 0
char auth[] = "2ccc8abc0179";//钥匙
char ssid[] = "c04 111 2.4";//WiFi名称
char pswd[] = "1234567890";//WiFi密码
bool oState = false;
void aligeniePowerState(const String & state)
{
BLINKER_LOG("need set power state: ", state);
if (state == BLINKER_CMD_ON) {
digitalWrite(relay1, LOW);
BlinkerAliGenie.powerState("on");
BlinkerAliGenie.print();
oState = true;
}
else if (state == BLINKER_CMD_OFF) {
digitalWrite(relay1, HIGH);
BlinkerAliGenie.powerState("off");
BlinkerAliGenie.print();
oState = false;
}
}
void aligenieQuery(int32_t queryCode)
{
BLINKER_LOG("AliGenie Query codes: ", queryCode);
switch (queryCode)
{
case BLINKER_CMD_QUERY_ALL_NUMBER :
BLINKER_LOG("AliGenie Query All");
BlinkerAliGenie.powerState(oState ? "on" : "off");
BlinkerAliGenie.print();
break;
case BLINKER_CMD_QUERY_POWERSTATE_NUMBER :
BLINKER_LOG("AliGenie Query Power State");
BlinkerAliGenie.powerState(oState ? "on" : "off");
BlinkerAliGenie.print();
break;
default :
BlinkerAliGenie.powerState(oState ? "on" : "off");
BlinkerAliGenie.print();
break;
}
}
void dataRead(const String & data)
{
BLINKER_LOG("Blinker readString: ", data);
Blinker.vibrate();
uint32_t BlinkerTime = millis();
Blinker.print(BlinkerTime);
Blinker.print("millis", BlinkerTime);
}
void setup()
{
Serial.begin(115200);
#if defined(BLINKER_PRINT)
BLINKER_DEBUG.stream(BLINKER_PRINT);
#endif
pinMode(relay1, OUTPUT);
digitalWrite(relay1, HIGH);
Blinker.begin(auth, ssid, pswd);
Blinker.attachData(dataRead);
BlinkerAliGenie.attachPowerState(aligeniePowerState);
BlinkerAliGenie.attachQuery(aligenieQuery);
}
void loop()
{
Blinker.run();
}
更多详细
链接: 点灯科技