数码之家

 找回密码
 立即注册
搜索
查看: 8918|回复: 16

[Arduino] esp-01s适配relay继电器无光耦版本,并且用小爱同学控制

[复制链接]
发表于 2020-2-20 11:20:08 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 suiyuan7906 于 2020-2-21 15:00 编辑

不让出门,在家闲的都太无聊了,折腾个小东西吧。
因为家里好多小米的东西,就想着用小米的小爱同学控制几个开关,小米原装开关确实有点贵,无意中在网上看到esp-01s配合专用继电器,利用点灯科技的接入口可以用小爱控制。下单,等快递。终于等到了,开工。
首先打开点灯科技的主页点灯科技点击快速体验,然后点击左侧的快速开始>esp8266wifi接入。下载并安装blinker APP,好像现在只有安卓的,注册APP,登录并在blinker App上新建一个按钮 按钮的数据键名叫”btn“。 1.png
点击右上角的加号,添加设备,选择arduino就行我这是已经添加好的。
3.png
点击左侧的三个横杠,点击设备管理,打开刚添加的设备,改名字,改你喜欢的名字,因为要用小爱控制的,你下午它叫什么就改什么。我这里是台灯。密钥就是一会程序里要用的数据。
2.png

复制代码


程序上传完毕,等待连接网络,然后,就可以在手机app上,或者用小爱音响或者手机上的小爱同学,控制esp01s上的小灯了。”小爱同学,打开台灯。“

然后,满心欢喜的把esp插到买的继电器上,我买的继电器模块是这样的
微信图片_202002201027112.jpg
微信图片_202002201027113.jpg
然后,就悲剧了,只能控制esp上的小灯,继电器一点反应都没有。
这怎么办,度娘伺候,查到好多人都有这个情况,是说这个继电器模块有问题,缺少光耦什么的,反正是,不能和esp01匹配。还有改造的,奈何,没有哪个手艺,不敢改啊。
结果就查到了一个https://www.arduino.cn/thread-84043-1-1.html,受这个帖子的启发,把esp和继电器用杜邦线连接,发现能控制继电器了。
查看blinker.h,发现这个
4.png
于是,把程序中的LED_BUILTIN,改为0,也就是,把gpio0设定为控制脚位。
组装好,上电,连接网络,成功了,哈哈
我这都是东拼西凑的东西,具体原理我也不懂,希望大佬们轻喷。解决问题是最重要的。
最终程序


  1. #define BLINKER_PRINT Serial
  2. #define BLINKER_WIFI
  3. #define BLINKER_MIOT_LIGHT
  4. #include <Blinker.h>

  5. char auth[] = "APP上的密钥";
  6. char ssid[] = "路由器ssid";
  7. char pswd[] = "路由器密码";

  8. // 新建组件对象
  9. BlinkerButton Button1("btn");

  10. void miotPowerState(const String & state)
  11. {
  12.     BLINKER_LOG("need set power state: ", state);

  13.     if (state == BLINKER_CMD_ON) {
  14.         digitalWrite(0, HIGH);

  15.         BlinkerMIOT.powerState("on");
  16.         BlinkerMIOT.print();
  17.     }
  18.     else if (state == BLINKER_CMD_OFF) {
  19.         digitalWrite(0, LOW);

  20.         BlinkerMIOT.powerState("off");
  21.         BlinkerMIOT.print();
  22.     }
  23. }
  24. // 按下按键即会执行该函数
  25. void button1_callback(const String & state) {
  26.     BLINKER_LOG("get button state: ", state);
  27.     digitalWrite(0, !digitalRead(0));
  28. }

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

  34. void setup() {
  35.     // 初始化串口
  36.     Serial.begin(115200);

  37.     #if defined(BLINKER_PRINT)
  38.         BLINKER_DEBUG.stream(BLINKER_PRINT);
  39.     #endif

  40.     // 初始化有LED的IO
  41.     pinMode(0, OUTPUT);
  42.     digitalWrite(0, LOW);
  43.     // 初始化blinker
  44.     Blinker.begin(auth, ssid, pswd);
  45.     Blinker.attachData(dataRead);
  46.     Button1.attach(button1_callback);
  47.     BlinkerMIOT.attachPowerState(miotPowerState);
  48. }

  49. void loop() {
  50.     Blinker.run();
  51. }
复制代码




打赏

参与人数 2家元 +70 收起 理由
bqd + 20 我一直想搞个控制楼宇防盗门锁的,方便快递.
家睦 + 50

查看全部打赏

发表于 2020-2-20 14:45:20 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2020-2-20 20:00:21 | 显示全部楼层
刷AT固件?你这程序和AT固件刷在同一个esp01里?  :dizzy::dizzy:
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-20 20:01:58 | 显示全部楼层
lyy-cy 发表于 2020-2-20 14:45
http://bbs.mydigit.cn/read.php?tid=2538962

我也看这个了,但是没有解决办法,用我的方法就能使用这个模块了啊
回复 支持 反对

使用道具 举报

发表于 2020-2-21 10:17:04 | 显示全部楼层
这不是AT固件。就是个全自己的固件。
回复 支持 反对

使用道具 举报

发表于 2020-2-21 11:55:01 来自手机浏览器 | 显示全部楼层
表示根本上传不了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-21 15:01:07 | 显示全部楼层
wlbyq 发表于 2020-2-20 20:00
刷AT固件?你这程序和AT固件刷在同一个esp01里?

谢谢,已经修改
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-21 15:01:47 | 显示全部楼层

不知道为什么总出错,我又改了一次。
回复 支持 反对

使用道具 举报

发表于 2020-2-24 18:46:33 来自手机浏览器 | 显示全部楼层
楼主请教一下  为什么我复制你的代码不能上传到8266呢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-25 15:49:14 | 显示全部楼层
社會忒墟僞 发表于 2020-2-24 18:46
楼主请教一下  为什么我复制你的代码不能上传到8266呢

报什么错误呢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-25 16:02:30 | 显示全部楼层
社會忒墟僞 发表于 2020-2-24 18:46
楼主请教一下  为什么我复制你的代码不能上传到8266呢

如果是,302,240错误的话,就重新复制下代码,不要用论坛提供的复制按钮复制,手动拖动整个代码,复制,粘贴,就没事了。我在好几个论坛遇到这种情况,不知道为什么。
回复 支持 反对

使用道具 举报

发表于 2020-2-25 17:25:34 来自手机浏览器 | 显示全部楼层
suiyuan7906 发表于 2020-2-25 16:02
如果是,302,240错误的话,就重新复制下代码,不要用论坛提供的复制按钮复制,手动拖动整个代码,复制, ...

嗯  具体晚上看一下,是不是直接复制进去在上传就可以用在没有光耦的模块上面了?其他的还要改吗?
回复 支持 反对

使用道具 举报

发表于 2020-2-25 21:34:59 | 显示全部楼层
suiyuan7906 发表于 2020-2-25 16:02
如果是,302,240错误的话,就重新复制下代码,不要用论坛提供的复制按钮复制,手动拖动整个代码,复制, ...

我刷好了  但是插上模块的话  连不上网络 蓝色灯不亮  在串口上面可以正常啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-26 08:21:49 | 显示全部楼层
社會忒墟僞 发表于 2020-2-25 21:34
我刷好了  但是插上模块的话  连不上网络 蓝色灯不亮  在串口上面可以正常啊 ...

本来蓝色灯是不亮的啊,只是模块刚通电的时候,蓝色灯亮一下,然后就不亮了,如果你网络参数填写正确的话,就应该能连上网络了,最好看看你的路由器里面,是不是连上网络了。
回复 支持 反对

使用道具 举报

发表于 2020-2-26 11:30:15 来自手机浏览器 | 显示全部楼层
suiyuan7906 发表于 2020-2-26 08:21
本来蓝色灯是不亮的啊,只是模块刚通电的时候,蓝色灯亮一下,然后就不亮了,如果你网络参数填写正确的话 ...

就是刚上电就不亮  本来会闪一下嘛,直接8266连接电脑串口的话是正常的能联网点灯里面也显示在线    就插到没有光耦版本的继电器模块上面就不能正常工作  蓝色灯闪都不闪连不上网
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-15 14:04:46 | 显示全部楼层

有,刚上没多久
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-3-28 16:22 , Processed in 0.358800 second(s), 16 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

快速回复 返回顶部 返回列表