介绍TV Devil,一个简单的远程控制Arduino恶作剧

将其隐藏在您的客厅中,然后笑起来,因为TiVo盒子似乎是由要求观看俗气的购物频道的恶魔所拥有的。无论您的最终目标是关闭附近的每台电视,还是构建通用的Siri控制的遥控器,该项目都是学习IR控制和接收器基础知识的一个很好的起点。

在此“恶作剧",我们将制造一种设备,该设备可以记录,然后回放一系列IR远程命令。它可以与使用IR遥控器的任何设备一起使用,甚至可以同时使用多种设备-最多记录10次按键。

组件

以下是列表该项目需要的东西:

  • Arduino和跳线
  • IR接收器,例如TSOP382 –但您应该能够在旧电子产品中找到兼容的接收器。我从备用的RGB灯光控制器中拉出了我的。它们通常有3条腿,呈黑色,一侧看起来像LED,被切成两半并粘在上面。我敢肯定有一个专门的术语。
  • IR发射器LED,例如TIL38,这又很常见,但是我从Maplin购买了一个新的高功率二极管。它们看起来与任何其他LED相同,因此请确保不要将它们混入电子套件中!
  • 适用于IR LED的电阻器–给定电源电压(来自Arduino的5 V,请使用此LED计算器) )以及LED数据表中的正向电压和电流(通常在20 V时约为1.2 V)。就我而言,这是220欧姆。
  • 按钮,还有10k下拉电阻和100欧姆电阻。
  • 从Github下载Ken Shirriff的IR远程库,并将其放在 Arduino /库文件夹。我们还将使用一些示例代码,然后可以从Arduino Open-> Libraries 菜单中访问它们。
  • 接线

    解决此电路问题三个部分–切换有点麻烦,但是其他一切都很容易。请记住,LED的平整表面的短脚是阴极(负极或接地)。

    接收信号

    继续并打开 libraries / IRremote / IRrecvDemo 示例代码。确保正确设置 RECV_Pin ,进行编译和上传,然后以9600波特打开串口控制台。拿起您必须要拿到的遥控器,将其对准接收器并开始按下按钮。不同的按钮将产生不同的代码。有些会指示长按输入初始代码,然后输入 FFFFFF ,而不同的遥控器可能会简单地再次重复该代码。

    有关所接收数据的更多详细信息,请请查看 IRrecvDump 示例,该示例将指示接收到的信号类型(在这种情况下为32位NEC)和原始值。众所周知,但是在大多数情况下,您只需要解码后的值。

    重复信号

    我们今天不会从头开始编写恶作剧,所以请继续并查看 IRrecord 示例。这里的代码复杂度大大增加,但是处理所有类型的IR代码几乎全部都是应付的–基本上,这就是循环内发生的事情:

  • 检查是否按下了按钮,如果
  • 如果没有被按下并检测到信号,请记录该信号。
  • 此示例的最大局限性是它只能与一个信号一起工作。一次输入代码,因此如果您按下另一个远程按钮,它将覆盖最后一个。该按钮仅重播它收到的最后一个信号。编译并运行代码,以便您可以使用此基本信号转发器。为了播放单个信号,它可以正常工作,但是在恶作剧或其他情况下几乎没有实际用途。

    恶作剧!

    让我们对其稍加修改以记录10个或更多的调皮捣蛋。信号。您可以在此处找到完整的修改后的代码,但这是我所做的更改的概述,以防您想自己进行编程:

  • 定义3个新的大小为10的数组,用于存储每次检测到一组信号,并存储一个整数以存储这些数组的大小。
  • 存储我们当前在该数组中的位置的索引。每次检测到信号时都增加索引,但是如果信号是重复代码则不要增加索引。
  • 一个布尔值,一旦达到最大值,该布尔值将停止更多的记录。
  • 一个布尔值,指示我们是否处于播放模式,而不必按住按钮;还修改了按钮逻辑以对此进行切换。
  • 请注意,一旦内存已满,Arduino上的指示灯LED(引脚13)将激活。现在,您必须记录10次按钮按下-不少于一次-重放模式将在每次按钮重放之间等待1秒。它正在起作用:

    您可以进行更多的IR恶作剧,或者认为这是一个史诗般的家庭自动化项目的良好开端;并且不要忘了检查所有其他Arduino项目。在评论中分享您的创作(或问题),请在您最喜欢的社交网络上分享您的文章,以表示对本文的感谢!

    图片来源:DaGoaty

    标签: Arduino 电视