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

一、格力空调协议介绍

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

格力空调的红外控制协议是一种自定义协议,它并没有像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.mzph.cn/news/73468.shtml

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

相关文章

2023高教杯数学建模1:ABC题目+初步想法

2023 ABC题目初步想法 写在最前面A题&#xff1a;定日镜场的优化设计问题1&#xff1a;建模将其抽象为数学公式问题2&#xff1a;固定部分参数&#xff0c;约束条件下的局部最优化问题可尝试方法 问题3&#xff1a;约束条件下的局部最优化问题附录&#xff1a;相关计算公式参考…

飞书即时消息无需API开发连接Cohere,打造飞书AI智能问答助手

飞书即时消息用户使用场景&#xff1a; 许多企业都在使用飞书系统进行协同办公&#xff0c;而现在有了Cohere大语言模型技术&#xff0c;能够根据用户的提问来自动产生回答&#xff0c;无需人为干预。对于企业负责人来说&#xff0c;他们认为如果将Cohere技术融入到飞书机器人中…

Macs Fan Control 1.5.16 Pro for mac风扇调节软件

Macs Fan Control是一款专门为 Mac 用户设计的软件&#xff0c;它可以帮助用户控制和监控 Mac 设备的风扇速度和温度。这款软件允许用户手动调整风扇速度&#xff0c;以提高设备的散热效果&#xff0c;减少过热造成的风险。 Macs Fan Control 可以在菜单栏上显示当前系统温度和…

管理类联考——数学——汇总篇——知识点突破——数据分析——计数原理——排列组合——排队

&#x1f41f; 排队问题常用方法有以下几种&#xff1a; &#xff08;1&#xff09;特殊元素优先法、特殊位置优先法&#xff1b; &#xff08;2&#xff09;剔除法&#xff1b; &#xff08;3&#xff09;相邻问题捆绑法&#xff1b; &#xff08;4&#xff09;不相邻问题插空…

RLAIF:一个不依赖人工的RLHF替代方案

深度学习自然语言处理 原创作者&#xff1a;Winnie LLM可以标记人类偏好数据&#xff0c;用于强化学习吗&#xff1f;尽管之前有一些类似的研究&#xff0c;但从没有人系统地对比RLHF和RLAIF的性能。今天&#xff0c;我们为大家带来一项Google最新的研究&#xff0c;来看看LLM是…

Python标准数据类型-List(列表)

✅作者简介&#xff1a;CSDN内容合伙人、阿里云专家博主、51CTO专家博主、新星计划第三季python赛道Top1&#x1f3c6; &#x1f4c3;个人主页&#xff1a;hacker707的csdn博客 &#x1f525;系列专栏&#xff1a;零基础入门篇 &#x1f4ac;个人格言&#xff1a;不断的翻越一座…

C语言课程作业

本科期间c语言课程作业代码整理&#xff1a; Josephus链表实现 Josephus 层序遍历树 二叉树的恢复 哈夫曼树 链表的合并 中缀表达式 链接&#xff1a;https://pan.baidu.com/s/1Q7d-LONauNLi7nJS_h0jtw?pwdswit 提取码&#xff1a;swit

自动驾驶——估计预瞄轨迹YawRate

1.Introduction 在ADAS控制系统中&#xff0c;通常根据预瞄距离x去估计横向距离y&#xff0c;有如下关系&#xff1a; y a0 a1 x a2 * x^2 a3 * x^3 &#xff0c;那么现在有个需求&#xff0c;希望根据上述x和y的关系&#xff0c;去估计规划预瞄轨迹yawRate 2.How to es…

Linux之修改服务端口号

本次演示以SSH服务为例&#xff0c;SSH默认监听端口是22,先保留了22端口&#xff0c;所以我们要进入ssh的配置文件添加新端口并注释或删掉原有端口。 1、使用vi编辑器修改文件 sshd_config,路径是/etc/ssh/sshd_config,找到“#Port 22”,添加新的端口号10086。 2、如果你关闭了…

深度学习实战51-基于Stable Diffusion模型的图像生成原理详解与项目实战

大家好,我是微学AI,今天给大家介绍一下深度学习实战51-基于Stable Diffusion模型的图像生成原理详解与项目实战。大家知道现在各个平台发的漂亮小姐姐,漂亮的图片是怎么生成的吗?这些生成的底层原理就是用到了Stable Diffusion模型。Stable Diffusion是一种基于深度学习的图…

【Docker】Docker的使用案例以及未来发展、Docker Hub 服务、环境安全的详细讲解

Docker的工具实践及root概念和Docker容器安全性设置 1. 使用案例2. Docker解决的问题3. Docker未来发展4. Docker Hub 服务5. 技术局限6. Docker环境安全7. 容器部署安全 1. 使用案例 Docker是一个命令行工具&#xff0c;它提供了中央“docker”执行过程中所需的所有工具。这使…

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

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

day52(补)

300.最长递增子序列 力扣题目链接(opens new window) 给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。 子序列是由数组派生而来的序列&#xff0c;删除&#xff08;或不删除&#xff09;数组中的元素而不改变其余元素的顺序。例如&#xff0c;[3,6,2…

【Kafka系列】(一)Kafka入门

有的时候博客内容会有变动&#xff0c;首发博客是最新的&#xff0c;其他博客地址可能会未同步,认准https://blog.zysicyj.top 首发博客地址 系列文章地址 Kafka是什么&#xff1f; 一句话概括&#xff1a;「Apache Kafka 是一款开源的消息引擎系统」 什么是消息引擎系统&#…

【LeetCode-中等题】22. 括号生成

文章目录 题目方法一&#xff1a;递归&#xff1a;方法二&#xff1a;递归回溯 题目 方法一&#xff1a;递归&#xff1a; 递归入口 空子结果集&#xff0c;左括号数目&#xff08;初始为0&#xff09;&#xff0c;右括号数目&#xff08;初始为0&#xff09; 递归出口 若左括…

linux(centos7)配置SSH免密登录

给三台机器配置主机名映射 在Windows系统中修改hosts文件&#xff0c;新增以下内容&#xff1b; 192.168.xxx.xxx bigdata_node1 192.168.xxx.xxx bigdata_node2 192.168.xxx.xxx bigdata_node33台Linux的/etc/hosts文件中&#xff0c;填入如下内容。 192.168.xxx.xxx bigda…

在UE4虚幻引擎中加入导航网格体边界体积后丧尸不能移动和发现玩家

UE4系列文章目录 文章目录 UE4系列文章目录前言一、用到的知识点二、问题原因 前言 最近使用ue4做第一人称视角射击游戏发现问题&#xff0c;加入导航网格体边界体积后丧尸不能移动和发现玩家。下图是出现的问题图片 一、用到的知识点 1.行为树&#xff1a;控制并显示AI的决…

DTCC 2023丨云原生环境下,需要什么样的 ETL 方案?

​2023年8月16日~18日&#xff0c;第14届中国数据库技术大会&#xff08;DTCC 2023&#xff09;于北京隆重召开&#xff0c;拓数派受邀参与本次大会&#xff0c;PieCloudDB 技术专家邱培峰在大会做了《云原生虚拟数仓 PieCloudDB ETL 方案设计与实现》的主题演讲&#xff0c;详…

PostgresSQL----基于Kubernetes部署PostgresSQL

【PostgresSQL----基于Kubernetes部署PostgresSQL】 文章目录 一、创建SC、PV和PVC存储对象1.1 准备一个nfs服务器1.2 编写SC、PV、PVC等存储资源文件1.3 编写部署PostgresSQL数据库的资源声明文件 二、部署PostgresSQL2.1 部署 PV、PVC等存储对象2.2 部署PostgresSQL数据库2.3…

【Git】Git 基础

Git 基础 参考 Git 中文文档 — https://git-scm.com/book/zh/v2 1.介绍 Git 是目前世界上最先进的分布式版本控制系统&#xff0c;有这么几个特点&#xff1a; 分布式&#xff1a;是用来保存工程源代码历史状态的命令行工具保存点&#xff1a;保存点可以追溯源码中的文件…