littlebot
Published on 2025-04-15 / 6 Visits
0

【源码】基于Python和STM32的USB Midi HID踏板控制与通信系统

项目简介

本项目致力于将控制设备与运行在触摸屏笔记本上的虚拟管风琴软件(像Hauptwerk、Grande Orgue、Cecilia等)相连接。采用低成本的STM32微控制器开发板,外部组件少且灵活性高。同时包含基于Python的USB HID通信示例,借助pywinusb库实现与USB HID设备的通信。

项目的主要特性和功能

STM32部分

  • 采用2美元的STM32 Blue Pill开发板,通过USB连接主机,Midi活动时LED闪烁。
  • 可部署多个STM32板,简化布线或增加容量。
  • 具备80个扫描触点,以8输入x 10输出的二极管开关矩阵排列,触点能发送Midi音符开/关消息或键盘HID消息。
  • 支持用单个延音踏板类型触点实现翻页功能,短按向前,长按向后。
  • 对触点和电位器进行50ms去抖动处理,减少消息泛滥。
  • 最多可用8个ADC输入用于表情踏板等,最多可连接8个I2C 16 x 2行LCD,开机显示自动检测到的i2c地址。

Python部分

  • 设备发现:利用pywinusb库搜索并连接特定的USB HID设备。
  • 数据发送:向USB HID设备发送模拟的按键或鼠标移动事件等数据。
  • 数据处理:处理从USB HID设备接收到的原始数据。

安装使用步骤

STM32部分

若需重新编程,按以下步骤操作: 1. 将Boot0链接设置到位置1。 2. 按下复位按钮。 3. 释放复位按钮后立即使用ST - Link上传新代码。 4. 重复步骤3直到编程成功。 5. 将Boot0链接移到位置0。 6. 断开编程器。 7. 也可使用USB引导加载程序。

Python部分

  1. 确保已安装pywinusb库,使用pip install pywinusb进行安装。
  2. 执行send.py脚本,它会搜索并连接到特定的USB HID设备,然后向该设备发送数据。
  3. 操作连接的USB HID设备(如按键、移动鼠标等),观察脚本输出,验证数据的发送和接收。
  4. 要确保计算机已授予Python脚本访问USB HID设备的权限,使用vendor_idproduct_id唯一标识USB HID设备,并参考设备文档了解正确的数据格式。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】