Как управлять USB через Python
Необходимо сделать электромагнит, который должен поочередно включаться и выключаться 1 раз в секунду через USB кабель с помощью Python библиотеки Pyusb без использования микроконтроллеров. Возможно ли это сделать?
P.S. Идея в том, чтобы электромагнит срабатывал от напряжения которое приходит от USB. На рисунке изображена схема, которую я хочу повторить 
Ответы (1 шт):
Если не используем контроллер, то нужно найти чип в котором есть usb и программируемый выход. Самое дешевое это чип UART на базе CP2102 или CH340. Бери на котором есть выход DTR.
Если возьмешь как на картинке ,с доп выходами, то там есть ещё 1 или 2 управляемых неподписанных пина (для второго магнита) ;)
Дальше нужен мосфет. Для того чтоб не спалить комп в экспериментах бери схемку с опторазвязкой (кубик с 4 ногами). Полевик по мощности магнита.
DTR соединяешь с GND, +3.3v соединяется с PWM. Если нужно инвертировать включение, то соединяется DTR-PWM и GND-GND. Второй магнит, работающий противоположно первому включается по второму варианту через ещё один транзистор.
В зависимости схемок может понадобится резистор последовательно перед входом оптопары. Если использовать USB-COM вместо USB-UART или использовать гейт-драйвер вроде TLP350 вместо схемки... номинал R=(Uвых-Uвх)/Iвх
Электромагнит подключается к контактам "+" и load. Блок питания магнита к "+" и "-".
Ещё нужен диод, по мощности сопоставимый с электромагнитом. Например, 1N4007 хватит для небольших магнитов. Втыкается параллельно магниту в обратном направлении. "+" на катод и load на анод (полоской к плюсу).
Он для того чтоб при отрыве не сгорел транзистор. Надеюсь ничего не перепутал.
Дальше Python. pip3 install pyserial
import serial, time
s = serial.Serial('COM5')
s.setDTR(True)
time.sleep(1)
s.setDTR(False)


