当前位置:   article > 正文

台灯接入小爱同学_esp8266接入小爱宿舍灯

esp8266接入小爱宿舍灯

一、请看视频展示

使用esp8266制作自己的小爱同学小台灯

二、硬件

9V电池、

台灯、

L298N

ESP8266、

点灯科技app

三、通信方式

        ESP8266接入小爱同学点亮台灯,我们使用的是局域网连接共同WiFi,esp8266连接mqtt服务,并订阅mqtt的主题,相当于设置一个状态位,当我们手机小爱语音发出指令,相当于mqtt的消息推送,由于esp8266订阅了主题,就可以收到小爱同学推送的指令,状态位发生改变,代码中对状态位进行判断,从而达到开关灯的效果。

 

由于我们本地搭载的mqtt服务器和apk个人的无法接入小爱同学,因此我们采用点灯科技app中间作为服务器进行mqtt通信。

点灯科技app资源:在资源文件夹内。

四、具体实现方式

代码我就不一一讲解了,如果有疑问可以私信我。

(1)点灯科技app使用方式:

手机安装好app后,接入设备,然后选取mqtt,生成密钥,复制到源码中

 

 

然后ESP8266订阅该话题

(2)创建一个将led的话题,然后esp8266订阅话题led,

 然后ESP8266订阅该话题

(3)使用米家

连接其他平台,然后添加点灯科技,如果我们esp8266正常接入时,我们扫描就可以扫描出该设备。就可以进行语言控制了。

源码

  1. 源码
  2. #define BLINKER_PRINT Serial
  3. #define BLINKER_WIFI
  4. #define BLINKER_MIOT_LIGHT
  5. #include <Blinker.h>
  6. int LIGHT = D1;
  7. int LIGHT2 = D2;
  8. char auth[] = "37bd0561afa4";
  9. char ssid[] = "DPS2023";
  10. char pswd[] = "thb111111";
  11. // 新建组件对象
  12. BlinkerButton Button1("led");//你的按钮名称
  13. BlinkerNumber Number1("num-abc");
  14. int counter = 0;
  15. void miotPowerState(const String & state)//用户自定义电源类操作的回调函数
  16. {
  17. BLINKER_LOG("need set power state: ", state);
  18. if (state == BLINKER_CMD_ON) {
  19. digitalWrite(LIGHT, LOW);
  20. BlinkerMIOT.powerState("on");
  21. BlinkerMIOT.print();
  22. }
  23. else if (state == BLINKER_CMD_OFF) {
  24. digitalWrite(LIGHT, HIGH);
  25. BlinkerMIOT.powerState("off");
  26. BlinkerMIOT.print();
  27. }
  28. }
  29. // 按下按键即会执行该函数
  30. void button1_callback(const String & state) {
  31. BLINKER_LOG("get button state: ", state);
  32. digitalWrite(LIGHT, !digitalRead(LIGHT));
  33. }
  34. // 如果未绑定的组件被触发,则会执行其中内容
  35. void dataRead(const String & data)
  36. {
  37. BLINKER_LOG("Blinker readString: ", data);
  38. counter++;
  39. Number1.print(counter);
  40. }
  41. void setup() {
  42. // 初始化串口
  43. Serial.begin(115200);
  44. #if defined(BLINKER_PRINT)//这里不一样
  45. BLINKER_DEBUG.stream(BLINKER_PRINT);
  46. #endif
  47. // 初始化有LED的IO
  48. pinMode(LIGHT, OUTPUT);
  49. digitalWrite(LIGHT, HIGH);
  50. pinMode(LIGHT2, OUTPUT);
  51. digitalWrite(LIGHT2, HIGH);
  52. // 初始化blinker
  53. Blinker.begin(auth, ssid, pswd);
  54. Blinker.attachData(dataRead);
  55. Button1.attach(button1_callback);
  56. BlinkerMIOT.attachPowerState(miotPowerState);//小爱用户自定义电源类操作的回调函数:
  57. }
  58. void loop() {
  59. Blinker.run();
  60. }

 五、一起探讨ESP8266如何开发更多功能
 

        如果你有想法开发一些新的功能,可以加入我们,我们一起玩出新的花样,无论你是玩51、32、freerrtos、ucoss、树莓派、深度学习、web开发、小程序、esp8266等等都有简单涉略。但是比较擅长的还是驱动板控制和操作系统,我们都可以进行讨论和一起学习。欢迎你的加入,我们一起在技术的领域深耕和学习!!!!!私信我,把你的困难告诉我,我们一起去解决!!


       
 

 

 

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/699016
推荐阅读
  

闽ICP备14008679号