请选择 进入手机版 | 继续访问电脑版

『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 89116|回复: 233

[进阶教程] 基于Tasmota DIY红外遥控器,支持模拟空调浴霸等高码率信号

  [复制链接]

23

主题

1324

帖子

6473

积分

超级版主

Rank: 8Rank: 8

积分
6473
金钱
5124
HASS币
100

教程狂人

发表于 2018-12-30 17:20:37 | 显示全部楼层 |阅读模式
本帖最后由 natic 于 2022-5-20 14:42 编辑

Tasmota 18年12月25号更新了v6.4.1版本,增加了发送和接受IR raw data的支持,但是源码不支持空调浴霸这类型的大比特率的红外码,需要对源码进行一些修改才能获得支持(后面有具体的方法)
  • Add command SetOption58 0/1 to enable IR raw data info in JSON message (#2116)
  • Add command IRSend <frequency>|0,<rawdata1>,<rawdata2>,.. to allow raw data transmission (#2116)

前期准备,除去mcu其他元件最多几毛钱一个,综合成本超级低
1,esp8266开发板,nodemcu sonoff basic都可以
2,1838B红外接收管
3,2N2222晶体管
4,红外发射管,型号随意
5,电阻杜邦线面包板若干
6,刷tasmota配置wifi和mqtt服务器这些论坛里面有很多帖子,这里就不重复了
刷好最新固件进入tasmota配置页面,如下图配置,保存

                               
登录/注册后可看大图

                               
登录/注册后可看大图


mapping.png

然后在进console输入SetOption58 1
console.png

连接红外发射和接收管到开发板,如下电路图
接线可以参考https://github.com/altelch/SonoffIR
1,1838B红外接收管最左边是数据头接GPIO,中间GND, 最右边3.3v
2,红外发射管正极接2.5-5欧电阻,电阻接到3.3v,负极接晶体管集电极c
3,晶体管基极b接GPIO,这里三极管b只负责通断路,为了安全最好串联一个电阻以免电流过大引发火灾,我用的330欧姆
4,晶体管发射级e接GND

                               
登录/注册后可看大图

config.jpeg


配置好重启8266即可,使用遥控器在接收管旁边按一下就能接收到如下mqtt消息
tele/sonoff/RESULT {"IrReceived":{"Protocol":"UNKNOWN","Bits":196,"Data":"F149067","RawData":[3480,1816,392,496,392,1366,392,494,392,494,394,496,392,498,392,494,392,496,392,496,366,518,392,496,366,518,366,520,366,1392,390,498,392,498,392,494,392,494,392,494,392,496,392,1366,392,494,392,1366,392,1370,392,496,392,494,392,1366,392,494,392,494,394,1364,392,480,392,508,392,494,392,1366,392,494,390,498,366,1392,394,1368,366,518,394,1368,368,1390,392,494,390,494,368,518,368,1392,368,518,394,494,368,520,368,1370,414,494,368,1388,392,496,368,518,394,1366,390,496,394,494,390,496,368,520,368,516,394,494,366,520,394,496,366,1392,394,496,392,1366,368,518,368,520,368,518,368,1392,392,496,368,1388,394,496,366,1392,394,496,388,1368,394,496,366,518,368,1392,366,1392,390,496,392,496,366,518,392,494,392,496,368,520,366,520,366,520,368,1392,368,518,394,1368,366,1390,366,520,394,496,366,520,368,520,368,1390,394,30194,3476,1790,390,496,366,1392,390,496,366,520,390,498,366,520,392,498,366,522,366,522,390,498,366,520,392,500,366,518,392,1368,366,522,392,498,366,518,390,496,366,520,392,496,366,1392,366,518,392,1368,394,1370,366,520,390,498,366,1392,388,498,366,520,344,1412,368,518,372,514,392,498,394,1368,392,496,366,520,392,1368,366,1392,366,520,366,1392,390,1372,366,520,366,522,366,520,394,1366,390,498,368,520,388,498,366,1394,392,496,366,1390,366,522,390,498,390,1370,392,496,344,542,366,520,392,494,366,522,366,522,344,542,390,500,390,1368,392,496,366,1392,392,496,366,520,366,520,366,1392,390,498,390,1368,392,496,366,1394,392,494,392,1368,366,522,392,496,390,1368,392,1368,366,522,366,502,368,538,388,498,392,496,368,518,366,522,390,496,366,1392,366,520,366,1392,392,1368,366,522,390,474,370,540,390,498,390,1370,366],"RawDataInfo":[391,391,0]}}

注意mqtt消息中几个JSON元素,
"Bits":196  196代表红外信号的比特率
"RawData":[xx,xx,xx,xx,xx,xx],就是我们接收到的原始红外码,用作后续的红外发送
"RawDataInfo":[391,391,0],这个是校验码,如果前面2个参数必须一样,记住这两个参数,测试发射的时候还会用上,具体参数的意义参考Theo的原文
https://github.com/arendst/Sonof ... uecomment-440716483

使用mqtt发送红外raw data,叉叉就是上面咱们收到的RawData里面的内容,0代表38kHz的发射频率,这里使用0即可
cmnd/sonoff/IRSend 0,xxx,xxx,xxx


如果进行的顺利会再收到2条mqtt消息,一条代表发送成功,如下所示
stat/sonoff/RESULT {"IRSend":"Done"}

另外一条则是你刚才发送的消息,因为发送的同时会被接收器接收到,比对发送的和接收的消息是否一致,RawDataInfo参数是否一样,如果不一样说明并且bits比较高那么你需要按照如下的步奏更改源码并且重新编译

隐藏内容是编译好的bin文件和代码修改部分,适用于高码率的设备
sonoff.ino.nodemcu.bin (537.69 KB, 下载次数: 112)
我在第一时间更新了6.4.1版本,但是事实很残酷,有很多坑需要填,Theo仅仅支持了比较小的红外码,比如32bits
1,Console里面的irsend命令长度有限制,最好用终端发mqtt消息来测试
2,可能需要增加源码中mqtt包的大小,取决于你的红外消息长度,我的浴霸遥控有196bits, 391个包,一个包里面平均3-4个数字外加逗号分隔符,所以需要设置为2000左右
/lib/PubSubClient-EspEasy-2.6.09/src/PubSubClient.h 27行

                               
登录/注册后可看大图
pub.png


/sonoff/sonoff_post.h  409行
post.png

                               
登录/注册后可看大图


3,源码仅支持255长度的包,需要把byte类型改成uint16_t
/sonoff/xdrv_05_irremote.ino  534行

534.png

4,红外接收的buffer不够,间隔太短,需要修改
/sonoff/my_user_config.h  384 385行

10050.png

做以上修改,并且重新编译刷机即可获得支持

下面是我在GitHub上面的回复,可以作为参考
https://github.com/arendst/Sonof ... uecomment-450535745



















评分

参与人数 2金钱 +36 收起 理由
loog + 16 果然万能遥控,空调电视全部一个红外头搞定.
+ 20 厉害了word楼主!

查看全部评分

回复

使用道具 举报

6

主题

179

帖子

4137

积分

论坛元老

Rank: 8Rank: 8

积分
4137
金钱
3958
HASS币
0
发表于 2018-12-30 18:40:14 来自手机 | 显示全部楼层
很有兴趣,等学习
回复

使用道具 举报

175

主题

2956

帖子

7555

积分

超级版主

我就是六神

Rank: 8Rank: 8

积分
7555
金钱
4574
HASS币
398

活跃会员教程狂人灌水之王

QQ
发表于 2018-12-30 18:54:18 | 显示全部楼层
了解一下
回复

使用道具 举报

9

主题

534

帖子

4412

积分

元老级技术达人

积分
4412
金钱
3868
HASS币
60
发表于 2018-12-30 19:18:38 | 显示全部楼层
希望能补充下,自己做个遥控空调
回复

使用道具 举报

123

主题

4620

帖子

1万

积分

管理员

囧死

Rank: 9Rank: 9Rank: 9

积分
15961
金钱
11256
HASS币
45
发表于 2018-12-30 23:01:00 | 显示全部楼层
灰常好的消息,希望楼主详细介绍下
回复

使用道具 举报

7

主题

1968

帖子

5637

积分

论坛元老

流水无味

Rank: 8Rank: 8

积分
5637
金钱
3669
HASS币
145

灌水之王

发表于 2018-12-31 07:30:33 | 显示全部楼层
学习一下  一直没对红外动手!!     
回复

使用道具 举报

23

主题

1324

帖子

6473

积分

超级版主

Rank: 8Rank: 8

积分
6473
金钱
5124
HASS币
100

教程狂人

 楼主| 发表于 2018-12-31 11:07:36 | 显示全部楼层
sangood 发表于 2018-12-30 19:18
希望能补充下,自己做个遥控空调

更新了基本步奏
回复

使用道具 举报

23

主题

1324

帖子

6473

积分

超级版主

Rank: 8Rank: 8

积分
6473
金钱
5124
HASS币
100

教程狂人

 楼主| 发表于 2018-12-31 11:31:03 | 显示全部楼层
Jones 发表于 2018-12-30 23:01
灰常好的消息,希望楼主详细介绍下

已完善,紫薯布丁

评分

参与人数 1金钱 +18 收起 理由
+ 18 大神666!

查看全部评分

回复

使用道具 举报

23

主题

1324

帖子

6473

积分

超级版主

Rank: 8Rank: 8

积分
6473
金钱
5124
HASS币
100

教程狂人

 楼主| 发表于 2018-12-31 11:37:11 | 显示全部楼层
geyue2800 发表于 2018-12-30 18:40
很有兴趣,等学习

已经完善了
回复

使用道具 举报

23

主题

1324

帖子

6473

积分

超级版主

Rank: 8Rank: 8

积分
6473
金钱
5124
HASS币
100

教程狂人

 楼主| 发表于 2018-12-31 11:38:14 | 显示全部楼层

已经完善了基本步奏
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-3-28 21:05 , Processed in 0.212178 second(s), 37 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表