跳转至

NTP

一、NTP 基本概念

网络时间协议 NTP(Network Time Protocol)是 TCP/IP 协议族里面的一个应用层协议,用来使客户端和服务器之间进行时钟同步,提供高精准度的时间校正。NTP 服务器从权威时钟源(例如原子钟、GPS)接收精确的协调世界时 UTC,客户端再从服务器请求和接收时间。

对于 Air780E, 移动/电信卡, 通常会下发基站时间, 同步时间并不是必要的, 而联通卡通常不会下发, 就需要 SNTP 了,很多场景中,由于业务需要,模块需要保持正确的系统时钟,才能正常工作。

二、演示功能概述

本文教你怎么使用 AT 命令,通过模组连接 NTP 服务器进行时间同步,为了 NTP 功能的整体独立性,这里将完整的记录从开机到获取到网络时间的全部步骤。

三、准备硬件环境

工欲善其事,必先利其器。在正式介绍本功能示例之前,需要先准备好以下硬件环境。

3.1 Air780E 开发板

本文使用 Air780E 核心板,如下图所示:

点击链接购买:Air780E 核心板淘宝购买链接

此核心板的详细使用说明参考:Air780E 产品手册 中的 《开发板Core_Air780E使用说明VX.X.X.pdf》,写这篇文章时最新版本的使用说明为:《开发板Core_Air780E使用说明V1.0.5.pdf》 ;核心板使用过程中遇到任何问题,可以直接参考这份使用说明 pdf 文档。

3.2 SIM 卡

准备一张可以上网的 SIM 卡,可以是物联网卡,也可以是自己的手机卡;

注意:SIM 卡不能欠费,可以正常上网!!!

3.3 PC 电脑

准备一台电脑;

电脑操作系统为:WIN10 以及以上版本的 WINDOWS 系统。

注意:电脑有 USB 口,并且可以正常上网!!!

3.4 数据通信线

准备一根 USB TypeC 数据线,此数据线的作用是,连接 Air780E 开发板和 PC 电脑,通过 AT 命令完成业务逻辑的控制和交互;

3.5 组装硬件环境

按照 SIM 卡槽上的插入方向,插入 SIM 卡,注意不要插反!

如下图所示,将 SIM 卡用力推入卡槽,听到咔嚓声音后即可。

USB 数据线,连接电脑和 Air780E 开发板,如下图所示:

四、准备软件环境

工欲善其事,必先利其器。在正式介绍本功能示例之前,需要先准备好以下软件环境。

4.1 Luatools 工具

要想烧录 AT 固件到 4G 模组中,需要用到合宙的强大的调试工具:Luatools;

详细使用说明参考:Luatools 工具使用说明

4.2 AT 固件

4G 模组中必须烧录正确的 AT 固件才能支持 AT 命令功能;

通过 Luatools 可以烧录 AT 固件;

有两种方式可以获取到 Air780E 模组的最新 AT 固件,二选一即可;

第一种方式是通过 Luatools 获取,如下图所示,可以直接选中最新版本的 AT 固件:

第二种方式是访问:Air780E 固件版本 ,找到最新版本的固件即可。

4.4 PC 端串口工具

在量产的项目硬件设计中,一般都是由主控 MCU 通过 UART 给 4G 模组发送命令实现具体的业务逻辑;

在本教程中,为了测试方便,没有使用主控 MCU;

而是使用了 PC 电脑上的一个串口工具 SSCOM 给 4G 模组发送命令来实现演示功能;

SSCOM 的下载链接:SSCOM,详细使用说明可以直接参考下载网站。

五、相关指令

本文主要使用 NTP 相关指令IP 应用相关指令

六、Air780E AT 操作示例

Air780E 模块支持 SNTP 协议(Simple Network Time Protocol),并有一套 AT 命令实现网络时间同步功能。

6.1 主动设置 NTP 服务器同步时间

以下操作通过 AT 指令主动设置 NTP 服务器为"ntp.aliyun.com"进行演示,实际使用中此地址用户可以根据实际需求进行设置,以下是 AT 指令操作序列。

ATE0                               //关闭回显,便于观察模组返回信息

OK

AT+CGATT?                         //AT+CGATT?查询是否注册网络收到+CGATT: 1值是1即为注册成功,正常情况下注册时间不会超过两分钟,如果超过两分钟没有注册可以进入飞行模式五秒后退出再查询,或者直接重启模块。

+CGATT: 1

OK

AT+SAPBR=3,1,"CONTYPE","GPRS"   //激活PDP是使用CNTP命令同步时间的前提

OK

AT+SAPBR=3,1,"APN",""         //设置PDP承载之APN参数 模块注册网络后会从网络自动获取<apn>并激活一个PDP 上下文,用于RNDIS上网使用(此<apn>可以通过 AT+CGDCONT?来查询),所以输入 AT+SAPBR=3,<cid>,"APN","" 即可,模块内部会按照 自动获取的<apn>来设置APN

OK

AT+SAPBR=1,1                    //激活网络场景(激活=1的PDP)

OK

AT+CNTPCID=1                    //设置 GPRS 承载场景 ID,取值同+SAPBR命令的(设置使用的PDP的=1)

OK

AT+SAPBR=2,1                    //获取分配IP地址

+SAPBR: 1,1,"10.189.181.162"

OK

AT+CNTP="ntp.aliyun.com",32    //设置NTP服务器为阿里云NTP服务器,时区为东八区。
                               //注意:这里设置的时区参数为-47为48,实际上时区范围(-12~12),但考虑到有些国家和地区会用到半时区,甚至四分之一时区,所以将整个时区范围扩展 4 倍,这样在输入时区的时候都是用整数,而不需要用小数在。时区前面如果是负数则表示西时区。
OK

AT+CNTP                         //开启网络同步

OK

+CNTP: 1                        //+CNTP: 后面的数字是返回的操作码,1:网络时间同步成功 61:网络错误 62:DNS解析错误 63:连接错误 64:服务响应错误 65:服务响应超)操作码返回62表示,域名解析失败

AT+CCLK?                        //查询本地同步后的时间

+CCLK: "24/11/03,18:58:16+32"   //模组返回的时间即为同步后的时间

OK

指令执行截图如下:

6.2 使用默认 NTP 服务器同步时间

模组出厂默认 NTP 服务器是 ntp.aliyun.com,如果是用默认 NTP 服务器可以跳过设置 NTP 服务器地址指令,直接使用 AT+CNTP 进行网络时间同步,若默认服务器同步时间失败尝试配置其他可用的 NTP 服务器地址,以下是 AT 指令操作序列。

ATE0                               //关闭回显,便于观察模组返回信息

OK

AT+CGREG?

+CGREG: 0,1

OK

AT+CGATT?                         //AT+CGATT?查询是否注册网络收到+CGATT: 1值是1即为注册成功,正常情况下注册时间不会超过两分钟,如果超过两分钟没有注册可以进入飞行模式五秒后退出再查询,或者直接重启模块。

+CGATT: 1

OK

AT+SAPBR=3,1,"CONTYPE","GPRS"   //激活PDP是使用CNTP命令同步时间的前提

OK

AT+SAPBR=3,1,"APN",""         //设置PDP承载之APN参数 模块注册网络后会从网络自动获取<apn>并激活一个PDP 上下文,用于RNDIS上网使用(此<apn>可以通过 AT+CGDCONT?来查询),所以输入 AT+SAPBR=3,<cid>,"APN","" 即可,模块内部会按照 自动获取的<apn>来设置APN

OK

AT+SAPBR=1,1                    //激活网络场景(激活=1的PDP)

OK

AT+CNTPCID=1                    //设置 GPRS 承载场景 ID,取值同+SAPBR命令的(设置使用的PDP的=1)

OK

AT+SAPBR=2,1                    //获取分配IP地址

+SAPBR: 1,1,"10.189.181.162"

OK

AT+CNTP                         //开启网络同步

OK

+CNTP: 1                        //+CNTP: 后面的数字是返回的操作码,1:网络时间同步成功 61:网络错误 62:DNS解析错误 63:连接错误 64:服务响应错误 65:服务响应超)操作码返回62表示,域名解析失败

AT+CCLK?                        //查询本地同步后的时间

+CCLK: "24/11/03,18:58:16+32"   //模组返回的时间即为同步后的时间

OK

指令执行截图如下:

七、常见问题 Q&A

7.1 问:开发板发送 AT 指令无任何响应?

1. 确保模组已经开机;

2. 串口助手是否选择了正确 AT 指令端口;

3. 检查串口助手参数是否设置正确,如波特率,停止位,奇偶校验,停止位,新行发送等;

4. 确保模组固件为标准 AT 固件。

7.2 执行 AT+CNTP 指令后模组返回“+CNTP: 62”或者“+CNTP: 64”是怎么回事?

1. 检查网络是否注册成功,可以用指令 AT+CREG 查询。

2. 检查模模组信号是否良好,可以用指令 AT+CSQ 查询。

3. 确认指令序列是否正确。

4. 确认 NTP 服务器是否可用,可以用指令 AT+CNTP?查询当前配置的 NTP 服务器地址。

5. 如果使用了定向卡,可能导致同步时钟失败。

给读者的话

本篇文章由 Murphy开发;

本篇文章描述的内容,如果有错误、细节缺失、细节不清晰或者其他任何问题,总之就是无法解决您遇到的问题;

请登录合宙技术交流论坛,点击文档找错赢奖金-Air780E-AT-软件指南-应用实例-NTP

用截图标注+文字描述的方式跟帖回复,记录清楚您发现的问题;

我们会迅速核实并且修改文档;

同时也会为您累计找错积分,您还可能赢取月度找错奖金!