设置 HC-12 通讯模块参数设置

HC12通讯模块的AT命令

01 HC-12设置通道


一、前言

  这款 HC-12通讯模块, 可以通过 AT 命令;对其通讯参数进行设置。  包括通讯频道, 通讯模式以及发送功率等。  根据该 通讯模块的规格书 , 测试一下相应的 AT 命令。  查看设置之后的结果。  利用频谱仪测试修改后 HC12 模块通讯的特性。

GM1702373716_1280_720.MPG|_-5

二、设置频道

  在HC12规格书中, 给出了通讯频道修改 AT 命令格式。   在 AT之后 加上 通道参数。  开始的频率为 433.4MHz, 之后每增加一个频道, 通讯频率增加 400kHz。 第 100 通道, 对应通讯频率为 473MHz。  通道数是从 1 开始。 没有 0通道。  在发送AT命令之前, 需要将 模块的 SET 管脚拉低,  然后等待至少 50ms 以上,  发送 AT 命令。  命令不需要任何结束符。  执行完之后, 再将 SET 管脚置高, 模块进入工作状态。  下面测试一下设置命令。

GM1702374131_1280_720.MPG|_-10

  在频谱仪上增加一个拉杆天线, 可以测量到HC-12发送信号的频谱。 让 HC12连续发送数据, 它所使用的通讯频道便可以通过频谱对应的频率看到。  这是频道1 对应的频谱。  下面通过单片机界面发送 AT 命令。 频谱仪检测到不同的频谱。   通讯频道最大为 127.  HC12 可以工作在不同的频段。
GM1702375315_1280_720.MPG|_-6

▲ 图1.2.1  通道1对应的接收到的频谱

▲ 图1.2.1 通道1对应的接收到的频谱

三、设置功率

  可以通过 AT 命令设置 HC12的发射功率。  发射功率共有 8 个等级, 从 -1dBm, 到 20dBm。  功率每下降6dB, 通讯距离减少一半。  下面测试功率设置命令的作用。

GM1702375468_1280_720.MPG|_-4
  设置功率为 第一等级。  此时接收到的频谱变小了 。  设置功率等级为 8。   可以看到频谱峰值增加了。

GM1702375747_1280_720.MPG|_-4

//==============================================================================
//                    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命令,  查看了修改通讯频道的功能。  测试了发射功率命令的效果。

GM1702375882_1280_720.MPG|_-3


■ 相关文献链接:

● 相关图表链接:

猜你喜欢

转载自blog.csdn.net/zhuoqingjoking97298/article/details/134954860