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, 物联网, 玩具修复, 电子玩具, 硬件破解, 硬件通信, 网络控制, 自动化脚本, 蝙蝠车, 语音助手, 逆向工具, 逆向工程, 遥控车