蓝牙

Nordic的sdk和蓝牙协议栈的命名规则

眉间皱痕 提交于 2019-12-28 15:14:45
Softdevice命名规则一 Softdevice包括两种底层协议栈:BLE和ANT,BLE包括两种角色:central(又称master)和peripheral(又称slave),为此需要给这些不同类型的协议栈进行命名区分。协议栈命名格式为Sxyz,其中 x – 表示协议栈的类型,1表示BLE协议栈,2表示ANT协议栈,3表示同时支持BLE和ANT y – 表示BLE角色,1表示从设备,2表示主设备,3表示同时支持主设备和从设备 z – 表示芯片类型,0表示nRF51系列,2表示nRF52系列 比如S110,表示只支持从设备模式的nRF51 BLE协议栈 比如S130,表示既支持从设备模式又支持主设备模式的nRF51 BLE协议栈 比如S132,表示既支持从设备模式又支持主设备模式的nRF52 BLE协议栈 比如S212,表示nRF52 ANT协议栈 比如S332,表示nRF52既支持BLE协议栈又支持ANT协议栈,而且BLE协议栈既支持从设备模式又支持主设备模式 Softdevice命名规则二 大体上跟命名规则1相同,但是协议栈编号最后2位跟芯片型号一样,比如S140,代表这个协议栈专门用于nRF52840。由于52840 Flash空间很大,没有必要做各种细分的协议栈,S140协议栈是一个大而全的协议栈,包含蓝牙所有功能。 Softdevice版本编号,从1.0.0开始编号

ESP32的BLE_SPP

China☆狼群 提交于 2019-12-27 13:52:29
最近在捣鼓这个ESP32的BLE的SPP功能,把自己的心得体会写下来,如果有什么不对的地方欢迎大家来留言讨论。 首先是乐鑫官方的源码地址: https://github.com/espressif/espidf/tree/30372f5a4ff2c0dfdaad95f544dc36bcdda30b75/examples/bluetooth/bluedroid/ble/ble_spp_server 这个模式的蓝牙是低功耗蓝牙串口传输,它的工作流程是: 1、初始化蓝牙控制器 ret = esp_bt_controller_init(&bt_cfg); 然后使能蓝牙控制器 ret = esp_bt_controller_enable(ESP_BT_MODE_BLE); 这个ESP_BTMODE_BLE是使能的模式选择,可以是BLE也可以是BT还可以是两者的共存。 2、初始化蓝牙堆栈 ret = esp_bluedroid_init(); 并使能堆栈 ret = esp_bluedroid_enable(); 经过以上两个步骤,蓝牙就已经初始化完成了,是不是很简单。 接下来就是一些回调函数了, 这个是GATT的注册回调函数 esp_ble_gatts_register_callback(gatts_event_handler); 这个是GAP的注册回调函数 esp_ble_gap

国产超低功耗蓝牙5.0 PHY6202替换NRF51822

ⅰ亾dé卋堺 提交于 2019-12-27 02:24:48
现在在智能穿戴领域市场不断的追求低功耗、低成本的蓝牙芯片。蓝牙芯片目前除了Dialog公司研制蓝牙芯片是最求超低功耗的但是对于其它性能上还比较满足不了其它领域的功能,另外NORDIC、TI的蓝牙芯片虽然功耗和性能上都是不错的,但是价格实在是高,智能穿戴产品市场价格在不断的透明化促使许多厂商不得不尝试考虑换上咱们国产的蓝牙芯片来降低成本。想必大家都听说过什么汉天下、泰凌微等等这些国产蓝牙芯片吧?虽然价格低的确实NORDIC、TI、Dialog几条街,但是射频性能和MCU性能不是很稳定,应用产品领域也不是很广,内核处理能力一般。当然,一分钱一分货 超低价格摆在那 。那么现在我就为大家简单的介绍下 能替代NORDIC NRF51822 NEF51802 的PHY6202蓝牙芯片! PHY6202蓝牙芯片是一款具有强大性能,高灵活性的超低功耗芯片。同时支持低功耗蓝牙、蓝牙5.0、蓝牙MESH、ZigBee、谷歌Thread、Mist等多种通信协议,面向智能终端周边设备、智能语音、智能家居、智能制造、智能交通等应用。 PHY6202使用一颗32位 ARM® Cortex™-M0 芯片。内核M0相对于nRF51802和NRF51822处理性能要好,以及灵敏度比51822还要好!(这里跟大家科普下M0与M4内核的主要差异是处理性能) 程序上比起51802和51822 简单易用

实现Android和PC之间的蓝牙通信

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-25 21:36:09
这两天想实现PC和安卓手机的通信,限于水平,知道的方法大概有两种:基于数据包的socket和蓝牙。虽然看起来简单,但调也调了两天多。自己测试了下socket,在室内WIFI环境下时延大概是0.1s。而在3G网络下时延居然达3s之多,而且只要不发数据,端口貌似就会断掉,总之,很不爽。于是,便考虑了蓝牙的方法。   实现手机和PC的蓝牙通信,一种是最常用的蓝牙虚拟串口,这种方法可以通过配置非常简单地实现,很多外置蓝牙GPS都用这种做法。但大名鼎鼎的安卓却不支持,因此对大部分外置GPS都不提供支持(可能安卓手机大部分包含内置GPS,觉得外置的太鸡肋了)。因此必须采用第二种,蓝牙socket。 在电脑上,实在不想去在C++下开发,于是便寻找.NET组件,但实际上微软的NET库中不支持蓝牙,因此必须采用第三方的控件,名字叫inthehand. 这篇文章中详细的介绍了inthehan d组件, http://www.cnblogs.com/procoder/archive/2009/09/22/1571580.html 。由于它讨论了实现文件传输的思路,我们在这篇文章中就只讨论简单的字符传输。 它的官方网站是inthehand.net,其中多数的类库和方法都能找到。  下面是手机端的初始化代码。其中的具体含义可参照 http://android.tgbus.com/Android

蓝牙耳机音质知识

£可爱£侵袭症+ 提交于 2019-12-20 04:24:45
蓝牙的版本号以数字的形式递进更新,但蓝牙技术却并非一脉相承。蓝牙总体来看有两个分支,分别是传统蓝牙和低功耗蓝牙BLE,其中蓝牙1.1、1.2、2.0、2.1、3.0版本属于传统蓝牙,而4.0以后的蓝牙版本属于低功耗蓝牙。传统蓝牙主要用于传输音频、传输文件等场景,功耗较高;而低功耗蓝牙则用于设备匹配、数据同步、定位等场景,功耗和延迟极低,广受IoT物联网设备欢迎。 其中,听歌常用的蓝牙A2DP协议属于传统蓝牙,因此尽管蓝牙技术在消费市场已经推进到了5.0,但蓝牙耳机传输音频仍使用蓝牙2.1时定下来的A2DP 1.2。从这方面来说,蓝牙版本的升级并不会对音质造成影响,用蓝牙5.0听歌和用蓝牙2.1听歌,音质上不会有质的差别。 目前手机上所使用的蓝牙模块往往是双模的,同时支持传统蓝牙和低功耗蓝牙。在使用手机连接蓝牙耳机听歌的时候,可能利用BLE匹配耳机,然后利用传统蓝牙A2DP传输音频。在A2DP的典型环境下,音频通过SBC编码传输,音质并不理想。业界一直为提升蓝牙音质努力。尽管受限于A2DP的传输能力(SBC只能在44.1Khz下提供最大328Kbit/s的带宽),音频通过蓝牙传输无法做到百分百还原(CD音质需要带宽为1.41Mbit/s)。但如果不使用SBC,而是利用一些更加先进的压缩技术,可以让音频压缩后再通过A2DP传输,那么音质就能大幅提升。 来源: CSDN 作者: 伦茨科技

android -------- 蓝牙通信

a 夏天 提交于 2019-12-19 17:48:56
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 前面介绍了蓝牙的一些知识,今天来聊一聊蓝牙之间的通信,实现两个设备通信。 我用两部手机实现相互发消息的功能 无论是BluetoothSocket,还是BluetoothServerSocket,都需要一个UUID(全局唯一标识符,UniversallyUnique Identifier) 蓝牙的UUID 两个蓝牙设备进行连接时需要使用同一个UUID。但很多读者可能发现,有很多型号的手机(可能是非Android系统的手机)之间使用了不同的程序也可以使用蓝牙进行通讯。从表面上看,它们之间几乎不可能使用同一个UUID。 UUID的格式如下: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx UUID的格式被分成5段,其中中间3段的字符数相同,都是4,第1段是8个字符,最后一段是12个字符。所以UUID实际上是一个8-4-4-4-12的字符串。 实际上,UUID和TCP的端口一样,也有一些默认的值。例如,将蓝牙模拟成串口的服务就使用了一个标准的UUID: 00001101-0000-1000-8000-00805F9B34FB 除此之外,还有很多标准的UUID,如下面就是两个标准的UUID: 信息同步服务:00001104-0000-1000-8000-00805F9B34FB 文件传输服务

Android源码分析(六)-----蓝牙Bluetooth源码目录分析

孤街醉人 提交于 2019-12-18 04:33:07
一 :Bluetooth 的设置应用 packages\apps\Settings\src\com\android\settings\bluetooth* 蓝牙设置应用及设置参数,蓝牙状态,蓝牙设备等。 BluetoothDevicePreference.java 顾名思义,蓝牙设备首选项,也就是蓝牙设备的配置信息,比如是否连接,是否配对,是否可见等等。该类继承了preference类,主要是提供获取蓝牙设备及通知蓝牙设备配置信息变化。 BluetoothDiscoverableEnabler.java 蓝牙搜索UI逻辑处理,包括搜索暂停,搜索恢复,及蓝牙开启关闭时的蓝牙搜索处理,以及搜索超时等处理。该类同时使用了broadcast与handle机制,用来处理搜索的状态变化。 BluetoothEnabler.java 蓝牙功能的开启/关闭功能处理。 BluetoothEventRedirector.java 蓝牙事件转发处理。通过使用broadcast机制,在onstart里面注册了蓝牙的事件权限。 BluetoothNamePreference.java 监听蓝牙名字的变化 BluetoothPairingDialog.java 是activity,配对时各种提示框及按键事件处理,如用户请求配对,密码输入,密码确认,同意等提示框。 BluetoothPairingRequest

BLE低功耗蓝牙学习笔记-概述

Deadly 提交于 2019-12-17 08:54:44
声明:BLE低功耗蓝牙系列博客来自个人的学习总结,其中肯定会包含很多错误,如果发现欢迎帮忙指正。BLE内容比较多,我现在还没有完全学完,好在其分层设计,所以可以每学完一个部分就可以做相应的总结。需要说明的是该系列博客的大部分内容来自《低功耗蓝牙开发权威指南》这本书,还会包含韦东山蓝牙系列课程的部分内容。该系列博客可以提供些什么?该系列博客是对BLE相关的知识点做归纳总结,注释个人在学习过程中的观点、理解。以后的内容计划有BLE应用的使用和实现过程,尽可能的在博客内容加入协议分析的过程,总之是从作者的学习历程记录BLE学习、理解的过程。通过对BLE低功耗蓝牙的学习弥补了我对无线通讯技术的空白,今后持续学习BLE这项技术,博客也会不断完善,必要时进行调整,修改。 什么是低功耗蓝牙(BLE)? 低功耗蓝牙是一种全新的技术,是当前可以用来设计和使用功率最低的无线技术。 作为经典蓝牙的拓展,低功耗蓝牙沿用了蓝牙商标,并且借鉴了很多父辈的技术,然而,由于针对的设计目标和市场领域均与经典蓝牙有所不同,低功耗蓝牙应被视为一种不同的技术。 低功耗蓝牙在速率与功耗,更朝着降低功耗方面优化。 在设计之初,低功耗蓝牙的目标在于尽可能创造一种最低功耗的、短距离的无线技术。为了实现这一目标,低功耗蓝牙技术对体系结构的每一层都进行了优化,以降低执行任务所需的能耗。例如,与经典蓝牙相比

NRF51822蓝牙服务(7)——静态密码配对

百般思念 提交于 2019-12-17 04:01:38
前言 有时候我们希望能够在连接的时候进行密钥的验证,以保障连接的安全。为了保证低功耗蓝牙的绝大多数安全特征,必须完成两个事情。首先是设备必须互相配对;其次,设备必须分配用于加密、保障隐私并对消息进行验证的密钥。这里我们尝试使用静态密码的方式完成蓝牙配对。 实验分析 这里,我们仍然使用前面的串口实验例程。 配对连接过程: 手机连接上之后立刻调用安全请求API(sd_ble_gap_authenticate),这样手机收到后就会发送配对请求。 回复手机的配对请求,设置不绑定。这样手机每次收到设备的安全请求就会发送配对请求过去从而启动配对。 之后的配对过程会自动进行。我们只需要根据收到的BLE_GAP_EVT_AUTH_STATUS事件,判断其状态是否成功,来决定配对是不是成功了,从而决定断不断开连接。 首先,我们先定义静态密码。 #define STATIC_PASSKEY "654321" 注意:官方规定配对密码只能是6位ASCII字符串 接着定义密码操作结构体。 static ble_opt_t m_static_pin_option; 完成以上操作之后,我们需要设置一下静态密码,设置的操作需要在协议栈初始化之后,所以我们将设置密码操作放在gap_params_init()函数的最后: { uint32_t err_code; ble_gap_conn_params_t gap

蓝牙mesh

让人想犯罪 __ 提交于 2019-12-16 09:18:44
链接: 蓝牙Mesh技术应用,爱智屋科技产品介绍 从上面的连接视频中我学到的: 简单来说蓝牙mesh的功能: 1.家里的很多蓝牙设备间可以相互通讯 2.还可通过蓝牙mesh(类似于wifi)把这些蓝牙设备都连上网,远程控制这些设备 优点: 1.低功耗,省电 2.wifi多连几个网就不好了,但是蓝牙mesh不会,连几十个上百个都不会影响通讯质量 Q:蓝牙 Mesh相比于其他协议的优势 A:蓝牙 Mesh是在低功耗的基础之上开发出来的,它相对其他协议有五大优势。最大的优势就是蓝牙 Mesh无需网关就可以直接与智能终端通信,这能够充分利用了人机交互体验好的优势;第二是没有网关,成本低;三是安装非常便捷,用户体验上也尤为好;四是低功耗支持能力强;五是有强大的组网能力,双向可组250个节点,单向可组1000个节点,这在无线技术中能做到是非常不容易的! 链接: 天猫精灵蓝牙mesh方案说明 来源: CSDN 作者: 星星月亮0 链接: https://blog.csdn.net/baidu_40537062/article/details/103470398