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); } } }
实验串口返回情况