|
本帖最后由 suiyuan7906 于 2020-2-21 15:00 编辑
不让出门,在家闲的都太无聊了,折腾个小东西吧。
因为家里好多小米的东西,就想着用小米的小爱同学控制几个开关,小米原装开关确实有点贵,无意中在网上看到esp-01s配合专用继电器,利用点灯科技的接入口可以用小爱控制。下单,等快递。终于等到了,开工。
首先打开点灯科技的主页点灯科技,点击快速体验,然后点击左侧的快速开始>esp8266wifi接入。下载并安装blinker APP,好像现在只有安卓的,注册APP,登录并在blinker App上新建一个按钮 按钮的数据键名叫”btn“。
点击右上角的加号,添加设备,选择arduino就行我这是已经添加好的。
点击左侧的三个横杠,点击设备管理,打开刚添加的设备,改名字,改你喜欢的名字,因为要用小爱控制的,你下午它叫什么就改什么。我这里是台灯。密钥就是一会程序里要用的数据。
程序上传完毕,等待连接网络,然后,就可以在手机app上,或者用小爱音响或者手机上的小爱同学,控制esp01s上的小灯了。”小爱同学,打开台灯。“
然后,满心欢喜的把esp插到买的继电器上,我买的继电器模块是这样的
然后,就悲剧了,只能控制esp上的小灯,继电器一点反应都没有。
这怎么办,度娘伺候,查到好多人都有这个情况,是说这个继电器模块有问题,缺少光耦什么的,反正是,不能和esp01匹配。还有改造的,奈何,没有哪个手艺,不敢改啊。
结果就查到了一个https://www.arduino.cn/thread-84043-1-1.html,受这个帖子的启发,把esp和继电器用杜邦线连接,发现能控制继电器了。
查看blinker.h,发现这个
于是,把程序中的LED_BUILTIN,改为0,也就是,把gpio0设定为控制脚位。
组装好,上电,连接网络,成功了,哈哈
我这都是东拼西凑的东西,具体原理我也不懂,希望大佬们轻喷。解决问题是最重要的。
最终程序
- #define BLINKER_PRINT Serial
- #define BLINKER_WIFI
- #define BLINKER_MIOT_LIGHT
- #include <Blinker.h>
- char auth[] = "APP上的密钥";
- char ssid[] = "路由器ssid";
- char pswd[] = "路由器密码";
- // 新建组件对象
- BlinkerButton Button1("btn");
- void miotPowerState(const String & state)
- {
- BLINKER_LOG("need set power state: ", state);
- if (state == BLINKER_CMD_ON) {
- digitalWrite(0, HIGH);
- BlinkerMIOT.powerState("on");
- BlinkerMIOT.print();
- }
- else if (state == BLINKER_CMD_OFF) {
- digitalWrite(0, LOW);
- BlinkerMIOT.powerState("off");
- BlinkerMIOT.print();
- }
- }
- // 按下按键即会执行该函数
- void button1_callback(const String & state) {
- BLINKER_LOG("get button state: ", state);
- digitalWrite(0, !digitalRead(0));
- }
- // 如果未绑定的组件被触发,则会执行其中内容
- void dataRead(const String & data)
- {
- BLINKER_LOG("Blinker readString: ", data);
- }
- void setup() {
- // 初始化串口
- Serial.begin(115200);
- #if defined(BLINKER_PRINT)
- BLINKER_DEBUG.stream(BLINKER_PRINT);
- #endif
- // 初始化有LED的IO
- pinMode(0, OUTPUT);
- digitalWrite(0, LOW);
- // 初始化blinker
- Blinker.begin(auth, ssid, pswd);
- Blinker.attachData(dataRead);
- Button1.attach(button1_callback);
- BlinkerMIOT.attachPowerState(miotPowerState);
- }
- void loop() {
- Blinker.run();
- }
复制代码
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
打赏
-
查看全部打赏
|