37种传感器(三十一)红外接收模块+Stduino Nano&UNO 8 \3 ~! d0 L7 s9 g3 W u3 @
* v# Z8 D6 o$ V) j
! q% H' S! U# a0 m& f! d8 @: [; N
关键词: 51 ; stm32 ; arduino ; stduino单片机; stduino UNO&Nano ;红外接收模块
! z0 h n& F- O6 w说明:红外遥控是一种无线,非接触控制技术,具有抗干扰能力强,信息传输可靠,可以降低,成本低,易于实现等显着优点,被众多电子设备采用。 红外接收头的工作原理为:接收内置管将红外发射管发射出来的光信号转换为微弱的电 信号,此信号经由 IC内部放大器进行放大,然后通过自动增益控制,带通滤波,解调,波形整形后还原为遥控器发射出的原始编码,通过接收头的信号输出脚输出到电器上的编码识别电路。
5 x' b# U6 K, G2 z( Q5 zHS0038 是经常常用到的红外接收电子元件,几乎可以接收市面所有红外遥控器的信号,因此我们采用它作为本实验的接收装置。 红外接收发射需要数据遵守一定的规则,常见的有 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 的重复码: 通过编写对应的程序,还可以利用红外发射可以模拟红外遥控器实现遥控功能,该部分见下分段内容。 1 Y2 P4 E8 L5 j* F
实验目的:在本例中,我们将利用红外接收模块,接收遥控器发出的信号,并利用窗口显示出来。
- h* f# u4 \# J器材:Stduino UNO / Nano; 杜邦线;红外接收(HS0038 )模块 0 H( T' f0 Q2 l3 ^
电路连接: : J) I9 t) O/ a" M0 P: H
[size=18.6667px]代码展示: - #define IRMP_INPUT_PIN 11 //定义红外接收I/O引脚
8 r! M! E: O% N* k8 K4 Z - #define IRMP_PROTOCOL_NAMES 1" U1 q% E, s! z0 {4 s* B/ g8 @/ R
- #include <irmpSelectMain15Protocols.h>//使用15个主要的IR协议
# i. w+ ?+ d8 R - #include <irmp.c.h>
9 B4 N+ r: X m' E, Y9 Y - IRMP_DATA irmp_data[1];//数据储存5 j& K) b! s6 n1 G6 m h( {
- void setup()
! I+ ]0 a% t4 _! r - {! T# S7 d$ @+ }1 S
- Serial.begin(115200);
; k( y# K# k. k/ k - irmp_init();//初始化红外通信5 c% A; z" E x- p: T
- irmp_irsnd_LEDFeedback(true); //开始接收红外通信
9 B8 }0 L% E, u - irmp_print_active_protocols(&Serial);//打印支持的IR协议
# t) B" s7 [4 _ - }
0 y; H) {3 h7 e0 }7 ]2 z& V- @ -
' n' U/ g3 i H% [& g# i) e - void loop() {$ _5 ^' P1 p: E8 t p6 E6 G
- if (irmp_get_data(&irmp_data[0]))- O( L4 D3 X' x- h* X# |$ _
- {$ b( x4 F% K9 e) G
- irmp_result_print(&irmp_data[0]); //输出接收到的信息
6 l3 g" d2 G8 }# j4 g% H! z" I - }
: y; Z1 p) K* j+ |8 C) U - delay(100);
" Q0 x' Q; ^8 U& o1 ?* H$ b - }
复制代码 0 V5 Q+ B4 S" F! U5 K
实验效果:如串口监视器所示,其中 P 表示采用的RC6 协议,C 表示指令为0x05 ,R 为长按重复。 [size=18.6667px]
* T* E+ [+ b; F5 w0 ]- G6 W: L$ M Stduino IDE是一款面向32位处理器快速入门学习的集成开发平台,目前已经支持Arduino_Core_STM32框架,集聚快捷、高效、免费、开源、易得于一身,软件还集成了GDB调试功能。8 [$ `( ?4 M2 l5 w8 e, ^& E
IDE当前支持的功能有: - GDB调试
- 封装库下载安装
- 代码自动补全提示
- 中英文模式
- UTF-8\GBK编码格式
- 代码快速格式化
- SWD\串口程序下载&调试(已验证)
- DFU程序下载方式(待验证)
- USB HID程序下载方式(待验证)
- maple DFU程序下载方式(待验证)
- maple DFU2程序下载方式(待验证)
- MassStorage程序下载方式(待验证)
7 |8 c+ f8 ^4 e$ O% E
; W0 O: K& B$ T- I + K; |* f; Y; T
# L! r7 M1 v2 j8 W' q
. L- G# @ _9 t- U# j3 |6 V% Y
! U" v: |. u D4 A& f2 Y. y: j
& L+ \. W/ v+ O8 N7 q# R" p; j# l* M& K: {1 z1 y/ _
更多功能细节请前往www.stduino.com进行了解 已经支持的芯片&板型列表: - 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+ i; {% s, A: r5 q/ _
( G; k( L* v- ]
* K/ {0 b5 c5 F; Z
更多功能集成正在进行中~ |