使用JDY-10m的模块
这个是AT指令操作的,每条指令的结尾都要以\r\n结尾,在用单片机操作的时候需要注意加上
看看文档中提供的AT指令:
文档链接:
模块和模块的连接方法:
1.设置组网ID
AT+NETIDXXX
这里的XXX是组网ID,很多个JDY-10m组网的时候需要都设置成这个值
2.设置模块广播名
AT+NAMEXXX
这里的XXX是广播名,也是外部可见的蓝牙名称.(手机上看到的蓝牙名称就是这个),很多个蓝牙模块组网的时候也要配置成一样的.
3.配置模块的短地址.
模块有默认的短地址,默认为MAC地址的最后一个字节
我选择在这里设置,防止MAC地址最后一个字节相同导致冲突.
AT+MADDRXXX
这里的XXX就是短地址
4.设置JDY-10m的模式
默认的其实就是对的,但是这里提一下:A0(透传模式),B1(LED灯模式),C0(低功耗的遥控器)
默认的就是A0.
如果要设置的话使用:
AT+CLSSXX
这里的XX选择上面三种中的一个
经过上面的设置就可以在模块和模块之间通信了
简单的蓝牙传输就不说了,这里看一下mesh协议的格式
我们不关心命令相关的协议,只关心数据相关的协议:
向当前网络内所有模块发送广播包:
AAFBFFFF112233445566
发送的数据为十六进制的112233445566
向一个特定的模块发送数据:
AAFB0002112233
向短地址为02的模块发送数据112233
最常用的就是上面的这两个
接下来看接收的协议:
看第一个字节来区分接收到的是数据协议还是命令协议
第一个字节是AA的是数据协议
第一个字节是BB的是命令协议
来看一个具体的协议包:
AA02051122334455
这个协议可以看出他是一个数据包,是短地址为02发来的,05是发送来的字节数,1122334455是数据的具体内容
一般只需要上面的几条就可以做到大部分的通信,还有一些命令协议值得去看看
APP和模块的通信;
首先在模块上配置:
AT+ISCEN1
表示打开APP的连接密码,就说明APP必须要先发送密码才能和模块通信
密码是什么呢 ?
默认是1234,当然我们可以设置
AT+PSSXXX
这里的XXX就是密码
到这里模块的配置就完成了
如果我们的APP要给模块发送数据首先要连接上模块,之后选择UUID:FFE2(支持MESH)
给模块发送验证密码之后就可以通信了,是以FE开头.
发送的格式为:
FE31323334
这里的31323334就对应了1234,因为密码都是字符串的,所以要发送assci码
到这里就可以相互通信了.
给模块发送数据的协议,是以FA开头:
FAFF1234
表示给整个网络发送广播数据1234注意这里的1234还是十六进制的
FA061234
表示给短地址是06的模块发送数据1234
经过实际的测试发现:
为什么APP能给网络内的所有模块发送数据?
从接收到的数据包来看APP是使用当前所连接的模块的短地址发送的,并且自己也会接收到同样的数据包!