HC12通讯模块的AT命令
01 HC-12设置通道
一、前言
这款 HC-12通讯模块, 可以通过 AT 命令;对其通讯参数进行设置。 包括通讯频道, 通讯模式以及发送功率等。 根据该 通讯模块的规格书 , 测试一下相应的 AT 命令。 查看设置之后的结果。 利用频谱仪测试修改后 HC12 模块通讯的特性。
二、设置频道
在HC12规格书中, 给出了通讯频道修改 AT 命令格式。 在 AT之后 加上 通道参数。 开始的频率为 433.4MHz, 之后每增加一个频道, 通讯频率增加 400kHz。 第 100 通道, 对应通讯频率为 473MHz。 通道数是从 1 开始。 没有 0通道。 在发送AT命令之前, 需要将 模块的 SET 管脚拉低, 然后等待至少 50ms 以上, 发送 AT 命令。 命令不需要任何结束符。 执行完之后, 再将 SET 管脚置高, 模块进入工作状态。 下面测试一下设置命令。
在频谱仪上增加一个拉杆天线, 可以测量到HC-12发送信号的频谱。 让 HC12连续发送数据, 它所使用的通讯频道便可以通过频谱对应的频率看到。 这是频道1 对应的频谱。 下面通过单片机界面发送 AT 命令。 频谱仪检测到不同的频谱。 通讯频道最大为 127. HC12 可以工作在不同的频段。
▲ 图1.2.1 通道1对应的接收到的频谱
三、设置功率
可以通过 AT 命令设置 HC12的发射功率。 发射功率共有 8 个等级, 从 -1dBm, 到 20dBm。 功率每下降6dB, 通讯距离减少一半。 下面测试功率设置命令的作用。
设置功率为 第一等级。 此时接收到的频谱变小了 。 设置功率等级为 8。 可以看到频谱峰值增加了。
//==============================================================================
// PROCESS THE DEBUG BUFFER
//------------------------------------------------------------------------------
void SerialDebugProcessBuffer(void) {
SerialDebugBuffer2Argument();
if(g_ucSDANumber == 0) return;
if(strcmp("hello", (char *)STD_ARG[0]) == 0)
printf("%s is ready !\r\n", VERSION_STRING);
else IFARG0("send") {
int nLength = strlen(SDA(1));
int i;
char * p = SDA(1);
for(i = 0; i < nLength; i ++) UART2SendChar(*(p+i));
} else IFARG0("set") {
if(strcmp(SDA(1), "enter") == 0) {
HC12EnterSetMode();
printf("Enter Set Mode.\r\n");
} else if(strcmp(SDA(1), "exit") == 0) {
HC12ExitSetMode();
printf("Exit set mode.\r\n");
} else printf("Set Error?\r\n");
} else IFARG0("at") {
int nLength = strlen(SDA(1));
int i;
char * p = SDA(1);
for(i = 0; i < nLength; i ++)
UART2SendChar(*(p++));
// UART2SendChar('\r');
printf("Send AT command:%s\r\n", SDA(1));
} else IFARG0("c") {
HC12EnterSetMode();
WaitTime(50);
char szString[32];
int nNumber = 0;
sscanf(SDA(1), "%d", &nNumber);
sprintf(szString, "AT+C%03d", nNumber);
int nLength = strlen(szString);
int i;
for(i = 0; i < nLength; i ++)
UART2SendChar(szString[i]);
HC12ExitSetMode();
printf("%s", szString);
printf("\r\n");
} else IFARG0("p") {
HC12EnterSetMode();
WaitTime(50);
char szString[32];
int nNumber = 0;
sscanf(SDA(1), "%d", &nNumber);
sprintf(szString, "AT+P%d", nNumber);
int nLength = strlen(szString);
int i;
for(i = 0; i < nLength; i ++)
UART2SendChar(szString[i]);
HC12ExitSetMode();
printf("%s", szString);
printf("\r\n");
}
else printf("Error command : %s !\r\n", STD_ARG[0]);
}
※ 总 结 ※
本文测试了 HC12 通讯模块的 AT命令, 查看了修改通讯频道的功能。 测试了发射功率命令的效果。
■ 相关文献链接:
- HC-12通信频谱-CSDN博客
- HC-12通讯模块距离测试(白天)-CSDN博客
- HC-12 通讯模块距离测试-CSDN博客
- HC-12 SI4438/4463无线模块 远距离433M无线串口模块UART接口
- HC-12 规格书下载链接:
- HC-12 通讯模块的规格书
● 相关图表链接: