PyUSB - Мост между Python и USB-устройствами

25 авг 2025

Репозиторий давно не обновлялся

Последнее обновление было 7 месяцев назад.

2,309
669
93
7 месяцев

Представьте: вам нужно прочитать данные с USB-термометра, управлять самодельным роботом или автоматизировать работу принтера. Вместо того чтобы писать низкоуровневый код на C, можно использовать Python с библиотекой PyUSB. Давайте разберемся, как этот инструмент делает работу с USB по-настоящему питоновской.

Что такое PyUSB и кому он пригодится

PyUSB — это библиотека для Python 3, которая предоставляет удобный API для взаимодействия с USB-устройствами. Она особенно полезна:

  • Инженерам, работающим с кастомным USB-оборудованием
  • Разработчикам встраиваемых систем
  • Энтузиастам DIY-проектов
  • Специалистам по автоматизации тестирования оборудования

Библиотека поддерживает три бэкенда: libusb 1.0 (рекомендуемый), libusb 0.1 и OpenUSB, что делает ее кроссплатформенным решением.

5 причин выбрать PyUSB для вашего проекта

  1. Простота установки — ставится одной командой:

    pip install pyusb
    
  2. Удобный API для обнаружения устройств:

    Реклама
    import usb.core
    for dev in usb.core.find(find_all=True):
        print(dev)
    
  3. Кроссплатформенность — работает на Linux, Windows и macOS. Для Windows есть удобный пакет pyocd/libusb-package.

  4. Гибкость — можно выбрать подходящий бэкенд в зависимости от потребностей.

  5. Активное сообщество — есть FAQ, Q&A раздел и mailing list для помощи.

Что под капотом

PyUSB использует ctypes для взаимодействия с системными библиотеками USB. Это значит:

  • Нет необходимости в компиляции расширений
  • Легкая интеграция в чистый Python
  • Поддержка разных версий libusb

Интересно, что до версии 0.4 PyUSB был тонкой оберткой над libusb, но в версии 1.0 API стал значительно богаче и удобнее.

Где это можно применить

Вот несколько реальных сценариев:

  • Самодельная метеостанция — сбор данных с USB-датчиков
  • Автоматизация тестирования — управление лабораторным оборудованием
  • IoT проекты — взаимодействие с микроконтроллерами
  • Хобби-электроника — прошивка устройств через USB

Например, вот как просто можно отправить данные на устройство:

import usb.core

dev = usb.core.find(idVendor=0xfffe, idProduct=0x0001)
if dev is None:
    raise ValueError('Устройство не найдено')

dev.write(1, b'Hello USB')  # Отправляем данные

Стоит ли попробовать?

Определенно да, если:

  • Вы работаете с USB-устройствами из Python
  • Хотите избежать написания низкоуровневого кода
  • Нужен кроссплатформенный инструмент

PyUSB особенно хорош для быстрого прототипирования и небольших проектов. Для сложных промышленных решений возможно стоит рассмотреть другие варианты.

Где начать:

  1. Установите библиотеку через pip
  2. Изучите официальный туториал
  3. Попробуйте подключить свое первое устройство!

Какой USB-гаджет вы бы хотели подключить с помощью PyUSB? Делитесь идеями в комментариях!

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.