0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于ESP8266开发板的遥控空调设计案例

454398 来源:一板网 作者:风筝 2020-12-13 10:37 次阅读

我们最近开始研究ESP8266开发板,而今天的项目将基于此WiFi模块制作一个有趣的项目。我们将搭建一个基于ESP8266的WiFi空调遥控器。虽然此项目可以适应任何使用遥控器的设备,但我们将使用它来控制空调。

通常,每个人离开家时都会关掉家里的所有电器,包括空调。当您回到家中时,温度将不会被调节,并且空调需要一些时间才能达到所需的温度。但是,如果您离家只有几个街区,可以通过手机自动控制空调,会不会很酷?如果您无论身在何处都可以将其关闭,或者离开屋子时仍将其打开?如果可以与手机的位置同步并在家时总将其打开?如果可以与手机的天气信息同步?这些问题启发了今天的项目。

空调遥控器是怎么运作的?

空调(AC)通常由遥控器控制,当按下按钮时,该遥控器会向其发送红外信号。 空调解释信号并将其转换为指令,以提高其温度或降低其强度,关闭或开启等。因此,为了能够使用我们自己的设备进行控制,该设备必须能够模仿并发送遥控器发送到AC的信号相同,因此,通过按应用程序上的“ ON”按钮,我们的WiFi遥控器会发送遥控器发出的相同IR信号。

ESP8266将通过MQTT连接到家庭桥接器,通过它,Siri可用于提供控制AC的指令。一旦通过MQTT接收到指令(例如“打开”指令),NodeMCU便将其与相应的IR信号进行匹配,然后信号通过IR指示灯发送至AC。 OLED显示器用于向用户提供有关当前状态的视觉反馈。对于非iPhone用户,该设备还可以连接到Amazon Alexa。除了可以通过Siri或Apple的家用套件控制空调外,还配备了控制开关。

为了将本项目做的比较完整,该项目添加了以下功能:

√ 待机时显示NTP时钟

√ 简单的按钮控制。电源、温度升高/降低。

√ 可以使用HomeKit控制温度、摆幅、风扇速度和模式。

√ 根据环境光自动亮度

√ OTA固件升级。

√ 使用HeaterCooler Service(iOS 11+)通过HomeKit进行控制,

√ 使用风扇服务与Amazon Alexa配合使用

在本文的最后,您将了解构建物联网解决方案和家庭自动化的基础知识。您还将学习如何拦截基于IR的遥控器发送的信号,创建一个IR发射器,该发射器可用于控制家庭或家庭中所有基于IR遥控器的设备,并构建可以通过Apple的Home工具包控制的设备。

所需的组件

● ESP8266 NodeMCU

● 带有WiFi加密狗的Raspberry Pi 4,Raspberry Pi 3或Raspberry Pi 2

● Raspberry Pi的键盘,显示器和HDMI电缆或LAN电缆

● Raspberry Pi的2A电源

● SSD1332 OLED显示屏(256×64)

● 按钮

● 红外灯

● 发光二极管

● 跳线

● 面包板

原理图

如上面所述,项目本身的硬件部分由NodeMCU、IR LED、一些按钮和OLED显示器组成,如下图所示连接组件。

当您不携带手机时,这些按钮提供了另一种控制设备的方式,OLED显示屏提供了各种信息,包括当前温度。

准备项目

在为项目编写代码之前,我们需要进行一些准备工作。

1.准备针对每个命令将发送到AC的IR信号

2.设置与Homekit的通信

1.解码IR信号

如上所述,该项目通过模仿IR遥控器,发送基于Homekit的命令生成的IR信号来工作。由于IR信号必须与遥控器发送的信号相同,因此我们需要先获取每个按钮的IR代码。要获取代码,我们必须构建一种设备,该设备从遥控器接收红外信号,对其进行解码并显示编码后的数据,以便我们可以将其复制以供以后使用。

要获取IR代码,我们将使用便宜的设备,连接到Nodemcu的高效且流行的TSOP1738红外接收器,当按下遥控器上的按钮时,红外接收器将对其进行拾取,并通过在NodeMCU上运行的解码草图,将信号内容打印在串行监视器。此内容将在以后用于控制AC。

原理图

如下图所示,将IR接收器连接到NodeMCU:

为了确定何时接收到IR信号并帮助我们进行调试,在原理图中添加了一个LED,使其仅在接收到IR信号时亮起。

代码

本篇文章主要基于IRremote ESP8266库,可以从随附的链接下载该库。该库基于标准的Arduino IRremote库,并带有解码的数据(用于一些通用键),用于许多流行的遥控器,这意味着您很幸运,并且遥控器的代码将已经可用。对于那些不太幸运的人,我们将使用IRremote ESP8266库随附的示例草图IRrecvDumpV2以及上面的示意图来获取编码。

安装库后,启动Arduino IDE,转到示例并选择IRrecvDumpV2示例。将代码上传到NodeMcu,然后按遥控器上的按钮。每次按下遥控器上的按钮时,您应该会在串行监视器中看到一组数字。复制并保留每个键的阵列,因为它们代表遥控器发送的已解码IR信号,我们将使用它们为空调复制IR信号。

2.与Homekit进行连接

在编写代码之前,我们需要做的第二件事是建立与Homekit的连接。与Homekit的连接使我们能够使用Siri和Homekit应用程序控制设备。为此,我们将使用安装在RaspberryPi上的Homebridge-MQTT作为服务器。 Homebridg-MQTT本质上是Homebridge的插件,可让您通过MQTT协议添加和控制设备。启动RaspberryPi并打开终端。我们将从更新Pi开始,以确保以后不会遇到任何兼容性问题。

运行以下指令:

Sudo apt-get update

完成此操作后,在pi上为MQTT安装MOSQUITTO。运行以下指令:

sudo apt-get install mosquitto

完成后,使用以下指令安装Homebridge-MQTT插件;

sudo npm install -g homebridge-mqtt

接下来,我们需要编辑配置文件。配置文件位于homebridge文件夹(home / .homebridge /config.js)中。切换到目录并运行;

sudo nano config.js

将platform部分添加到配置文件中,使其现在看起来像这样;

{

"bridge": {

"name": "Homebridge",

"username": "CC: 22: 3D: E3: CE: 30",

"port": 51826,

"pin": "031-45-154"

},

"description": "This file is a fake accessory and one fake platform.",

"accessories": [{

"accessory": "relay",

"name": "My relay light 1",

"pin": 7

}],

"platforms": [{

"platform": "mqtt",

"name": "mqtt",

"url": "mqtt: //127.0.0.1",

"port": "1883",

"topic_type": "multiple",

"topic_prefix": "homebridge",

"qos": 1

}]

}

保存配置文件并退出。

运行HomeBridge,使用MQTT LENS并将Connection添加到我们的Raspberry Pi,创建一个使用加热器冷却器服务的附件,该附件受IOS11的任何版本的IoS支持。将发布设置为;

homebridge / to / add

并将有效载荷设置为;

{

"name": "Smart AC",

"service_name": "smart_ac",

"service": "HeaterCooler",

"manufacturer": "ESP8266",

"firmwarerevision": "1.0.0",

"SwingMode": 1,

"RotationSpeed": {"maxValue": 3, "minValue": 0, "minStep": 3},

"CoolingThresholdTemperature": {"maxValue": 28, "minValue": 18, "minStep": 1}

}

完成所有这些操作后,我们现在可以继续为该项目编写代码。

代码

今天的项目代码将使用VScode和platform.io IDE插件进行开发。该代码非常庞大,对于不习惯使用这些工具对微控制器进行编程的任何人来说可能很难理解,因此我们编写了有关使用这些工具的简单教程

本文主要基于IRremoteESP8266库,但它也使用了Wifi管理器库、Arduinojson库、Arduino OTA库和NTP库。这些库中的每一个都使实现项目的不同部分变得容易。 IRremoteESP8266库用于将设备的IR信号发送到空调,Wifimanager库用于轻松更改WiFi凭据,Arduinojson用于解析homekit中的数据,而Arduino OTA库用于在设备上启用无线固件更新。使用的其他库还包括U8g2库,该库可轻松处理单色显示器。它用于显示构成项目UI的图形。该项目使用的所有库都可以通过Arduino库管理器下载和安装。

该项目的代码非常庞大,可能在这里无法解释,但我们确保对其进行了注释并附加在zip文件下的zip文件中。zip文件包含一堆文件,包括用于GUI的图形图像、库以及有关项目的所有内容。该代码位于“ src”文件夹中。 “ src”文件夹还包含不同的代码,其中大多数是名为main.cpp的主代码的头文件。所有其他文件都很重要,并且必须与main.cpp放在同一项目文件夹中,因为它们包含了主文件所需的所有信息。例如,main.h文件包含MQTT声明,而UI.h文件包含用于UI的所有内容的char值。

外壳

为了使项目看起来令人愉悦,对外壳进行了3D打印。设计是使用Fusion 360完成的。

打印后,将外壳擦洗并上漆以使打印效果更好。最终外壳如下图所示。

演示效果

确保如上面所示连接并打开设备。它应该如下图所示。

以上就是本文的全部内容。如开始所说,该项目的应用是无限的。它可以作为一个简单的盒子来控制房屋中的每个红外遥控设备。
编辑:hfy

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 遥控器
    +关注

    关注

    18

    文章

    829

    浏览量

    65963
  • 开发板
    +关注

    关注

    25

    文章

    4942

    浏览量

    97176
  • 空调遥控器
    +关注

    关注

    0

    文章

    18

    浏览量

    7275
  • ESP8266
    +关注

    关注

    50

    文章

    962

    浏览量

    44818
收藏 人收藏

    评论

    相关推荐

    ESP8266 太空人动画的 OLED 显示

    ESP8266 太空人动画的 OLED 显示
    的头像 发表于 10-08 15:06 207次阅读
    <b class='flag-5'>ESP8266</b> 太空人动画的 OLED 显示

    arduino(1)--ESP8266配置

    硬件准备 首先需要准备一个开发板,这里我准备的是淘宝购买的兼容arduino的ESP8266模块。 arduino配置 我使用的是arduino来编程实现,故需要下载对应的库文件,打开
    发表于 09-06 11:00

    esp32和esp8266代码共用吗

    作为两款具有Wi-Fi功能的微控制器,因其低成本、易用性和灵活性而受到广泛关注。然而,尽管它们在某些方面具有相似性,但在硬件性能、开发环境和编程语言等方面仍存在一定差异。 二、ESP32与ESP8266简介
    的头像 发表于 08-19 18:23 961次阅读

    esp8266esp32区别是什么

    以下是关于ESP8266ESP32的主要区别: 处理器和架构 : ESP8266 :使用一个Tensilica L106 80MHz的处理器,属于Xtensa架构。 ESP32 :使
    的头像 发表于 08-19 18:16 4278次阅读

    ESP8266需要烧录固件库嘛

    需要。ESP8266是一款非常流行的Wi-Fi模块,广泛应用于物联网项目中。它具有低成本、低功耗、易于编程等特点,因此受到了许多开发者的喜爱。在开发ESP8266项目时,烧录固件库是一
    的头像 发表于 08-19 17:30 697次阅读

    esp8266不烧录可以使用吗

    ESP8266是一款非常流行的Wi-Fi模块,广泛应用于物联网项目中。然而,如果不进行烧录,ESP8266将无法正常工作。 1. ESP8266简介 ESP8266是一款由Espres
    的头像 发表于 08-19 17:28 618次阅读

    esp8266wifi模块怎么连接手机

    ESP8266 WiFi模块连接手机主要可以通过两种方式实现: 通过路由器连接(STA模式)和直接作为热点连接(AP模式) 。以下是两种连接方式的步骤: 一、通过路由器连接(STA模式) 配置
    的头像 发表于 08-19 17:27 2155次阅读

    机智云ESP8266开发板RGB彩灯控件

    随着智能家居技术的迅猛发展,RGB彩灯控件正逐渐成为现代家庭不可或缺的一部分。在这一潮流中,机智云(Gizwits)的ESP8266开发板RGB彩灯控件以其先进的物联网技术和多样化的灯光控制功能,为
    的头像 发表于 08-09 08:10 342次阅读
    机智云<b class='flag-5'>ESP8266</b><b class='flag-5'>开发板</b>RGB彩灯控件

    STM32F103 + ESP8266与机智云开发常见问题集锦:入门者必读!

    关于ESP8266模块的选择针对初学者,强烈建议选择带有串口的ESP8266开发板!这可以避免像我曾经遇到的烧录固件失败等问题。推荐直接购买已预装机智云固件的模块,或者带有串口下载功能的模块,例如
    的头像 发表于 07-18 08:11 402次阅读
    STM32F103 + <b class='flag-5'>ESP8266</b>与机智云<b class='flag-5'>开发</b>常见问题集锦:入门者必读!

    ESP8266作Client建立TCP连接出现报错?

    问题(192.168.0.107)。 用其它设备(主机、STM32开发板(LwIP)...)都是可以接入Server的,唯独ESP8266模块不行。
    发表于 07-17 07:16

    ESP8266EX开发板PWM非常不准确是怎么回事?

    我在你们的淘宝官网店购买了 ESP8266EX 开发板ESP-LAUNCHER) 这个8266开发板。并且下载了
    发表于 07-12 08:16

    ESP8266EX开发板如何知道Flash的大小?

    我是新手,从 espressif.taobao.com 上买了一个 ESP8266EX 开发板ESP-LAUNCHER)。 请问这个上面的 Flash 有多大? 自带的系统启动的时候,提示
    发表于 07-08 07:36

    ESP8266网络天气时钟OLED显示

    基于ESP8266实现网络获取天气和时钟并OLED显示
    的头像 发表于 06-28 04:46 975次阅读
    <b class='flag-5'>ESP8266</b>网络天气时钟OLED显示

    国产低成本Wi-Fi SoC解决方案芯片ESP8266ESP8285对比差异

    ESP8266ESP8285对比差异 ESP8285相当于在ESP8266基础上多加了1/2MB Flash, ESP8285与
    的头像 发表于 05-17 11:44 1173次阅读
    国产低成本Wi-Fi SoC解决方案芯片<b class='flag-5'>ESP8266</b>与<b class='flag-5'>ESP</b>8285对比差异

    基于ESP12F模块的智能门铃ESPBell项目设计

    ESPBell是一个基于ESP12F模块的智能门铃项目。它使用ESPBell-Lite开发板,该开发板包含ESP8266芯片、摄像头、扬声器和麦克风。
    的头像 发表于 12-27 17:29 875次阅读