1、基于ESP8266的网络时钟的设计摘要目录1. 绪论1.1设计背景时钟同步问题来源于计算机科学与工程领域,主要是用来解决多个计算机时钟不一致的问题。即使在初始状态时把每个时钟调到非常精确的一致,在一段时间的运行之后时钟也会不同步,这是由于时钟以不同的频率运行,所产生的时钟漂移不断地积累所导致的。手机的系统内部要求各手机之间保持较为准确的时间同步。例如,查看不同计算机的日志信息时,需要统一的时间;一些网络设备重新启动后时间将恢复到初始值,需要从网络上重新配置准确的时间。尤其是一些工业控制领域,对被控制对象的时间同步的精确度提出了更高的要求。随着智能控制技术的发展,采用 WiFi 芯片作为远程智能
2、控制家电系统,为智能家居的实现提供了可能,使人们的生活更加方便和快捷,尤其是 ESP8266 WiFi 芯片,由于其成本低、性能好,得到了广泛的运用。现在的网络时钟都是以红外遥控的方式进行时钟控制,大多都不具备自动同步时间的功能。使用 ESP8266 WiFi 芯片之后,用户可以随时随地通过手机在联网状态下对手机的时间进行同步,以获知正确的时间。在睡觉前,通过手机手机时间的设定,使得手机时间时时刻刻保持准确。1.1国内外研究现状国外多采用NTP 协议,该协议最早是来源于美国特拉华大学David.L.Mills教授主持的网络时钟同步项目,该项目由美国军方和政府资助,当时成功开发出了 NTP 协议
3、的 1,2,3 版本。目前,NTP 协议在网络上被广泛地应用在计算机网络时钟服务器或者其他时间源的同步,比如无线电、卫星接收器或者电话服务都可以作为标准时间参考源,对于从属的客户端,也可以被用来作为服务器。在局域网内,精度一般可以达到微秒,典型的 NTP 配置会使用多个冗余服务器和不同的网络路径,以达到更高的准确性和可靠性。尤其在商业环境中,对于一切的维护、故障诊断设备以及分布攻击的取证分析,准确的时间戳记录是用来解决争端的最重要的证据,特别是在涉及到有价值的时间敏感的商业交易时被使用。例如,在编程环境中,时间戳信息经常被用来确定什么样的代码需要作为一个依赖的检查过程被重建,这也涉及到其他代码
4、上的时间戳记录,如果整个开发过程中没有好的时间戳记录,则很有可能会造成运行过程的停顿。在执法过程中,对于分布式通信事件相关性的研究,正确的时间戳也非常必要也很有可能在研究犯罪过程中被作为证据使用。总而言之,所有的调试、安全、审计以及授权都是在验证是事件相关性的基础上进行的,都要准确地知道哪一方发生什么样的事情,包括事件是以什么顺序发生的,这些都需要依赖于良好的时间同步。所谓授时,是指确定地保持某种时间的尺度,并通过某种方法把时间传送出,供 应用者使用的整个过程。随着人类的进步和科学的发展,授时的精度不断提高,规模 不断扩大,而且授时即时间服务的好坏直接关系到社会生产和人类生活的方方面面。 目前
5、,现代获得授时方法主要有电视授时、无线电授时、电话授时、Internet 授时、 专用电台授时(长波和短波)、卫星授时等,每一种授时方法都提供不同精度、成本 和获取难易程度,方便不同需求的应用获取时间27 。不同授时方法之间相互补充,比如电视、电话、网络、长波、短波这五种授时方法,前三种不需要单独建立传输设备, 而后两种必须依赖专门的电台,主要用于导航和定位,传递时间频率信号。我国 的“北 斗”卫星导航系统也具有授时的功能,实现的原理就是基于多个电台基站,已经于 2011 年 12 月 27 日对中国及其周边地区提供授时服务。时钟同步问题来源于计算机科学与工程领域,当多台计算机的内部时钟需要同
6、步问题就变得复杂起来。即便在初始化的时候,各台计算机都精准地统一,事实上,由于各台计算机内部时钟的运行频率有差异,即便是很微小的相差在运行了一段时间以后,所累计时钟的漂移必然会导致真实时钟不同。但是,对于金融法律事务、交通运属、涉及分布式资源分配系统以及其他的相关应用都需要准确可靠的时间作为保证。2. 硬件2.1 ESP8266ESP8266价格低廉,体积小,是一种低成本的Wi-Fi微芯片,具有完整的TCP/IP堆栈和微控制器功能,可以实现TCP/IP连接,可以适用于工业领域、移动设备、局域网和互联网。支持三种工作模式:STA、AP、STA+AP。用户可以用AT指令通过ESP8266向互联网传
7、送数据。ESP8266运行频率80MHz,32kib指令RAM,8个管脚。8266片上集成WIFI+MCU,虽然ESP8266包含一个微控制器,但是内存不高,不可以运行大的程序,运行大的程序时容易卡顿,出现意想不到的效果。所以本次设计采用Arduino作为控制器,ESP8266当作传输信号的元件.2.2 系统基本工作原理系统工作原理:第一步,手机通过 WiFi 接入 ESP8266热点,并且通过控制端应用程序 APP 建立 Socket 连接;第二步,通过手机 APP 将手机连接的路由器的密码发送给ESP8266,之后 ESP8266 连接到路由器,即实现联网;第三步,通过程序 APP 将需要
8、达到的时间的数据发送给 WiFi芯片(如 10:00),WiFi 芯片接收后将数据通过串口通信发送给单片机,此时传感器开始采集现在的室内温度,然后将采集的数据串口通信发送给单片机,单片机通过与 WiFi芯片时间与正确的时间进行比较来时间控制驱动电路,从而达到控同步网络时钟的作用。2.3 ESP8266 的设置对 ESP8266 进行初始化设置,本系统采用官方提供的网络调试助手发送 AT 指令,初始化操作成功后,会返回“OK”字 符, 具 体 步 骤 如 下: 第 一 步,AT+UART=9600,8,1,0,0,由于单片机的串口中断的波特率在本系统设为 9 600 Hz,故设置芯片的串口比特率
9、也为 9 600 Hz;第二步,发送指令AT+CWMODE=3 设置模块为 AP+Station 模式;第三步,发送指令 AT+RST 及重启模块使应用模式更改生效;第四步,发送指令 AT+CWSAP=ESP8266,12345678,5,3,将设备以热点显示,显示的名称为 ESP8266,密码为 12345678;第五步,发送指令 AT+CIPMUX=1,建立多连接,ESP8266 最多允许5 个客户端连接,每个客户端根据连接先后顺序对应分配 ID为 0 4;第六步,发送指令 AT+CIPSERVER=1,建立服务器;第七步,发送 AT+CWSMARTSTART=1,为 ESP8266 配置
10、 SmartCong。3.SNTPSNTP(Simple Network Time Protocol)协议(RFC4330)是NTP协议的简化版本,它简化了NTP服务器和NTP客户端策略,相对降低了精度要求,通常在同步子网的末端被使用,因此更适用于使用个人计算机的客户。 NTP兼容SNTP,NTP服务器可向SNTP协议的服务器或客户端提供授时服务。SNTP是NTP的一个子集,目的是为了那些不需要完整NTP实现复杂性的主机。SNTP通过简化原来的NTP协议,在保证时间精确度的前提下,使得对网络时间的开发和应用变得容易。NTP和SNTP的数据包格式是一样的,二者具有互操作性,即SNTP客户可以与N
11、TP服务器协同工作,同样NTP客户也可以接收SNTP服务器发出的授时信息。 2.1.3SNTP的工作方式 SeverClient模式:用户向一个或多个服务器提出服务请求,根据所交换的信息,从中选择认为最准确的时间,并调整本地的时钟。客户机可以被服务器同步,服务器不能被客户机同步。 Multicast Broadcast 模式:是一对多的连接,利用一个或多个服务器在固定的周期主动向某个多播地址发出时间信息,客户机据此信息调整自己的时间,由于忽略网络时延,精度较低,适用于高速局域网上。 1.2 SNTP的报文格式 NTP用时间戳表示为一64 bits unsigned 定点数,以秒的形式1900
12、年1月1 日的00:00:00算起。整数部分在前32位里,后32bits(seconds Fraction)用以表示秒以下的部分。SNTP 消息的格式如图1所示。在SNTP消息格式里,大多数字段被预规定的数据给赋初值,并规定其长度和功能,如LI为闰秒标识器,stratum为本地时钟的层次水平等。广播(点对多点)两种模式下。单播模式是指一个客户主动发送请求到预先指定的一个服务器地址,服务器给出应答,客户从服务器获得时间、往返时延、以及相对于服务器的本地时间补偿。客户和服务器之间的通信基于UDP协议,服务器端口号为123。广播模式是指一个广播服务器周期性地向指定的广播地址(或组播地址)发送时间信息
13、。通常情况下,服务器不需要客户端的应答,客户也不会主动发送请求信息。支持广播模式的服务器,必须支持单播模式,因为广播客户端需要通过客户/服务器信息,来计算网络路径上的传播时延。2.1.4工作原理SNTP的工作原理如图2所示,含有4个时间戳,即T1,T2,T3,T4。这里假设网络路径是对称的,即发送数据包的传播时延与接收数据包的传播时延相等,均为d/2。t表示相对于服务器的本地时间补偿。2.1.5网络层次结构 SNTP协议与NTP协议类似,它是以UTC(协调世界时)作为时间标准,使用层次性分布模型,时间按NTP服务器的等级传播。NTP按照离外部UTC 源 的 远 近 将 所 有 服 务 器 归
14、入 不 同 的 层(Stratum)中,位于第一层的服务器为主服务器,通过精确的外部时钟如GPS时间信号获取时间信息,并使本身的时间与UTC同步,是整个系统的基础,而第二层则从第一层获取时间,第三层从第二层获取时间,依此类推。 2.1.6 同步工作原理 在SeverClient模式中,客户机送1个请求数据包,服务器接收后回送1个应答数据包。两个数据包都带有发送和接收的时间戳,根据这4个时间戳来确定客户机和服务器之间的时间偏差和网络时延。如图2所示,1t 为客户机原始时间戳,2t 为服务器收到时间戳,3t 为服务器传送时间戳,4t 为客户机目的地时间戳,由此可得信息包在网络上的传输时间为: 当请
15、求信息包和回复信息包在网上的传输时间相等时,往返网络时延为 时间偏差为 据此,客户机即可通过这4个时间戳计算出时间偏差 D 和网络时延T 去调整本地时钟。 2.1.7 tcpTCP/IP协议族按照层次由上到下,层层包装。如图所示应用层:向用户提供一组常用的应用程序,比如电子邮件、文件传输访问、远程登录等。远程登录TELNET使用TELNET协议提供在网络其它主机上注册的接口。TELNET会话提供了基于字符的虚拟终端。文件传输访问FTP使用FTP协议来提供网络内机器间的文件拷贝功能。传输层:提供应用程序间的通信。其功能包括:一、格式化信息流;二、提供可靠传输。为实现后者,传输层协议规定接收端必须
16、发回确认,并且假如分组丢失,必须重新发送。网络层 :负责相邻计算机之间的通信。其功能包括三方面。一、处理来自传输层的分组发送请求,收到请求后,将分组装入IP数据报,填充报头,选择去往信宿机的路径,然后将数据报发往适当的网络接口。二、处理输入数据报:首先检查其合法性,然后进行寻径-假如该数据报已到达信宿机,则去掉报头,将剩下部分交给适当的传输协议;假如该数据报尚未到达信宿,则转发该数据报。三、处理路径、流控、拥塞等问题。网络接口层:这是TCP/IP软件的最低层,负责接收IP数据报并通过网络发送之,或者从网络上接收物理帧,抽出IP数据报,交给IP层。2.2 OLED显示屏OLED,即有机发光二极管(OrganicLight-EmittingDiode),又称为有机电激光显示(OrganicElectroluminesen