# Sony Alpha Remote **Repository Path**: mingkjl/sony-alpha-remote ## Basic Information - **Project Name**: Sony Alpha Remote - **Description**: No description available - **Primary Language**: C - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-08 - **Last Updated**: 2026-08-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Sony Alpha Remote 基于 Nordic nRF54L15 / Zephyr 的 Sony Alpha 蓝牙相机遥控器固件。项目面向 `SAR V1` 硬件板,支持 BLE 连接 Sony 相机、按键遥控、震动反馈和绑定信息持久化。 ## 功能 - BLE Central 模式扫描 Sony 相机遥控广播。 - 支持 Sony 相机配对、绑定保存和断线后自动重连。 - 发现 Sony BLE GATT 服务 `8000ff00-ff00-ffff-ffff-ffffffffffff`,向 `FF01` 写入遥控命令,订阅 `FF02` 状态通知。 - 已实现快门半按、快门全按、REC、AF-ON、C1。 - 拍照命令送达后跟踪 FF02 `Shutter Active → Shutter Ready`,完成一个拍照周期时震动一次。 - 支持 10 路按键/开关输入和锁定/模式状态机。 - 按键按下时触发震动马达反馈。 - 使用 ZMS/settings 保存 Bluetooth bonds。 ## 硬件目标 - Board: `nrf54l15dk/nrf54l15/cpuapp` - SDK: nRF Connect SDK / Zephyr - 主要硬件说明见 [SAR_V1_board_description_v1.1.md](SAR_V1_board_description_v1.1.md)。 当前工程通过 `app.overlay` 复用了 nRF54L15 DK 资源: - 禁用 DK 默认 LED / button 节点。 - 配置 `P1.14` 为 `PWM20` 输出,用于 DRV8838 马达 PH。 - 配置 `P1.04/P1.05` 为 UART TX/RX。 - 将 NFC 引脚作为 GPIO 使用。 ## 按键映射 所有按键为低电平有效,固件侧配置为输入上拉。 | 输入 | GPIO | 功能 | | --- | --- | --- | | KEY0 | P1.03 | 快门半按 / Shutter Half | | KEY9 | P0.00 | 快门全按 / Shutter Full | | KEY5 | P1.07 | REC | | KEY6 | P1.08 | AF-ON | | KEY7 | P1.09 | C1 / Pair Mode | | KEY3 | P1.02 | Zoom Tele / Focus In | | KEY4 | P1.06 | Zoom Wide / Focus Out | | KEY8 | P1.10 | Zoom Mode | | KEY10 | P1.12 | Focus Mode | | KEY11 | P1.13 | Lock | ### 操作逻辑 - `KEY0` 按下发送半按,下发 `Shutter Half Down`;释放发送 `Shutter Half Up`。 - `KEY9` 按下时如果半按未激活,会自动先补发半按,再发送全按;释放时释放全按和半按。 - `KEY5` 按下触发一次 REC 脉冲。 - `KEY6` 按下保持 AF-ON,释放取消 AF-ON。 - `KEY7` 短按为 C1;长按 3 秒进入重新扫描/配对;长按 10 秒清除 Bluetooth bonds。 - `KEY3/KEY4` 在 Zoom 模式下控制 Tele/Wide,在 Focus 模式下控制 Focus In/Out;按下开始、释放停止,模式切换时会立即停止当前动作。 - `KEY11` 有效时进入 Lock,立即释放所有保持类相机命令;除模式切换拨杆外,其他按键不会触发相机命令、震动、配对或刷新空闲计时。 - `KEY8/KEY10/KEY11` 作为模式/锁定输入,优先级为 Lock > Focus Mode > Zoom Mode。 注意:Zoom 需要相机或镜头支持电动/数字变焦;Focus 需要相机处于手动对焦模式。 ## 代码结构 ```text src/ main.c 初始化入口 key_input.c 按键扫描、模式状态机、按键到遥控动作映射 sony_ble.c Sony BLE 扫描、连接、配对、GATT 发现和写入 sony_remote.c Sony 遥控命令队列和相机状态通知处理 motor.c DRV8838 震动马达控制 status_led.c 状态输出后端,当前使用日志输出 board_pins.h SAR V1 显式 GPIO 引脚定义 ``` ## 构建 在已安装 nRF Connect SDK 工具链的环境中构建: ```powershell west build -b nrf54l15dk/nrf54l15/cpuapp --sysbuild -d build ``` 如果已有 `build` 目录,也可以直接: ```powershell cmake --build build ``` 构建成功后主要输出: ```text build/merged.hex build/sony-alpha-remote/zephyr/zephyr.hex build/sony-alpha-remote/zephyr/zephyr.bin ``` ## 烧录 连接调试器后执行: ```powershell west flash -d build ``` 如遇到旧固件的绑定信息影响配对,可通过 `KEY7` 长按 10 秒清除 bonds,或在烧录时进行整片擦除。 ## 配对与使用 1. 打开相机的 Bluetooth 遥控器/配对功能。 2. 设备上电后会主动扫描 Sony 相机广播。 3. 首次配对时,相机进入 pairing 状态后设备会连接并完成 bonding。 4. 配对成功后,后续上电会自动重连已绑定相机。 5. 如果需要重新配对,长按 `KEY7` 3 秒重新进入扫描/配对;长按 10 秒清除全部绑定。 ## 已知限制 - Zoom Tele/Wide、Focus In/Out 使用逆向验证的 Sony RMT-P1BT BLE 命令;不同相机和镜头组合的实际支持能力可能不同。 - `status_led.c` 当前是日志型状态后端,因为 SAR V1 工程禁用了 DK 默认 LED。 - `pm_static.yml` 为 Bluetooth settings 预留了 `0x8000` 字节的 `settings_storage` 分区;修改 Flash 布局时需要同步检查该文件。 ## 参考 - 参考实现:https://gitee.com/mingkjl/sony-alpha-remote-dk.git - 硬件说明:[SAR_V1_board_description_v1.1.md](SAR_V1_board_description_v1.1.md)