# 红外传输 **Repository Path**: deng-yongsheng/infrared-transmission ## Basic Information - **Project Name**: 红外传输 - **Description**: 基于ESP32 Ardunino 的红外文本传输,上位机为C#语言。 - **Primary Language**: C# - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2021-10-19 - **Last Updated**: 2024-09-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 红外传输 ### 介绍 基于ESP32 Ardunino 的红外文本传输,上位机为C#语言。 效果:
发送端
![image-20211019132137341](./imgs/发送端-上位机.png)
接收端
![image-20211019133951209](./imgs/接收端-上位机.png) ### 特性 - 38kHz的红外载波。 - 每个bit占用**24**个载波周期。 - 最少:5个周期,低于5个容易收不到消息 - 最佳:20~25个周期
接收端收到较稳定的型号
示波器下接收到的较稳定的波形
接收头和发射头的角度对数据也有较大的影响,图片左边半侧是传输不稳定,右边半侧是比较稳定的状态
- 发送端信号使用的是**软件调制**。 - 接收端信号经过接收头后,直接变成串口信号,使用ESP32的**Serial2硬件接收**。 - 接收端将载波信号直接转为串口信号:波特率为:**1583**,**1个起始位**为0,**8个数据位**,**8个停止位**,**无校验**位。
波特率计算公式:
$$ \begin{align} BaudRate &= \frac{1}{(1/CarrierFrequency*CarrierCyclesInOneBaud)} \\ &=\frac{CarrierFrequency}{CarrierCyclesInOneBaud} \\ \end{align} $$ ### 缺陷 - **不支持透明传输和差错控制** - 不支持持续接收。接收头每接收一个字节,需要停止40ms。不停止持续接收回导致后续数据丢失,这个缺陷原因还未知,应该是接收头本身的特性。 - 我参考了网上的一篇文章逆向的格力空调遥控协议,写出来后却不能够控制空调,目前认为是文章所给的协议的问题。 - 这是我参考的文章:[格力空调红外遥控器编码详解](http://www.51hei.com/bbs/dpj-119467-1.html) - 另一篇也是格力空调,但是协议内容不一样的文章:[格力空调红外编码分析](https://blog.csdn.net/qq1518572311/article/details/80747508) - 这两篇文章,一个提到了校验码,一个没有提到校验码