[nRF51822] 14、浅谈蓝牙低功耗(BLE)的几种常见的应用场景及架构(科普类干货)
蓝牙在短距离无线通信领域占据举足轻重的地位——
- 从手机、平板、PC到车载设备,
- 到耳机、游戏手柄、音响、电视,
- 再到手环、电子秤、智能医疗器械(血糖仪、数字血压计、血气计、数字脉搏/心率监视器、数字体温计、耳温枪、皮肤水分计等),
- 再到智能家居等领域均占有一席之地。
而蓝牙低功耗(BLE)是在蓝牙4.0协议上修改以适用低功耗应用场景的一种蓝牙协议。
随着上一股智能消费类电子大潮的到来,BLE的各种应用也像雨后春笋般在市场上铺开。

如果想 紧跟蓝牙协议的最新动态 ,可以在https://www.bluetooth.com/找到最前沿的蓝牙技术,
同时其为开发者打造的http://developer.bluetooth.cn/开发者网站也是干货十足。

主流的BLE芯片有TI的TI CC2540/2541、CSR BC6130、创杰 IS1685S、Nordic nRF51822。
其中TI的CC2540/CC2541和Nordic的nRF51系列在智能手环、防丢器、自拍器、手持智慧医疗设备等领域竞争激烈,这两个在语音方面不强,所以和CSR的BC6130没有比较的意义。至于IS1685应该是一款透传模块,和芯片级产品没有比较意义,就相当于拿生产钢材的和制造型钢的比较。
下面以nordic公司基于nRF51提供的几种BLE例程分析市面上BLE的应用场景:(TI的CC2541也类似)
No1、智能手环、蓝牙防丢器、自拍神器
蓝牙心率计、接近控制(开锁+防丢)整个工程是一种基于BLE广播和收发的架构,目前应用该类架构的产品有智能手环、蓝牙防丢器、冰箱贴、蓝牙自拍杆等产品。

No2、串口透传模块
串口工程和心率工程很像,在是在心率工程的基础上加入了UART的发送和接收函数,接收函数采用回调函数,可以监听各种串口消息。目前应用该类架构的产品时一些2B的模块公司,淘宝上一搜一大把,他们专门生产蓝牙透传模块,供更上游厂家开发更集成的设备。

No3、空中鼠标、空中键盘、空中遥控器
空中鼠标服务展示了如何用51822实现按动按键实现控制PC中的鼠标移动,该服务是由HID建立在GATT协议上的,支持连接各种通用设备,具体讲解见蓝牙开发者社区;
hids_keyboard案例中开发板运行后,按下计算机上的“CapsLock”键(大小写切换键),开启大写,开发板上的指示灯D3 会点亮。关闭大写,指示灯D3 会熄灭。里面也是集成了HID协议。
这类集成HID的服务可以直接和具有HID接口的PC、智能机、pad进行互连。

No4、beacon
Beacon本质上是广播,手机搜索到广播信息进行跳转,弹出东西等。Beacon比广播的代码要简单地多!!!

No5、主从一对多
主从一对一及主从一对多可以构成星型网络。不过纯硬件的基于BLE的一主多从在产品上应用不太多,可能是由于:
- 相比于24L01其开发难度大、成本高、技术资料不多;
- 相比于zigbee不专业;
- 相比于wifi吞吐量不够的原因。
不过也有部分人坚持用BLE实现微微网实现设备互连互通,目前国内似乎还没有此类产品。
当然这并不表示构成星型网络应用场景不锐利,我预测在未来几年各种微型、个人、家庭通信网络将会随着云计算、物联网,作为神经末梢连接众多的传感器设备而冲上浪潮之巅。

No6、OAD、OTA、DFU
空中升级Air-DFU,即Air Device Firmware Upgrade,更专业的叫法是OAD,即on air download或OTA,即Over-the-Air Technology。
在做CS模式的开发者来看远程升级不算什么,但是在硬件领域能够支持空中升级绝对属于很大的进步。
之前给芯片升级固件需要用特殊设备(紫外线擦除等),
然后由于发现了电擦除设备而给业界带来一场不小的革命,
后来又出现了可反复擦除的芯片...
即使目前嵌入式设备基本上都是通过UART、SWD等标准烧写口进行现场烧写固件的(所以之前你的MP3中毒了还要交给修手机、MP3、MP4的小哥让他们给你重刷一遍系统)。
支持空中升级的智能消费类电子,服务商一般先把固件下载到相应的APP中,待APP检测到设备会请求进入空中升级模式,待硬件系统重启进入空中升级模式接收新的固件程序并存放在一个闲置区域,固件全部传输完毕系统再次重启,检测到有新的固件,从而将新的固件覆盖老的固件,最终实现硬件系统升级。

附录 — BLE系列教程
@nRF51822基础实验系列:
[nRF51822] 1、一个简单的nRF51822驱动的天马4线SPI-1.77寸LCD彩屏DEMO
[nRF51822] 3、 新年也来个总结——图解nRF51 SDK中的Button handling library和FIFO library
[nRF51822] 4、 图解nRF51 SDK中的Schedule handling library 和Timer library
[nRF51822] 5、 霸屏了——详解nRF51 SDK中的GPIOTE(从GPIO电平变化到产生中断事件的流程详解)
[nRF51822] 6、基于nRF51822平台的flash读写研究
[nRF51822] 8、基础实验代码解析大全 · 实验11 - PPI
[nRF51822] 9、基础实验代码解析大全 · 实验12 - ADC
[nRF51822] 10、基础实验代码解析大全 · 实验15 - RTC
[nRF51822] 11、基础实验代码解析大全 · 实验16 - 内部FLASH读写
[nRF51822] 12、基础实验代码解析大全 · 实验19 - PWM
[nRF51822] 13、浅谈nRF51822和NRF24LE1/NRF24LU1/NRF24L01经典2.4G模块无线通信配置与流程
......更新中
@CC2541基础实验系列:
1、CC2541蓝牙4.0芯片中级教程——基于OSAL操作系统的运行流程了解+定时器和串口例程了解
2、CC2541芯片中级教程-OSAL操作系统(进一步了解-OLED && 普通按键和5方向按键-中断!!!)这个系统驱动层和应用层不一样~
3、CC2541芯片中级教程-OSAL操作系统(ADC光敏电阻和修改串口波特率)
4、CC2541芯片中级教程-OSAL操作系统(简单AT指令实现+IIC软件和硬件实现驱动MPU6050)
5、CC2541芯片中级教程-OSAL操作系统(PWM+看门狗)
......更新中
主流蓝牙BLE控制芯片详解(1):TI CC2540 - 全文:德州仪器的CC2540系列产品提供用于感应器应用及行动手持装置周边的低功率蓝牙解决方案, CC2540是一个真正的系统单晶片解决方案,结合德州仪器的协定堆叠、轮廓软体及应用支援, CC2540成为市场上最具有弹性及成本效益的单模式低功率蓝牙解决方案。
主流蓝牙BLE控制芯片详解(2):CSR BC6130 - 全文:BC6130是一款超低功耗,低成本,适用于入门级的单声道蓝牙耳机解决方案,与BlueVox2引脚兼容,并包含支持一个蓝牙耳机和两个设备间多个同时连接的HFP多点连结。它还具有可编程的音频提示,可用于帮助指导用户进行配对或定制音频铃声。
主流蓝牙BLE控制芯片详解(3):创杰 IS1685S - 全文:智能型无线音频数据传输产品——S1685S单声道蓝牙芯片,是低成本的高效率单声道无线传输方案。采用免驱动方式,客户只需要把模块接入应用产品,通电,连接按键就可以快捷地实现音乐的无线传输,享受无线音乐的乐趣。(透传)
主流蓝牙BLE控制芯片详解(4):Nordic nRF51822 - 全文:nRF51822 是功能强大comtex-m0内核、高灵活性的多协议 SoC,非常适用于 Bluetooth® 低功耗和 2.4GHz 超低功耗无线应用。
@beautifulzzzz - 物联网&普适计算实践者
e-mail:beautifulzzzz@qq.com
i-blog:blog.beautifulzzzz.com
[nRF51822] 14、浅谈蓝牙低功耗(BLE)的几种常见的应用场景及架构(科普类干货)的更多相关文章
- 浅谈蓝牙低功耗(BLE)的几种常见的应用场景及架构(转载)
转载来至beautifulzzzz,网址http://www.cnblogs.com/zjutlitao/,推荐学习 蓝牙在短距离无线通信领域占据举足轻重的地位—— 从手机.平板.PC到车载设备, 到 ...
- $.ajax()方法详解 ajax之async属性 【原创】详细案例解剖——浅谈Redis缓存的常用5种方式(String,Hash,List,set,SetSorted )
$.ajax()方法详解 jquery中的ajax方法参数总是记不住,这里记录一下. 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为Str ...
- 【Android应用开发】Android 蓝牙低功耗 (BLE) ( 第一篇 . 概述 . 蓝牙低功耗文档 翻译)
转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/50515359 参考 : -- 官方文档 : https://develope ...
- Android蓝牙低功耗(BLE)模块设计
在阅读这篇文章之前你应该对GATT和Android蓝牙框架有一定的了解.这里不会向你解释Service.Characteristics等蓝牙知识.这里只是我写下我对Android Ble的再次封装来适 ...
- 【蓝牙低功耗BLE】控制GPIO来点亮LED
这节讲一下最简单的,也是最基础的东西.CC2540的IO操作,把PORT口当做GPIO来用,废话不多说,往下看. 1.硬件电路 硬件电路时最简单的,用一根GPIO去控制LED灯.因为GPIO作为out ...
- 浅谈SQL Server中的三种物理连接操作
简介 在SQL Server中,我们所常见的表与表之间的Inner Join,Outer Join都会被执行引擎根据所选的列,数据上是否有索引,所选数据的选择性转化为Loop Join,Merge J ...
- 浅谈SQL Server中的三种物理连接操作(HASH JOIN MERGE JOIN NESTED LOOP)
简介 在SQL Server中,我们所常见的表与表之间的Inner Join,Outer Join都会被执行引擎根据所选的列,数据上是否有索引,所选数据的选择性转化为Loop Join,Merge J ...
- 170221、浅谈mysql的SQL的四种连接
例子: ------------------------------------------------- a表 id name b表 id job pare ...
- 浅谈SQL Server中的三种物理连接操作(Nested Loop Join、Merge Join、Hash Join)
简介 在SQL Server中,我们所常见的表与表之间的Inner Join,Outer Join都会被执行引擎根据所选的列,数据上是否有索引,所选数据的选择性转化为Loop Join,Merge J ...
随机推荐
- Oracle获取干净的建表DDL语句,不含其它存储、表空间、段属性
早上一个同事资讯怎么获取到建表语句而且是不带存储那种SQL.Oracle自己提供了一个函数DBMS_METADATA.GET_DDL,但是获取到的建表语句含有存储.表空间.以及一些其他段的属性.如图: ...
- java中的泛型的使用与理解
什么是泛型? 泛型是程序设计语言的一种特性.允许程序员在强类型程序设计语言中编写 体验泛型代码时定义一些可变部份,那些部份在使用前必须作出指明.各种程序设计语言和其编译器.运行环境对泛型的支持均不一样 ...
- SMARTY模板中如何使用get,post,request,cookies,session,server变量
{$smarty}保留变量不需要从PHP脚本中分配,是可以在模板中直接访问的数组类型变量,通常被用于访问一些特殊的模板变量.例如,直接在模板中访问页面请求变量.获取访问模板时的时间戳.直接访问PHP中 ...
- to_char函数
TO_CHAR 是把日期或数字转换为字符串,不能指定字符串长度. 使用TO_CHAR函数处理日期:TO_CHAR(number, '格式') eg:TO_CHAR(salary,'$99,999.99 ...
- display:inline-block的间隙问题和解决办法
1.display:inline-block在水平方向的间隙: 代码如下: <style type="text/css"> *{margin:0; padding:0; ...
- oracle(sql)基础篇系列(一)——基础select语句、常用sql函数、组函数、分组函数
花点时间整理下sql基础,温故而知新.文章的demo来自oracle自带的dept,emp,salgrade三张表.解锁scott用户,使用scott用户登录就可以看到自带的表. #使用ora ...
- 如何让TortoiseSVN导出新增或修改过的文件
利用Windows系统下的TortoiseSVN客户端,可以导出指定版本之间修改过的文件,并保留完整的文件夹结构.下面我就来说说操作的步骤: 1.在网站项目的根目录下右键选择 “TortoiseSVN ...
- jQuery数据缓存方案详解:$.data()的使用
我们经常使用隐藏控件或者是js全局变量来临时存储数据,全局变量容易导致命名污染,隐藏控件导致经常读写dom浪费性能.jQuery提供了自己的数据缓存方案,能够达到和隐藏控件.全局变量相同的效果,但是j ...
- 关闭rdlc报表打印预览后,关闭客户端,抛出异常“发生了应用程序级的异常 将退出”
问题:关闭rdlc报表打印预览后,关闭客户端,抛出异常“发生了应用程序级的异常 将退出” 办法:在容纳ReportViewer的窗体后台代码中,添加如下代码即可 protected override ...
- Hibernate Session中的save(),update(),delete(),saveOrUpdate() 细粒度分析
Hibernate在对资料库进行操作之前,必须先取得Session实例,相当于JDBC在对资料库操作之前,必须先取得Connection实例, Session是Hibernate操作的基础,它不是设计 ...