你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【更好用的单片机】【Stduino】Stduino学习(三十一)红外接...

[复制链接]
stduino 发布时间:2020-8-21 17:42
37种传感器(三十一)红外接收模块+Stduino Nano&UNO 2 W( p$ x% ?9 d$ `$ E

$ @: Q7 L6 b4 J+ H) ^2 }
4 q5 j2 L7 s# \5 z+ k) {9 {. r
关键词:
51 ; stm32 ; arduino ; stduino单片机; stduino UNO&Nano ;红外接收模块

! J% o8 o0 X2 o4 [7 R1 k8 p' ]说明:
红外遥控是一种无线,非接触控制技术,具有抗干扰能力强,信息传输可靠,可以降低,成本低,易于实现等显着优点,被众多电子设备采用。
红外接收头的工作原理为:接收内置管将红外发射管发射出来的光信号转换为微弱的电 信号,此信号经由 IC内部放大器进行放大,然后通过自动增益控制,带通滤波,解调,波形整形后还原为遥控器发射出的原始编码,通过接收头的信号输出脚输出到电器上的编码识别电路。
0 w; r/ ^$ K6 V: h
120601v6661jll31e1j6p7.jpg
HS0038 是经常常用到的红外接收电子元件,几乎可以接收市面所有红外遥控器的信号,因此我们采用它作为本实验的接收装置。
红外接收发射需要数据遵守一定的规则,常见的有 NEC 协议,飞利浦RC5 协议,索尼SIRC 协议,ITT ,JVC等。以NEC 协议为例,我们可以大致了解无线通信协议的规则。
首先, NEC 协议规定,逻辑1 和逻辑0 有严格的时间与电平对应关系,如下图:逻辑1 :560 μs高电平,1690 μs低电平;逻辑0 :560 μs高电平,560 μs小号低电平。
120945otp4dbtci4vsg5i5.png
实际上,一次传输的内容包括起始位(引导码), 8 位地址和8 位命令,其中为了保证数据的有效性,有效数据是这样构成的:地址+ 地址反码+ 命令+ 命令反码。反码即把0 置为1 ,把1 置为0 ,从而两次检验保证了数据的可靠性。因此,一次传输内容的构成如下:
121009r8wggntpahwslpjp.png
其中起始位为 9ms高电平和4.5ms 低电平。
最后,当按键长按时,这样是发送一个 110ms 的重复码:
121034yi2vbgrdf5d7e5xr.png
通过编写对应的程序,还可以利用红外发射可以模拟红外遥控器实现遥控功能,该部分见下分段内容。

( I! c6 D/ z3 X! i/ {$ z实验目的:
在本例中,我们将利用红外接收模块,接收遥控器发出的信号,并利用窗口显示出来。
( h5 W4 N5 m) U8 H
器材:
Stduino UNO / Nano; 杜邦线;红外接收(HS0038 )模块
5 ~. _$ w  A9 G4 N/ q
电路连接:
121144oa3xttfm0igvvwgv.png
  ]+ g/ v- @: U" D  }6 T: Y! u
代码展示:
  1. #define IRMP_INPUT_PIN 11  //定义红外接收I/O引脚
    3 u, {" Y. l! t, J) ]! f
  2. #define IRMP_PROTOCOL_NAMES 1
    0 w/ }- u( I; b0 F- d
  3. #include <irmpSelectMain15Protocols.h>//使用15个主要的IR协议
    & J4 g  f' A$ S
  4. #include <irmp.c.h>
    ' M/ V' g( n) U
  5. IRMP_DATA irmp_data[1];//数据储存
    . w# y6 V6 l! E5 ^* ^6 T8 q+ g
  6. void setup()
    & k2 `* K  ~( z
  7. {; S( n1 ?. J5 X4 y  s' j& S% b
  8.     Serial.begin(115200);
    ' c. L) z6 f0 t8 i& D# q1 D" \
  9.     irmp_init();//初始化红外通信
    + s  v) @% j: l" f& V
  10.     irmp_irsnd_LEDFeedback(true); //开始接收红外通信
    3 M' V: L# C* Y
  11.     irmp_print_active_protocols(&Serial);//打印支持的IR协议
    0 G" g' a# O( w; [- z8 o
  12. }
      H: k0 h  F3 |9 n/ ]7 c+ B  E) y. S
  13. ; M4 [% @! t5 {5 j
  14. void loop() {/ B7 |, l4 i* y; Q( O
  15.     if (irmp_get_data(&irmp_data[0]))
      F* Z( q" @6 i( u* Z
  16.     {
    5 U4 j! F5 K* v- V! a9 d; x) c
  17.         irmp_result_print(&irmp_data[0]); //输出接收到的信息3 e$ {* T0 m& E
  18.     }1 M% X, P2 s5 G# m
  19.     delay(100);) L1 Z+ t9 w  y! ]4 h; \, l; N
  20. }
复制代码

. F: S. L$ t1 H6 _& C
实验效果:
如串口监视器所示,其中 P 表示采用的RC6 协议,C 表示指令为0x05 ,R 为长按重复。
121433yorizyno7tryr7az.png
  R8 k7 ]0 Z  a  R. v# I- M8 A

Stduino IDE是一款面向32位处理器快速入门学习的集成开发平台,目前已经支持Arduino_Core_STM32框架,集聚快捷、高效、免费、开源、易得于一身,软件还集成了GDB调试功能。) a( z5 c8 \; q2 ^, v, k  O: A
IDE当前支持的功能有:

  • GDB调试
  • 封装库下载安装
  • 代码自动补全提示
  • 中英文模式
  • UTF-8\GBK编码格式
  • 代码快速格式化
  • SWD\串口程序下载&调试(已验证)
  • DFU程序下载方式(待验证)
  • USB HID程序下载方式(待验证)
  • maple DFU程序下载方式(待验证)
  • maple DFU2程序下载方式(待验证)
  • MassStorage程序下载方式(待验证)
    . m' W, V, i. t1 y3 U

    , a6 h: [$ D. i$ m% `2 H, z+ R$ w  S

" d3 v) B' f. n7 t" D+ ~! a+ r4 O

! }) m. y, c$ ~/ n1 P4 q0 r9 L1 d
- S9 t8 d: D/ d$ \7 J, x+ g
' D  f4 O' m" O3 l5 @. q

) a& z1 E% \  A' [" L; H
2 k8 C+ q4 M2 Q- ?  B
- J$ ^7 ^! {% }6 t% ?$ v8 v

更多功能细节请前往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
    $ V0 s3 [9 g5 s6 [* f

    # ~- [3 k2 q) Z: g2 [4 F- k' z
    5 H) s$ ~# ]' k9 S

更多功能集成正在进行中~

赞 收藏 评论0 发布时间:2020-8-21 17:42

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版