使用c或任何编程语言控制usb端口上的电压供应

我对电子学没有多少知识。 我想打开/关闭使用程序连接到usb端口的led。 USB端口包括4线(数据+,数据,电压,接地),如果我将电压和地线连接到LED,它会发光。 我一直在互联网上搜索这个问题,我发现使用程序控制led连接到usb是不可能的,因为datapin上的电源太低而不能用于关闭led。

但是,如果我将我的led连接到vol和接地引脚并控制usb端口的整个电源,我想有可能控制led使用程序。 有一种方法可以通过USB端口禁用和启用电源。

我也想知道遵循这种方法是不是很糟糕。 是否会损坏usb控制器以频繁启用/禁用电源。

Algo : a = Get_input_from_user() ; if(a=="ON") turn power supply of usb port ON. else turn power supply of usb port OFF. 

这个东西当然可以使用额外的硬件,我不想使用任何额外的硬件。

计算机USB端口的电源通常不是软件可控的。 在大多数情况下,USB端口的电源引脚直接连接到电源的5V电源轨(通常通过polyfuse),因此无法打开和关闭它们。

一些有源USB集线器支持切换到其端口的电源 ,但是你说你不想使用任何额外的硬件,所以你运气不好。

你可以使用任何基本的Arduino板来做到这一点,有一个完整的IDE免费和大量的示例代码 ,可以做你想要的开箱即用

Arduino的在此处输入图像描述

你也可以使用COOL板。

Teensy 3.0

Arduino兼容代码适用于Teensy

这里的软件开发工具

您可以使用外部电源( the Vcc and GND pins of the USB port in this case ),使用电阻为二极管供电,并在中间连接晶体管作为中断器。 然后,将基座和emisor连接到USB端口的de data +和data-。

这个页面不允许我上传图片。

很抱歉图纸的质量,但我在电脑上的所有东西都是油漆。 为了获得更稳定的性能,请确保使R1足够低,以便晶体管在数据引脚导通时处于饱和模式但不低到晶体管烧毁(我真的不知道USB端口上数据引脚的电压电平是多少)对不起)。 要选择适当的R2值,您需要知道为二极管供电所需的电流。 它是根据欧姆定律计算的:

 Idiode = (Vcc - Vce,sat - Vd) / R2. 

当晶体管处于饱和模式时,Vce,sat是可变器和发射器之间的潜在差异(可在制造商网页上的晶体管数据表中找到,通常约为0.2V),Vd是二极管的归一化电位差(相同,但是这个时间大约0.6V)。

请注意,数据和GND引脚已连接。 我99%确定这不会损害您的USB端口,但使用它需要您自担风险。

我会首先使用另一个外部电源测试它,只是为了确保你正确连接所有东西。