【雕爷学编程】Arduino动手做(96)---BT05蓝牙4.0BLE模块

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

实验九十六:BT-05蓝牙4.0BLE 模块 串口引出 CC2541兼容HM-10 蓝牙AT09模块

【雕爷学编程】Arduino动手做(96)---BT05蓝牙4.0BLE模块

CC2541
是一款针对低能耗以及私有 2.4GHz 应用的功率优化的真正片载系统 (SoC) 解决方案。 它使得使用低总体物料清单成本建立强健网络节点成为可能。 CC2541 将领先 RF 收发器的出色性能和一个业界标准的增强型 8051 MCU、系统内可编程闪存存储器、8kB RAM 和很多其它功能强大的特性和外设组合在一起。 CC2541 非常适合应用于需要超低能耗的系统。 这由多种不同的运行模式指定。 运行模式间较短的转换时间进一步使低能耗变为可能 。

【雕爷学编程】Arduino动手做(96)---BT05蓝牙4.0BLE模块
CC2540/41特性
  (1)射频
  –2.4GHz蓝牙符合低能耗规范和私有的RF片载系统
  –支持250kbps,500kbps,1Mbps,2Mbps的制器内核数据速率–出色的链路预算,不使用外部前段而支持长距离应用–高达0dBm的可编程输出功率
  –出色的接收器灵敏度(1Mbps时为-94dBm),可选择性,和阻挡性能
  –适合于针对符合世界范围内的无线电频率调节系统:ETSIEN300328和EN3004402类(欧洲),FCCCFR4715部分(美国),和ARIBSTD-T66(日本)

(2)布局
  –极少的外部组件–提供参考设计支持
  –6mm×6mm方形扁平无引脚(QFN)-40封装
  –与CC2540引脚兼容(当不使用USB或者I2C时)(ADC)

(3)低功率
   –工作模式RX低至:17.9mA
  –工作模式TX(0dBm):18.2mA–功率模式1(4μs唤醒):270μs–功率模式2(睡眠定时器打开):1μs–功率模式3(外部中断):0.5μs

(4)工作模式下TPS62730兼容低功率
  –RX低至:14.7mA(3V电源)–TX(0dBm):14.3mA(3V电源)

(5)微控制器
  –具有代码预取功能的高性能和低功率8051微控制器内核
  –系统内可编程闪存,128或者256KB
  –在所有功率模式下具有保持功能的8KBRAM
  –支持硬件调试
  –扩展基带自动化,包括自动确认和地址解码
  –所有功率模式中对所有相关寄存器的保持

(6)外设
  –功能强大的5通道直接内存访问(DMA)
  –通用定时器(1个16位,2个8位)
  –红外(IR)生成电路
  –具有捕捉功能的32kHz睡眠定时器
  –精确数字接收到的数字信号强度指示器(RSSI)支持
  –电池监视器和温度感应器
  –含8通道和可配置分辨率的12位模数转换器(ADC)
  –高级加密标准(AES)安全协处理器
  –2个功能强大的支持几个串行协议的通用异步接收发器(UART)
  –23个通用I/O引脚(21×4mA,2×20mA)
  –I2C接口
  –2个具有LED驱动功能的I/O引脚
  –安全装置定时器
  –集成的高性能比较器(7)开发工具
  –CC2541评估模块工具包(CC2541EMK)
  –CC2541小型开发工具包(CC2541DK-MINI)
  –SmartRF™软件
  –提供IAR嵌入式Workbench™

【雕爷学编程】Arduino动手做(96)---BT05蓝牙4.0BLE模块
CC2540/41软件特性
  (1)符合针对单模式蓝牙低能耗(BLE)解决方案的符合蓝牙4.0协议的堆栈器
  –完全功率优化堆栈,包括控制器和主机
  –GAP-中心设备,外设,或者广播器(包括组合角色)
  –属性协议(ATT)/通用属性配置文件(GATT)
  –客户端和服务器
  –L2CAP说明
  (2)示例应用和配置文件
  –针对GAP中心和外围作用的一般应用
  –距离临近,加速计,简单关键字,和电池GATT服务
  –BLE软件栈内支持更多应用
  (3)多重配置选项
  –单芯片配置,允许应用运行在CC2541上
  –用于运行在一个外部微处理器接口
  –BTool-用于评估、开发和测试的视窗(Windows)PC应用

应用范围
  •2.4GHz蓝牙低能耗系统
  •私有的2.4GHz系统
  •人机接口器件(键盘,鼠标,遥控)
  •体育和休闲设备1个HWI2C接口。
  •移动电话附件•消费类电子产品

【雕爷学编程】Arduino动手做(96)---BT05蓝牙4.0BLE模块

CC2540/41经典应用电路
【雕爷学编程】Arduino动手做(96)---BT05蓝牙4.0BLE模块
CC2540/41

射频部分: 支持BLE协议栈及私有2.4G RF片载系统;

传输速率:250kbps,500kbps,1Mbps,2Mbps;

输出功率:0dBm(支持可编程输出功率)

接收灵敏度:-94dBm@1Mbps;

适合针对符合世界范围内的无线电频率应用系统 出色的链路预算,支持超长距离应用;

低功耗: 工作模式RX低至17.9mA; 工作模式TX(0dBm):18.2mA; 功率模式1(4us唤醒):270uA; 功率模式2(睡眠定时器开):1uA; 功率模式3(外部中断):0.5uA;

宽电源电压范围(2V-3.6V);

MCU: 具有代码预取功能的高性能和低功耗8051内核;

可编程Flash:CC2541F128 128KB 和CC2541F256 256KB;

支持硬件调试;

扩展基带自动化,包括自动确认和低至解码;

各个功率模式下,相关寄存器数据保持;

外设: 功能强大的5通道直接内存访问(DMA);

通用定时器(1个16bit,2 个8bit);

红外生产电路;

32kHz 具有捕获功能的睡眠定时器;

支持RSSI(数字信号强度指示器);

电池监视器和温度传感器 8通道12位模数转化器(可配置分辨率);

高级加密标准安全协处理器;

2个功能强大的支持多个串口协议的异步串口通信接口(UART);

23个通用I/O接口(214mA;220mA);

IIC 接口;

2个大电流I/O(直接驱动LED);

安全装置定时器;

集成的高性能比较器;

开发工具: CC2541 评估模块工具包(CC2541EMK); CC2541 小型开发工具包(CC2541DK-MINI); SmartRF 软件; 提供IAR嵌入式Workbench。

【雕爷学编程】Arduino动手做(96)---BT05蓝牙4.0BLE模块

BT05蓝牙4.0BLE模块亮点:

1.超低待机功耗 90uA~400uA

2.超远连接距离32.8英尺/10米

3.超快反应速度0.4秒

4.安卓、苹果、PC、MAC全通用.

5.收发无字节限制,最高可达3K Bytes/秒

6.不需要做MFI

7.IOS系统完美支持

8.Android4.3系统完美支持.

9.主从一体模块,具透传、远控、PIO采集三种功能,通过AT指令集进行切换和设置,

与您之前用过的蓝牙串口模块一样,在不改PCB和下位机程序的情况下轻松升级到蓝4.0!

【雕爷学编程】Arduino动手做(96)---BT05蓝牙4.0BLE模块

模块电原理图
【雕爷学编程】Arduino动手做(96)---BT05蓝牙4.0BLE模块
【雕爷学编程】Arduino动手做(96)---BT05蓝牙4.0BLE模块
【雕爷学编程】Arduino动手做(96)---BT05蓝牙4.0BLE模块
BT05蓝牙4.0BLE模块特点:

使用条件:苹果手机限定:4S及以上型号,系统版本iOS6及以上

安卓手机限定:系统为4.3版本及以上,手机蓝牙版本为4.0。

1、核心模块使用BT05从模块,引出接口包括VCC,GND,TXD,RXD,STATE。预留LED状态输出脚,单片机可通过该脚状态判断蓝牙是否已经连接,

2、LED指示蓝牙连接状态,闪烁表示没有蓝牙连接,常亮表示蓝牙已连接并打开了端口,STATE脚输出高电平为已连接,其他状态为低电平。

3、设置模块为主模式:模块已经为软件设置主从模块,通过串口发送AT+ROLE1(回车或者加\r\n),返回OK,则表示设置成功,此时模块LED灯进入快闪。主模块连接从模块需要通过AT指令进行连接(详情请参照BT05 AT指令集)。

4、底板3.3V LDO,输入电压3.6~6V,输入电压禁止超过7V!

5、接口电平3.3V,可以直接连接各种单片机(51,AVR,PIC,ARM,MSP430等),5V单片机也可直接连接,无需MAX232也不能经过MAX232!

6、空旷地有效距离7-10米,超过10米也是可能的,但不对此距离的连接质量做保证

7、配对以后当全双工串口使用,无需了解任何蓝牙协议,但仅支持8位数据位、1位停止位、无奇偶校验的通信格式,这也是最常用的通信格式,不支持其他格式。

8、在未建立蓝牙连接时支持通过AT指令设置波特率、名称、配对密码,设置的参数掉电保存。蓝牙连接以后自动切换到透传模式

9、体积小巧(3.57cm*1.52cm),工厂贴片生产,保证贴片质量。并套透明热缩管,防尘美观,且有一定的防静电能力。

10、该链接为从机,从机能与各种带蓝牙功能的电脑、蓝牙主机、大部分带蓝牙的手机、PDA、PSP等智能终端配对,从机之间不能配对。

【雕爷学编程】Arduino动手做(96)---BT05蓝牙4.0BLE模块
模块接线

输入电压:3.3V/5V 只需要一组电源供电。

内置电平转换功能。

如果用5.0V MCU与蓝牙模块通讯,5.0V电源端口供电,RX TX 逻辑电平5V

如果用3.3V MCU与蓝牙模块通讯,3.3V电源端口供电,RX TX 逻辑电平3.3V

RX,蓝牙模块串口接收端与MCU的TXD连接。

TX,蓝牙模块串口发送端与MCU的RXD连接。

GND,地端电源负极

3.3V,电源端3.3V电源

5V,电源端5V电源
【雕爷学编程】Arduino动手做(96)---BT05蓝牙4.0BLE模块
模块使用注意事项
MLT-BT05 4.0 蓝牙模块工作在 2.4G 无线频段,应尽量避免各种因素对无线收发
的影响,注意以下几点:
1、包围蓝牙模块的产品外壳避免使用金属,当使用部分金属外壳时,应尽量让模块天线部分远离金属部分。
2、产品内部金属连接线或者金属螺钉,应尽量远离模块天线部分。
3、模块天线部分应靠载板 PCB 四围放置,不允许放置于板中,且天线下方载板铣空,与天线平行的方向,不允许铺铜或走线。直接把天线部分直接露出载板,也是比较好的选择。
4、模块下方尽量铺大片 GND,走线尽量往外围延伸。
5、建议在基板上的模块贴装位置使用绝缘材料进行隔离,例如在该位置放一个
整块的丝印(TopOverLay)。

小常识(非常重要)
TXD:发送端,一般表示为自己的发送端,正常通信必须接另一个设备的RXD。
RXD:接收端,一般表示为自己的接收端,正常通信必须接另一个设备的TXD。
正常通信时候本身的TXD永远接设备的RXD!
自收自发:正常通信时RXD接其他设备的TXD,因此如果要接收自己发送的数据顾名思义,也就是自己接收自己发送的数据,即自身的TXD直接连接到RXD,用来测试本身的发送和接收是否正常,是最快最简单的测试方法,当出现问题时首先做该测试确定是否产品故障,也称回环测试。
【雕爷学编程】Arduino动手做(96)---BT05蓝牙4.0BLE模块
蓝牙4.0BLE
蓝牙发展至今经历了8个版本的更新,1.1、1.2、2.0、2.1、3.0、4.0、4.1、4.2。那么在1.x~3.0之间的我们称之为传统蓝牙,4.x开始的蓝牙我们称之为低功耗蓝牙也就是蓝牙ble,当然4.x版本的蓝牙也是向下兼容的。android手机必须系统版本4.3及以上才支持BLE API。低功耗蓝牙较传统蓝牙,传输速度更快,覆盖范围更广,安全性更高,延迟更短,耗电极低等等优点。(现在的穿戴设备都是使用BLE蓝牙技术的)
传统蓝牙与低功耗蓝牙通信方式也有所不同,传统的一般通过socket方式,而低功耗蓝牙是通过Gatt协议来实现。

主要优点
低功耗,使用标准有机电池,可运行一年乃至数年,成本低,可以完全实现兼容,速度支持1M的数据传输,可以最大程度的减少4G的串扰,更加智能,最大可以在3毫秒内完成数据的传输,安全性采用加密算法,会有数据包的加密和认证。所以蓝牙4.0的优点就是3种规格于一体,包括传统蓝牙的技术,与3.0的版本最大的区别就是功耗更低了,4.0的版本比老版本的功耗低了90%,随着蓝牙技术由手机,游戏,电脑,汽车等传统领域向物联网,医疗等新领域的发展,对用户的要求也就会越来越高,4.0的版本强化了数据传输的技术,又更注重了低功耗的性能。

【雕爷学编程】Arduino动手做(96)---BT05蓝牙4.0BLE模块
【雕爷学编程】Arduino动手做(96)---BT05蓝牙4.0BLE模块
【雕爷学编程】Arduino动手做(96)---BT05蓝牙4.0BLE模块
【雕爷学编程】Arduino动手做(96)---BT05蓝牙4.0BLE模块
实验开源代码

/*

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

实验九十六:BT-05蓝牙4.0BLE 模块 串口引出 CC2541兼容HM-10模块

1、实验项目:Arduino 调试源代码

2、实验接脚:

TXD = D0

RXD = D1

GND = GND

VCC = 3.3V

*/



void setup(){

Serial.begin(9600);

}



void loop(){

  while(Serial.available())

  {

    char c=Serial.read();

    if(c=='A')

      {

      Serial.println("Hello I am eagler8");

      }

  }

}

实验串口返回情况
【雕爷学编程】Arduino动手做(96)---BT05蓝牙4.0BLE模块
实验开源图形编程(Mind+、Mixly、编玩边学)
【雕爷学编程】Arduino动手做(96)---BT05蓝牙4.0BLE模块
实验场景图
【雕爷学编程】Arduino动手做(96)---BT05蓝牙4.0BLE模块
这几天在网上一直搜索蓝牙4.0BLE的电脑端调试软件和手机上调试app,也去了微信平台查询相关调试小程序,感觉比传统蓝牙(2.0,3.0)模块要复杂一些,老是不得要领…
【雕爷学编程】Arduino动手做(96)---BT05蓝牙4.0BLE模块
【雕爷学编程】Arduino动手做(96)---BT05蓝牙4.0BLE模块

【雕爷学编程】Arduino动手做(96)---BT05蓝牙4.0BLE模块
【雕爷学编程】Arduino动手做(96)---BT05蓝牙4.0BLE模块
【雕爷学编程】Arduino动手做(96)---BT05蓝牙4.0BLE模块
实验开源代码

/*

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

实验九十六:BT-05蓝牙4.0BLE 模块 串口引出 CC2541兼容HM-10模块

1、实验项目:通过BLE蓝牙模块与Arduino通信控制LED

2、实验接脚:

CC2541模块与Uno:

VCC——3.3V

GND——GND

TXD——RX

RXD——TX

*/



#include <SoftwareSerial.h>

char c=' ';

const byte led=13;



void setup() {

  Serial.begin(9600);

  Serial.println("BT is ready!");

  pinMode(led, OUTPUT);

}



void loop(){

  if(Serial.available())

  {

    c=Serial.read();

    Serial.println("Got input:");

    Serial.println(c);

//1的ASCII为49,0的ASCII为48

    if(c==49)

    {

      Serial.write("Serial--13--high");

      digitalWrite(13, HIGH);

    }

    if(c==48)

    {

    Serial.write("Serial--13--low");

    digitalWrite(13, LOW);

    }

  }

}

实验串口返回情况
【雕爷学编程】Arduino动手做(96)---BT05蓝牙4.0BLE模块

上一篇:VLAN 中继 单臂路由的配置(二)


下一篇:Bootstrap Demo】入门例子创建