本帖最后由 Stduino 于 2020-8-19 12:16 编辑
说明:红外遥控是一种无线,非接触控制技术,具有抗干扰能力强,信息传输可靠,可以降低,成本低,易于实现等显着优点,被众多电子设备采用。 红外接收头的工作原理为:接收内置管将红外发射管发射出来的光信号转换为微弱的电 信号,此信号经由 IC内部放大器进行放大,然后通过自动增益控制,带通滤波,解调,波形整形后还原为遥控器发射出的原始编码,通过接收头的信号输出脚输出到电器上的编码识别电路。 HS0038 是经常常用到的红外接收电子元件,几乎可以接收市面所有红外遥控器的信号,因此我们采用它作为本实验的接收装置。 红外接收发射需要数据遵守一定的规则,常见的有 NEC 协议,飞利浦RC5 协议,索尼SIRC 协议,ITT ,JVC等。以NEC 协议为例,我们可以大致了解无线通信协议的规则。 首先, NEC 协议规定,逻辑1 和逻辑0 有严格的时间与电平对应关系,如下图:逻辑1 :560 μs高电平,1690 μs低电平;逻辑0 :560 μs高电平,560 μs小号低电平。 实际上,一次传输的内容包括起始位(引导码), 8 位地址和8 位命令,其中为了保证数据的有效性,有效数据是这样构成的:地址+ 地址反码+ 命令+ 命令反码。反码即把0 置为1 ,把1 置为0 ,从而两次检验保证了数据的可靠性。因此,一次传输内容的构成如下: 其中起始位为 9ms高电平和4.5ms 低电平。 最后,当按键长按时,这样是发送一个 110ms 的重复码: 通过编写对应的程序,还可以利用红外发射可以模拟红外遥控器实现遥控功能,该部分见下分段内容。
实验目的:在本例中,我们将利用红外接收模块,接收遥控器发出的信号,并利用窗口显示出来。
器材:Stduino UNO / Nano; 杜邦线;红外接收(HS0038 )模块
电路连接:
代码展示: #define IRMP_INPUT_PIN 11 //定义红外接收I/O引脚
#define IRMP_PROTOCOL_NAMES 1
#include <irmpSelectMain15Protocols.h>//使用15个主要的IR协议
#include <irmp.c.h>
IRMP_DATA irmp_data[1];//数据储存
void setup()
{
Serial.begin(115200);
irmp_init();//初始化红外通信
irmp_irsnd_LEDFeedback(true); //开始接收红外通信
irmp_print_active_protocols(&Serial);//打印支持的IR协议
}
void loop() {
if (irmp_get_data(&irmp_data[0]))
{
irmp_result_print(&irmp_data[0]); //输出接收到的信息
}
delay(100);
}
实验效果:如串口监视器所示,其中 P 表示采用的RC6 协议,C 表示指令为0x05 ,R 为长按重复。
Stduino IDE是一款面向32位处理器快速入门学习的集成开发平台,目前已经支持Arduino_Core_STM32框架,集聚快捷、高效、免费、开源、易得于一身,软件还集成了GDB调试功能。IDE当前支持的功能有:
GDB调试
封装库下载安装
代码自动补全提示
中英文模式
UTF-8\GBK编码格式
代码快速格式化
SWD\串口程序下载&调试(已验证)
DFU程序下载方式(待验证)
USB HID程序下载方式(待验证)
maple DFU程序下载方式(待验证)
maple DFU2程序下载方式(待验证)
MassStorage程序下载方式(待验证)
更多功能细节请点击图片上水印显示的网址进行了解
已经支持的芯片&板型列表:
Stduino UNO&Nano
Nucleo 144 boards
Nucleo 64 boards
Nucleo 32 boards
Discovery boards
Eval boards
STM32MP1 series coprocessor boards
Generic STM32F0 boards
Generic STM32F1 boards
Generic STM32F3 boards
Generic STM32F4 boards
Generic STM32H7 boards
Generic STM32L0 boards
3D printer boards
LoRa boards
Electronic Speed Controller boards
Generic flight controllers
Garatronics boards
Midatronics boards
更多功能集成正在进行中~
|