ATtiny85 CDC ACM继电器控制器
DigiSpark ATtiny85上的USB CDC ACM设备(ttyACM),用于通过串行中断信号控制感应继电器。
继电器逻辑
| PB0状态 | 继电器 | 触发器 |
|---|---|---|
| LOW | ON(导通) | 正常状态/断路已清除 |
| HIGH | OFF(打开,否) | 串行中断已断言 |
自定义USB设备名称
USB产品名称存储在EEPROM中,可以在运行时更改。 发送命令 0xAA 在ttyACM数据信道上。 设备将名称写入EEPROM,重新加载USB描述符,并重新枚举——不需要重新启动。 新名称在中可见 lsusb.最大长度:64个字符。
默认名称: ATtiny Relay
固件
要求: avr-gcc, micronucleus
make # build firmware
make flash # flash via micronucleus (re-plug DigiSpark when prompted)V-USB库在首次构建时会自动克隆。
Python安装
pip install . # API library only
pip install .[mcp] # API + MCP serverPython API
from relay_control import RelayControl
with RelayControl() as r:
r.relay_off() # PB0 HIGH, relay OFF (serial break)
r.relay_on() # PB0 LOW, relay ON (break cleared)
r.set_name("My Relay") # change USB device name (auto-reconnects)
print(r.name) # read current USB product nameMCP服务器
该软件包提供了一个MCP服务器,通过以下方式与Claude Code一起使用 mcp-compressor.
设置
添加 ~/.claude.json 在 mcpServers 章节:
{
"mcpServers": {
"usb-relay": {
"command": "mcp-compressor",
"args": ["-n", "usb-relay", "-c", "max", "usb-relay-mcp"]
}
}
}编辑配置后重新启动Claude Code。
工具
| 工具 | 说明 |
|---|---|
relay_list | 列出连接的中继设备(端口、USB地址、名称) |
relay_on(device) | 打开继电器--接受 /dev/ttyACMx 或USB地址,如 1-2 |
relay_off(device) | 关闭继电器 |
relay_set_name(device, name) | 更改USB设备名称(1–64个ASCII字符) |
测试
make test # runs pytest against real hardware