【问题标题】:How to controll relay (one channel) connected to USB port in Linux?如何在 Linux 中控制连接到 USB 端口的继电器(一个通道)?
【发布时间】:2020-06-30 12:22:03
【问题描述】:

Linux中如何控制连接到USB端口的继电器(一个通道)?

这张图片说明了 USB 电缆连接。

将继电器连接到 USB 端口时,继电器会持续开启。但是在终端执行 lsusb 时,系统找不到设备。

连接前的lusb输出:

Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 002: ID 1358:c123  
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 13d3:56f9 IMC Networks 
Bus 001 Device 004: ID 27c6:5110  
Bus 001 Device 003: ID 05e3:0610 Genesys Logic, Inc. 4-port hub
Bus 001 Device 002: ID 0458:0189 KYE Systems Corp. (Mouse Systems) 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

连接设备的lusb:

Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 002: ID 1358:c123  
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 13d3:56f9 IMC Networks 
Bus 001 Device 004: ID 27c6:5110  
Bus 001 Device 003: ID 05e3:0610 Genesys Logic, Inc. 4-port hub
Bus 001 Device 002: ID 0458:0189 KYE Systems Corp. (Mouse Systems) 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

[更新]

这是 dmesg 的输出:

[ 3975.045806] usb 1-3: new low-speed USB device number 23 using xhci_hcd
[ 3975.657743] usb 1-3: new low-speed USB device number 24 using xhci_hcd
[ 3976.801721] usb 1-3: new low-speed USB device number 25 using xhci_hcd
[ 3977.345746] usb 1-3: new low-speed USB device number 26 using xhci_hcd
[ 3977.761777] usb usb1-port3: unable to enumerate USB device

感谢您的任何建议。

您好!

【问题讨论】:

  • 我解决问题的第一个方法是识别端口上的中继,因为我在此页面 (digital-loggers.com/iotfaqs.html) 中找到了一个小代码,您可以在其中看到如何使用端口的物理方向。谢谢。
  • 代码不存在,只问我为什么操作系统没有检测到连接的继电器,但BallisticTomato消除了我的疑惑。感谢您的关注。

标签: c embedded-linux libusb relay usbserial


【解决方案1】:

除了我们看不到您的代码这一事实之外,我强烈怀疑此设置是否会按您的预期工作。

假设这是 USB 2.x,信号线(白色)将具有 0V 至 400 mV 的电压电平,而电源线(红色)在 5V 上对 GND(黑色)工作。我强烈怀疑这是否在您的继电器规格范围内。

即使是这样,您也不能轻易地从操作系统级别引导其中一条信号线,因为您需要在两者之间建立一些抽象层。普通的操作系统驱动程序无法与您的设置一起使用,因为他们希望线路另一端的控制器执行符合 USB 标准的操作,例如枚举、速度和当前设置等。 对于您的操作系统,这只是插入 USB 端口的切断线。

您正在寻找的方法可能如下:

PC 上的操作系统应用程序通过 USB 或串行 USB 适配器连接到微控制器。微控制器通过这个连接接收简单的命令,然后设置和重置他的 I/O 引脚。这些 I/O 引脚是电平驱动的并馈入您的继电器。根据您的继电器,您需要在微控制器和继电器之间进行一些放大。

如果您确实确定您的硬件设置可以正常工作,请提供详细说明,包括电平、使用的 USB 端口、继电器的数据表以及您尝试运行的代码。

【讨论】:

  • 不客气。顺便说一句,根据您的项目,您可能需要寻找像 ARCELI SRD-05VDC-SL-C 这样的 USB 继电器组件。那些已经有一个微控制器来完成所有的通信,并配备了 1 到 10 个继电器。他们的数据表通常包含一个简单的指令集,可用于通过终端程序等驱动继电器。也许值得一看。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-19
  • 2021-03-07
  • 2019-03-12
  • 1970-01-01
  • 1970-01-01
  • 2011-03-15
相关资源
最近更新 更多