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,详细使用说明可以直接参考下载网站。
五、相关指令
六、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;
用截图标注+文字描述的方式跟帖回复,记录清楚您发现的问题;
我们会迅速核实并且修改文档;
同时也会为您累计找错积分,您还可能赢取月度找错奖金!