• 毕业设计 单片机多功能红外空调遥控器 - 嵌入式 物联网



    0 前言

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。

    为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是

    🚩 ** 单片机多功能红外空调遥控器 **

    🥇学长这里给一个题目综合评分(每项满分5分)

    • 难度系数:3分
    • 工作量:3分
    • 创新点:3分

    🧿 选题指导, 项目分享:

    https://gitee.com/dancheng-senior/project-sharing-1/blob/master/%E6%AF%95%E8%AE%BE%E6%8C%87%E5%AF%BC/README.md


    1 简介

    基于ESP8266开发板的自制空调遥控器,搭建一个基于ESP8266的WiFi空调遥控器。虽然此项目可以适应任何使用遥控器的设备,但我们将使用它来控制空调。

    2 主要器件

    • ESP8266 NodeMCU
    • 带有WiFi加密狗的Raspberry Pi 4,Raspberry Pi 3或Raspberry Pi 2
    • Raspberry Pi的键盘,显示器和HDMI电缆或LAN电缆
    • Raspberry Pi的2A电源
    • SSD1332 OLED显示屏(256×64)
    • 按钮
    • 红外灯
    • 发光二极管
    • 跳线
    • 面包板

    3 实现效果

    在这里插入图片描述

    4 硬件设计

    空调遥控器原理

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

    空调(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配合使用

    原理图

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

    在这里插入图片描述

    解码IR信号

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

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

    原理图

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

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

    在这里插入图片描述

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

    5 软件说明

    代码

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

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

    与Homekit进行连接

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

    运行以下指令:

    Sudo apt-get update
    
    • 1

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

    sudo apt-get install mosquitto
    
    • 1

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

    sudo npm install -g homebridge-mqtt
    
    • 1

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

    sudo nano config.js
    
    • 1

    将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
         }]
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    保存配置文件并退出。

    运行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}
    }

    5 最后

  • 相关阅读:
    在 CentOS 6.4 VPS 上安装和保护 phpMyAdmin 的方法
    46从零开始用Rust编写nginx,数据还能这么传,多层代理(IP多级代理)搭建
    码云Gitee单仓库最高只支持3G,中国的开源技术真的只能这么Low吗?
    C语言 递归函数
    JAVA 时间戳
    【机器学习】python机器学习scikit-learn和pandas进行Pipeline处理工作:归一化和标准化及自定义转换器(二)
    Ingress基本故障排除方法
    一分钟学一个 Linux 命令 - tar
    大数据时代精准营销是提升品牌竞争力的核心
    Java 图形用户界面设计——GUI编程
  • 原文地址:https://blog.csdn.net/m0_71572576/article/details/128197501