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


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

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

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

    CC2541

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

    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™

    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接口。

    •移动电话附件•消费类电子产品

    CC2540/41经典应用电路

    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接口(21*4mA;2*20mA);

    IIC 接口;

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

    安全装置定时器;

    集成的高性能比较器;

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

    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!

    模块电原理图

    BT09蓝牙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等智能终端配对,从机之间不能配对。

    模块接线

    输入电压: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电源

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

    小常识(非常重要)
    TXD:发送端,一般表示为自己的发送端,正常通信必须接另一个设备的RXD。
    RXD:接收端,一般表示为自己的接收端,正常通信必须接另一个设备的TXD。
    正常通信时候本身的TXD永远接设备的RXD!
    自收自发:正常通信时RXD接其他设备的TXD,因此如果要接收自己发送的数据顾名思义,也就是自己接收自己发送的数据,即自身的TXD直接连接到RXD,用来测试本身的发送和接收是否正常,是最快最简单的测试方法,当出现问题时首先做该测试确定是否产品故障,也称回环测试。

    蓝牙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】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");
    
          }
    
      }
    
    }
    

      实验串口返回情况

    实验开源图形编程(Mind+、Mixly、编玩边学)

    实验场景图

    这几天在网上一直搜索蓝牙4.0BLE的电脑端调试软件和手机上调试app,也去了微信平台查询相关调试小程序,感觉比传统蓝牙(2.0,3.0)模块要复杂一些,老是不得要领.......

     实验开源代码

    /*
    
    【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);
    
        }
    
      }
    
    }
    

      实验串口返回情况

  • 相关阅读:
    宏定义问题
    (转载)(int)a、&a、(int)&a、(int&)a的区别,很偏僻的题
    boolalpha的作用
    一些小细节
    HTTP Keep-Alive的作用
    数据库三大范式
    laravel 安装语言包
    MySQL存储引擎中的MyISAM和InnoDB区别详解
    推荐一款超好用的工具cmder
    如何保证代码质量
  • 原文地址:https://www.cnblogs.com/eagler8/p/15861191.html
Copyright © 2020-2023  润新知