基于无线射频和GPRS网络的林火监测数据采集电路设计详细教程

随着蓝牙技术的迅速发展,目前蓝牙芯片市场涌现出了许多优秀产品。CSR公司的BlueCore系列产品、Bmadcom的BCM系列产品和TI公司的CC2540系列产品都有广泛的应用。其中TI公司的CC2450和CSR公司的CSR1000芯片都非常适用于蓝牙4.0应用解决方案。

本文选用了TI公司的CC2450F128芯片作为蓝牙通信芯片,该芯片提供真正的单片低功耗蓝牙BLE解决方案,能够运行应用程序和BLE协议栈。CC2450F128芯片内部集成了高性能低功耗的8051微处理器核,片内提供来了128KB的Flash存储空间,对外支持UART和USB通信接口,所以非常适用于蓝牙4.0的应用解决方案。

1总体方案设计

该设计为基于蓝牙4.0的设备提供良好的通用方案,有助于研发特定应用的设备。系统总体架构如图1所示。在系统总体架构图中,主要包括两部分:支持蓝牙4.0的手持设备和蓝牙设备。其中支持蓝牙4.0的手持设备可以是诸如智能手机、平板电脑等;蓝牙设备则是本文提供的解决方案。支持蓝牙4.0的手持设备和蓝牙设备之间通过蓝牙4.0协议传输数据,可以为蓝牙耳机、手机防丢应用和无线拍照应用等提供数据方案。

基于无线射频和GPRS网络的林火监测数据采集电路设计详细教程

图1 系统总体架构框图

从系统总体架构框图中不难看出,该设计方案支持一对多的通信连接,即每个支持蓝牙4.0的手持设备可以同时与多个蓝牙设备建立连接,对应用功能的扩展带了极大便利。

2详细设计与实现

该部分将对系统总体架构框图中的蓝牙设备给出解决方案。此处选用了TI公司的CC2450F128芯片作为蓝牙通信芯片,该芯片最大的特点是能够提供真正的单片低功耗蓝牙BLE解决方案,能够运行应用程序和BLE协议栈,使用起来简单高效。

2.1 CC2450F128外围电路设计

低功耗蓝牙芯片CC2450F128的外围电路原理图如图2所示。从图2中可以看出CC2450F128芯片一般需要两个时钟晶振,其最为核心的部分是天线的电路设计,需要根据实际的需要调整阻抗匹配。由于CC2450F128芯片使用的是8051微处理器核,所以其可以对外提供多个IO引脚以用于其他业务逻辑的实现。

基于无线射频和GPRS网络的林火监测数据采集电路设计详细教程

图2 CC2450F128外围电路原理图

2.2通信协议扩展

该解决方案另一个重要的部分就是其通信协议的设计和扩展。通常需要按照蓝牙4.0的通信协议来扩展其配置,包括Setvice配置和Characteristic配置。

举例说明,可以先增加UUID为00001802-0000-1000-8000-00123456789b的Service,然后为该服务增加UUID为00002a06-0000-1000-8000-00123456789b的Characteristic.

通常需要根据应用的业务逻辑划分出多个功能大类,再对功能大类进行细分。每一个功能大类对应一个Service,每一个功能细分对应一个Characteristic.总体看来,每个应用可以包括多个Service,每个Service可以包括多个Characteristic.

3系统性能分析

本文提供的解决方案是为了解决基于蓝牙4.0的设备的通信问题,所以必须关注于影响其通信的几个关键因素:信号强度、设备发现时间、稳定性和误报率。

3. 1信号强度与距离的关系

信号强度是决定蓝牙4.0通信质量的最重要因素之一,为了明确实际的信号强度衰减情况,进行了深入的实际数据测量。信号强度与距离的关系的原始数据图如图3所示。在图3中,蓝色交叉点显示的是492组数据,从图3中可以看出信号强度总体走势较为明显,相同距离下的数据相对集中,部分数据有波动现象。

基于无线射频和GPRS网络的林火监测数据采集电路设计详细教程

图3 信号强度与距离的关系的原始数据图

为了更好的分析图3中的数据,需要对数据进行处理。首先以距离为依据,对同一距离下的6项信号强度数据进行均值处理,然后对处理后的数据进行数据拟合,得到信号强度与距离的关系图。

信号强度与距离的关系图如图4所示。在图4中,红色交叉点表示对同一距离下的6项信号强度数据进行均值处理后的82组数据,蓝色线条表示对该82组数据进行拟合后的曲线。从图4中可以看出信号强度在1米以内迅速衰减,之后随着距离的增加逐渐缓慢衰减,并且衰减过程中呈现波动趋势。

基于无线射频和GPRS网络的林火监测数据采集电路设计详细教程

图4 信号强度与距离的关系图

根据图4中信号强度与距离所呈现的规律,可以用于蓝牙测距方面的应用,在实现上需要考虑蓝牙信号强度本身的波动性因素,采用多次采样和历史数据校正等方式来合理处理数据,以获取可用的有效数据,提升系统本身的稳定性。

3.2设备发现时间与距离的关系

设备发现时间是评价蓝牙4.0通信质量的另一个最重要因素。在使用蓝牙设备时,通信之前的第一步工作就是扫描蓝牙设备,然而扫描过程中设备发现时间与距离存在极大的关联,为了明确该内在关系,进行了深入的实际数据测量。整理后的设备发现时间与距离的关系的统计数据如表1所示。

基于无线射频和GPRS网络的林火监测数据采集电路设计详细教程

表1

从表1中不难看出,总体趋势是距离越近,设备发现时间越短;距离越远,设备发现时间越长。当距离超出10 m时,设备发现的时间非常长或者不能发现设备,所以在实际的应用上需要考虑系统的性能参数,选择合适的通信距离。

3.3稳定性与误报率

3.3.1设备发现压力测试

为了验证该解决方案的稳定性,在10 m内采用100个蓝牙设备做设备发现压力测试。进行了压力测试之后显示,使用100个蓝牙设备进行扫描发现,距离越近的设备发现的频率越高,距离越远的设备发现的频率越低。设备的整体发现率可达到近90%,10%的设备未被发现主要原因是距离近的设备信号较强,容易被发现,优先占用资源。

3.3.2设备连接测试

设备的连接测试与硬件设备和上层的软件设计有极大的关系。理论上设备连接数量不受限制,但受到实际的软硬件资源的约束以及应用场景的不同,设备连接数量也有极大的不同。此处我们的原型设备同时连接3台蓝牙设备时非常稳定,同时连接5台蓝牙设备时较稳定,连接更多蓝牙设备时将出现不能连接的状况。

3.3.3设备误报率测试

实际的应用中,将考虑蓝牙设备当前的连接状况问题。由于当距离超出10 m时,设备发现的时间非常长或者不能发现设备,此时应用中的逻辑通常认为该蓝牙设备已断开连接,所以进行了10 m误报率测试。该测试中首先将蓝牙设备连接,然后移动到不足距离10 m的位置上检查其提示连接已断开的状况。经过100测试发现其在10 m左右的位置上的误报率在15%左右,其将受到软件的逻辑的影响。

4结束语

本文从实际应用的角度出发,设计并实现了基于蓝牙4.0的设备通信方案。该方案提供了低功耗的蓝牙解决方案,能够支持多设备的同时通信。实际实验测试结果表明,通信距离对接受到的蓝牙设备的信号强度、设备发现时间和误报率都有较大影响。本文所提供的设计方案经过大量的数据的验证,可以较好的完成蓝牙4.0通信功能,提供了多设备发现和连接的能力,以及根据信号强度测距的应用方案。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 章节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 章节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值