BLE HID控制手机相机或音乐

BLE HID涉及到设备管理。具体内容看<<设备管理>>部分。

BLE HID涉及到白名单。具体内容看<<白名单>>部分。

BLE HID涉及到定向广播。具体内容看<<定向广播>>部分。

硬件平台:官方52开发板

参考例程:C:..\nRF5_SDK_11.0.0_89a8197\examples\ble_peripheral\ble_app_hids_mouse\

移植可以把显示和电池服务去掉,只拷贝hid部分。

把UUID改为 BLE_UUID_HUMAN_INTERFACE_DEVICE_SERVICE 我们在手机设置--蓝牙功能界面可以手动搜索蓝牙HID设备并进行连接。添加了HID服务后绑定该设备后断开连接,手机还可以自动连接。

一、该 鼠标示例中 报告描述符 描述了 3 中报告

 

报告 1,描述鼠标 按键和滚轮数据如何组织的。

报告 2,描述鼠标 的移动数据是如何组织的。

报告 3, 描述了一个高级按键,其功能是控制音乐的播放等。

二、HID report map

 

 

 

2.1、下面只分析report 3,因为控制相机和音乐是使用report 3.

定义了 report size 为 1 即 1 bit 。report count 为 1,即 1 个 1bit。

因为 report size 和 report count 为 global 项目,应用到 usage 中,也就是 report 3 中的 8个 usage 都是 1bit,8 个即凑成了 1 个字

节。每个位表示一个功能,所以实际传送 1 字节,通过设置其中的位就能实现不同的控制了。

bit 0 (0x01)  :开始暂停

bit 1 (0x02 ) :一键启动应用

bit 2 (0x04 ) :下一首

bit 3 (0x08 ) :上一首

bit 4 (0x10 ) :音量 -

bit 5 (0x20 ) :音量 +

bit 6 (0x40 ) :应用控制

bit 7 (0x80 ) :返回键


三、最后创建 HID 服务

 

 

四、按键处理里添加相机或音乐控制程序

void media_player_control(uint8_t control)

{

uint32_t err_code;

uint8_t buffer[1];

buffer[0] = control;

err_code = ble_hids_inp_rep_send( &m_hids,

  INPUT_REP_MPLAYER_INDEX,

  1,

  buffer );

if(( err_code != NRF_SUCCESS ) &&

   ( err_code != NRF_ERROR_INVALID_STATE ) &&

   ( err_code != BLE_ERROR_NO_TX_PACKETS ) &&

   ( err_code != BLE_ERROR_GATTS_SYS_ATTR_MISSING ))

{

APP_ERROR_HANDLER( err_code );

}

buffer[0] = 0;

err_code = ble_hids_inp_rep_send( &m_hids,

 INPUT_REP_MPLAYER_INDEX,

1,

buffer );

if(( err_code != NRF_SUCCESS ) &&

   ( err_code != NRF_ERROR_INVALID_STATE ) &&

   ( err_code != BLE_ERROR_NO_TX_PACKETS ) &&

   ( err_code != BLE_ERROR_GATTS_SYS_ATTR_MISSING ))

   {

APP_ERROR_HANDLER( err_code );

   }

}

//PS: 需要再发送一个0,作用类似于释放按键。

//如果不发送这个“释放”,安卓系统有的是没问题,但苹果系统中,音量+发送后相当于一直按住音量+键。

//所以发送这个“释放”控制就能达到按一次只增加一次音量的作用。

 

工程默认使用了绑定和白名单的,所以如果连接了一个手机后再重启开发板, 开发板就是使用之前连接过的手机执行白名单过滤,导致其他手机搜不

到该设备了。所以可以直接修改代码让其每次启动时删除绑定信息。
————————————————
版权声明:本文为CSDN博主「pig10086」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/pig10086/article/details/72402066

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
低功率蓝芽技术已是现今广泛应用的无线通讯标准之一,不论各式笔电,手机,电脑周边产品, 穿戴式装置….等等,都可以看到它的存在;近年来物联网、车联网的兴起,它更是低功耗,长时间运作的通讯主流。 诠鼎集团代理PixArt产线最新推出 PAR2802QN,基于Arm:registered: Cortex:registered: M0 核、512KB Flash、176KB SRAM以及10bits ADC、IR transceiver、Voice/Audio、7816 Interface、Cap Detector…等等,适合各种低功率的蓝芽产品,例如心律手环、键盘、鼠标、具语音输入的消费性产品、遥控器、游戏手柄、等等应用;PAR2802本身不但已通过BQB测试,同时PixArt也提供参考源代码,可结合HCI command与产测程式,生产平台从固件烧录到MTK治具记录所有生产数据,让研发人员能以最快的速度开发产品,并导入量产。 本方案,从根本的产品设计上也为客户进行诸多考量,除供不同功能的源代码,同时也支持OTA 更新韧体。方案可以选择任一PixArt 的Optical Navigation sensor,如:PAW3805EK-CJV1 TOG sensor,激光光PMW3610DM-SUDU senor,PAW3222LU-TJDU 超小型SMD sensor等,当然也做其他应用,诸如手环、手表等,其他更多方案与应用,陆续增加中。而采用Cortex-M0省电核心,整机耗电也相当省电,以鼠标为例: 搭配PAW3220DB-TJDS,供电2.7v的条件下,操作电流为1.8毫安,第一段Sleep耗电为0.0048毫安,第二段Sleep耗电为0.0-35毫安,当进入Deep sleep更只有0.014毫安, Keil 完整代码示意: 方案来源于大大通

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值