# 红外遥控 **Repository Path**: deng-yongsheng/infrared-remote-control ## Basic Information - **Project Name**: 红外遥控 - **Description**: 使用Arduino和 C#语言,包含上位机和单片机程序。 - **Primary Language**: Arduino - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2021-11-07 - **Last Updated**: 2024-09-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 红外遥控 ### 文件夹说明 ```shell ├─ifr_Receiver # arduino项目文件夹,红外接收端 ├─ifr_Transmitter # arduino项目文件夹,红外控制端 └─上位机控制软件 # C#项目文件夹,PC端的串口控制 ├─红外串口控制.exe # 已经编译好的控制软件 └─红外串口控制 # C#源码 ``` ### 接收端 ##### 接收头 - 至少5个周期38k红外载波信号才能时接收头的输出端口产生低电平,但低电平保持的时间不稳定。 - 20~25个周期的红外载波信号能使接收头产生较稳定的低电平。 - 不能持续地收发,完成一个字节的接收后,要延时40ms后,才能稳定收到下一个字节。 - 接收头和发射头的角度对数据也有较大的影响,但通常也不需要将两个精确对准。
图片左边半侧是发射和接收头传输不稳定时,右边半侧是比较稳定的状态。
![收发测试](./收发信号质量测试.png) ##### 软件部分 + 接收端信号经过接收头后,直接变成串口信号,使用ESP32的**Serial2硬件接收**。 + Arduino读取**Serial2**接收到的字节,并完成响应动作。 ### 发射端 + 接收上位机串口发送的信号,通过软件方式将其转换为红外信号后直接驱动led发送。 - 发送端信号使用的是**软件调制**。 - 接收端将载波信号直接**转为**串口信号:波特率为:**1583**,**1个起始位**为0,**8个数据位**,**8个停止位**,**无校验**位。 - 波特率计算公式: + Fc : 载波的频率,这里为38khz + Pc : 每个bit的载波周期数目,这里为24 $$ \begin{align} BaudRate &= \frac{1}{1/Fc \cdot Pc} \\ &=\frac{Fc}{Pc} \\ \end{align} $$ ### 上位机软件 ##### 截图 ![上位机软件](./上位机软件.png) ##### 按键发送信号对照表 | 按键 | 按键1 | 按键2 | 按键3 | 按键4 | | :-----------------------: | :---: | :---: | :---: | :---: | | **发送信号**(ascii字符) | 1 | 2 | 3 | 4 | ##### 使用方式 + 选择发射端对应的串口,如果没有提示”无法连接端口xx“,则说明连接成功 + 连接成功后,将发射头对准接收头,按下界面上的按键执行操作。