使用说明
配备OpenAI语音助手的M5StamPLC MCP服务器
M5StamPLC的模型上下文协议(MCP)服务器实现,使用OpenAI的实时API实现AI驱动的语音对话。
特性
- 🤖 MCP 服务器:完整的模型上下文协议实现
- 🎤 语音助手:与OpenAI GPT-4o Mini实时进行自然语音对话
- 🔊 语音到文本:使用OpenAI Whisper进行音频转录
- 🗣️ 文本转语音:使用OpenAI TTS的自然语音响应
- 🔌 PLC控制:完全控制输入、继电器和传感器
- 📊 实时仪表盘:设备屏幕上显示实时状态
- 🌐 RESTful API:用于设备控制的HTTP端点
- 📡 服务器发送的事件:通过SSE实时更新状态
硬件要求
- M5StamPLC装置
- 用于编程的USB-C电缆
- WiFi网络接入
- OpenAI API密钥
软件需求
- 平台IO IDE或CLI
- Python 3.x(用于esptool)
- Git
安装
1.克隆存储库
git clone https://github.com/moecr7/stamplc-mcp-server-io.git
cd stamplc-mcp-server-io
2.配置WiFi和API密钥
复制示例配置文件:
cp wifi_config.h.example wifi_config.h
编辑 wifi_config.h 使用您的凭据:
const char* WIFI_SSID = "YourWiFiSSID";
const char* WIFI_PASSWORD = "YourWiFiPassword";
const char* OPENAI_API_KEY = "sk-your-openai-api-key";
重要: wifi_config.h 保护您的凭据是合法的。永远不要提交此文件!
3.安装依赖项
PlatformIO将自动安装所需的库:
- M5StamPLC库
- ArduinoJson
- 特别:
- 异步TCP
4.构建和上传
通过USB连接M5StamPLC并上传固件:
pio run --target upload
监控串行输出:
pio device monitor
配置
WiFi设置
设备将在启动时自动连接到WiFi。状态LED将显示:
- 🔴 红:WiFi已断开
- 🟢 绿色:时间同步成功
- ⚪ 白色:正常运行
- 🔵 蓝色:传入命令
OpenAI API密钥
从获取API密钥 OpenAI平台 并将其添加到 wifi_config.h.
备注:OpenAI实时API需要付费帐户。确保你有足够的学分。
用法
MCP API终点
基础网址
http://<device-ip>/mcp
可用方法
读取输入
{
"jsonrpc": "2.0",
"method": "readInput",
"params": {"inputNumber": 0},
"id": 1
}
写入中继
{
"jsonrpc": "2.0",
"method": "writeRelay",
"params": {"relayNumber": 1, "state": true},
"id": 2
}
读取中继
{
"jsonrpc": "2.0",
"method": "readRelay",
"params": {"relayNumber": 1},
"id": 3
}
获取IO状态
{
"jsonrpc": "2.0",
"method": "getIOState",
"params": {},
"id": 4
}
获取系统信息
{
"jsonrpc": "2.0",
"method": "getSystemInfo",
"params": {},
"id": 5
}
播放音调
{
"jsonrpc": "2.0",
"method": "tone",
"params": {"frequency": 1000, "duration": 500},
"id": 6
}
语音对话API
端点: POST /voice/chat
请求:
- 内容类型:
audio/wav - 正文:音频文件(WAV格式,建议16kHz)
回应:
{
"success": true,
"transcribed": "User's speech transcribed to text",
"text": "AI assistant response",
"audio": "base64-encoded MP3 audio response"
}
使用curl的示例:
curl -X POST http://192.168.100.97/voice/chat \
-H "Content-Type: audio/wav" \
--data-binary @audio.wav
服务器发送的事件
连接到实时更新:
curl http://192.168.100.97/events
活动包括:
- 输入状态(8个输入)
- 继电器状态(4个继电器)
- 传感器数据(温度、电压、电流)
- 时间戳
能力端点
列出所有可用的MCP功能:
curl http://192.168.100.97/capabilities
项目结构
stamplc-mcp-server-io/
├── src/
│ ├── stamplc-mcp-server.cpp # Main application
│ ├── mcp_server.h/cpp # MCP server implementation
│ ├── dashboard_ui.h/cpp # Display UI
│ ├── openai_realtime.h/cpp # OpenAI API integration
│ └── wifi_config-def.h # Configuration template
├── examples/ # Example code
├── platformio.ini # PlatformIO configuration
├── wifi_config.h.example # Configuration template
└── README.md # This file
继电器编号
继电器从0开始编号:
relayNumber: 0=继电器1relayNumber: 1=继电器2relayNumber: 2=继电器3relayNumber: 3=继电器4
输入编号
输入从0开始编号:
inputNumber: 0=输入1inputNumber: 1=输入2- …直到
inputNumber: 7=输入8
故障排除
WiFi连接失败
- 检查SSID和密码
wifi_config.h - 确保WiFi为2.4GHz(ESP32不支持5GHz)
- 检查信号强度
OpenAI API错误
- 验证API密钥是否正确
- 支票账户有足够的信用额度
- 确保API密钥可以访问实时API
上传失败
- 将设备置于引导加载程序模式(按住BOOT按钮,按RESET)
- 检查USB电缆连接
- 验证端口是否正确
platformio.ini
设备没有响应
- 检查设备显示屏上的IP地址
- 验证设备和计算机是否在同一网络上
- 检查防火墙设置
发展
建筑
pio run
上传中
pio run --target upload
监控
pio device monitor
清洁
pio run --target clean
许可证
MIT许可证-有关详细信息,请参阅许可证文件
贡献
欢迎投稿!请随时提交拉取请求。
作者
莫因(moerc7)
致谢
- M5StamPLC硬件的M5Stack
- 实时API的OpenAI
- 开发平台平台IO
支持
对于问题和疑问:
- 在GitHub上打开一个问题
- 查看示例目录中的用法示例
- 查阅MCP协议文档
更新日志
v1.0.0
- 初始版本
- MCP服务器实现
- OpenAI语音助手集成
- 实时仪表板用户界面
- 完整的PLC控制能力