salient-concepts/batmobile-fkm40-controller
GitHub: salient-concepts/batmobile-fkm40-controller
开源控制器替代已停服的 Mattel 蝙蝠车遥控 App,让被「变砖」的玩具通过树莓派、浏览器或 AI 语音助手重获新生。
Stars: 0 | Forks: 0
# EPOCH Batmobile 控制器
在 **2024年3月15日**,Mattel 从 Google Play 商店下架了 *Batmobile™ R/C Controller*(蝙蝠车遥控器)应用程序。成千上万价值 50 到 200 美元的玩具一夜之间变成了废铁——车主们再也无法连接到他们自己的硬件。Mattel 客服已经确认没有推出替代程序的计划。
本项目使用一个可在任何 Raspberry Pi 上运行的开源控制器替代了被弃用的应用程序。您可以通过手机、桌面浏览器,或通过任何兼容 MCP 的 AI 助手的语音指令来驾驶您的蝙蝠车。
## 您将获得
- **手机/平板 WebUI** — 双操纵杆、松手即停的紧急中止功能,以及在实际蝙蝠车的动态俯视轮廓图上实时显示驱动矢量。状态驱动:车灯点亮、烟雾拖尾、装甲板旋转开启、加农炮塔升起、开火时的枪口闪光。
- **桌面 / 键盘** — 相同的 UI,加上用于驾驶的 WASD/方向键、用于所有特效的热键,以及用于解除武装的 Esc 键。
- **编排好的演示模式** — 70 秒的脚本序列,展示全套特效。在聚会上非常有用。
- **MCP 服务器**(可选)— 为 AI 助手提供的远程工具接口。语音控制:*"向前开动蝙蝠车"*、*"开火"*、*"执行巡逻序列。"*。
- **逆向工程的协议文档** — 完整的 UDP 命令表、数据包格式、传感器响应解码以及强制关机序列。
## 您需要准备什么
| 组件 | 备注 |
|---|---|
| Mattel 蝙蝠车,型号 **FKM40** | *Justice League Ultimate Batmobile R/C, 1/10 比例*。其他蝙蝠车遥控版(风火轮、BvS 等)使用不同的协议,因此**不受**支持。 |
| Raspberry Pi 4 或 Pi 5 | Pi 3B+ 可能可以工作,但未经测试。仅限 ARM 架构。 |
| Pi OS Lite, Trixie 或更新版本 | 推荐使用 64 位。需要 Python 3.11+ 和 NetworkManager。 |
| WiFi 适配器 | 板载即可。Pi 将加入蝙蝠车自身的 WiFi AP。 |
| 电源 | 任何 5V/3A 的电源。稳定供电的 PoE 即可(启动瞬间的涌入电流可能会报告欠压历史位——一旦运行起来是无害的)。 |
蝙蝠车必须**恢复出厂设置**,使其 WiFi 密码恢复为默认的 `BATMOBILE1`。在电池仓左下方有一个针孔重置按钮,按住 10 秒钟。
## 快速开始
```
# 在全新安装的 Pi OS Lite 上
curl -sL https://raw.githubusercontent.com/salient-concepts/batmobile-fkm40-controller/main/install.sh | sudo bash
```
该引导脚本会:
1. 安装 `python3-venv`、`nmcli`、`ffmpeg`、`iw`
2. 配置 WiFi 国家代码(`wlan0` 扫描需要此步骤)
3. 将用户添加到 `netdev` 组并授予免密 `nmcli` 权限(以便辅助命令在没有 `sudo` 提示的情况下工作)
4. 创建 `/srv/batmobile/`,设置 venv,安装依赖
5. 安装 systemd 单元以及 `bat-connect` / `bat-disconnect` / `bat-status` 辅助工具
6. 提示输入蝙蝠车的 WiFi SSID(`XXXX-BATMOBILE` — `XXXX` 是设备 MAC 地址的最后 4 位十六进制数字)和密码(默认为 `BATMOBILE1`)
7. 在 `http://:8000/` 上启动服务
然后,在 Pi 上:
```
bat-connect # Brings up wlan0 to the Batmobile AP
# 在手机上打开 http://:8000/,点击 ARM,进行 drive
bat-disconnect # Always run BEFORE powering off the Batmobile
```
## 手动安装
如果您不信任 `curl | sudo bash`(您确实不应信任):
```
git clone https://github.com/salient-concepts/batmobile-fkm40-controller.git
cd batmobile-fkm40-controller
sudo ./install.sh
```
或者您也可以手动进行 — 请参阅 [docs/manual-install.md](docs/manual-install.md)。
## 驾驶它
在与 Pi 处于同一网络的任何手机或笔记本电脑上打开 `http://:8000/`。(注意:您需要连接到 *Pi*,而 Pi 连接到*蝙蝠车*。不要尝试将您的手机直接连接到蝙蝠车——一次只能有一台设备保持与该 AP 的连接。)
- 点击 **ARM** 以建立无线电连接
- 双操纵杆:左侧 = 油门,右侧 = 转向
- 单击切换 LAMPS / SMOKE;短按 ARMOR / CANNON;带有保护机制的按钮用于 FIRE
- 按住中央的紧急停止圆顶约 700 毫秒以中止操作
- DEMO 将运行完整编排好的演示序列
键盘(桌面端):`W A S D` 驾驶,`Space` 停止,`F` 开火,`L` 车灯,`K` 烟雾,`M` 装甲,`G` 加农炮,`1–9` 声音特效,`/` 打开特效面板,`Esc` 解除武装。
## 可选:通过 MCP 进行语音控制
该服务在 `POST /mcp` 暴露了一个 JSON-RPC MCP 端点。提供六个工具:
| 工具 | 动作 |
|---|---|
| `batmobile_arm` | 连接到 AP,启动 10 Hz 的控制循环 |
| `batmobile_disarm` | 运行关机序列,断开 AP 连接 |
| `batmobile_drive` | 油门/转向百分比,带有可选的自动停止持续时间 |
| `batmobile_effect` | 用于 车灯/烟雾/装甲/加农炮/开火 的捆绑切换 |
| `batmobile_sound` | 按索引触发声音特效 |
| `batmobile_status` | 当前的 ARM 状态、上次命令时间、声音目录 |
将您 Pi 的地址作为远程 MCP 服务器添加,即可将其接入 Claude、Aria、OpenAI 或任何兼容 MCP 的助手。
## 已知限制
- **摄像头无法使用。** 蝙蝠车的 RTSP 摄像头能够正确握手,但不输出任何帧。这在整个产品线中是一个有记录的固件脆弱性问题——即使是 Mattel 自己的应用程序的评论也描述了相同的症状。我们已经枚举了整个网络接口;从网络层面来看无法通过软件修复。WebUI 的摄像头部分已因此被移除。如果您想在我们停止的地方继续尝试,请参阅 [docs/camera-investigation.md](docs/camera-investigation.md) 获取完整的调试记录。
- **电池遥测数据未解码。** 蝙蝠车会发回一个包含七个 10 位值的 14 字节传感器数据包;其中几乎可以肯定有一个是电池数据,但不知道是哪一个。欢迎提交解码贡献。
- **声音特效目录未被记录。** 存在 256 个声音索引,但尚未有人标注它们分别是什么。运行 `sound_sweep.py` 遍历它们,并提交带有标签的 PR。
## 硬件套装(限量)
如果您不想自己刷写 Pi,**Salient Concepts** 提供了两个选项:
- **完整套装** — 一辆开箱版的 Mattel 蝙蝠车(FKM40),搭配一个预刷写好的 Pi 4 控制器,开箱即可驾驶。仅限量提供单套设备。
- **仅预刷写 Pi 4** — 面向拥有一台可正常工作的 FKM40 但希望跳过安装步骤的车主。包含 Pi 4、microSD、电源,插上即可使用。
请关注 [salient-concepts.github.io](https://salient-concepts.github.io/) 了解供应情况。
## 文档
- [docs/troubleshooting.md](docs/troubleshooting.md) — 在实际使用中遇到的操作陷阱:充电后 WiFi 握手卡死、电机失控预防、密码恢复、PoE 欠压、ARM 挂起
- [docs/protocol.md](docs/protocol.md) — 完整的逆向工程命令表、数据包格式、传感器响应以及强制关机序列
- [docs/architecture.md](docs/architecture.md) — 控制器 / WebUI / MCP / systemd 单元之间的关系
- [docs/manual-install.md](docs/manual-install.md) — 如果引导脚本不适合您的环境,请参考此分步指南
- [docs/camera-investigation.md](docs/camera-investigation.md) — 摄像头调试工作的完整记录以及我们为何宣布其超出项目范围
- [LEGAL.md](LEGAL.md) — 商标、逆向工程立场、维修权依据
## 贡献
欢迎提交 PR。请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。最需要的领域包括:
- 传感器响应解码(哪个字节 = 电池?)
- 声音特效目录标记
- 摄像头固件调查(UART 路径、OpenIPC 等)
- 其他语言的 UI(当前字符串仅支持英文)
## 许可证
[MIT](LICENSE) — 随您所欲使用,只需保留版权声明。
## 致谢
- 原始的 Mattel 团队 — 感谢他们发布了这款玩具及其使其具备逆向工程可能性的协议。
- 不断询问*"有人在修复这个吗?"* 的车主们 — 你们是我们的动力。
**与 Mattel, Inc.、DC Comics 或 Warner Bros. Discovery 无任何关联、背书或赞助。** 请参阅 [LEGAL.md](LEGAL.md)。
标签:AI语音控制, FKM40, HTML5, Mattel, MCP服务器, Python, Raspberry Pi, UDP协议, WASD键盘控制, WebUI, 云资产清单, 内存执行, 安卓应用替代, 开源硬件, 手动双摇杆, 数字取证, 无后门, 智能家居, 替代控制器, 机器人控制, 树莓派4, 树莓派5, 物联网, 玩具修复, 电子玩具, 硬件破解, 硬件通信, 网络控制, 自动化脚本, 蝙蝠车, 语音助手, 逆向工具, 逆向工程, 遥控车