Created
January 31, 2026 13:08
-
-
Save kasuganosora/77f56a494f7d70f3581f9b5b6142bcf3 to your computer and use it in GitHub Desktop.
WildOne 控制方式
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # WildOne 设备 569805 - nRF Connect 控制指南 | |
| ## 📱 设备信息 | |
| | 属性 | 值 | | |
| |------|-----| | |
| | **产品名称** | WildOne | | |
| | **产品编码** | 569805 | | |
| | **通信方式** | 2.4G (蓝牙BLE广播) | | |
| | **蓝牙名称** | 空 (无需扫描) | | |
| | **经销商** | WildOne | | |
| | **官网** | https://www.ssi-japan.net/ | | |
| --- | |
| ## 🔧 控制原理 | |
| ### ⚠️ 重要说明 | |
| **这不是传统的BLE连接设备!** | |
| - ❌ 不需要扫描蓝牙设备 | |
| - ❌ 不需要建立GATT连接 | |
| - ✅ 直接通过蓝牙BLE广播发送控制指令 | |
| - ✅ 使用 Manufacturer Specific Data (厂商特定数据) | |
| --- | |
| ## 📡 蓝牙广播配置 | |
| ### 基本设置 | |
| | 参数 | 值 | | |
| |------|-----| | |
| | **广播模式** | Advertising Mode: Low Power | | |
| | **可连接** | Connectable: ❌ No | | |
| | **发射功率** | Tx Power: High | | |
| | **广播时长** | 1000 ms (1秒) | | |
| ### Manufacturer Specific Data | |
| | 字段 | 值 | | |
| |------|-----| | |
| | **Company ID** | 0xFFA0 (65440) | | |
| | **nRF Connect显示** | FFA0 | | |
| | **Data Length** | 5 字节 | | |
| **⚠️ 重要提示:** | |
| - 在 nRF Connect 的 Manufacturer Data 字段中输入:`65440` | |
| - 扫描时会看到显示为:`FFA0` | |
| - 后跟 5 字节控制命令数据 | |
| **完整广播数据格式:** | |
| ``` | |
| FFA0 AA 0B 01 01 05 | |
| ↓ ↓ ↓ ↓ ↓ ↓ | |
| 厂商 命令开始... | |
| ID 数据(5字节) | |
| ``` | |
| --- | |
| ## 🎮 控制指令格式 | |
| ### 指令结构(5字节) | |
| ``` | |
| 字节位置 | 字节值 | 说明 | |
| --------|--------|------------------- | |
| 0 | 0xAA | 固定头部 | |
| 1 | 0x0B | 经典模式命令 | |
| 2 | 组号 | 1=旋转, 2=吸吮 | |
| 3 | 按钮号 | 1-8 (旋转组), 1-4 (吸吮组) | |
| 4 | 强度 | 0-9 (0=停止, 1-9=强度等级) | |
| ``` | |
| ### 示例 | |
| ``` | |
| 旋转 01,强度 5: | |
| AA 0B 01 01 05 | |
| 吸吮 03,强度 9: | |
| AA 0B 02 03 09 | |
| 停止旋转: | |
| AA 0B 01 00 00 | |
| 停止吸吮: | |
| AA 0B 02 00 00 | |
| 停止所有模式 (全局停止): | |
| AA 14 00 00 00 | |
| ``` | |
| ### 完整命令协议 | |
| | 命令值 | 功能 | WildOne 支持 | 用途 | | |
| |--------|------|--------------|------| | |
| | 0x01 | Speech Mode | ❌ | 语音控制 | | |
| | **0x0B** | **Classic Mode** | ✅ | 经典模式(旋转/吸吮) | | |
| | 0x0C | Heating | ❌ | 加热功能 | | |
| | 0x0D | Voice Switch | ❌ | 声音开关 | | |
| | 0x0F | Critical Strike | ❌ | 爆击功能 | | |
| | 0x10 | Alarm Clock | ❌ | 闹钟功能 | | |
| | **0x14** | **Stop Command** | ✅ | 停止所有模式 | | |
| | 0x1B | Electricity | ❌ | 电功能/排气 | | |
| --- | |
| ## 🔘 设备按钮配置 | |
| ### 信号说明 | |
| - **on_signal**: `"组号,按钮号"` - 启动特定按钮 | |
| - **shut_signal**: `"组号,0"` - 停止特定组(按钮号设为0) | |
| ### 旋转组 (Rotation) | |
| | 按钮 | on_signal | 指令(强度5) | shut_signal | 停止指令 | 强度等级 | | |
| |------|-----------|--------------|-------------|----------|----------| | |
| | 01 | "1,1" | `AA 0B 01 01 05` | "1,0" | `AA 0B 01 00 00` | 0-9 | | |
| | 02 | "1,2" | `AA 0B 01 02 05` | "1,0" | `AA 0B 01 00 00` | 0-9 | | |
| | 03 | "1,3" | `AA 0B 01 03 05` | "1,0" | `AA 0B 01 00 00` | 0-9 | | |
| | 04 | "1,4" | `AA 0B 01 04 05` | "1,0" | `AA 0B 01 00 00` | 0-9 | | |
| | 05 | "1,5" | `AA 0B 01 05 05` | "1,0" | `AA 0B 01 00 00` | 0-9 | | |
| | 06 | "1,6" | `AA 0B 01 06 05` | "1,0" | `AA 0B 01 00 00` | 0-9 | | |
| | 07 | "1,7" | `AA 0B 01 07 05` | "1,0" | `AA 0B 01 00 00` | 0-9 | | |
| | 08 | "1,8" | `AA 0B 01 08 05` | "1,0" | `AA 0B 01 00 00` | 0-9 | | |
| ### 吸吮组 (Suction) | |
| | 按钮 | on_signal | 指令(强度5) | shut_signal | 停止指令 | 强度等级 | | |
| |------|-----------|--------------|-------------|----------|----------| | |
| | 01 | "2,1" | `AA 0B 02 01 05` | "2,0" | `AA 0B 02 00 00` | 0-9 | | |
| | 02 | "2,2" | `AA 0B 02 02 05` | "2,0" | `AA 0B 02 00 00` | 0-9 | | |
| | 03 | "2,3" | `AA 0B 02 03 05` | "2,0" | `AA 0B 02 00 00` | 0-9 | | |
| | 04 | "2,4" | `AA 0B 02 04 05` | "2,0" | `AA 0B 02 00 00` | 0-9 | | |
| --- | |
| ## 📊 设备支持的功能 | |
| 根据设备配置,WildOne 569805 支持以下功能: | |
| | 功能 | 状态 | 说明 | 底层命令 | | |
| |------|------|------|---------| | |
| | 经典模式 | ✅ | 自定义按钮控制 | `0x0B` | | |
| | 视频模式 | ✅ | 视频同步控制 | `0x0B` (组号=0) | | |
| | 声音控制 | ✅ | 麦克风音量响应 | `0x0B` (组号=0) | | |
| | 摇晃控制 | ✅ | 摇晃检测响应 | `0x0B` (组号=0) | | |
| | 划一笔 | ✅ | 手势绘制控制 | `0x0B` (组号=0) | | |
| | 音乐模式 | ❌ | 不支持 | - | | |
| | AI模式 | ❌ | 不支持 | - | | |
| | 加热 | ❌ | 不支持 | `0x0C` | | |
| | 放电/排气 | ❌ | 不支持 | `0x1B` | | |
| | 爆击 | ❌ | 不支持 | `0x0F` | | |
| | 闹钟 | ❌ | 不支持 | `0x10` | | |
| --- | |
| ## 🎯 智能模式的工作原理 | |
| 虽然设备有视频、声音控制、摇晃、划一笔等智能模式,但它们**最终都使用 Classic Mode (0x0B)** 命令: | |
| ### 智能模式命令格式 | |
| ``` | |
| AA 0B 00 00 强度 | |
| ``` | |
| | 字节 | 值 | 说明 | | |
| |------|-----|------| | |
| | 0 | 0xAA | 固定头部 | | |
| | 1 | 0x0B | Classic Mode | | |
| | 2 | 0x00 | 组号=0(智能模式固定) | | |
| | 3 | 0x00 | 按钮号=0(智能模式固定) | | |
| | 4 | 强度 | 1-10(根据环境自动调节) | | |
| ### 与经典模式的区别 | |
| | 模式 | 组号 | 按钮号 | 用途 | | |
| |------|------|--------|------| | |
| | 经典模式 | 1(旋转) 或 2(吸吮) | 1-8 或 1-4 | 手动选择具体按钮 | | |
| | 智能模式 | 0 | 0 | 自动调节强度,不指定具体按钮 | | |
| **注意:** 智能模式最终调用的是**经典模式的底层命令**,只是组号和按钮号都设为0,强度值由APP根据视频、声音、摇晃等输入自动计算。 | |
| --- | |
| ## 🚫 停止命令详解 | |
| ### 停止特定模式 | |
| ``` | |
| 停止旋转: AA 0B 01 00 00 | |
| 停止吸吮: AA 0B 02 00 00 | |
| ``` | |
| ### 全局停止命令 | |
| ``` | |
| AA 14 00 00 00 | |
| ``` | |
| **作用:** 停止所有正在运行的任何模式(经典、视频、声音、摇晃等) | |
| **⚠️ 重要提示:** | |
| - 停止命令只会停止电机运行 | |
| - **不会释放真空/阀门** | |
| - WildOne 569805 不支持自动释放阀门(discharge=false) | |
| - 如需释放真空,需手动操作或使用设备的物理释放按钮 | |
| --- | |
| ## 🎯 快速参考表 | |
| ### 旋转模式指令 | |
| | 操作 | 指令 | 十六进制 | | |
| |------|--------|----------| | |
| | 旋转01,强度5 | `AA 0B 01 01 05` | 0xAA0B010105 | | |
| | 旋转02,强度7 | `AA 0B 01 02 07` | 0xAA0B010207 | | |
| | 旋转08,强度9 | `AA 0B 01 08 09` | 0xAA0B010809 | | |
| | 停止所有旋转 | `AA 0B 01 00 00` | 0xAA0B010000 | | |
| ### 吸吮模式指令 | |
| | 操作 | 指令 | 十六进制 | | |
| |------|--------|----------| | |
| | 吸吮01,强度5 | `AA 0B 02 01 05` | 0xAA0B020105 | | |
| | 吸吮03,强度8 | `AA 0B 02 03 08` | 0xAA0B020308 | | |
| | 吸吮04,强度9 | `AA 0B 02 04 09` | 0xAA0B020409 | | |
| | 停止所有吸吮 | `AA 0B 02 00 00` | 0xAA0B020000 | | |
| ### 全局指令 | |
| | 操作 | 指令 | 十六进制 | | |
| |------|--------|----------| | |
| | 停止所有模式 | `AA 14 00 00 00` | 0xAA14000000 | | |
| --- | |
| ## ⚙️ 进阶技巧 | |
| ### 1. 快速切换按钮 | |
| 无需停止广播,直接修改 Data 字段: | |
| ``` | |
| 当前: AA 0B 01 01 05 | |
| 改为: AA 0B 01 02 05 (切换到02) | |
| ``` | |
| ### 2. 同时控制多个功能 | |
| 创建预设按钮(nRF Connect支持): | |
| ``` | |
| 预设1: 旋转01强度5 - AA 0B 01 01 05 | |
| 预设2: 吸吮02强度7 - AA 0B 02 02 07 | |
| 预设3: 停止 - AA 14 00 00 00 | |
| ``` | |
| ### 3. 强度调节技巧 | |
| ``` | |
| 快速调节: 每次改变 1-2 级 | |
| 慢速调节: 每次改变 3-4 级 | |
| 平滑调节: 连续广播 3 个递增指令 | |
| ``` | |
| ### 4. 智能模式模拟 | |
| 用 nRF Connect 模拟智能模式: | |
| ``` | |
| 模拟摇晃强度5: AA 0B 00 00 05 | |
| 模拟声音强度8: AA 0B 00 00 08 | |
| 模拟视频强度10: AA 0B 00 00 0A | |
| ``` | |
| --- | |
| ## 🐛 故障排除 | |
| ### 问题1: 设备无响应 | |
| **可能原因:** | |
| - Company ID 错误(应为 65440) | |
| - Data 格式错误(应为5字节) | |
| - 蓝牙未开启 | |
| **解决方法:** | |
| 1. 检查 Company ID: `65440` (扫描时显示为 `FFA0`) | |
| 2. 检查 Data: `AA 0B 01 01 05` | |
| 3. 确保蓝牙已开启 | |
| 4. 移动手机靠近设备(< 1米) | |
| ### 问题2: 设备启动但立即停止 | |
| **可能原因:** | |
| - 强度设置为 0 | |
| - 设备超时保护 | |
| **解决方法:** | |
| 1. 确保强度字节 ≥ 1 | |
| 2. 重新发送指令 | |
| ### 问题3: 只能控制旋转,无法控制吸吮 | |
| **检查指令:** | |
| ``` | |
| 旋转组: 第3字节 = 1 | |
| 吸吮组: 第3字节 = 2 | |
| ``` | |
| ### 问题4: 停止后真空未释放 | |
| **重要说明:** | |
| - WildOne 569805 的吸吮模式**没有主动阀门** | |
| - 停止命令 `AA 14 00 00 00` 只停止电机 | |
| - 电机停止后,真空会**通过机械方式缓慢自然泄气** | |
| - 不需要手动释放阀门或操作物理按钮 | |
| **泄气特性:** | |
| - 停止后真空会缓慢释放(通常 5-15 秒) | |
| - 泄气速度取决于当前真空强度和机械结构 | |
| - 高强度停止后泄气时间更长 | |
| - 用户会感觉到逐渐放松的效果 | |
| --- | |
| ## 💡 最佳实践 | |
| ### 1. 广播时序 | |
| ``` | |
| 建议流程: | |
| 1. 开始广播 → 等待 1000ms | |
| 2. 设备执行动作 | |
| 3. 如需调整,修改 Data 后重新广播 | |
| 4. 完成后停止广播 | |
| ``` | |
| ### 2. 安全使用 | |
| ``` | |
| 强度建议: | |
| - 初次使用: 1-3 级 | |
| - 常规使用: 4-6 级 | |
| - 体验使用: 7-9 级 | |
| 切换模式: | |
| - 先停止当前模式 | |
| - 等待 0.5 秒 | |
| - 启动新模式 | |
| ``` | |
| ### 3. 节省电量 | |
| ``` | |
| 设置建议: | |
| - Advertising Mode: Low Power | |
| - Tx Power: Medium (近距离时) | |
| - 广播时长: 控制完成后立即停止 | |
| ``` | |
| ### 4. 吸吮模式使用提示 | |
| **真空释放机制:** | |
| ``` | |
| 停止后自动泄气: | |
| - 电机停止后,真空会缓慢自然泄气 | |
| - 泄气时间:通常 5-15 秒(取决于初始强度) | |
| - 无需手动操作,等待即可自然释放 | |
| - 高强度停止后泄气时间更长 | |
| ``` | |
| **优雅停止技巧:** | |
| ``` | |
| 推荐流程: | |
| 1. 逐步降低强度(9→7→5→3→1) | |
| 2. 在最低强度(1)时停止 | |
| 3. 等待自然泄气完成(5-10秒) | |
| ``` | |
| **快速停止流程:** | |
| ``` | |
| 直接停止: | |
| 1. 发送停止命令:AA 0B 02 00 00 | |
| 2. 等待自然泄气(5-15秒) | |
| 3. 设备自动恢复正常状态 | |
| ``` | |
| --- | |
| ## 🌐 Web Bluetooth API 限制说明 | |
| ### ⚠️ Chrome Web Bluetooth API 无法控制此设备 | |
| **根本原因:** | |
| WildOne 设备使用 **BLE 广播包** 通信,而 Chrome Web Bluetooth API 只支持 **GATT 连接** 通信,两种机制完全不兼容。 | |
| ### 技术对比 | |
| | 通信方式 | Chrome Web Bluetooth API | WildOne 设备 | | |
| |---------|----------------------|--------------| | |
| | 角色 | Central(中心设备) | Peripheral(外设) | | |
| | 连接方式 | GATT 连接 | BLE 广播(无需连接) | | |
| | 数据传输 | 读写 Characteristic | 发送广播包 | | |
| | Advertising | ❌ 不支持 | ✅ 必需 | | |
| | Peripheral | ❌ 不支持 | ✅ 必需 | | |
| ### Chrome Web Bluetooth API 实际能力 | |
| ```javascript | |
| // ✅ 支持的功能 | |
| navigator.bluetooth.requestDevice() // 请求设备 | |
| device.gatt.connect() // GATT 连接 | |
| characteristic.writeValue() // 写入数据 | |
| characteristic.readValue() // 读取数据 | |
| // ❌ 不支持的功能 | |
| // BLE Advertising (广播) - 没有 API | |
| // Peripheral 角色 - 只能作为 Central | |
| // 发送广播包 - 不支持 Manufacturer Data 广播 | |
| ``` | |
| ### 为什么不兼容? | |
| **传统 BLE 设备通信流程:** | |
| ``` | |
| 手机/Chrome → GATT 连接 → 设备 | |
| ↓ | |
| 读写 Characteristic | |
| ``` | |
| **WildOne 设备通信流程:** | |
| ``` | |
| 手机 → BLE 广播包 → 设备 | |
| ↓ (FFA0 AA 0B 01 01 05) | |
| 设备监听广播并响应 | |
| ``` | |
| MDN 官方文档确认: | |
| - Web Bluetooth API 只提供 GATT 相关接口 | |
| - 没有 Advertising 或 Peripheral 相关 API | |
| - API 设计明确为 Central 角色 | |
| --- | |
| ### 可行的替代方案 | |
| 如果你想用 Web 技术栈控制 WildOne: | |
| #### 1. **原生 App** ⭐ 推荐 | |
| - **Android**: 使用 `BluetoothLeAdvertiser` API | |
| - **iOS**: 使用 `CBPeripheralManager` API | |
| - 完整支持 BLE 广播 | |
| - 可参考文档中的 `BeaconManager.java` 代码 | |
| #### 2. **Electron 应用** ✅ | |
| - 基于 Web 技术栈(HTML/CSS/JS) | |
| - 可以调用 Node.js 的蓝牙库 | |
| - 完整支持 BLE 广播 | |
| - 示例库:`noble` (macOS/Linux), `ble-hci-socket` (Windows) | |
| #### 3. **Python 脚本** ✅ | |
| - 配合 USB 蓝牙适配器 | |
| - 使用 `bleak` 库(跨平台) | |
| - 完整支持 BLE 广播 | |
| #### 4. **Web USB + 串口适配器** ⚠️ 复杂 | |
| - 购买 USB 蓝牙适配器(支持广播) | |
| - 使用 WebUSB/WebHID API 与适配器通信 | |
| - 通过适配器发送 BLE 广播 | |
| - 需要硬件支持 | |
| #### 5. **PWA + 原生能力** ❌ 不可行 | |
| - 即使安装为 PWA | |
| - Chrome 仍不提供 BLE 广播 API | |
| - 无解决方案 | |
| --- | |
| ### 推荐方案 | |
| | 需求 | 推荐方案 | 理由 | | |
| |------|----------|------| | |
| | 快速测试 | nRF Connect | 现成工具,已验证可用 | | |
| | 跨平台桌面应用 | Electron | Web 技术栈 + 完整蓝牙支持 | | |
| | 移动端 | 原生 App | 最佳用户体验和性能 | | |
| | 自动化脚本 | Python | 简单直接 | | |
| | Web 应用 | ❌ 不可行 | Web Bluetooth API 限制 | | |
| --- | |
| ## 🔗 相关资源 | |
| - **设备官网**: https://www.ssi-japan.net/ | |
| - **nRF Connect下载**: | |
| - Android: https://play.google.com/store/apps/details?id=no.nordicsemi.android.mcp | |
| - iOS: https://apps.apple.com/app/nrf-connect/id1054362703 | |
| - **蓝牙规范**: https://www.bluetooth.com/specifications | |
| --- | |
| ## 📝 注释 | |
| 本文档基于以下分析: | |
| - APK反编译代码分析 | |
| - 设备配置文件 (product_code: 569805) | |
| - 蓝牙通信协议逆向工程 | |
| - 双手机测试验证 | |
| **技术栈:** | |
| - 通信方式: BLE 4.2 Advertising | |
| - 数据格式: Manufacturer Specific Data | |
| - 厂商ID: 65440 (0xFFA0) | |
| - nRF Connect显示: FFA0 | |
| - 指令长度: 5 字节 | |
| - 支持命令: 0x0B (Classic), 0x14 (Stop) | |
| --- | |
| **最后更新**: 2026-01-31 | |
| **适用设备**: WildOne (569805) | |
| **协议版本**: v1.1 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment