基于STM32设计的格力空调遥控器

news2025/1/21 2:54:47

一、格力空调协议介绍

格力空调的红外控制协议被称为格力红外通讯协议或者格力红外遥控协议。这个协议定义了一系列红外信号,可以用来控制格力空调的各种操作,例如开关、温度控制、模式选择、风速控制等等。

格力空调的红外控制协议是一种自定义协议,它并没有像NEC、RC5、RC6等协议一样被广泛应用。因此,不同型号的格力空调可能会有不同的红外控制协议。如果想要使用红外发送器控制格力空调,需要先了解当前空调使用的是哪种红外控制协议。

一般来说,格力空调的红外控制协议包含一个头部和一系列数据位。头部通常由一个起始位和一个引导位组成。数据位通常包括操作码、温度、模式、风速等信息。

下面是一个格力空调红外控制信号:

Start Bit: 9000us
Lead-in: 4500us, 4500us
Data: 0x88, 0x20, 0x00, 0x02, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

在这个示例中,红外控制信号的起始位持续时间为9000微秒。接下来是一个引导位,持续时间为4500微秒和4500微秒。引导位后面是一系列数据位,包括操作码、温度、模式、风速等信息。在这个示例中,操作码为0x88,表示将空调设置为制冷模式,并把温度设置为32度。

要控制格力空调,需要使用一个红外发送器,将这个信号通过红外光线发送到空调控制器。可以使用STM32F103ZET6的GPIO引脚控制红外线发送管来发送这个信号。

image-20230720112624187

image-20230720112701039

二、代码实现

2.1 代码实现

#include "stm32f10x.h"

// 定义红外发送器引脚
#define IR_SENDER_GPIO_PORT GPIOA
#define IR_SENDER_GPIO_PIN GPIO_Pin_1

// 定义红外发送器协议参数
#define IR_PROTOCOL_FREQ 38000            // 红外协议频率
#define IR_PROTOCOL_START_DURATION 9000   // 红外协议起始位持续时间
#define IR_PROTOCOL_LEADIN_DURATION 4500  // 红外协议引导位持续时间
#define IR_PROTOCOL_DATA_BIT_0_DURATION 560  // 红外协议数据位0持续时间
#define IR_PROTOCOL_DATA_BIT_1_DURATION 1690 // 红外协议数据位1持续时间

// 发送一个红外协议信号
void IR_SendProtocol(uint32_t protocol)
{
    uint8_t i, j;
    uint32_t data_bit;

    // 发送起始位
    GPIO_SetBits(IR_SENDER_GPIO_PORT, IR_SENDER_GPIO_PIN);
    delay_us(IR_PROTOCOL_START_DURATION);

    // 发送引导位
    GPIO_ResetBits(IR_SENDER_GPIO_PORT, IR_SENDER_GPIO_PIN);
    delay_us(IR_PROTOCOL_LEADIN_DURATION);
    GPIO_SetBits(IR_SENDER_GPIO_PORT, IR_SENDER_GPIO_PIN);
    delay_us(IR_PROTOCOL_LEADIN_DURATION);

    // 逐位发送协议数据
    for (i = 0; i < 14; i++)
    {
        data_bit = (protocol >> i) & 0x01; // 获取当前位的值

        // 发送数据位
        GPIO_ResetBits(IR_SENDER_GPIO_PORT, IR_SENDER_GPIO_PIN);
        if (data_bit)
        {
            delay_us(IR_PROTOCOL_DATA_BIT_1_DURATION);
        }
        else
        {
            delay_us(IR_PROTOCOL_DATA_BIT_0_DURATION);
        }
        GPIO_SetBits(IR_SENDER_GPIO_PORT, IR_SENDER_GPIO_PIN);
        delay_us(IR_PROTOCOL_DATA_BIT_0_DURATION);
    }
}

// 控制格力空调开关
void IR_ControlPower(int on_off)
{
    uint32_t protocol;

    if (on_off)
    {
        // 开机
        protocol = 0x8820000200200000;
    }
    else
    {
        // 关机
        protocol = 0x8820000000200000;
    }

    IR_SendProtocol(protocol);
}

// 控制格力空调温度
void IR_ControlTemperature(int temperature)
{
    uint32_t protocol;

    if (temperature < 16 || temperature > 31)
    {
        return; // 温度范围无效
    }

    // 温度码为0x20加上实际温度值
    protocol = 0x8820002020000000 | (temperature - 16);

    IR_SendProtocol(protocol);
}

// 控制格力空调模式
void IR_ControlMode(int mode)
{
    uint32_t protocol;

    switch (mode)
    {
    case 0: // 制冷
        protocol = 0x8820000200200000;
        break;
    case 1: // 制热
        protocol = 0x8820000400200000;
        break;
    case 2: // 自动
        protocol = 0x8820000800200000;
        break;
    case 3: // 送风
        protocol = 0x8820001000200000;
        break;
    default:
        return; // 模式无效
    }

    IR_SendProtocol(protocol);
}

// 控制格力空调风速
void IR_ControlFanSpeed(int fan_speed)
{
    uint32_t protocol;

    switch (fan_speed)
    {
    case 0: // 自动风速
        protocol = 0x8820002000200000;
        break;
    case 1: // 低风速
        protocol = 0x8820004000200000;
        break;
    case 2: // 中风速
        protocol = 0x8820008000200000;
        break;
    case 3: // 高风速
        protocol = 0x8820010000200000;
        break;
    default:
        return; // 风速无效
    }

    IR_SendProtocol(protocol);
}

在代码中,定义了一些常量来表示格力空调红外控制协议的参数,例如红外协议频率、起始位持续时间、引导位持续时间、数据位0和数据位1的持续时间。也定义了一些函数来控制格力空调的各种操作,例如控制开关、温度、模式和风速。这些函数调用了IR_SendProtocol()函数来发送适当的红外信号。

IR_SendProtocol()函数中,先发送起始位和引导位。然后,逐位发送协议数据,根据数据位的值发送适当的红外信号。在代码中,使用delay_us()函数来延迟一定的时间来模拟红外信号的持续时间。

2.2 常见的控制码

以下是一些常见的格力空调红外控制协议:

【1】控制开关

// 开机
0x8820000200200000

// 关机
0x8820000000200000

【2】控制温度

// 温度16度
0x8820002020000000

// 温度17度
0x8820002120000000

// 温度18度
0x8820002220000000

// ...

// 温度31度
0x8820003F20000000

【3】控制模式

// 制冷
0x8820000200200000

// 制热
0x8820000400200000

// 自动
0x8820000800200000

// 送风
0x8820001000200000

【4】控制风速

// 自动风速
0x8820002000200000

// 低风速
0x8820004000200000

// 中风速
0x8820008000200000

// 高风速
0x8820010000200000

【5】控制扫风

// 扫风开
0x8820080000200000

// 扫风关
0x8820100000200000

【6】控制节能模式

// 节能开
0x8820200000200000

// 节能关
0x8820400000200000

【7】控制睡眠模式

// 睡眠开
0x8821000000200000

// 睡眠关
0x8822000000200000

【8】控制定时开关机

// 定时开机,时间为1小时
0x8824000000200000

// 定时开机,时间为2小时
0x8828000000200000

// 定时开机,时间为3小时
0x8830000000200000

// ...

// 定时开机,时间为24小时
0x8878000000200000

// 取消定时开关机
0x8820000000400000

【9】控制清新功能

// 清新开
0x8820000002200000

// 清新关
0x8820000004200000

【10】控制快速冷热

// 快速冷
0x8820000080200000

// 快速热
0x8820000040200000

【11】控制干燥功能

// 干燥开
0x8820000001200000

// 干燥关
0x8820000002200000

【12】控制自清洁功能

// 自清洁开
0x8820000008200000

// 自清洁关
0x8820000010200000

【13】控制室内外循环功能

// 室内外循环开
0x8820020000200000

// 室内外循环关
0x8820040000200000

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/991288.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

进程基本概念

一、什么是进程&#xff08;任务&#xff09; 进程&#xff1a;一个被加载到内存中的程序/正在运行中的程序。 开机时&#xff0c;先将操作系统加载到内存中。 ps -ajx 查询运行中的进程 二、操作系统如何管理进程&#xff1f; 前提&#xff1a;如何利用属性认识事…

使用 crontab 定时任务使用 curl 发送请求

crontab 简单用法 crontab 一般是 linux 系统自带的 输入以下命令可以添加定时任务&#xff0c;里面有 crontab 的说明及示例 crontab -e示例格式如下 # 前面五个分别代表分、时、天、月、周&#xff0c;后面就是命令 * * * * * command例如 * * * * * command就是每分钟执行…

图的应用(最小生成树,最短路径,有向无环图)

目录 一.最小生成树 1.生成树 2.无向图的生成树 3.最小生成树算法 二.最短路径 1.单源最短路径---Dijkstra&#xff08;迪杰斯特拉&#xff09;算法 2.所有顶点间的最短路径---Floyd&#xff08;弗洛伊德&#xff09;算法 三.有向无环图的应用 1.AOV网&#xff08;拓扑…

国内CRM软件系统厂商排名

我们知道CRM软件成为了企业管理中不可或缺的一部分&#xff0c;目前国内CRM厂商排名是怎样的呢&#xff1f;经过评估名列前茅的分别是Zoho CRM、Salesforce CRM、Microsoft Dynamics 、SAP CRM、HubSpot CRM。 1.Zoho Zoho CRM凭借先进的技术和创新的解决方案&#xff0c;帮…

2023年母婴亲子产业研究报告

第一章 行业发展概况 母婴亲子领域是一个综合性的产业&#xff0c;主要聚焦于为孕产妇、婴幼儿及家庭提供全方位的服务和产品。该产业致力于为孕产妇和家庭在孕育、育儿及亲子时期提供必要的支持和便捷。其核心业务涉及婴幼儿商品、孕产妇健康、亲子教育、家庭旅行体验以及亲子…

递归算法学习——图像渲染,岛屿的数量,最大的岛屿

目录 ​编辑 一&#xff0c;图像渲染 1.题意 2.解释 3.题目接口 4.解题思路及代码 二&#xff0c;岛屿的数量 1.题意 2.解释 3.题目接口 4.解题思路及代码 三&#xff0c;最大的岛屿 1.题意 2.解释 3.题目接口 4.解题代码即思路 一&#xff0c;图像渲染 1.题意…

MySQL——笔试测试题

解析&#xff1a; 要查询各科目的最大分数&#xff0c;可以使用如下的SQL语句&#xff1a; SELECT coursename, MAX(score) FROM t_stuscore GROUP BY coursename; 这条SQL语句使用了MAX()聚合函数来获取每个科目的最大分数&#xff0c;并使用GROUP BY子句按照科目进行分组…

核货宝:收银系统后台一般是怎样的,有哪些功能

收银系统后台是一个重要的管理工具&#xff0c;它为企业提供了对收银机的全面控制和配置。收银系统后台是一个用于管理和配置收银机的软件界面。它通常由以下几个主要部分组成&#xff1a; 1. 登录和权限管理 收银系统后台需要一个安全的登录系统&#xff0c;以确保只有授权人…

Mojo 语言官网

Mojo面向 AI 开发者的新型编程语言&#xff0c;无缝支持CPU、GPU&#xff0c;兼容Python&#xff0c;跟Python类似的语法&#xff0c;但是比Python快68000倍。目前Mojo仅支持Ubuntu&#xff0c;暂不支持Windows和Mac&#xff0c;可以在Mojo Playground先体验一下。 Mojo 语言…

ostringstream 多线程下性能问题探究

文章目录 背景火焰图ostringstream 的结构引用 背景 在实习过程中&#xff0c;有一个业务场景需要用到 ostringstream&#xff0c;但经过导师提醒&#xff0c;ostringstream 在多线程关系下&#xff0c;竞态消耗较大&#xff0c;但对于当前业务场景&#xff0c;每次操作&#…

【美团3.18校招真题2】

大厂笔试真题网址&#xff1a;https://codefun2000.com/ 塔子哥刷题网站博客&#xff1a;https://blog.codefun2000.com/ 最多修改两个字符&#xff0c;生成字典序最小的回文串 提交网址&#xff1a;https://codefun2000.com/p/P1089 由于字符串经过修改一定为回文串&#x…

[Linux]动静态库

[Linux]动静态库 文章目录 [Linux]动静态库见一见库存在库的原因编写库模拟编写静态库模拟使用静态库模拟编写动态库模拟使用静态库 库的加载原理静态库的加载原理动态库的加载原理 库在可执行程序中的编址策略静态库在可执行程序中的编址策略动态库在可执行程序中的编址策略 见…

本地启动 Falcon-180B

本地启动 Falcon-180B 通过 Gradio 的 load 函数&#xff0c;我们可以在本地加载 HuggingFace 的 Spaces 上面的 demo。 那就运行 Falcon-180B 来试试吧。 创建 falcon_demo.py 文件&#xff0c; cat << EOF > falcon_demo.py import gradio as grdemo gr.load(&q…

小节3:数据类型

Python的数据类型包括&#xff1a;字符串&#xff08;str&#xff09;、整数&#xff08;int&#xff09;、浮点数&#xff08;float&#xff09;、布尔类型&#xff08;bool&#xff09;、空值类型&#xff08;NoneType&#xff09;、列表&#xff08;list&#xff09;、字典&…

Spring Cloud zuul与CloseableHttpClient连接池,TLS证书认证

前言 最近做项目&#xff0c;需要一个代理逻辑&#xff0c;实际上这种代理NGINX最好&#xff0c;但是有些额外功能的开发&#xff0c;NGINX就需要额外能力支持&#xff0c;比如lua脚本&#xff0c;常见的做法有kong&#xff0c;apisix等&#xff0c;据说apisix的性能较强&…

Python 03(循环语句)

Python03&#xff08;循环语句&#xff09; 文章目录 Python03&#xff08;循环语句&#xff09;一、while语句二、while实现猜数字三、while循环的嵌套while循环嵌套实例需求&#xff1a; 四、for循环1、什么 是for循环2、语法3、执行流程4、for循环的基本使用5、range()函数6…

光刻机的原理和技术路线概览

一、简介 集成电路产业被誉为现代“工业粮食”&#xff0c;引领未来科学技术产业革命的发展&#xff0c;带动世界前沿技术创新发展。 集成电路产业是社会发展的先导产业&#xff0c;主要包括半导体材料、装备、芯片制造、封装测试、电路设计等重要环节。 随着工业智能制造和电子…

OpenCV(三十):图像膨胀

1.图像膨胀原理 图像膨胀的原理是将一个结构元素&#xff08;也称为核或模板&#xff09;在图像上滑动&#xff0c;并将其与图像中对应位置的像素进行比较。如果结构元素的所有像素与图像中对应位置的像素都匹配&#xff0c;那么该位置的像素值保持不变。如果结构元素的任何一个…

Telnet

远程登录/管理 目录 1、什么是Telnet 2、Telnet工作原理 3、常见的Telnet使用场景 4、Telnet协议结构 5、Telnet工作流程 6、Telnet常见命令 6.1、[Huawei]user-interface ? 用户界面 6.2、[Huawei]user-interface vty ? 6.3、[Huawei-ui-vty0-4]? 6.4、[Huawei-…

软件测试技术题目大全【含答案】

请看下面 你的测试职业发展是什么?  测试经验越多&#xff0c;测试能力越高。所以我的职业发展是需要时间积累的&#xff0c;一步步向着高级测试工程师奔去。而且我也有初步的职业规划&#xff0c;前3年积累测试经验&#xff0c;按如何做好测试工程师的要点去要求自己&#x…