基于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.rhkb.cn/news/126129.html

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

相关文章

nvm 在 Windows 上的使用

NVM&#xff08;Node Version Manager&#xff09;是一个用于管理和切换多个 Node.js 版本的工具。它允许你在同一台机器上同时安装和使用不同版本的 Node.js&#xff0c;而无需手动安装和卸载。 之前都是只安装一个版本的 node.js&#xff0c;该更新时更新&#xff0c;使得以前…

CocosCreator3.8研究笔记(十)CocosCreator 图像资源的理解

一、图像资源导入 Cocos Creator 可使用图像文件格式&#xff0c;支持 JPG、PNG、BMP、TGA、HDR、WEBBP、PSD、TIFF 等。 将图像资源直接拖拽到 资源管理器 即可将其导入 二、图像资源的类型 在 属性检查器 面板中便可根据需要设置图像资源的使用类型&#xff1a;raw 、 textu…

处理流程设计-系统设计-人机界面设计

处理流程设计-系统设计-人机界面设计 流程表示工具&#xff08;重点&#xff09; 流程表示工具&#xff08;重点&#xff09; 数据流图也是一种 IPO 图 NS图和PAD图

图像文件的操作MATLAB基础函数使用

简介 MATLAB中的图像处理工具箱体统了一套全方位的标准算法和图形工具&#xff0c;用于进行图像处理、分析、可视化和算法开发。这里仅仅对常用的基础函数做个使用介绍。 查询图像文件的信息 使用如下函数 imfinfo(filename,fmt) 函数imfinfo返回一个结构体的info&#xff…

【AI】机器学习——线性模型(逻辑斯蒂回归)

文章目录 3.3 逻辑斯蒂回归3.3.1 逻辑回归介绍对数几率函数sigmod函数几率 3.3.2 逻辑回归模型3.3.3 参数求解逻辑斯蒂回归策略 3.3.4 损失函数3.3.5 应用&#xff1a;语句情感判断3.3.6 多角度分析逻辑回归信息论角度数学角度与朴素贝叶斯对比 3.3.7 从二分类到多分类问题多次…

Netty(一)NIO-基础

Netty 分布式根基于网络编程&#xff0c;Netty恰是java网络编程的王者&#xff0c;致力于高性能编程。 前置 适用于网络开发&#xff0c;服务器开发。多线程&#xff0c;线程池&#xff0c;maven。 大纲 NIO编程&#xff08;Selector&#xff0c;ByteBuffer和Channel&…

【区块链】DeFi是什么?大白话科普文

对于一些没有玩过区块链、或者说没有真金白银的体验过这个虚拟世界的小伙伴来说,这篇文章可以帮你了解 DeFi。致力于帮你在这个线上走出这一步。 当然这不是理财建议。 文章目录 前言什么是去中心化金融?有哪些 DeFi 项目DeFi由哪几部分构成?热门DeFi项目有哪些?前言 Def…

Gradle下载库速度过慢解决办法

最近搞了个Gradle的项目&#xff0c;项目下载依赖库太慢了&#xff0c;于是… Gradle下载库速度过慢的问题可能由多种原因导致&#xff0c;以下是一些可能的解决方案&#xff1a; 1、使用国内镜像站点&#xff1a; 你可以改变Gradle的配置&#xff0c;使用国内的镜像站点来下…

python flask框架 debug功能

从今天开始&#xff0c;准备整理一些基础知识&#xff0c;分享给需要的人吧 先整理个flask的debug功能&#xff0c;首先列举一下debug加与不加的区别&#xff0c;然后再上代码和图看看差异 区别&#xff1a; &#xff08;1&#xff09;加了debug后&#xff0c;修改js&#xf…

墨西哥专线空运的时效性怎么样?

墨西哥专线空运的时效性怎么样?这是许多企业在选择货运方式时的关键问题。墨西哥作为与中国贸易往来频繁的国家&#xff0c;需要高效可靠的货运服务来满足不断增长的贸易需求。而墨西哥专线空运便是其中一种备受关注的运输方式。 墨西哥专线空运是指通过直航航班将货物从中国直…

ABB机器人10106故障报警(维修时间提醒)的处理方法

ABB机器人10106故障报警&#xff08;维修时间提醒&#xff09;的处理方法 故障原因&#xff1a; ABB机器人智能周期保养维护提醒&#xff0c;用于提示用户对机器人进行必要的保养和检修。 处理方法&#xff1a; 完成对应的保养和检修后&#xff0c;要进行一个操作&#xf…

java文件命令行报错: 找不到或无法加载主类XXX报错及解决

前言 之前遇到过几次&#xff0c;后面稀里糊涂的解决了。今天详细记录一下&#xff0c;可能不全或有些错误&#xff0c;还请各位指正。 你要启动一个类的话首先要有类。 在这里&#xff0c;类有两种&#xff0c; 一个是带包名&#xff08;package&#xff09;的还有一个是没包…

uniapp制作——交友盲盒

在小程序端可以有很多好玩的小玩意&#xff0c;目前网上比较有趣的就是有一个交友盲盒&#xff0c;能抽出和找出对象的一个有趣的小程序&#xff0c;所以今天给大家带来用uniapp搭建的交友盲盒&#xff0c;大家再根据自己的情况去搭建自己的后端和数据库来完成自己的一个小项目…

2023年软件开发领域的发展趋势

科技趋势引领着软件开发行业的发展。对于开发商来说&#xff0c;将会看到更多的市场增长机会。因此&#xff0c;很多人都想了解软件开发的最新趋势。IT行业正在等待一个范式转变&#xff0c;而科技的好处在于不断发展&#xff0c;势不可挡&#xff0c;并且用途广泛。 很多专业人…

华为云云耀云服务器L实例评测|部署spring项目端口开放问题的解决 服务器项目环境搭建MySQL,Redis,Minio...指南

目录 引出书接上回&#xff0c;部署spring项目&#xff0c;端口访问失败最后排查结果反馈 尝试的几种解决方案【未成功】1.指定tomcat启动ipv4端口2.添加开放端口规则保存规则防火墙相关命令记录 最终成功解决【成功&#xff01;】用firewall成功了问题来了&#xff0c;如果这里…

基于SSM的汽车客运站管理系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

更快更强更稳定:腾讯向量数据库测评

向量数据库&#xff1a;AI时代的新基座 人工智能在无处不在影响着我们的生活&#xff0c;而人工智能飞速发展的背后是需要对越来越多的海量数据处理&#xff0c;传统数据库已经难以支撑大规模的复杂数据处理。特别是大模型的出现&#xff0c;向量数据库横空出世。NVIDIA CEO黄…

Java“牵手”天猫商品详情数据,天猫商品详情API接口,天猫API接口申请指南

天猫平台商品详情接口是开放平台提供的一种API接口&#xff0c;通过调用API接口&#xff0c;开发者可以获取天猫商品的标题、价格、库存、月销量、总销量、库存、详情描述、图片等详细信息 。 获取商品详情接口API是一种用于获取电商平台上商品详情数据的接口&#xff0c;通过…

docker从零部署jenkins保姆级教程(上)

jenkins&#xff0c;基本是最常用的持续集成工具。在实际的工作中&#xff0c;后端研发一般没有jenkins的操作权限&#xff0c;只有一些查看权限&#xff0c;但是我们的代码是经过这个工具构建出来部署到服务器的&#xff0c;所以我觉着有必要了解一下这个工具的搭建过程以及简…

windows安装CUDA

windows安装CUDA 说明 适用于你的电脑为nvidia的显卡 第一步 先运行nvcc -V 查看cuda版本&#xff0c;不过应该都是未识别的命令&#xff0c;如下图所示 打开pytorch的官网 https://pytorch.org/get-started/locally/ &#xff0c;查看其支持最新的cuda为多少版本&#xf…