找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2546|回复: 0
打印 上一主题 下一主题
收起左侧

基于esp8266(可改esp32)空调遥控

[复制链接]
跳转到指定楼层
楼主
ID:847555 发表于 2022-4-23 08:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本产品基于esp8266 blinker 原创作者为:https://www.bilibili.com/video/B ... arch-card.all.click
作者:DIY大白  

源程序:
  1. #define BLINKER_WIFI//通讯方式
  2. #include <Blinker.h>
  3. #include <IRsend.h>
  4. #include <IRremoteESP8266.h>
  5. #include <ir_Coolix.h>

  6. char auth[] = "";//这里填写设备密钥
  7. char ssid[] = "";//这里填写wifi
  8. char pswd[] = "";//这里填写wifi码

  9. //暂存温度数据
  10. int nowtemp = 25;
  11. int num_Fan = 5;

  12. //新建组件对象
  13. BlinkerNumber NUM1("settemp");//温度数据组件
  14. BlinkerButton Midea_power("btn-pwr");//电源开关组件
  15. BlinkerButton Midea_setFan("btn-fan");//风速组件
  16. BlinkerButton Midea_cool("btn-cool");//制冷模式组件
  17. BlinkerButton Midea_dry("btn-dry");//干燥模式组件
  18. BlinkerButton Midea_hot("btn-hot");//制热模式组件
  19. BlinkerButton Midea_auto("btn-auto");//自动模式组件
  20. BlinkerSlider Slider1("ran-wen");//温度调节滑块

  21. //使用ESP32的D5针脚,如果你使用的是ESP8266,则把"5"改"4"即ESP8266的D2针脚
  22. const uint16_t kIrLed = 5;
  23. IRCoolixAC ac(kIrLed);

  24. void printState() {
  25.   Serial.println("Coolix A/C remote is in the following state:");
  26.   Serial.printf("  %s\n", ac.toString().c_str());
  27. }

  28. //初始化
  29. void setup()
  30. {
  31.   Serial.begin(115200);
  32.   BLINKER_DEBUG.stream(Serial);
  33.   ac.begin();
  34.   Midea_power.attach(Midea_power_callback);
  35.   Midea_setFan.attach(Midea_setFan_callback);
  36.   Midea_cool.attach(Midea_cool_callback);
  37.   Midea_dry.attach(Midea_dry_callback);
  38.   Midea_hot.attach(Midea_hot_callback);
  39.   Midea_auto.attach(Midea_auto_callback);
  40.   Slider1.attach(slider1_callback);
  41.   Serial.println("Default state of the remote.");
  42.   printState();
  43.   Serial.println("Setting desired state for A/C.");
  44.   Blinker.attachHeartbeat(heartbeat);
  45.   Blinker.begin(auth, ssid, pswd);
  46. }

  47. void loop()
  48. {
  49.   Blinker.run();
  50. }

  51. //电源开关
  52. void Midea_power_callback(const String &state)
  53. {
  54.   BLINKER_LOG("get button state: ", state);

  55.   if (state == BLINKER_CMD_ON)
  56.   {
  57.     ac.on();
  58.     ac.setMode(kCoolixCool);
  59.     ac.setTemp(25);
  60.     ac.send();
  61.     Midea_power.icon("fal fa-power-off");
  62.     Midea_power.color("#00FF00");
  63.     Midea_power.text("开");
  64.     Midea_power.print("on");
  65.   }
  66.   else if (state == BLINKER_CMD_OFF)
  67.   {
  68.     ac.off();
  69.     ac.send();
  70.     Midea_power.icon("fal fa-power-off");
  71.     Midea_power.color("#FF0000");
  72.     Midea_power.text("关");
  73.     Midea_power.print("off");
  74.   }
  75. }

  76. //电源开关
  77. void slider1_callback(int32_t value)
  78. {
  79.   BLINKER_LOG("get slider value: ", value);
  80.   nowtemp = value;
  81.   NUM1.print(nowtemp);
  82.   ac.setTemp(nowtemp);
  83.   ac.send();
  84. }

  85. //风速心跳包
  86. void heartbeat()
  87. {
  88.   switch (num_Fan)
  89.   {
  90.     case 1:
  91.       Midea_setFan.text("静音");
  92.       break;

  93.     case 2:
  94.       Midea_setFan.text("低速");
  95.       break;

  96.     case 3:
  97.       Midea_setFan.text("中速");
  98.       break;

  99.     case 4:
  100.       Midea_setFan.text("高速");
  101.       break;

  102.       case 5:
  103.       Midea_setFan.text("自动");
  104.       break;
  105.   }
  106.   Midea_setFan.print();
  107.   NUM1.print(nowtemp);
  108. }

  109. //风速按钮
  110. void Midea_setFan_callback(const String &state)
  111. {
  112.   if (state == BLINKER_CMD_BUTTON_TAP)
  113.   {
  114.     num_Fan++;
  115.     if (num_Fan >= 6)
  116.     {
  117.       num_Fan = 1;
  118.     }
  119.     switch (num_Fan)
  120.     {
  121.       case 1:
  122.         ac.setFan(kCoolixFanFixed);
  123.         Midea_setFan.text("静音");
  124.         break;

  125.       case 2:
  126.         ac.setFan(kCoolixFanMin);
  127.         Midea_setFan.text("低速");
  128.         break;

  129.       case 3:
  130.         ac.setFan(kCoolixFanMed);
  131.         Midea_setFan.text("中速");
  132.         break;

  133.       case 4:
  134.         ac.setFan(kCoolixFanMax);
  135.         Midea_setFan.text("高速");
  136.         break;
  137.         
  138.       case 5:
  139.         ac.setFan(kCoolixFanAuto0);
  140.         Midea_setFan.text("自动");
  141.         break;

  142.     }
  143.     Midea_setFan.print();
  144.     ac.send();
  145.   }
  146. }

  147. //制冷模式
  148. void Midea_cool_callback(const String &state)
  149. {
  150.   if (state == BLINKER_CMD_BUTTON_TAP)
  151.   {
  152.     ac.setMode(kCoolixCool);
  153.     ac.send();
  154.   }
  155. }

  156. //干燥模式
  157. void Midea_dry_callback(const String &state)
  158. {
  159.   if (state == BLINKER_CMD_BUTTON_TAP)
  160.   {
  161.     ac.setMode(kCoolixDry);
  162.     ac.send();
  163.   }
  164. }

  165. //制热模式
  166. void Midea_hot_callback(const String &state)
  167. {
  168.   if (state == BLINKER_CMD_BUTTON_TAP)
  169.   {
  170.     ac.setMode(kCoolixHeat);
  171.     ac.send();
  172.   }
  173. }

  174. //自动模式
  175. void Midea_auto_callback(const String &state)
  176. {
  177.   if (state == BLINKER_CMD_BUTTON_TAP)
  178.   {
  179.     ac.setMode(kCoolixAuto);
  180.     ac.send();
  181.   }
  182. }
复制代码

格力空调控制.zip

461.11 KB, 下载次数: 47, 下载积分: 黑币 -5

格力空调

美的.zip

75.52 KB, 下载次数: 18, 下载积分: 黑币 -5

美的空调

评分

参与人数 1黑币 +10 收起 理由
admin + 10 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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