0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

用 M61模组做一个红外空调遥控器

AIoT行业洞察 来源:AIoT行业洞察 作者:AIoT行业洞察 2024-08-23 08:58 次阅读

本作品由安信可社区用户

WildboarG制作

使用

连接 wifi

订阅 MQTT 服务

接入 HOMEASSISTANT

材料准备

wKgZombH3peAb06oAAAJhxU5Rlg135.png

红外发射模块原理图

wKgaombH3piAddLNAACSeAzhks435.jpeg

原理

空调遥控器简单来讲就是通过红外发射管的亮灭来承载编码信息,对应的空调设备上有一个接收管,它接收到发射管的光信号来解析协议获取数据,然后对空调进行对应指令的控制

例如:将温度设置为 16° 冷风 风速 1 级

既然要控制灯的亮灭,那么就只需要一个 IO 口控制就可以了(除去 VCC 和 GND),手上刚好有一个

M61 板子刚好用上了。一般的控制红外遥控器使用的 38KHZ 频率,所以只要模拟 GPIO 产生 38KHZ 的高低电平就可以控制红外发射管发送数据了。

红外编码

借助 esp8266+ 红外接收模块,用你的遥控器怼着接收模块按键,读取红外发射的原始数据,arduino 有对应的示例代码(IRremoteESP8266/IRrecvDumpV2.ino),连接好线,刷入示例程序,手动按你的遥控器,从串口读取 rawData 数组。

获取的数据大概是这样的:

uint16_t rawData[279] = { 9000, 4442, 608, 1624, 584, 494, 610, 496, 608, 1600, 608, 1602, 608, 494, 608, 496, 608, 496, 608, 496, 608, 494, 610, 520, 584, 1624, 586, 498, 606, 518, 586, 496, 608, 518, 586, 496, 608, 494, 610, 494, 610, 496, 608, 518, 586, 1624, 586, 494, 610, 494, 610, 496, 606, 498, 608, 496, 608, 498, 606, 1600, 610, 520, 584, 1624, 584, 496, 608, 496, 608, 1602, 608, 518, 638, 20150, 606, 496, 608, 496, 608, 496, 608, 496, 608, 1602, 606, 494, 610, 518, 586, 494, 610, 494, 610, 518, 586, 518, 586, 496, 608, 494, 610, 1602, 608, 494, 608, 496, 608, 494, 610, 520, 584, 496, 608, 498, 606, 496, 608, 498, 606, 496, 608, 518, 586, 518, 586, 496, 608, 494, 610, 494, 610, 494, 610, 1600, 608, 1600, 608, 1602, 660, 40406, 9158, 4440, 610, 1602, 608, 496, 608, 496, 608, 1602, 608, 1600, 608, 494, 610, 494, 610, 494, 610, 496, 608, 518, 584, 496, 608, 1602, 608, 518, 584, 496, 608, 496, 608, 496, 608, 496, 608, 496, 608, 496, 608, 494, 610, 498, 606, 1600, 610, 494, 610, 518, 586, 494, 610, 518, 586, 494, 610, 496, 608, 1600, 608, 1600, 608, 1624, 584, 496, 608, 520, 584, 1600, 608, 520, 664, 20150, 608, 518, 584, 496, 608, 496, 608, 496, 608, 520, 584, 496, 608, 496, 608, 494, 610, 518, 586, 496, 608, 496, 608, 498, 606, 496, 608, 494, 610, 496, 608, 496, 608, 494, 610, 496, 608, 496, 606, 496, 608, 1624, 584, 496, 608, 496, 608, 520, 584, 496, 608, 496, 608, 498, 606, 496, 608, 520, 584, 494, 610, 1602, 608, 1600, 608 }; // 24 度

只需要借助 GPIO 连接的红外灯亮灭对应的时长就将数据发送出去了。具体的协议高低电平起始不同,以我的格力空调为例子,它的起始数据是高电平 第一个数据是 9000 也就是说 需要我的 GPIO 输出 9000us 的高电平,(这里说的高电平不是真正的高电平 1,而是需要以 38KHZ 载波的高电平,也就是说需要用 38khz 频率一直高低翻转的电平),而第二个数据是 4442,这就需要真正的低电平延时 4442us,以此类推奇数需要电平反转,偶数需要真正的低电平。直到将这 279 个数据发送完。就完成了控制部分。

参考了zzbinfo 的这篇帖子用 Ai-M61 实现物联网开发(2)---实现远程开机、无线控制、红外遥控"

和 wxlinus 的这篇帖子Ai-M61-32S-Kit 开发板 mqtt 调试

逻辑实现

采用 pwm 输出 38Khz 频率。

pwm 配置:

#if 0
// 定时器配置
struct bflb_timer_config_s cfg0;
cfg0.counter_mode = TIMER_COUNTER_MODE_PROLOAD;
cfg0.clock_source = TIMER_CLKSRC_XTAL;//外部时钟为40M
cfg0.clock_div = 39; //预分频后 1M
cfg0.trigger_comp_id = TIMER_COMP_ID_0;
cfg0.comp0_val = 13; //计数13us 约等于38kHz
cfg0.preload_val = 0;
timer0 = bflb_device_get_by_name("timer0");
bflb_timer_init(timer0, &cfg0);
bflb_irq_attach(timer0->irq_num, timer0_isr, NULL);
bflb_irq_enable(timer0->irq_num);
#endif

// PWM配置

pwm = bflb_device_get_by_name("pwm_v2_0"); //给外设接口赋名pwm_v2_0
/* period = .XCLK / .clk_div / .period = 40MHz / 7 / 150 ≈ 38KHz */
struct bflb_pwm_v2_config_s cfg = {
.clk_source = BFLB_SYSTEM_XCLK,
.clk_div = 7,
.period = 150,
}; //设置PWM的频率,选择时钟,分频,和周期。根据上面的公式算出最终的频率。
/*初始化PWM输出*/
bflb_pwm_v2_init(pwm, &cfg);
bflb_pwm_v2_channel_set_threshold(pwm, PWM_CH0,0, 75); //占空比50%
发送配置:
void Send_IR(uint16_t *buf,uint8_t len)
{
// printf("Sending IR code...n");
bflb_pwm_v2_channel_positive_start(pwm, PWM_CH0); //开启正向通道
for (uint16_t i = 0; i < len; i++) {
if (i%2==0) {
//bflb_timer_start(timer0); // 启用38kHz载波的定时器
bflb_pwm_v2_start(pwm); //开启pwm
bflb_mtimer_delay_us(buf[i]); // 高电平(脉冲时间)
//bflb_timer_stop(timer0); // 停止38kHz载波
bflb_pwm_v2_start(pwm); //关闭pwm
} else {
bflb_gpio_reset(gpio, IR);
bflb_mtimer_delay_us(buf[i]); // 低电平(空闲时间)
}
}
}

使用

克隆仓库AirCondition

首先需要获取你家空调遥控对应的红外编码(上边给了两种方法)

修改本例程

配置 wifi ,mqtt 订阅主题 (/state/user_state.h)

获取空调遥控器的 RawData 以数组的形式存放 user_aric.c 目录下

烧录

使用

克隆仓库AirCondition

首先需要获取你家空调遥控对应的红外编码(上边给了两种方法)

修改本例程

配置 wifi ,mqtt 订阅主题 (/state/user_state.h)

获取空调遥控器的 RawData 以数组的形式存放 user_aric.c 目录下

烧录

接入 HOMEASSISTANT

1.在 HACS 中下载 Lovelace Thermostat 组件,按照说明配置

2.修改 configuration.yaml 文件

3.添加设备发现

mqtt:

- climate:

name: AC

temperature_command_topic: "home/ac"

precision: 1.0

代码

4.然后更新配置,再到概览中添加 UI 卡片,类型为恒温器

wKgZombH3piANpAPAAA1D5jR2N463.jpeg

备注

1.定时器模拟载波已经更新为 PWM 控制更准确

2.更新了 WB2 版本的,在同一仓库下

帖子链接:【DIY 电子作品】WB2 复刻一个空调遥控器

下载:

git clone -b wb2 https://github.com/WildboarG/AirCondition.git

上图:

获取红外编码的 esp8266+ 淘宝不知名的红外接收模块

wKgaombH3pmASrGbAAE4AtNgLoE20.jpeg

以前画的一个红外发射模块,淘宝买的没有三极管放大,距离太近了

wKgZombH3pmARz88AADVtQVthWM24.jpeg

视频演示

https://www.bilibili.com/video/BV1nevPefE5E/?t=19.532662&spm_id_from=333.1350.jump_directly&vd_source=54c5db21948db2378659b7e8e42bafbf

wKgaombH3pqAdhkwAAAuffEhMg446.jpeg

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 红外
    +关注

    关注

    8

    文章

    732

    浏览量

    94809
  • 模组
    +关注

    关注

    6

    文章

    1426

    浏览量

    30260
  • 空调遥控器
    +关注

    关注

    0

    文章

    18

    浏览量

    7273
收藏 人收藏

    评论

    相关推荐

    格力空调遥控器

    我想用51做一个格力空调遥控器 求代码或者格力的红外
    发表于 08-03 18:17

    89C52 做一个学习型遥控器

    现在有单片机89C52 红外线发射二级管 三级管 按钮 电阻 电容 0038红外接收 晶振 想做一个 学习型遥控器 遥控电视 和
    发表于 02-13 09:04

    关于万能空调遥控器的制作

    网上买了空调码库的学习型红外遥控器模块,请问下实现将它做成万能
    发表于 08-02 10:33

    手机红外空调遥控器DIY制作

    `手机红外空调遥控器DIY制作DIY&分享—GravityShare炎炎夏日,当你回到家或者办公室的时候想开空调时找不到
    发表于 07-10 00:31

    如何做一个空调红外的功能

    最近做一个空调红外的功能,上网搜了一下格力空调红外编码,就按照编码模拟时序。格力空调
    发表于 01-10 06:40

    如何做一个相机红外遥控器

    如何做一个相机红外遥控器
    发表于 02-15 07:04

    请问能用单片机加上红外做一个空调遥控器吗?

    能用单片机加上红外做一个空调遥控器吗?该怎么实现?
    发表于 11-07 06:28

    TCL 飞利浦超级SMT M61机芯电路图

    TCL SMT M61彩电电路图TCL SMT M61彩色电视机电路图,TCL SMT M61彩电图纸,TCL SMT M61原理图。
    发表于 05-06 14:40 35次下载
    TCL 飞利浦超级SMT <b class='flag-5'>M61</b>机芯电路图

    自制电脑红外遥控器

      句话,就是用电视遥控器控制电脑!   遥控器可以随便电视、VCD、DVD
    发表于 09-23 17:32 268次下载

    智能学习型红外空调遥控器分析

    为了解决空调遥控器不兼容问题,设计了款基于Atmega16单片机的智能空调遥控器。该遥控器采用
    发表于 10-16 11:11 17次下载
    智能学习型<b class='flag-5'>红外</b><b class='flag-5'>空调</b><b class='flag-5'>遥控器</b>分析

    空调遥控器维修资料下载

    空调遥控器坏了怎么办?空调遥控器哪里修?空调遥控器哪里买?
    发表于 05-13 10:13 18次下载
    <b class='flag-5'>空调</b><b class='flag-5'>遥控器</b>维修资料下载

    空调红外遥控器的实现资料详细说明

    为止。   3 把万能遥控器的的模式选为“制冷”,风量选为“自动”   4 8位拔码开关来选择“模式”,“开关”等
    发表于 08-04 08:00 5次下载
    <b class='flag-5'>空调</b><b class='flag-5'>红外</b><b class='flag-5'>遥控器</b>的实现资料详细说明

    STM32解析美的空调红外遥控器

    STM32解析美的空调红外遥控器1.红外线简介  在光谱中波长自760nm至400um的电磁波称为红外线,它是
    发表于 12-17 17:50 42次下载
    STM32解析美的<b class='flag-5'>空调</b><b class='flag-5'>红外</b><b class='flag-5'>遥控器</b>

    如何构建简单的基于红外的车门遥控器

    在这篇文章中,我们将学习如何构建简单但万无失的基于红外遥控器,该遥控器可用于通过个人
    的头像 发表于 04-02 10:37 1260次阅读
    如何构建<b class='flag-5'>一</b><b class='flag-5'>个</b>简单的基于<b class='flag-5'>红外</b>的车门<b class='flag-5'>遥控器</b>

    使用红外发射模块自制空调遥控器

    我们家里的空调、电视等,它们的遥控器都是通过红外信号来控制的。其实,我们可以自己红外发射模块来做一个
    的头像 发表于 05-23 15:43 3652次阅读
    使用<b class='flag-5'>红外</b>发射模块自制<b class='flag-5'>空调</b><b class='flag-5'>遥控器</b>