RF125低频通信模块

RF125低频通信模块-125kHz低频远程通信模块

模块介绍

RF125-TX 模块,配合 RF125-RX 模块,125KHz 的无线空中唤醒和数据收发,可以应用于 PKE 无钥匙门禁,校园门禁等。

RF125-TX,可以通过串口修改发射机 ID、发射数据内容、发射时间间隔。

RF125-RX,接收机低功耗、无线唤醒,可以空中唤醒自己的同时唤醒连接的设备,接收机串口输出收到的无线数据。可以工作在配对模式或者广播模式。通讯距离 5-8 米,远超同
类型产品。

RF125-RA 是全功能的无线唤醒模块,集成了 RF125-RX,125KHz 天线,配对按钮,纽扣电池片。接上电池就可以使用。

接口编写

1.发射机配置模式

可以通过串口修改发射机的参数,内容包括:设置发射数据内容、修改发射机 ID、设置发射时间间隔、读取发射机 ID。
串口的格式为 9600,8,N,1,数据内容为(HEX)十六进制, 以0x0D 0x0A 为结束标志。
连续两条设置命令的最小间隔为100ms。

(0)串口通信接口移植

1
2
3
4
void RF125_TX_Init(void)
{
uart1_init();
}

该部分为串口初始化的接口,可进行修改方便移植。

同时在头文件中,对串口的接口进行宏定义。

1
#define RF125_TX_USART_PORT 	USART1

(1)设置发射数据内容

设置发送数据:

数据帧: CMD (1Byte) Length(1Byte) Payload(Length Byte)

CMD :1 个字节,0x57
Length :1 个字节,数据包的长度,不包括命令字和本字节。范围是 0~0x2D(一个包最多可发射 45(0x2D)个字节)
Payload :数据内容

例:0x57 0x05 0x01 0x02 0x03 0x04 0x05 0x0D 0x0A

CMD :0x57

Length :0x05

Payload :0x01 0x02 0x03 0x04 0x05

接口编写如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/*@功能:	发射数据帧
*@parm: 1.数据数组
* 2.数据长度
*@return: 发送成功
*/
u8 RF125_TX_SendData(uint16_t *Payload, uint16_t length)
{
if(length > 0x2D) //最大数据包长度
return 0;
RF125_TX_SendByte(0x57); //起始CMD - 0x57(发送)、
RF125_TX_SendByte(length); //数据包的长度,不包括前两帧。最大为0x2D即45个字节
for(uint16_t i = 0; i < length; i++)
RF125_TX_SendByte(Payload[i]); //数据内容
RF125_TX_SendByte(0x0D);
RF125_TX_SendByte(0x0A); //*0x0D 0x0A结束符
return 1;
}


/*@功能: 串口通信发送一个字节的接口
*@parm: 1.数据(Byte)
*@return: NULL
*/
void RF125_TX_SendByte(uint16_t Byte)
{
USART_SendByte(RF125_TX_USART_PORT, Byte);
}


/*@功能: 发射一个字符
*@parm: 字符或ASCII
*@return: NULL
*/
void RF125_TX_SendChar(uint16_t Date)
{
RF125_TX_SendByte(0x57); //起始CMD - 0x57(发送)、
RF125_TX_SendByte(1); //数据包的长度,不包括前两帧。最大为0x2D即45个字节
RF125_TX_SendByte(Date);
RF125_TX_SendByte(0x0D);
RF125_TX_SendByte(0x0A); //*0x0D 0x0A结束符
}

(2)修改发射机ID

ID 大于 0x7F 视为错误

数据帧: CMD (1Byte) ID(7Bit)

CMD :1 个字节,0x58
ID :7 个 Bit,范围是 0~0x7F,大于 0x7F 视为错误

例:将发射机的 ID 设置为 0x01

0x58 0x01 0x0D 0x0A

Return :0x4F 0x4B 0x0D 0x0A

接口编写如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

/*@功能: 修改发射机的ID号(最大为0x7F)
*@parm: 修改的ID号
*@return: 修改是否成功
*/
u8 RF125_TX_SetupSendID(uint8_t ID)
{
if(ID > 0x7F)
return 0; //发送机ID最大为0x7F
RF125_TX_SendByte(0x58); //起始CMD - 修改发送机ID
RF125_TX_SendByte(ID);
RF125_TX_SendByte(0x0D);
RF125_TX_SendByte(0x0A); //*0x0D 0x0A结束符
return 1;
}

(3)读取发射机ID,返回发射机

数据帧: CMD(1Byte)

例:发射机的 ID 为 0x01

0x52 0x0D 0x0A

Return:0x01 0x0D 0x0A

接口如下:**(该部分存疑,因为串口回传的数据与手册上不一样)**

1
2
3
4
5
6
7
8
9
10
11
/*@功能:	读取发射机的ID号(最大为0x7F)
*@parm: NULL
*@return: 发射机的ID号
*/
u8 RF125_TX_ReadSendID(void)
{
RF125_TX_SendByte(0x52); //起始CMD - 读取发送机ID
RF125_TX_SendByte(0x0D);
RF125_TX_SendByte(0x0A); //*0x0D 0x0A结束符
return Uart_Buff[0];
}

(4)设置发射机的发射时间间隔(ms)。时间间隔不能低于 250ms(0x00FA),如果低于自动设置成 250ms

数据帧: CMD(1Byte) TIME_H(1Byte) TIME_L(1Byte)
CMD:0x53

TIME_H:时间的高 8 位

TIME_L:时间的低 8 位

范围:0x00FA0xEA60,即 0.2560 秒。

例:设置 1000ms 的间隔,1000 转成 16 进制就是 0x03e8

命令为:0x53 0x03 0xe8 0x0D 0x0A

Return:0x4F 0x4B 0x0D 0x0A

接口如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/*@功能:	设置发射机的发射时间间隔(ms)。时间间隔不能低于 250ms(0x00FA),如果低于自动设置成 250ms
*@parm: 发射时间间隔(ms)
*@return: NULL
*/
void RF125_TX_SetupTimes(int time)
{
//TIME_H时间的高8位
//TIME_L时间的低8位
u16 TIME_H, TIME_L;
TIME_L = time & 0xFF;
TIME_H = time >> 8;
RF125_TX_SendByte(0x53); //发送CMD,设置时间间隔
RF125_TX_SendByte(TIME_H);
RF125_TX_SendByte(TIME_L);
RF125_TX_SendByte(0x0D);
RF125_TX_SendByte(0x0A);
}

(5)设置发射机的发射状态

1>开启发射

命令为:0x73 0x74 0x61 0x72 0x74 0x0D 0x0A

Return:0x4F 0x4B 0x0D 0x0A

2>关闭发射

命令为:0x73 0x74 0x6F 0x70 0x0D 0x0A

Return:0x4F 0x4B 0x0D 0x0A

接口如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/*@功能:	RF125发送机开启发送
*@parm: NULL
*@return: NULL
*/
void RF125_TX_LaunchON(void)
{
RF125_TX_SendByte(0x73); //START
RF125_TX_SendByte(0x74);
RF125_TX_SendByte(0x61);
RF125_TX_SendByte(0x72);
RF125_TX_SendByte(0x74);
RF125_TX_SendByte(0x0D);
RF125_TX_SendByte(0x0A);
}

/*@功能: RF125发送机关闭发送
*@parm: NULL
*@return: NULL
*/
void RF125_TX_LaunchOFF(void)
{
RF125_TX_SendByte(0x73); //STOP
RF125_TX_SendByte(0x74);
RF125_TX_SendByte(0x6F);
RF125_TX_SendByte(0x70);
RF125_TX_SendByte(0x0D);
RF125_TX_SendByte(0x0A);
}

接收机部分

经过串口调试,接收机接收到的串口信息一般为:

ID(1Byte) Length(1Byte) Data(Length Byte)

首先是发射机的ID号,第二个数据接收的是接收数据的长度。

接下来的部分就是接收到的实际数据。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以邮件至 1186703947@qq.com

💰

×

Help us with donation

相册 动态菜单1