声明:这篇文章关于蓝牙的相关知识的笔记,文章中会其他网上作者的资料。由于有些文章只做参考或统计不足,如涉及版权请在评论区留言~,我会及时更改
当下蓝牙开发可谓是越来越火,不论是智能穿戴的兴起还是物联网蓝牙还是一些其他设备等等,我在最近做了两个蓝牙项目,从最初的只是通过协议实现,到现在对使用的底层协议研究,在调研中使用了很对一些类似于单面机一些机制,如果有 这方面基础的会更好的学习
首先,我们看一下最近比较火的两个蓝牙版本 4.0 和4.1
蓝牙4.0实际是个三位一体的蓝牙技术,它将传统蓝牙、低功耗蓝牙和高速蓝牙技术融合在一起,这三个规格可以组合或者单独使用。也就是说 BLE是蓝牙4.0增加的,之前没有?(TBD)
蓝牙4.0专门面向对成本和功耗都有较高要求的无线方案,其主打特性就是省电、省电、省电。极低的运行和待机功耗使得一粒纽扣电池甚至可连续工作一年之久。它有低功耗、经典、高速三种协议模式。其中:高速蓝牙主攻数据交换与传输;经典蓝牙则以信息沟通、设备连接为重点;低功耗蓝牙以不需占用太多带宽的设备连接为主。这三种协议规范能够互相组合搭配,从而适应更广泛的应用模式。正因为有了三种可以互相组合搭配的协议,蓝牙4.0因此成为唯一一个综合协议规范。它有着极低的运行和待机功耗。此外,低成本和跨厂商互操作性,3毫秒低延迟、AES-128加密等诸多特色,可以用于计步器、心律监视器、智能仪表、传感器物联网等众多领域,大大扩展蓝牙技术的应用范围。

蓝牙4.1主打IOT(Internet Of Things全联网),最新的蓝牙4.1标准是个很有前途的技术,其智能、低功耗、高传输速度、连接简单的特性将适合用在许多新兴设备上。
蓝牙4.1设备可以同时作为发射方和接受方,并且可以连接到多个设备上。举个例子,智能手表可以作为发射方向手机发射身体健康指数,同时作为接受方连接到蓝牙耳机、手环或其他设备上。蓝牙4.1使得批量数据可以以更高的速率传输,当然这并不意味着可以用蓝牙高速传输流媒体视频,这一改进的主要针对的还是刚刚兴起的可穿戴设备。例如已经比较常见的健康手环,其发送出的数据流并不大,通过蓝牙4.1能够更快速地将跑步、游泳、骑车过程中收集到。因为新标准加入了对IPv6专用通道联机的支持,通过IPv6连接到网络,实现与Wi-Fi相同的功能,解决可穿戴设备上网不易的问题。
蓝牙4.0和4.1的比较

蓝牙4.0低功耗(BLE)

TI低功耗蓝牙(BLE)介绍 这是现在开发应用中常用的
① 低功耗蓝牙Bluetooth Low Energy(BLE)是蓝牙4.0增加的。(?TBD) ,苹果系列都支持4.0.
② Android4.3(API级别18)引入内置平台支持BLE的central角色,同时提供API和app应用程序用来发现设备,查询服务,和读/写characteristics。与传统蓝牙(ClassicBluetooth)不同,蓝牙低功耗(BLE)的目的是提供更显著的低功耗。这使得Android应用程序可以和具有低功耗的要求BLE设备,如接近传感器,心脏速率监视器,健身设备等进行通信。
③ BLE低功耗蓝牙软件有2个主要组成: OSAL操作系统抽象层和 HAL硬件抽象层,多个Task任务和事件在OSAL管理下工作,而每个任务和事件又包括3个组成:BLE 协议栈,profiles和应用程序。
那接下来我们先看一下硬件中的蓝牙协议实现

蓝牙协议的组成


蓝牙协议体系中的协议按SIG的关注程度分为四层:
1.核心协议:BaseBand、LMP、L2CAP、SDP;
2.电缆替代协议:RFCOMM;
3.电话传送控制协议:TCS-Binary、AT命令集;
4.选用协议:PPP、UDP/TCP/IP、OBEX、WAP、vCard、vCal、IrMC、WAE。

除上述协议层外,规范还定义了主机控制器接口(HCI),它为基带控制器、连接管理器、硬件状态和控制寄存器提供命令接口。在图1中,HCI位于L2CAP的下层,但HCI也可位于L2CAP上层。
蓝牙核心协议由SIG制定的蓝牙专用协议组成。绝大部分蓝牙设备都需要核心协议(加上无线部分),而其他协议则根据应用的需要而定。总之,电缆替代协议、电话控制协议和被采用的协议在核心协议基础上构成了面向应用的协议。
这些都是一些供我们需要了解的资料,我们可以简单了解一下。

iOS应用

下面,我将就在iOS应用中的学习与大家分享:
首先,我们先了解我们在开发中要使用的几个概念
服务(services):蓝牙外设对外广播的必定会有一个服务,可能也有多个,服务下面包含着一些特征,服务可以理解成一个模块的窗口;
特征(characteristic):存在于服务下面的,一个服务下面也可以存在多个特征,特征可以理解成具体实现功能的窗口,一般特征都会有value,也就是特征值,特征是与外界交互的最小单位;
UUID:可以理解成蓝牙上的唯一标识符(硬件上肯定不是这个意思,但是这样理解便于我们开发),为了区分不同的服务和特征,或者给服务和特征取名字,我们就用UUID来代表服务和特征。
然后,我们引进框架,实现CBPeripheralDelegate代理方法和两个协议
/* 中心管理者 /
@property (nonatomic, strong) CBCentralManager *cMgr;
/* 连接到的外设 /
@property (nonatomic, strong) CBPeripheral *peripheral;
实现代理方法
发现服务


- (void) peripheral:(CBPeripheral *)peripheral didDiscoverServices:(NSError *)error{
//发现服务实现方法
}

特征发现
- (void) peripheral:(CBPeripheral *)peripheral didDiscoverCharacteristicsForService:(CBService *)service error:(NSError *)error{
NSLog(@"特征发现");
//发现特征进行特征辨别
}

上行广播发射服务

- (void) peripheral:(CBPeripheral *)peripheral didUpdateValueForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error{
// 收到广播实现的方法
}

另外,如果我们想实现下行写入的话吗,需要硬件支持写入,并开放uuid

 [self.peripheral writeValue:data forCharacteristic:self.txCharacteristic type:CBCharacteristicWriteWithoutResponse];

当然,关于广播包内容和写入内容,建议与硬件工程师一起沟通。。。。
欢迎一起交流学习,写的不是很准确的地方还请大家批评指正

iOS进阶--蓝牙技术相关推荐

  1. iOS开发 蓝牙技术4.0详解

    前言 前端时间,同学在做项目过程中遇到关于蓝牙方面的问题,今天我就给大家进行详细的进行讲解下蓝牙在iOS开发中的具体实现.在介绍蓝牙前,大家要搞清楚什么是蓝牙? 什么是蓝牙? 随着蓝牙低功耗技术BLE ...

  2. iOS中蓝牙技术的实现

    iOS中提供了4个框架用于实现蓝牙连接 1.GameKit.framework(用法简单) 只能用于iOS设备之间的连接,多用于游戏(比如五子棋对战),从iOS7开始过期.相同应用程序才可以传数据. ...

  3. iOS简易蓝牙对战五子棋游戏设计思路之一——核心蓝牙通讯类的设计

    iOS简易蓝牙对战五子棋游戏设计思路之一--核心蓝牙通讯类的设计 一.引言 本系列博客将系统的介绍一款蓝牙对战五子棋的开发思路与过程,其中的核心部分有两个,一部分是蓝牙通讯中对战双方信息交互框架的设计 ...

  4. 蓝牙信号强度检测app_基于蓝牙技术的智能插座方案

    有这样一句话"科技时代,生活轻快".随着社会现代化程度越来越高,科技的应用为人们的生活带来便捷,大大提高了工作效率.纵观市场上"智能家居"产品很多,功能各异,各 ...

  5. BlueTooth: 蓝牙技术入门者指南

    玩蓝牙,先要识蓝牙!  蓝牙是什么?蓝牙可以做什么?你每次听到这个耳熟的科技名称时,可能无法具体想 像它是什么样的.事实上,蓝牙技术能让许多3C产品变得更加方便好用,它不但可以取代传统的传输线连接方式 ...

  6. 使用低功耗蓝牙技术将可穿戴无线传感器连接到物联网---凯利讯半导体

    工业物联网 (IIoT) 在很大程度上要依赖传感器从便携式可穿戴系统收集数据,以便监控运动.压力.湿度和其他众多特征,然后将这些数据馈送至云进行处理. 通过模块方式,我们可以快速轻松地将传感器添加到设 ...

  7. iOS简易蓝牙对战五子棋游戏设计思路之二——核心棋盘逻辑与胜负判定算法

    2019独角兽企业重金招聘Python工程师标准>>> iOS简易蓝牙对战五子棋游戏设计思路之二--核心棋盘逻辑与胜负判定算法 一.引言 上一篇博客我们介绍了在开发一款蓝牙对战五子棋 ...

  8. iOS进阶开发-iOS性能优化-关东升-专题视频课程

    iOS进阶开发-iOS性能优化-3316人已学习 课程介绍         介绍了性能优化方法,其中包括内存优化.资源文件优化.延迟加载.持久化优化.使用可重用对象和并发访问等.这些内容都是非常重要的 ...

  9. iOS进阶课程-Passbook编程-关东升-专题视频课程

    iOS进阶课程-Passbook编程-1999人已学习 课程介绍         介绍了Passbook服务的重要性,Passbook服务的流程.还介绍了Pass风格.Pass内部结构.Pass创建. ...

最新文章

  1. 一些有用的Exadata诊断命令
  2. QToolButton设置背景无效的思考
  3. 吴恩达《神经网络与深度学习》精炼笔记(5)-- 深层神经网络
  4. Typescript尝试
  5. 深度学习pytorch--多层感知机(二)
  6. 为什么我喜欢写即时通讯软件呢?
  7. linux如何打开dhcp服务,怎么开启DHCP服务器啊
  8. tomcat的连接数与线程池
  9. Ubuntu18.04 + CUDA10.0 + tensorflow-gpu 安装过程
  10. Atitit.cateService分类管理新特性与设计文档说明v1
  11. 【Gym-100837E】Optimal Rest【完全背包】
  12. 李沐-动手学深度学习
  13. Java 随机生成中文姓名,手机号,邮编,住址
  14. 指数历史估值源码分享,寻找最佳底部机会!
  15. 操作系统之运行环境简介
  16. 网易易盾js逆向分析
  17. 视频号新人直播应该准备什么?
  18. 绿色版浏览器DIY,大家别乱用网上的非官方绿色版,自己动手吧,很简单!(2015-11-26更新)
  19. Ubuntu18+ 使用redshift调色温 夜间闪烁
  20. 解决windows的挖矿木马

热门文章

  1. C语言中的fprintf和printf区别在哪?
  2. eagle使用注意点
  3. opengl 点精灵的使用
  4. android开发从小工到专家 1116
  5. 超图隐藏地球、太阳、大气层、阴影方式
  6. Android 目前最稳定和高效的UI适配方案
  7. [源码和文档分享]基于JAVA和SQL SERVER数据库实现的个人财务管理系统
  8. Unity实验室之根据模板自动生成文件
  9. oracle如何解析json,oracle 解析json格式
  10. 山重水复疑无路,柳暗花明又一村——记一次在win7下安装MATLAB的经历