【问题标题】:Control a USB light via software通过软件控制 USB 灯
【发布时间】:2011-04-04 12:08:45
【问题描述】:

我有一个 USB 供电的小灯。我希望能够用软件打开和关闭它。我将把它连接到一台 Linux 计算机上。我有一个来自 previous projectAtmel ATtiny2313,但我宁愿通过简单的 hack 来做到这一点,也不愿重新利用我的微控制器。

这可能吗?我怀疑这无法完成,因为计算机不会与没有某种 USB 兼容固件的设备通信?

我找到了this question,其中有一条评论建议 OP 使用 LM317 稳压器来改变 USB 输出的电压。我认为这不适用于我,但我想我会提到它。

更新:

看起来我可以将USBtiny 放在我的微控制器上,然后我可以将它连接到灯上,然后我可以编写一个应用程序来控制控制器。不过,听起来工作量很大。我宁愿做一个简单的 hack,但我缺乏使用 USB 的经验。

【问题讨论】:

  • 如果你有一个并行端口,那么控制它会很容易,虽然不是最节能的做事方式。
  • 因为并联是5V,对吧?不幸的是,这台电脑很新,只有USB。我还有一个 USB 串口适配器……嗯……也许是软件 -> USB -> 串口适配器 -> 灯?
  • 我还没有真正使用过 PoE。我认为这个价格对于这个项目的规模来说可能是不合理的,但这很有趣。您可以只打开和关闭各个端口的电源吗?
  • 我投票结束这个问题,因为它是关于电子产品的,而不是关于软件的。

标签: linux hardware usb microcontroller atmel


【解决方案1】:

我不认为这是可能的,因为 USB 上的电源 (Vcc) 线始终处于开启状态——它不打算用作控制线。

除非您的 USB 灯已经提供了一种通过 USB 数据进行自我控制的方法,否则您将不走运。我不建议尝试改变 USB 电源线的电压。

【讨论】:

  • 但是我可以操纵计算机输出的数据并将其用作晶体管或微控制器的输入吗?然后我可以控制是否让5V通过灯。我只是不知道如果另一端的设备不是合法的 USB 设备,我是否可以操纵 USB 端口上的数据引脚。
  • 那么你会将usb端口上的数据线分流到你自己的微控制器上吗?我想有办法,但是你必须学习 USB 硬件层以及如何为其编写驱动程序。
  • 是的!我认为您基本上是对的,但USBtiny 应该适合我的微控制器,并且应该为我担任这个角色。无论如何,我可能会为了好玩而学习 USB 硬件层。
【解决方案2】:

您最好的选择可能是购买 FTDI 接口电缆之类的东西,从 Digi-Key 以 20 美元的价格购买。这为您提供了 +5、接地和四根线,您可以在软件控制下切换高或低。如果您将其用作具有 rx/tx/rts/cts 的逻辑级串行端口,则该软件最简单。制造商零件编号为 TTL-232R-5V-WE(访问 digikey.com 并将该编号输入零件搜索框中)。 Digi-Key 提供指向制造商数据表和网站的链接。

【讨论】:

  • +1 DigiKey 是用于严肃电气/计算机工程的绝佳资源。
  • 这看起来很酷。我认为我目前的 USB/串行桥可以在这里帮助我。我有一个 [PL-2303 ](prolific.com.tw/eng/products.asp?id=59) USB/串行适配器。觉得这样可以吗?
  • 感谢您的建议并 +1,但它并没有真正回答我的问题。不过,感谢 DigiKey 和 FTDI 提示!我特别感谢零件号。
【解决方案3】:

也许您可以告诉 USB 控制器切断 USB 端口的电源。我在 PC 的省电设置中看到了这个选项。

【讨论】:

  • 我觉得我做不到。尤其是在设备很笨的情况下。
【解决方案4】:

我想这可以通过计算机打开/关闭 USB 端口以节省电池的能力来实现。经过令人惊讶的简短搜索后,我发现了另一个问题:

Controlling a USB power supply (on/off) with linux

虽然我没试过。请让我们知道它是否有效!

【讨论】:

  • 如何在 Windows 8、10 中执行此操作?
【解决方案5】:

我将使用基于PL-2303 的USB/串行桥接器和运行USB 堆栈的ATtiny2313 微控制器——可能是USBtiny。它会像这样工作:

  • USB 灯直接连接到微控制器,而不是计算机
  • 应用/驱动程序通过 USB 控制微控制器
  • 微控制器设置 USB 灯的电压

我会考虑接线,以便在某些输出端有一些电阻,这样我就可以将灯设置为不同的亮度,如果我想做图案或其他任何事情,我会在软件中完成。

【讨论】:

    【解决方案6】:

    是否可以重新连接 USB 连接器,以便将 USB 灯的电源连接到 USB 端口的数据而不是连接到 VCC?

    那么也许你可以控制它并指定它是 0 伏还是 5 伏。

    不确定这是否可能,我对usb一无所知。

    【讨论】:

    • 我考虑过这个,但如果另一端的设备没有进行 USB 通信,我怀疑我是否能够与 USB 端口的数据线通信。我对USB也知之甚少。不过,我想在这个项目结束时我会知道很多。 :)
    【解决方案7】:

    USB 是一种通用总线,需要驱动程序和如何使用它的说明。它具有更大的灵活性,但同时所有逻辑都应该存储在某个地方(驱动程序/应用程序/等),这并不容易“可扩展”,例如 Windows、Linux、Phone 等......所有这些都需要不同的应用程序和管理......不幸的是,无法在本地启用/禁用 USB(例如管理输出电源,因为它主要在 BIOS 级别进行管理,这在操作系统级别并不完全可用 - 实际上检查你的主板是否支持 IPMI - 这是一个管理工具适用于较低级别,但大多仅适用于服务器类型的硬件)


    我对开/关灯也有类似的需求,但更多的是用于指示。我的用例:我们有一个办公室,负责销售、支持等……电话不经常,但是当它们到位时,最好保持安静。而且由于人们使用相同的耳机听音乐 - 从侧面看,您无法了解通话是否正在进行......

    所以,这个想法是:

    • Arduino(以后可以针对更便宜的东西进行优化)
    • WIFI 连接
    • LED 灯(5V 理想,但可能是 12V)
    • 通过电源适配器或 USB 供电(稍后可以检查电池是否正常)
    • 通过网络浏览器完成管理(简化管理,例如 - 可以通过 Chrome 扩展程序、网页上的按钮、从(在我的情况下)电话系统远程管理)

    如果一切都会好的-可以在上面添加一些集中管理(所有灯都可以在系统中注册(例如WebSocket,或者用于集中管理的google pub/sub)。在这种情况下,可以由电话系统以集中的方式远程触发,例如:如果有来电 - 来电时灯会开始闪烁以引起注意,并在来电时自动打开......另外可以类似的方式完成用于 Google Meeting、Zoom 以及计算机上的任何其他应用程序)

    PS:最好能找到任何像这样准备好的东西......但是哦,好吧 - 目前还没有找到任何东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-14
      相关资源
      最近更新 更多