V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kuoruan
V2EX  ›  嵌入式开发

想将投影仪接入米家,请教一下 ESP32 重放投影仪蓝牙遥控器的按键,用于控制投影仪的开关

  •  
  •   kuoruan · 190 天前 · 593 次点击
    这是一个创建于 190 天前的主题,其中的信息可能已经有所发展或是发生改变。

    买了一台当贝 F6 ,想要实现米家控制。找到一篇文章:https://www.znds.com/tv-1237327-1-1.html

    但是作者没有在文章中透露细节,没办法,只有自己来研究。

    准备了以下内容:

    • ESP32-D4 ,卖家已经焊好了 USB ,直接插到电脑就可以烧录使用
    • nRF Connect for Android ,用于蓝牙遥控器抓包
    • ESP-IDF for VSCode ,ESP 开发插件
    • 巴法云,使用 MQTT 协议,用于接入米家

    抓到的电源键广播包类似于:

    /**
     * LEN | TYPE | VALUE
     * 2   | 0x01 | 0x04
     * 3   | 0x03 | 0x1218
     * 3   | 0x19 | 0x8001
     * 13  | 0xFF | 0x5D000300011808642AA0C884
     */
    static uint8_t adv_data_on_off[] = {
        // Flags
        0x02, 0x01, 0x04,
        // Complete list of 16-bit Service UUIDs
        0x03, 0x03, 0x12, 0x18,
        // Appearance
        0x03, 0x19, 0x80, 0x01,
        // Manufacturer Specific Data
        0x0D, 0xFF, 0x5D, 0x00, 0x03, 0x00, 0x01, 0x18, 0x08, 0x64, 0x2A, 0xA0, 0xC8, 0x84
    };
    

    由于不知道怎么用手机重放测试,直接开始编写 ESP 代码,刷入之后,用小爱同学执行命令也能正常重放。 但是投影仪并没有反应。

    观察遥控器广播的包数据 Manufacturer Specific Data 里,有一位是每次递增的。我直接改为下一次预计的值,重放之后也无法正常开关。

    遥控器发出的包貌似是单次广播的?我看 BLE 协议里,广播包都是循环广播的?

    按帖文里的说法,他直接重放原包就实现了,感觉我是不是哪里有问题。

    现在卡住了,不知道后面如何进行。

    我的代码放在 GitHub 了:esp32-ble-remote-control

    希望各位能帮忙分析一下问题出在什么地方,谢谢

    6 条回复    2023-12-19 15:49:52 +08:00
    dule
        1
    dule  
       190 天前
    这么麻烦?像小爱音箱自带红外,米家直接添加设备-红外遥控器-投影仪-选择品牌,我的爱普生就直接搞定了,直接开关控制音量都行
    kuoruan
        2
    kuoruan  
    OP
       190 天前
    当贝 F6 是蓝牙遥控器,非红外遥控器。无法通过红外遥控
    xuextx
        3
    xuextx  
       190 天前
    @yujinchn776 红外或者射频都好解决,但是蓝牙信号目前比较麻烦。
    dule
        4
    dule  
       187 天前
    @xuextx 那就不清楚了,没研究的那么深入
    fentensoft666
        5
    fentensoft666  
       130 天前   ❤️ 1
    @kuoruan 我是当贝 F3 Air 投影仪,那串 Manufactor Data 不变就能触发开机,不知道型号之间是不是通用的,你可以试试。代码: https://github.com/fentensoft/esp32-dangbei-projector ,我也搞通了关机指令
    kuoruan
        6
    kuoruan  
    OP
       130 天前
    @fentensoft666 感谢感谢,我抽个时间再研究研究,上次没实现之后我就作罢了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   909 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 19:51 · PVG 03:51 · LAX 12:51 · JFK 15:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.