-
Notifications
You must be signed in to change notification settings - Fork 43
ReSpeaker USB 4 Mic Array LED 控制接口说明
jerryyip edited this page Jun 5, 2019
·
2 revisions
我们可以通过 USB 控制 ReSpeaker USB 4 Mic Array 上的 LED。 其接口通过 Vendor Specific Class 类型 Interface 提供,用 Control Transfer 发送命令。
在 Linux 上,可以用过 lsusb -v -d 2886:
查看设备的 USB 接口信息,其中 LED 的控制接口信息如下。
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 3
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 255 Vendor Specific Subclass
bInterfaceProtocol 255 Vendor Specific Protocol
iInterface 9 SEEED Control
这里我们用 libusb 的 python 库来实现控制 LED 的功能,代码见:usb_pixel_ring_v2.py
LED 控制命令通过 pyusb 的 usb.core.Device.ctrl_transfer()
发送的,其参数为:
ctrl_transfer(usb.util.CTRL_OUT | usb.util.CTRL_TYPE_VENDOR | usb.util.CTRL_RECIPIENT_DEVICE, 0, command, 0x1C, data, TIMEOUT)
其中,只需要关注 command
和 data
:
command | data | note |
---|---|---|
0 | [0] | 追踪模式,LED 根据 VAD 和 DOA 变化 |
1 | [red, green, blue, 0] | 单色模式,设置 RGB LED 为单一颜色 |
2 | [0] | 聆听模式,与追踪模式类似,但失去目标之后 RGB LED 会继续保持状态 |
3 | [0] | 等待模式 |
4 | [0] | 呼吸模式 |
5 | [0] | 旋转模式 |
6 | [r, g, b, 0] * 12 | 自定义模式,任意设置每个 RGB LED 的颜色 |
0x20 | [brightness] | 设置亮度,亮度范围为 0 ~ 0x1F |
0x21 | [r1, g1, b1, 0, r2, g2, b2, 0] | 设置颜色,有两种颜色可设置 |
0x22 | [vad_led] | 设置中间的 LED: 0 - 熄灭;1 - 常亮;其它 - 根据 VAD 变化 |
0x23 | [volume] | 显示音量,音量范围为 0 ~ 12 |