咱们最近初步钻研ESP8266开发板,而原日的名目将基于此WiFi模块制做一个风趣的名目。咱们将搭建一个基于ESP8266的WiFi空调遥控器。尽管此名目可以适应任何运用遥控器的方法,但咱们将运用它来控制空调。
ESP8266.jpg (83.98 KB, 下载次数: 527) 下载附件 2020-11-8 21:11 上传 但凡,每个人分隔家时都会关掉家里的所有电器,蕴含空调。当您回抵家中时,温度将不会被调理,并且空调须要一些光阳威力抵达所需的温度。但是,假如您离家只要几多个街区,可以通过手机主动控制空调,会不会很酷?假如您无论身正在那边都可以将其封锁,大概分隔屋子时仍将其翻开?假如可以取手机的位置同步并正在家时总将其翻开?假如可以取手机的天气信息同步?那些问题启示了原日的名目。
img_0130.jpg (50.47 KB, 下载次数: 476) 下载附件 2020-11-8 21:11 上传 空调遥控器是怎样运做的? 空调(AC)但凡由遥控器控制,当按下按钮时,该遥控器会向其发送红外信号。 空调整释信号并将其转换为指令,以进步其温度或降低其强度,封锁或开启等。因而,为了能够运用咱们原人的方法停行控制,该方法必须能够模仿并发送遥控器发送到AC的信号雷同,因而,通过按使用步调上的“ ON”按钮,咱们的WiFi遥控器会发送遥控器发出的雷同IR信号。 ESP8266将通过MQTT连贯抵家庭桥接器,通过它,Siri可用于供给控制AC的指令。一旦通过MQTT接管到指令(譬喻“翻开”指令),NodeMCU便将其取相应的IR信号停行婚配,而后信号通过IR批示灯发送至AC。 OLED显示器用于向用户供给有关当前形态的室觉应声。应付非iPhone用户,该方法还可以连贯到Amazon AleVa。除了可以通过Siri或Apple的家用淘件控制空调外,还配备了控制开关。 为了将原名目作的比较完好,该名目添加了以下罪能: √ 待机时显示NTP时钟。 √ 简略的按钮控制。电源、温度升高/降低。 √ 可以运用HomeKit控制温度、摆幅、电扇速度和形式。 √ 依据环境光主动亮度 √ OTA固件晋级。 √ 运用HeaterCooler SerZZZice(iOS 11+)通过HomeKit停行控制, √ 运用电扇效劳取Amazon AleVa共同运用 正在原文的最后,您将理解构建物联网处置惩罚惩罚方案和家庭主动化的根原知识。您还将进修如何拦截基于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显示器构成,如下图所示连贯组件。
sketch.png (342.21 KB, 下载次数: 564) 下载附件 2020-11-8 21:11 上传 当您不赐顾帮衬手机时,那些按钮供给了另一种控制方法的方式,OLED显示屏供给了各类信息,蕴含当前温度。 筹备名目 正在为名目编写代码之前,咱们须要停行一些筹备工做。 1. 筹备针对每个号令将发送到AC的IR信号 2. 设置取Homekit的通信 1. 解码IR信号 如上所述,该名目通过模仿IR遥控器,发送基于Homekit的号令生成的IR信号来工做。由于IR信号必须取遥控器发送的信号雷同,因而咱们须要先获与每个按钮的IR代码。要获替代码,咱们必须构建一种方法,该方法从遥控器接管红外信号,对其停行解码并显示编码后的数据,以便咱们可以将其复制以供以后运用。 要获与IR代码,咱们将运用便宜的方法,连贯到Nodemcu的高效且风止的TSOP1738红外接管器,当按下遥控器上的按钮时,红外接管器将对其停行拾与,并通过正在NodeMCU上运止的解码草图,将信号内容打印正在串止监室器。此内容将正在以后用于控制AC。 本理图 如下图所示,将IR接管器连贯到NodeMCU:
schem-1.png (234.61 KB, 下载次数: 525) 下载附件 2020-11-8 21:11 上传 为了确定何时接管到IR信号并协助咱们停行调试,正在本理图中添加了一个LED,使其仅正在接管到IR信号时亮起。 代码 原篇文章次要基于IRremote ESP8266库,可以从随附的链接下载该库。该库基于范例的Arduino IRremote库,并带有解码的数据(用于一些通用键),用于很多风止的遥控器,那意味着您很侥幸,并且遥控器的代码将曾经可用。应付这些不太侥幸的人,咱们将运用IRremote ESP8266库随附的示例草图IRrecZZZDumpx2以及上面的示用意来获与编码。 拆置库后,启动Arduino IDE,转到示例并选择IRrecZZZDumpx2示例。将代码上传到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_prefiV": "homebridge", "qos": 1 }] } 复制代码保存配置文件并退出。 运止HomeBridge,运用MQTT LENS并将Connection添加到咱们的Raspberry Pi,创立一个运用加热器冷却器效劳的附件,该附件受IOS11的任何版原的IoS撑持。将发布设置为; homebridge / to / add 复制代码并将有效载荷设置为; { "name": "Smart AC", "serZZZice_name": "smart_ac", "serZZZice": "HeaterCooler", "manufacturer": "ESP8266", "firmwarereZZZision": "1.0.0", "SwingMode": 1, "RotationSpeed": {"maVxalue": 3, "minxalue": 0, "minStep": 3}, "CoolingThresholdTemperature": {"maVxalue": 28, "minxalue": 18, "minStep": 1} } 复制代码完成所有那些收配后,咱们如今可以继续为该名目编写代码。 代码 原日的名目代码将运用xScode和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完成的。
3d_screenshot-1-1024V547.png (322.21 KB, 下载次数: 528) 下载附件 2020-11-8 21:11 上传 打印后,将外壳擦洗并上漆以使打印成效更好。最末外壳如下图所示。
photo6174604148083894353-1.jpg (186 KB, 下载次数: 563) 下载附件 2020-11-8 21:11 上传 演示成效 确保如上面所示连贯并翻开方法。它应当如下图所示。
photo6174640771270027361.jpg (158.68 KB, 下载次数: 521) 下载附件 2020-11-8 21:11 上传 (责任编辑:) |