您可以使用此通用红外接收器(UIR)项目来控制您的
PC:
所有触摸按钮 - 实际上有电视遥控器!
波特 Rate | 57600 Baud |
钟 | 内部的 8Mhz |
删除控件 type | 任何(点 控制在它并让PC软件了解它 codes). |
注意:一些遥控器需要
两个按键(如果按相同的键)输出反相密钥
重复键的顺序。如果按下不同的键,则它将其工作为
normal remote.
|
|
编译器 | Mikrolectronika mikroc. 自由 ! |
目标 | 16F88(重新标准到具有内置USART的其他照片)。 |
软件级别 | 简单。 |
软件说明 | 没有特别的笔记。 |
硬件级别 | 简单。 |
硬件笔记 | 没有特别的笔记。 |
项目版本 | 1.01 |
项目文件 | 输入您的详细信息以获得 下载链接 并获得微控制器通讯: (注意:您的电子邮件安全它永远不会
be sold or rented). |
该项目使用标准红外探测器模块(其中一个引脚中的一个
设备)作为主输入。
It'不值得制作自己的电路
它不会符合三个引脚解调器模块的性能。
我有一个我在网上发现的一些电路,但这些电路使用了PIN二极管
和一个高阻抗放大器。 lm3140 - 但电路实际上是
当光线闪耀时(甚至台灯) - 所以
它们对IR光不敏感 - 销二极管对任何光线反应
资源。你可以在大约六英尺左右得到一些用处,但很多
工程已经进入了三个引脚模块,所以它真的值得使用
他们,他们很便宜。
模块内部是PIN二极管,AGC电路,带通滤波器,控制逻辑
和输出探测器。数据表指定15米(45英尺)的使用
可能是30米(90英尺)的最大!这些是非常好的探测器
对阳光不敏感(在引脚二极管上有物理过滤器和
电子带通滤波器)。
这两者都非常便宜和有用。您可以了解更多信息 USB适配器 在 the link.
这个项目比应该的时间更长,我已经最终得到了远远 比我的初始尝试更小的源代码!首先,我使用了捕获 CCP和Timer1计时器的设施,以准确测量每个时段 高低解码的IR。这结果太准确了!
你不'在这个项目中需要准确性 - IR代码设计不需要 准确测量,如果您在边缘尝试略有变化 位置或测量精度导致输出编号更改。自从此以来 PC中的解码器软件依赖于可重复的数据流(轻微 变化)此方法不起作用。
设计IR信号,以便您可以对其进行样本,但这需要 您提前知道代码序列(或编码例如RC5),以便您可以 从开始序列到比特位置的精确中间的时间。
由于此项目允许您使用任何遥控单元,因此编码 序列预先知道,所以解决方案是样本 高频的远程控制序列。
问题是,如果您开始从第一个上升沿解码 由于遥控输出的略有变化(或 采样边缘与输入转换同时发生)导致随机 数据流输出不能可靠地由PC软件解码。
该解决方案是从每个上升和开始的输入数据进行采样 在重置比特测量时段计数器(周期计数器)的下降沿。 在每个样本点(这里约为50us),期间计数器是 递增。这给出了一个代表每个高或低的时段的数字 part of the signal.
50us采样周期约为预期信号周期的十倍(IR 代码通常使用500us最小时期)所以这给出了一个很好的时期 measurement.
请注意,周期计数器长为8位 对于长输入序列(高或低)的计数器包裹 - 这 由于期间计数器始终产生相同的值,因此无关紧要 相同的输入序列,这就是PC解码器软件正在寻找的 for.
在每个信号过渡时,周期计数器值被发送到RS232
界面所以该值表示上一个的50us句号
框架。发送的值是原始二进制编号,您无法在其中查看它
当你赢了时,终端如Tera术语'T获得可读价值。
为了停止序列,永远不会生成RS232数据,计数器值是
监控直到它超过200.如果同时输入输入的值
是零,然后输出停止和控制返回到等待下一个
中断I.E.下一个遥控器键按。
注意:内部USART大约需要30us到
设置,然后熄灭并自行传输字节,在57600
波特大约需要170us,所以下一个传输前有充足的时间
(500us IR代码期)。您可以使用较低的波特率e.g 38400
still fit.
如果您使用了诸如9600等波特率,那么一个字节将需要〜1ms来传输
这将意味着丢失的时间数据 - 它可能是仍然可以获得的
指示代码周期,但可能并不总是有效。
在PC上运行的主要红外控制程序是 Winlirc. 这允许控制
PC通过串口输入(或USB数字串行端口)。
我已经测试过了
具有以下遥控器的红外接收器和PC远程控制:
这些都有工作精细 - 有些你必须按两次按钮作为代码 交替以适用于相同的键。它希望它与任何遥控器一起工作 控制器,因为这些表示各种不同的编码方案。
通用红外接收器使用IR解码器模块(注意那里 没有标准的引脚,你必须检查你的版本's pinout using its data sheet).
电路没有什么困难,它只是由一张照片组成 micro, an ICSP. 接口和RS232级别 translator.
该软件包含在两个文件中:
红外线接收器 Source Files
16F88-Infrared-Decoder.c
比特
比特 包含 编译器独立的位操作宏。
红外线接收器 Project Files
16f88_infrared_decoder.mcppi.
红外线接收器 Output files:
16f88_infrared_decoder.hex.
有关编译这些文件的教程 点击 here.
您可以重新编译串行红外接收器文件以检查 代码的操作(使用内置模拟器)或更改源代码。 十六进制文件包含在下载中。
您可以通过电路中的PIC编程 ICSP. connector.
main()唯一的用途是初始化端口和中断 - 它
进入等待中断的无限循环。
输入引脚RB0用作中断源然后轮询。一个中断
对于RB0,设置在发生上升沿时触发(可能是
作为解码输出的下降沿反转 - 但它的工作原理!)
当中断发生时,调用例程Sample_Bits - 注意这是
在中断内,因此sample_bits成为中断例程的一部分
itself.
Sample_bits()采取控制并轮询如前所述的RB0输入。
它还在适当点返回对中断例程的控制;
等待下一个遥控键按下。
从PIC跳跃 红外线接收器 to
最佳微控制器项目主页。
使用ADS1115精度16位ADC进行教程进行低功耗。
arduino. 模拟输出:如何创建最精确的PWM模拟输出以及如何创建模拟PWM正弦波。
了解DigitalWrite()的工作原理......现在使用17倍宏宏!
如何使用TCS230(/ TCS3200)彩色检测器芯片并轻松将其添加到您的任何项目中。
使用ADXL345 Acellerometer,您可以检测到16G!您还可以了解如何使用它来点击检测等。
HMC5883L - 如何制作数字罗盘,了解HMC5883L和QMC5883L之间的差异以及它们是否兼容。
新的! Comments
让你说到你刚刚阅读的东西!留下下面的框中的评论。