这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界» 论坛首页» 企业专区» TI» 蓝牙4.0模块开发指南

共22条 1/3 1 2 3 跳转至

蓝牙4.0模块开发指南

菜鸟
2016-07-13 17:52:24 打赏
蓝牙4.0广泛应用于可穿戴设备、智能控制系统、智能家居等领域。我们在使用过程中难免遇到不同的问题。本帖以深圳市馒头科技有限公司的MT-BLE系列蓝牙4.0模块为例,将蓝牙4.0模块各种使用情景写给各位需要应用到蓝牙4.0的技术人员。

第一节 MTSerialBle简介

第二节 通信演示


第三节 IO口操作


第四节 常用指令


第五节 串口指令


第六节 主机指令



关键词: 蓝牙4.0开发 BLE CC2541

菜鸟
2016-07-13 17:52:59 打赏
2楼
第一节 MTSerialBle简介

先介绍下MTSerialBle透传模块,MTSerialBle是深圳市馒头科技设计的低功耗蓝牙(BLE)透传模块,模块支持主从一体,可以实现模块和模块之间的数据传输,也可以和Android或IOS进行完美的数据传输。模块集成4路PWM输出,1路12位ADC输入,7个标准IO控制,6个按键触发。用户使用完全不必关心蓝牙协议,直接通过串口传输数据即可,是开发智能设备的完美选择。
MTSerialBle接口图如下所示:
111.JPG

菜鸟
2016-07-13 17:53:30 打赏
3楼
1.1 使用示例
1.1.1 使用智能手机和电器设备通讯
通过MTSerialBle的透传功能,可以建立起智能手机和普通设备的连接桥梁,相当于手机端直接和设备的串口建立起了连接。
222.JPG
1.1.2 智能灯控
通过MTSerialBle的IO控制功能,可以省去外挂的MCU,直接通过PWM和IO控制多彩LED的亮度和颜色。
333.JPG
1.1.3 取代电缆线
通过MTSerialBle的主从一体功能,将两个模块分别设置为主从模块,就可实现模块之间的相互通信,此功能可以用于一些使用电缆通信的场景,使用BLE取代通信电缆。
444.JPG

1.1.4 智能门锁
通过MTSerialBle的IO控制功能,可以省去外挂的MCU,直接通过PWM和IO控制外围电路,实现智能门锁。 555.JPG

菜鸟
2016-07-13 17:56:56 打赏
4楼
第二节 通信演示
1.1 手机和模块
手机与模块之间传输数据,我们将模块的串口通过USB转串口接入到PC,通过PC端的串口助手完成数据的收发。这里需要注意,手机必须支持蓝牙4.0功能才能和模块通讯。

1.1.1 连接模块到电脑
666.png


1.1.2 设置为从机

777.png
1.1.3 数据收发

888.png

1.1.4 Android系统

Android系统可以使用我们公司开发的BLE调试工具(MTBleTools)进行操作,可以通过应用市场或百度网盘下载此工具。

999.png 999-1.png
1.1.5 IOS系统

直接在苹果商店里面搜索MTBLE 即可搜索到。下载安装。

操作方法与安卓基本一样。


1.2 模块和模块

模块和模块传输数据,必须保证两个模块都是MTSerialBle透传模块,分别工作在主从模式,并且用户自定义数据一致。
以下我们使用两个MT254xCoreSTest演示模块之间互相透传数据。
1.2.1 连接模块到电脑

999-5.png

1.2.2 分别设置为主从

999-6.png

1.2.3 互发数据 999-7.png

菜鸟
2016-07-13 17:59:50 打赏
5楼
第三节 I/O口操作

为了保持我们在之前51单片机、STM32对I/O口控制的习惯性,MT-BLE蓝牙4.0模块的AT指令操作I/O口仍然保留这个操作写法。

111.JPG

如上图所示:

1. GND、VCC不解释,DC、DD:烧写引脚;

2. PIO0、PIO1、PIO2、PIO3、PIO4、PIO5、PIO6,这7个引脚为I/O口高低电平输出与读取;

3. PWM0、PWM1、PWM2、PWM3,这4个引脚为4路PWM输出;

4. ADC,这个引脚为AD采样;



1.1 查询/设置——LED提示方式

指令


应答


参数


查询:AT+LED?

OK+LED: Para

Para:S,N

S:待机慢闪,连接后常亮

N:待机暗,连接后亮

亮—低电平

暗—高电平

默认Para =S

设置:AT+LED[Para]

OK+LED: Para

提示:可以通过此引脚判断设备是否处于连接状态

示例:

Send: AT+LED? // 查询当前LED提示方式

Recv: OK+LED:S // 当前为 待机慢闪,连接后常亮


Send: AT+LED[N] // 设置LED提示方式为待机暗,连接后亮

Recv: OK+LED:N // 设置成功



1.2 查询/设置——单个IO电平

指令


应答


参数


查询:AT+PIO[Para1]?

OK+PIO: Para1#Para2

Para1:

IO 编号:0---6

Para2:

IO电平 0或1

设置:AT+PIO[Para1,Para2]

OK+PIO: Para1#Para2

注意:当设置IO电平时,IO自动切换为上拉输出模式。当查询IO电平时,IO自动切换为上拉输入模式。

示例:

Send: AT+PIO[0]? // 查询PIO0的电平

Recv: OK+PIO:0#1 // 当前PIO0的电平为高


Send: AT+PIO[1][0] // 设置PIO1输出低电平

Recv: OK+PIO:1#0 // 电平设置成功


这个用途,我们可以通过蓝牙控制电平驱动电路。



1.3 查询/设置——多个IO电平

指令


应答


参数


查询:AT+MPIO[Para1]?

OK+MPIO: Para1#Para2

Para1: 多个IO的集合

0x00--------0x7F

每一位对应一个IO

Para2:IO对应的电平

0x00--------0x7F

每一位对应一个IO的电平

设置:AT+MPIO[Para1,Para2]

OK+MPIO: Para1#Para2

注意:当设置IO电平时,IO自动切换为上拉输出模式。当查询IO电平时,IO自动切换为上拉输入模式。

示例:

Send: AT+MPIO[0F]? // 查询PIO0、PIO1、PIO2、PIO3的状态

Recv: OK+MPIO:0F#0A // PIO0到PIO3的电平分别为 低、高、低、高


Send: AT+MPIO[70,AA] // 设置PIO4到PIO6分别输出 低、高、低

Recv: OK+MPIO:70#20 // 设置成功 注意这里



1.4 查询/设置——PWM输出

指令


应答


参数


查询:AT+PWM[Para1]?

OK+PWM: Para1#Para2#Para3

Para1:

PWM编号: 0---3

Para2:

PWM输出频率

100-10000Hz

0:停止PWM

Para3:

PWM占空比 1---100

0:停止PWM

设置:

AT+PWM[Para1,Para2,Para3]

OK+PWM: Para1#Para2#Para3

注意:4路PWM输出的频率无法单独设置,必须是一样的,当前输出的频率为最后设置的频率。

示例:

Send: AT+PWM[1]? // 查询PWM1的当前设置

Recv: OK+PWM:1#1000#50 // PWM1的当前设置为1000Hz,占空比50%


Send: AT+PWM[2,1500,20] // 设置PWM2为输出频率为:1500Hz 占空比:20%

Recv: OK+PWM:2#1500#20 // 设置成功



1.5 查询/设置——IO主动上报功能

指令


应答


参数


查询:AT+EPIO?

OK+EPIO: Para

Para: 多个IO的集合

0x00-----0x7E

每一位对应一个IO

默认值:00

设置:AT+EPIO[Para]

OK+EPIO: Para

注意:PIO0没有主动上报功能; 设置主动上报功能后,相应IO自动切换为输入模式。

使用建议:常态为高电平,触发时为低电平。

使能IO主动上报功能后,当对应IO电平发生变化时,与之连接的设备将会接收到相应的提示

Recv: OK+MPIO:7E#3E // PIO6当前电平低,PIO1~PIO5为高

Recv: OK+MPIO:70#70 // PIO4~PIO6为高

Recv: OK+MPIO:0E#03 // PIO1~PIO2为高,PIO3为低

示例:

Send: AT+EPIO? //查询当前IO主动上报功能

Recv: OK+EPIO:10 // 当前PIO4开启了主动上报功能


Send: AT+EPIO[7E] // 设置PIO1~PIO6都开启主动上报功能

Recv: OK+EPIO:7E // 设置成功



1.6 查询——ADC当前电压

指令


应答


参数


查询:AT+ADC?

OK+ADC: Para

Para:

ADC电压值0-1250mV

注意:由于adc采样内部基准源,所以采集电压的范围为0-1250mV。

示例:

Send: AT+ADC? // 查询ADC当前电压值

Recv: OK+ADC:100 // ADC当前为100mV



专家
2016-07-13 18:42:25 打赏
6楼
不错!收藏学习。

菜鸟
2016-07-14 14:05:52 打赏
7楼
第四节 常用指令

1.1测试

指令



应答




参数




AT+



OK+




示例:

Send: AT+ //测试指令

Recv: OK+ //指令测试成功


1.2固件版本查询

指令



应答




参数




查询:AT+VERS?



OK+版本信息




示例:

Send: AT+VERS? //查询固件版本

Recv: OK+MTSeriBleV220 //当前固件版本为V220


1.3查询/设置——设备名

指令



应答




参数




查询:AT+NAME?



OK+NAME: Para



Para:模块名称

最长允许11个字符,包括字母、数字、下划线。

默认Para=MTSeriBlexx



设置:AT+NAME[Para]



OK+NAME: Para


示例:

Send: AT+NAME? //查询当前设备名

Recv: OK+NAME:MTSeriBle12 // 当前设备名为:MTSeriBle12


Send: AT+NAME[Serial] //设置设备名为Serial

Recv:OK+NAME:Serial //设备名成功设置为Serial


1.4恢复出厂设置

指令



应答




参数




AT+RENEW



OK+RENEW



无(此指令会使模块重启)


示例:

Send: AT+RENEW //恢复出厂设置

Recv: OK+RENEW //模块即将重启


1.5重启模块

指令



应答




参数




AT+RESET



OK+RESET



无(此指令会使模块重启)


示例:

Send: AT+RESET //重启模块

Recv: OK+RESET //模块即将重启



1.6查询——当前工作状态

指令



应答




参数




查询:AT+STAS?



OK+STAS: Para



ParaA~E

A:空闲

B:广播

C:扫描

D:连接建立

E:连接断开


示例:

Send: AT+STAS? //查询当前状态

Recv: OK+STAS:B //设备当前正在广播



1.7查询/设置——状态通知使能

指令



应答




参数




查询:AT+NOTI?



OK+NOTI: Para



ParaYN

Y:使能通知

N:禁止通知

默认Para=Y



设置:AT+NOTI[Para]



OK+NOTI: Para


注意:使能通知后,模块将会主动从串口输出当前的状态。禁止通知后,串口只输出无线端传输的数据以及指令的响应。

示例:

Send: AT+NOTI? // 查询通知是否使能

Recv: OK+NOTI:Y // 当前通知为使能状态


Send: AT+NOTI[N] // 设置通过为禁止

Recv: OK+NOTI:N // 设置成功



1.8查询/设置——模块工作方式

指令



应答




参数




查询:AT+IMME?



OK+IMME: Para



ParaYN

Y:上电立即自动工作

N:上电等待指令

默认para=Y



设置:AT+IMME[Para]



OK+IMME: Para


注意:上电工作在主从模式下分别对应如下功能

从机模式下:

自动工作为开始广播,如果为手动工作方式,则需要通过指令开启广播。详见4.3。

主机模式下:

开始扫描设备并且尝试连接,如果有成功连接过的设备在信号范围内,则会自动连接此设备。如果为手动工作方式,这需要通过指令进行扫描和连接操作,详见第5章。


示例:

Send: AT+IMME? //查询工作方式

Recv: OK+IMME:Y //当前为上电自动工作方式


Send: AT+IMME[N] //设置为手动工作方式

Recv: OK+IMME:N //设置成功




1.9查询/设置——主从模式

指令



应答




参数




查询:AT+ROLE?



OK+ROLE: Para



ParaCP

C:主机

P:从机

默认para=P



设置:AT+ROLE[Para]



OK+ROLE: Para


注意:设置指令会使模块重启

示例:

Send: AT+ROLE? // 查询当前模式

Recv: OK+ROLE: P //当前为从机模式


Send: AT+ROLE[C] //设置为主机模式

Recv: OK+ROLE:C //设置成功,模块即将重启


1.10远控指令

指令



应答




参数




AT+R[Para]



远控指令应答



Para:AT指令


说明:在指令模式下,此指令可将AT指令发送至远端模块。此指令只适用模块与模块之间,如果为模块与手机之间,可以通过指令服务实现对远端模块的控制,详见《MTSerialBle-App开发指南》。

示例:

Send: AT+R[AT+VERS?] //查询远端模块的固件版本

Recv: OK+MTSeriBleV150 //远端模块的固件版本为150


Send: AT+R[AT+PIO[1,1]] //设置远端模块的PIO1输出高电平

Recv: OK+PIO:1#1 //远端模块的PIO1输出电平为高


菜鸟
2016-07-14 14:06:18 打赏
8楼
第5节串口指令

由于USB CDC串口参数为自适应,所以串口指令对USB CDC 串口无效,例如USBDongle。

1.1查询/设置——串口波特率

指令



应答




参数




查询:AT+BAUD?



OK+BAUD: Para



ParaA~G

A2400

B4800

C9600

D19200

E38400

F57600

G115200

H230400

默认para=G



设置:AT+BAUD[Para]



OK+BAUD: Para


注意:USBDongle的串口参数为自适应,所以此指令设置无效。使用USBDongle,当PC端的波特率设置为9600时,USBDongle自动进入指令模式。

示例:

Send: AT+BAUD? // 查询当前波特率

Recv: OK+BAUD:G // 当前波特率为115200


Send: AT+BAUD[C] // 设置串口波特率为9600

Recv: OK+BAUD:C // 设置成功



1.2查询/设置——串口停止位

指令



应答




参数




查询:AT+STOP?



OK+STOP: Para



ParaA~B

A1位停止位

B2位停止位

默认para=A



设置:AT+STOP[Para]



OK+STOP: Para


示例:

Send: AT+STOP? // 查询串口停止位

Recv: OK+STOP:A // 当前停止位为1位


Send: AT+STOP[B] // 设置停止位为 2位

Recv: OK+STOP:B // 设置成功

1.3查询/设置——串口发送延时时间

指令



应答




参数




查询:AT+SDLY?



OK+SDLY: Para



Para0~10000(单位:ms)

0:不延时

默认Para =0



设置:AT+SDLY[Para]



OK+SDLY: Para


注意:串口发送延时——当无线端收到数据后RDY口将会输出低电平,并且开始延时这个时间后开始从串口输出数据,可以利用此功能唤醒外部MCU。

此值建议设置为MCU从唤醒到能够接收数据的时间。

示例:

Send: AT+SDLY? // 查询串口发送延时

Recv: OK+SDLY:1000 // 当前串口发送延时为 1000ms


Send: AT+SDLY[0] // 设置串口发送延时0ms——广播发送延时

Recv: OK+SDLY:0 // 设置成功


菜鸟
2016-07-19 14:24:29 打赏
9楼
第5章 主机指令
主机指令在从机模式下无效。模块工作在主机时,只能与MTSerialBle透传从机连接。
5.1 扫描从机
指令 应答 参数
AT+SCAN OK+SCAN: Para1#Para2…… Para1:扫描到的设备数量
Para2:扫描到的设备地址列表
注意:默认扫描时间为5秒,完成5秒扫描后才有响应。
示例:
Send: AT+SACN // 开始扫描从设备
Recv: OK+SCAN:3#112233445566#223344556677#334455667788 // 扫描到3个从设备

Send: AT+SACN // 开始扫描从设备
Recv: OK+SCAN:0 // 没有扫描到从设备

当开启扫描显示设备名或显示信号强度时,扫描响应将会携带设备名和信号强度,具体响应如下。

1. 开启显示设备名:
Recv: OK+SCAN:2#112233445566@abc#223344556677@bcd // 扫描到2个从设备
设备MAC地址 设备名
设备1 112233445566 abc
设备2 223344556677 bcd

2. 开启显示信号强度:
Recv: OK+SCAN:2#112233445566@-50#223344556677@-63 // 扫描到2个从设备
设备MAC地址 信号强度
设备1 112233445566 -50dBm
设备2 223344556677 -63dBm

3. 同时显示设备名和信号强度
Recv: OK+SCAN:2#112233445566@abc@-50#223344556677@bcd@-63 // 扫描到2个从设备
设备MAC地址 设备名 信号强度
设备1 112233445566 abc -50dBm
设备2 223344556677 bcd -63dBm


5.2 设置/查询——扫描参数
指令 应答 参数
查询:AT+RANG? OK+RANG:Para1#Para2 Para1:持续扫描时间
范围:1~10
单位:秒/S
默认值:5
Para2:扫描信号范围
范围:10~100
单位:dBm
默认值:100
设置:
AT+RANG[Para1,Para2] OK+RANG:Para1#Para2
注意:扫描时间为主设备查找从设备的时间,如果从设备当前在信号范围内广播,一般情况5秒内可以扫描到。扫描信号范围可用户过滤较远的设备,只扫描离主设备近的从设备,此值越小距离越近。
例如我们设置参数为AT+RANG[10,50],则表示持续扫描10秒,并且只扫描信号强度大于-50dBm的设备。
示例:
Send: AT+RANG? // 查询当前扫描参数
Recv: OK+RANG:5#100 // 持续扫描5秒,只扫描信号强度在-100dBm以内的设备

Send: AT+RANG[10,50] // 设置扫描参数为持续扫描10秒,只扫描-50dBm以内的设备
Recv: OK+RANG:10#50 // 设置成功


5.3 连接搜索结果中指定序号的设备
指令 应答 参数
AT+CONN[Para] 连接成功:OK+CONN:Para
连接失败:FAIL+LINK Para:要连接的设备在搜索结果中的索引号
注意:此索引号要小于SCAN指令返回的搜索到的设备数量,编号从0开始。
示例:
Send: AT+CONN[0] // 连接扫描结果中第0个设备
Recv: OK+CONN:0 // 开始连接

如果使能了通知功能,在开启广播时将还会接收到
Recv:WAR+LINK:Y // 连接建立
Recv:FAIL+LINK // 连接失败


5.4 连接指定地址的设备
指令 应答 参数
AT+CON[Para] 连接成功:OK+CON:xxxxxxxx
连接失败:FAIL+LINK Para:要连接的设备MAC地址
注意:蓝牙的MAC地址为6Byte,用字符串表示为12个字符,例如112233445566。
示例:
Send: AT+CON[112233445566] // 连接MAC地址为112233445566的从设备
Recv: OK+CON:112233445566 // 开始连接

如果使能了通知功能,在开启广播时将还会接收到
Recv:WAR+LINK:Y // 连接建立
Recv:FAIL+LINK // 连接失败







5.5 连接最后一次连接成功的设备
指令 应答 参数
AT+CONL 连接成功:OK+CONL
连接失败:FAIL+LINK 无
注意:如果最后一次连接成功的设备当前正在信号范围内广播,则可以直接连接成功,否则连接失败。
示例:
Send: AT+CONL // 连接最后一次连接成功的设备
Recv: OK+CONL // 开始连接

如果使能了通知功能,在开启广播时将还会接收到
Recv:WAR+LINK:Y // 连接建立
Recv:FAIL+LINK // 连接失败





5.6 扫描时是否显示设备名
指令 应答 参数
查询:AT+SNAME? OK+SNAME:Para Para:是否显示设备名
Y:显示
N:不显示
默认para=N
设置:AT+SNAME[Para] OK+SNAME:Para
示例:
Send: AT+SNAME? // 查询扫描时是否显示设备名
Recv: OK+SNAME:N // 扫描时不显示设备名

Send: AT+SNAME[Y] // 设置扫描时显示设备名
Recv: OK+SNAME:Y // 设置成功



5.7 扫描时是否显示信号强度
指令 应答 参数
查询:AT+SRSSI? OK+SRSSI:Para Para:是否显示信号强度
Y:显示
N:不显示
默认para=N
设置:AT+SRSSI[Para] OK+SRSSI:Para
示例:
Send: AT+SRSSI? // 查询扫描时是否显示信号强度
Recv: OK+SRSSI:N // 扫描时不显示信号强度

Send: AT+SRSSI[Y] // 设置扫描时显示信号强度
Recv: OK+SRSSI:Y // 设置成功

菜鸟
2016-07-25 11:32:17 打赏
10楼
iBeacon搜索模块 iBeacon信息采集模块 可以搜索市面上所有的标准iBeacon设备 https://item.taobao.com/item.htm?spm=a1z10.1-c.w4004-13377699222.17.RaH3Il&id=531554951201

共22条 1/3 1 2 3 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]