我们最近开始研究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
发布评论请先 登录
相关推荐
评论