基于LORA的一主多从监测系统_4G模块基本驱动

关联:大夏龙雀、阿里云、mqtt、dx_ct511、stm32

4G模块我这边使用的是大夏龙雀的4G模块,如果是新人购买,9.9就能买到测试套装,还是比较划算的,这个模块也是通过串口使用AT命令交互的,对之前使用过ESP8266的小伙伴来说应该不会很难,之所以选择4G模块而不选择ESP8266也是因为考虑到整体系统的使用场景,以野外或者长距离为主,使用WiFi会有很多局限性,所以选择4G。

我们对4G模块进行初始化主要策略也是查配置这两个手段通过观察数据手册上的命令行来进行相关的操作。我们先来看手册,手册上有我们需要的所有内容。

命令格式如下:

AT+Command=<param1,param2,param3><CR><CF>

所有的指令以 AT 开头,<CR><LF>结束,在本文档中表现命令和响应的表格中,省略了<CR><LF>,仅显示命令和响应。所有 AT 命令字符都为大写。

<>内为可选内容,如果命令中有多个参数,以逗号"。”隔开,实际命令中不包含尖括号。

<CR>为回车字符\r,十六进制为 0XOD.

<LF>为换行字符\n,十六进制为 0X0A。

指令执行成功,返回相应命令以 OK结束,失败返回 ERROR 或者+CME ERROR:<err>,"<err>”内容为对应错误码(错误码请参考 5.10)

通过观察这个命令格式,其中表主要的一点就是AT一定要大写,相信使用过ESP8266的小伙伴对这个一定不陌生

红框里面这几个命令我感觉对模块初始化比较关键,我们得了解到模块的联网状态以及sim卡状态,最主要的是能不能上网,毕竟都不能上网我们还怎么上云呢?

下面是我的初始化代码,提供参考:

uint8_t CT511_Init(void)
{
    CT511_DIS() //使能拉低,关机
    user_delay_ms(800);
    CT511_EN() //使能拉高,开机
    user_delay_ms(8000); //等待开机完成

    debug_print("\r\n初始化4G模块请等待\r\n");

    //CT511_CheckAck("AT+RESET\r\n", "OK", 3000);

    /* 测试模块接口状态 */
    if (CT511_CheckAck("AT\r\n", "OK", 1500) == 1)
    {
        /* 获取模块信号强度 */
        CT511_BUFF_MEMSET();
        CT511_SEND("AT+CSQ\r\n");
        HAL_Delay(10); // 延时10ms

        if (ct511.buff_flag != 1)
        {
            return 0; // 信号强度获取失败
        }

        ct511.buff_flag = 0;
        debug_print("\n ------> recv: %s \n", ct511.BUFF);
        parseCSQ((const char *)ct511.BUFF, &ct511.signal_quality, &ct511.RXQUAL);

        if (ct511.signal_quality == 99)
        {
            debug_print("无信号");
            return 0;
        }

        debug_print("4G_Rssl %ddBm,RXQUAL %d\r\n", ct511.signal_quality, ct511.RXQUAL);

        /* 获取模块网络状态 */
        CT511_BUFF_MEMSET();
        CT511_SEND("AT+CEREG?\r\n");
        HAL_Delay(500); // 延时500ms

        if (ct511.buff_flag != 1)
        {
            return 0; // 网络状态获取失败
        }

        ct511.buff_flag = 0;
        debug_print("\n ------> recv: %s \n", ct511.BUFF);
        parseCEREG((const char *)ct511.BUFF, &ct511.is_connected);

        if (ct511.is_connected == 1)
        {
            debug_print("\r\n网络注册成功\r\n");
        }
        else
        {
            debug_print("\r\n网络注册失败\r\n");
            return 0;
        }
        /* 初始化成功 */
        return 1;
    }
    else
    {
        return 0;
    }
}

下面是我的串口debug信息

到此模块初始化结束

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值