跟随+明星公众号,不要错过令人兴奋的内容来自|的糖转移MultiMCU EDU红外遥控器对我们并不陌生,我们到处都能看到它,最常见的是家用电器中的红外遥控器,您知道发送和接收的原理吗?今天,我将分享一篇有关红外解码的文章。
1硬件连接红外解码仅需连接3根线(2个电源+ 1个数据),如下图TSOP382所示。
2NEC协议解码本文介绍的红外编解码器采用NEC协议。
在通信数据帧中使用高电平时间来区分0和1。
对于按下然后按住的时间,NEC协议的处理如下:上图中写的也称为“重复启动代码”。
对于红外通信协议,搜索关键词“ IR指导码”。
将使查找结果更加容易。
NEC的编码规则非常简单,如下图所示:逻辑分析仪捕获的实际波形如下,可以通过上述规则相互确认:3Arduino红外解码复制上图中的代码如下所示:#include const int irReceiverPin = 2; IRrecv irrecv(irReceiverPin);解码结果结果;解码结果res_last;无效setup(){Serial.begin(9600); irrecv.enableIRIn();} void loop(){if(irrecv.decode(& results)){if(res_last。
value!= results.value){res_last.value = results.value; Serial.print(“ irCode:”); Serial.print(results.value,HEX); Serial.print(“,”位:“)”;序列号。
println(results.bits);} irrecv.resume(); }} 4STM32红外解码1.参见“江涛带你玩STM32-CubeMX红外NEC解码实战(外部)外部中断模式”。
外部中断模式的优点关键是:可以使用任何引脚。
由于不使用片上定时器外设,因此需要使用CPU计数方法来计算时间。
2.定时器捕获方法是指“江涛带你玩STM32-CubeMX红外NEC解码实战(第二部分)-定时器TIM捕获方法”。
定时器捕获方法需要使用定时器相关的引脚。
优点是CPU不参与计时。
解放的CPU可以做其他事情。
PS除NEC协议外,还有许多其他用于红外通信的协议,可以在Mixly图形编程软件中看到,如下图所示:本文选择了最简单的NEC协议来讨论红外解码,并且旨在简单地反映红外通信的应用。
因此,没有介绍38kHz载波的概念。
如果您想了解更多,可以参考“ STM32红外遥控信号自学习实现”。
5接收和发送解码之间的区别如上图所示,红外通信的特殊方面是发送和接收数据的反转。
这导致尽管可以从发送方或接收方解析正确的数据,但是在解码时必须注意极性。
如果极性接反,则无法解析数据或无法正确解析数据。
通讯实验:如上图所示,作者认为发送和接收之间的相位差增强了实验的真实性。
作者使用两个单片机ATMega 2560和ATMega644。
选择Arduino系列单片机的原因是懒惰而不是编写软件。
让我们放大一段数据并仔细查看38KHz载波的样子:上图中的结论是“发送者”的行为。
从“接收器”的角度写的。
换句话说:1.如果您希望接收方接收到0,则发送方将发送一个38KHz的载波; 2.如果您希望接收方接收1,则发送方将停止发送载波。
不可避免地有人会在这里问:停止载波实际上会使接收器收到1,因此如何区分“停止通信”和“停止通信”。
和“通讯1”?可以从NEC协议的作用中看出这个答案:一个数据帧有一个头和一个尾,在头和尾之间发送的停止是数据1,不在头和尾之间发送的停止是no。
沟通。
------------结束------------推荐读物:专题摘要|列|目录|搜索特色摘要| ARM,Cortex-M特色摘要| ST工具,下载编程工具,关注微信公众号“嵌入式列”,在底部菜单中查看更多内容,然后在“添加组”中回复“添加组”。
按照规定加入技术交流小组。
点击“阅读原件”查看更多分享,欢迎分享,喜欢,喜欢,观看。
免责声明: