JDY-24M 超级 BLE 蓝牙模块——理解与实践

**

实验1:JDY-24M 组网 IO 控制接线图

在这里插入图片描述

第一部分:
**
在这里插入图片描述
按手册说的,通电后,不发任何指令去修改配置,使用的就是出厂默认的配置,如下:

在这里插入图片描述
SUBTYPE 默认为 0:自己的KEYx按下,只有别人的OUTPUTx输出高低电平,可通过别人的KEYx来控制自己的OUTPUTx,经过我的测试,发现KEY1和KEY2或者OUTPUT1和OUTPUT2对应不了,我的板子是按照手册的引脚图画的(丝印的KEYx和蓝牙模块所说的KEYx不一致),如图:
在这里插入图片描述
按道理是这样对应的:
在这里插入图片描述
结果最下面两个变成:
在这里插入图片描述
板子我都用万用表检查了,和我原想的对应了,暂且不知道怎么回事,可能是我哪错了,也可能是它这个引脚图KEY1和KEY2或者OUTPUT1和OUTPUT2标反了。不打紧,先不管了。

四个模块接上3.3V后,进入出厂默认配置,自动组网,工作时如下这个红色LED闪烁:在这里插入图片描述

通过最左边的模块控制其他几个:
在这里插入图片描述
其他模块可以被最左边的模块的按键控制,控制是对应的,比如:
想要使得最左边模块的LED点亮,按下其他任意一个模块的按键,即可,这个被按下的模块LED不变,其他模块的LED对应变化。
在这里插入图片描述

证实了我个人理解的这句话:自己的KEYx按下,只有别人的OUTPUTx输出高低电平,可通过别人的KEYx来控制自己的OUTPUTx,注意x是同一个值哦,即:KEY1——>OUTPUT1,KEY2——>OUTPUT2

第二部分:

组网ID比作一个村,每个房子就是组网短号,其中一个房子就是我家(本机地址),按键KEYx看作是灯开关,Kx目标短地址就是每个房子的不同层楼灯的编号(可自定义编号),K1可看作我家1楼灯的编号。别人家的按键的目标地址设置成这个编号就能控制我家的1楼的灯,OUTPUTx看作连接某层楼灯座,OUTPUT1就是1楼灯的灯座,第一部分是通过我家的开关,控制别人家的灯,只不过比较麻烦,需要跑到自己的对应楼层才能控制别人家该楼层的灯——平行控制,默认情况下我自家的该楼层灯不受自己开关控制(SUBTYPE 默认为 0),要想打开自家的开关时能同时控制别人家的灯和自己的灯,就将SUBTYPE设置为1,当然别人家也可以这样控制。

第一部分是默认设置,默认 INPUT1 到 INPUT5 按键目标短地址是 FFFF,默认
按一下 INPUT 引脚 SW 按键,会向网络内所有设备对应 OUTPUT 输出 IO 进行控制。
比如,组网后,如果想通过1号机的某个按键控制2号机的任意一个led怎么办?
查资料可知:
在这里插入图片描述
在这里插入图片描述
组网短地址就是每个模块在某个组网ID下的唯一识别地址。这里有时也叫模块短地址,我这4个模块短地址分别为1号机:32EB,2号机:3268,3号机:3287,4号机:326B

组网短地址默认 MAC 地址后 2 字节,组网短地址对模块
本身来说就是本机地址!
**Kx目标短地址可以相同。**目标短地址就是本机想控制的一个或多个主机的层楼的灯开关编号,编号相同的被控制
在这里插入图片描述
在这里插入图片描述
通过以上指令查询各个模块的本机地址:
1号机:32EB,2号机:3268,3号机:3287,4号机:326B
想通1号机的KEY5,来控制2号机的OUTPUT2,同时串口打印出0或1
串口发送给1号机的指令:AT+KEY5,3268,2,1
2号机不用设置,还采用默认的配置。

串口配置如下:
在这里插入图片描述
AT测试
AT+NETID 查ID
AT+MADDR 查本机地址
AT+KEY5,3268,2,1设置本机控制它机
AT+KEY5 查本机控制哪机
现象如下:
在这里插入图片描述
串口并没有输出0或1,但是2号机OUTPUT2输出正常,其他机对应的OUTPUT没有被KEY5控制,成功!,1号机的其他按键和第一部分一样,可以相互控制。

想通1号机的KEY5,来控制2号机的OUTPUTx,同时串口打印出0或1(实际无反应),每次得修改指令,通过一个按键控制2号机的所有OUTPUT,
串口发送给1号机的指令:AT+KEY5,3268,1,1
串口发送给1号机的指令:AT+KEY5,3268,2,1
串口发送给1号机的指令:AT+KEY5,3268,3,1
串口发送给1号机的指令:AT+KEY5,3268,4,1
串口发送给1号机的指令:AT+KEY5,3268,5,1
观察现象,发现对应的OUTPUT正常。
再试试
AT+KEY1,3268,1,1,通过1号机的KEY1,控制2号机的OUTPUT1
观察现象,发现对应的OUTPUT1正常,但我按的按键8脚的按键!
根据这个测试,可以说明第一部分提出的
发现KEY1和KEY2或者OUTPUT1和OUTPUT2对应不了是KEY1和KEY2引脚标反了,应该如下:
在这里插入图片描述
在这里插入图片描述
留下一个疑问:FFFF是不是广播地址?
提出该疑问的原因:比如通过串口给1号机发送AT+KEY1,3268,1,1,当1号机的KEY1按键不用默认的目标地址而用2号机的本机地址3268时,KEY1只能控制2号机的OUTPUT1,而1号机其他的KEY2,KEY3,KEY4,采用的是默认目标地址FFFF,可以控制所有模块对应的的OUTPUT

注意此模式为非学习模式按键开关与输出 IO 控制,AT+LEARN0 与AT+SUBTYPE0 都设置为 0,默认设置是组网模式,如果不是,记得更改,
组网 IO 控制指令如下:
AT+ROLE5
AT+RESET
在这里插入图片描述

**

实验二:组网开关面板应用——一个KEY控制多个OUTPUT

**
在这里插入图片描述

举例:
如何通过1号机的一个按键同时控制2号机的若干个led?
查阅资料:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可知有两种方式:一种是通过按下按键,一个设置为发码者,一个设置为学习者
另一种是通过串口发送指令。

第一种,通过按键:
在这里插入图片描述
通过按键是前提为1号机和2号机都得是 AT+SUBTYPE1 与 AT+LEARN1 ,如果不是,还是得用串口配置成, AT+SUBTYPE1 与 AT+LEARN1 :
在这里插入图片描述
举例:
想通过1号机的KEY5控制2号机的所有led
按一次PWRC,实际上就是接地然后立马松开,因为我这个板子没有把PWRC设计成按键,所以用杜邦线一端接地,一端接PWRC,然后立马断开。

确定1号机和2号机都是 AT+SUBTYPE1 与 AT+LEARN1 后:
1号机:按一次PWRC,ALRD灯进入慢闪(比开始慢了一点)称为发码者,也就是控制者。
2号机:连续快速按2次PWRC,ALRD灯关闭,STAT灯点亮并慢闪,其他5个OUTPUT灯也一起慢闪。进入了学习者,也就是被控制者。
下面依次选择(顺序随便)想被1号机点亮led,然后按下1号机的控制按键,我想2号机的led全部被1号机的一个按键KEY5控制:

2号机:按下KEY5,对应的led5(OUTPUT5)被点亮并闪烁,其他灯熄灭
1号机:按下KEY5,1号机对应的led5(OUTPUT5)点亮并常亮,此时2号机的led5(OUTPUT5)也由闪烁变成常亮,说明2号机的led3已经学到了1号机的KEY5按键,知道了等下它由1号机的KEY5控制。

2号机:按下KEY4,对应的led4(OUTPUT4)被点亮并闪烁,其他灯熄灭
1号机:按下KEY5,1号机对应的led5(OUTPUT5)熄灭,因为关联了,开始是亮现在变成灭,此时2号机的led4(OUTPUT4)也由闪烁变成常亮,说明2号机的led4已经学到了1号机的KEY5按键,知道了等下它由1号机的KEY5控制。

2号机:按下KEY3,对应的led3(OUTPUT3)被点亮并闪烁,其他灯熄灭
1号机:按下KEY5,1号机对应的led5(OUTPUT5)点亮并常亮,因为关联了,开始是灭现在变成亮,此时2号机的led3(OUTPUT3)也由闪烁变成常亮,说明2号机的led3已经学到了1号机的KEY5按键,知道了等下它由1号机的KEY5控制。
.。。。。。
。。。。。。
配置好后,1号机退出发码者模式,2号机退出学习者模式,退出方式和进入方式一致:
1号机:短按一下,只有ALED闪烁,说明退出了码者模式
2号机:快速连续按两下,只有ALED闪烁,说明退出学习者模式
最后可以用1号机的KEY5控制2号机的所有led
1号机按下KEY5前:
在这里插入图片描述
1号机按下KEY5后:
在这里插入图片描述
用串口查询了一下1号机和2号机,它们还是AT+LEARN=1,AT+SUBTYPE=1
发现这个网络中,3号机和4号机不受1号机和2号机控制,而3号机和4号机可以控制网络中所有的led,包括1号机和2号机的led,比如3号机KEY3按下,1号机、2号机和4号机的led3被控制。1号机除KEY5外的其他按键,只能控制它自己的led,2号机所有按键,只能控制它自己的led
可见:1号机和2号机独立又联系着整个网络

那1号机的KEY4,还能不能控制3号机的若干个led呢?
确定3号机和1号机是 AT+SUBTYPE1 与 AT+LEARN1 后,把3号机也设置成学习者,把1号机设置成发码者,结果是
在这里插入图片描述
这个时候,只有4号机机可以控制其他三个机的led,其他3个不能控制4号机的led。**这种情况是不是因为AT+LEARN1和AT+SUBTYPE1呢??**后面再证实吧!
千万注意一点,设置为发码或者学习者后,按按键的过程中,两个模块不能断开连接,因为我是杜邦线,接触不好,不小心就断电关机重启,这个时候需要重新按PWRC设置,AT+LEARN和AT+SUBTYPE还是等于1的,已经存储了,不用再设置

下面全部恢复出厂设置,使用第二种纯串口的方法
第二种,通过串口:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

举例还是:
想通过1号机的KEY5控制2号机的所有led
1号机,就是资料所说的的远程机(控制端),2号机就是当前设备(被控端)
开始是这样的,2号机我采用资料所说的方法配置:
一,AT+DEFAULT 先发恢复默认设置,再重新设置
二,AT+LEAVAL1,5,32EB //把2号机的OUTPUT1交给1号机(模块短地址为32EB)KEY5控制
AT+LEAVAL2,5,32EB //把2号机的OUTPUT2交给1号机(模块短地址为32EB)KEY5控制
AT+LEAVAL3,5,32EB//把2号机的OUTPUT3交给1号机(模块短地址为32EB)KEY5控制
AT+LEAVAL4,5,32EB//把2号机的OUTPUT4交给1号机(模块短地址为32EB)KEY5控制
AT+LEAVAL5,5,32EB//把2号机的OUTPUT5交给1号机(模块短地址为32EB)KEY5控制
那么1号机呢?采用默认设置??
答:不行

资料没有说清除,其实是这样的“
在这里插入图片描述
如果1号机不进行设置AT+LEARN1(AT+SUBTYPE=1可设可不设)设置,也就是不进入学习模式的话,那它的KEY作用就是默认的AT+KEYx,FFFF,1,1功能(我理解为全网平行控制,也就是KEYx控制网络中所有的对应的OUTPUTx),让我想到了前面的疑问:这种情况是不是因为AT+LEARN1和AT+SUBTYPE1呢??我认为平行全网控制中,AT+LEARN0的设备,也就是非学习者,可以控制非学习者和学习者,而学习者只能控制学习者,但是我要的是1号机的KEY5控制2号机的所有led,这种一个按键控制多个led的功能,就要取消KEY5的全网控制功能,将1号机切换为学习模式,串口向1号机发送AT+LEARN1
在这里插入图片描述

简而言之,就是想要一对多控制。双方都要是学习者模式AT+LEARN1,如果涉及到N方,那N个模块都要是AT+LEARN1控制方AT+SUBTYPE=1可设可不设,被控方一定要设置!,在被控端发送指令:AT+LEAVALx,5,32EB,即,将被控端的OUTPUTx控制权给控制端(组网短号/模块短号为32EB)的KEY5
要想一对一,控制端采用非学习者模式,通过AT+KEY5设置控制端,比如:AT+KEY5,3268,2,1,即利用控制端的KEY5,来控制被控端(组网短号/模块短号为3268)的OUTPUT2,同时串口打印出0或1(实测为1也不打印)

**

实验3:未组网模式下 APP 控制模块的 OUTPU 引脚

**

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

因为AT+ROLE0、AT+ROLE3、AT+ROLE6、AT+ROLE7 模式下支持 APP 直接控制 OUTPUT 引脚电平
先通过串口配置一下:
AT+ROLE0,从机(APP、微信、小程序)透传

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值