0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ESP8266无线NTP Stratum1服务器的制作

454398 来源:网络整理 作者:佚名 2019-11-11 10:36 次阅读

第1步:所需组件

以下是该项目所需组件的列表,价格绝对最低!如果您发现某个地方便宜一些,请给我留言!

ESP8266-01►(http://goo.gl/o4fAfJ)

GPS模块►(http://goo.gl/M8Y6pR)

USB至TTL接口►(http://goo.gl/da82Uc)

步骤2:没有Internet连接的无线NTP服务器

没有Internet连接的无线NTP服务器

如果需要非互联网可靠的时间源,有多种选择:无线电时间信号,原子钟,gps等。

时间信号接收器是一种低成本的选择,但其有效性取决于距离发射站有多近。另外,根据国家或地区的不同,频率也不尽相同,因此并不是每个站点的通用替代方案。如果需要非常高的精度,则

原子钟是最佳选择。不久前,原子钟很大,不是很轻便,也很耗电。但是,随着小型化的发展,现在有可能获得一个芯片大小的原子钟,而该原子钟不需要花费几毫瓦就能工作。如果成本不是决定因素(价格在千美元左右),则可以选择!

全球定位系统其他国家/地区的GPS或等效系统(GLONASS,GALILEO,BEIDOU)是一种中间选择,它比广播时间信号带来更大的灵活性(嗯,有些晴朗的天空是必需的),并且价格比原子钟便宜得多。

如果需要非常高的耐用性(例如制造一个自制的核反应堆),或者如果要连接大量执行数百万秒钟请求的设备,则首选已经提出的解决方案。但是,如果出于实验目的想要一种更简单的方法,并且可以容忍一秒钟的偏移量,则可以使用anesp8266-01和一个GPS模块构建一个约10美元的支出,也可以使用具有串行NMEA输出的手持GPS。

第3步:日期和时间协议:白天,时间和NTP

日期和时间协议:白天,时间和NTP

自从第一台实用计算机开始工作以来,使它们保持时间同步的想法就在不断发展。为此有很多协议,其中一些是:白天,时间和NTP。

白天协议:

此协议在RFC867中进行了描述。它是最古老的,现在几乎没有使用过。某些时间服务器仍然出于教育目的提供它,并作为仍然使用它的非常老旧的硬件/软件应用程序的替代。该协议在端口13上工作,并且以明文形式发送时间/日期信息。对于所使用的格式没有特别的建议,唯一的好处是该信息可以被人类读取。

时间协议:

此协议在RFC868中进行了描述,并在端口37上运行。时间/日期信息编码为从00:00开始经过的秒数: 1970年1月1日的00(午夜)以32位数字表示。

NTP协议:

NTP被认为可以带来时间/日期信息,在RFC5905中进行了描述,其精度约为毫秒。基于改进的Marzullo算法来计算信息包的可变延迟。该协议使用非常广泛,信息包会通过UDP连接在端口123上传输以最大程度地减少处理时间。

步骤4:ESP8266 + GPS

ESP8266 + GPS

该项目是对Ray Burnette的Tardis Time的改进,它的硬件元素基本相同,但是不发送时间/日期信息使用标准协议,因此必须在每个要同步的不同设备中开发一个小型侦听器应用程序。该项目利用了个人计算机中的内置defacto时间同步应用程序raspberry pi,ESP8266的NTP客户端库可以使用该项目。

使用的GPS模块是EM-506,没有PPS信号。同样,具有RS232 NMEA输出的手持GPS接收器也可以用于相同的目的。 ESP8266使用SDK版本1.5.2进行编程。别忘了编程需要某种USB到TTL 3V接口!该软件可以描述为3个主要部分:

串行数据接收

ESP8266的UART具有最大容量为256个字符和多个源的硬件FIFO。的中断。程序中使用了字符接收阈值和超时中断。

字符阈值中断用于在某些字符到达UART的FIFO时自动触发功能。在这种特殊情况下,由于GPS需要NMEA字符串,并且它们的长度约为30-80个字符,因此使用了它们之间的阈值。此函数从FIFO读取字符并将其写入循环缓冲区。

当仅接收到几个字符(小于阈值)并且在确定的时间间隔内未检测到更多字符时,将使用超时中断。在这种特殊情况下,编程的超时时间为10个字节。

此函数需要快速执行以尽快从中断中返回,因此此处无需进行任何处理,只需进行读取和复制即可。

字符串解析,实际时间/日期和微秒率校正

串行ISR将接收到的字符写入循环缓冲区,最大大小应为循环缓冲区长度的两倍。要解析的最长NMEA字符串。在这种情况下,以$ GPRMC标头开头的字符串。此特定字符串包含时间/日期信息。一旦使用SDK system_os_post提供的消息传递系统将所有接收到的字符写入循环缓冲区,ISR就会调用处理字符串的函数。

NMEA字符串的长度是可变的,因此应避免使用绝对字符位置来解析值。对于特定类型的字符串,定界符的数量在这种情况下以逗号“,”为常数,并用于提取时间和日期值。字符串示例如下:

$ GPRMC,201705.000,A,0000.0000,N,00000.0000,W,1.10,265.50,120816 ,,, A * 79

在逗号之间” ,”定界符#1 y#2位于字符串201705.000,表示20小时17分钟05,000秒。在逗号“,”定界符#9 y#10之间放置字符串120816,表示日期12,月份08(八月)和年份16(2016)。此外,还存储了系统的微秒级环形计数器(不是来自GPS),以进行调整并提供更准确的时间戳。

传递数据,套接字

创建了三个独立的套接字来侦听任何类型的服务:白天,时间或NTP。对于白天,当接收到查询时,将从保存日期和时间信息的全局变量中读取数据,并将其转换为人类可读的文本字符串。对于时间服务情况,日期和时间信息应该以适当的方式编码,帮助功能SecondsSince1900可以完成任务。

对于NTP,应暂时存储收到的数据包,一些信息需要修改/更新并作为答案发送回去。由于项目中使用的GPS仅每秒带来一次时间/日期信息,并且在该间隔的中间可能会发生NTP查询,为缓解此问题,请使用system_get_time( ),每次接收到新的GPS帧。接收到NTP查询后,将再次读取该计数器,并使用这两个值可以估算出上一次GPS更新和NTP查询接收之间的时间。将此时间添加到全局变量中存储的时间(每秒更新一次)中,并发送应答NTP数据包。

步骤5:测试和结论

测试和结论

-使用标准应用(在这种特定的情况下为Linux应用)来测试在ESP8266中编程的时间服务,例如netca, rdate,ntpdate。

-由于其体积小,功耗低和无线连接性,可以将其安装在天空更清晰的地方:窗户,屋顶等附近。

-使用带有PPS的GPS,可以实现更高的精度。

-可以通过太阳能供电(夜间使用电池),以获得完全无线的连续操作系统

-根据GPS的类型,必须使用某些转换的信号电平,例如5V TTL到3V TTL或RS232到3V TTL。

责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 服务器
    +关注

    关注

    12

    文章

    9012

    浏览量

    85164
  • NTP
    NTP
    +关注

    关注

    1

    文章

    157

    浏览量

    13879
  • ESP8266
    +关注

    关注

    50

    文章

    962

    浏览量

    44816
收藏 人收藏

    评论

    相关推荐

    ESP8266 通过 MQTT 协议实现 LED 的远程控制

    本文简要介绍了搭建 EMQX 服务器实现基于 MQTT 协议远程控制 NodeMCU ESP8266 板载 LED 的解决方案。
    的头像 发表于 09-25 09:11 1763次阅读
    <b class='flag-5'>ESP8266</b> 通过 MQTT 协议实现 LED 的远程控制

    esp8266esp32区别是什么

    以下是关于ESP8266ESP32的主要区别: 处理和架构 : ESP8266 :使用一个Tensilica L106 80MHz的处理
    的头像 发表于 08-19 18:16 4230次阅读

    esp8266不烧录可以使用吗

    ,可以方便地与其他硬件设备进行连接。 2. ESP8266的硬件特性 处理 :Tensilica L106,最高频率160MHz 内存 :64KB SRAM,1MB Flash Wi-Fi :支持802.11 b/g/n协议,
    的头像 发表于 08-19 17:28 613次阅读

    ESP8266与IE相比,Chrome/Mozilla中的TCP服务器速度较慢是什么原因?

    我正在尝试将 ESP8266-01 模块用于一个项目。我将其用作TCP服务器。我注意到浏览 Chrome 和 Mozilla 的服务器响应速度非常慢。但是,当我使用IE浏览
    发表于 07-22 06:44

    可以使用esp8266处理实时视频和音频流到服务器到移动设备?

    各位专家,您好: 我是 esp8266 的新手,我正在做一个项目,我需要使用 esp8266 使用服务器到移动设备处理实时视频和音频流。可以使用 esp8266 处理实时视频和音频流到
    发表于 07-19 08:40

    请问如何在ESP8266上使用sntp协议连接到ssl中的服务器

    由于不支持的协议。TLS 协议用于安全交易,服务器使用 TLSv1.2,我在互联网上读到ESP8266仅支持 TLSv1.1;是吗? 另一件奇怪的事情是,在我尝试建立 tcp 连接后,我正确地获得了时间
    发表于 07-19 07:30

    ESP8266服务器通信停止的原因是什么?

    电脑应用程序上的代码,没问题,我也检查了驱动 ESP 模块的 MCU 上的代码,也没问题。与服务器的通信停止的原因是什么。
    发表于 07-19 07:18

    ESP8266_NONOS_SDK_V1.4.0_15_09_18 TCP服务器错误怎么解决?

    我在使用ESP8266模块时发现了一个错误。我将固件版本升级到 ESP8266_NONOS_SDK_V1.4.0_15_09_18,我想创建一个带有 TCP 服务器的自定义接入点以发送连续数据,但是
    发表于 07-18 07:58

    ESP8266 SSL服务器在几秒钟后断开连接是怎么回事?

    我在ESP8266设备上遇到了一个与SSL服务器相关的问题。(ESP8266_NONOS_SDK-2.1.0) 我创建了一个自我认证的证书(当然,是私钥)。我按照以下代码启动了SSL服务器
    发表于 07-17 08:16

    基于esp8266创建一个TCP服务器,TCP服务器每秒自动断开连接是为什么?

    我基于 esp8266 创建一个 TCP 服务器。它总是每秒断开一次。我不知道为什么。我已将espconn_register_time设置为最大 7200。
    发表于 07-15 08:26

    请问esp8266会开放使用第三方云服务器吗?

    如题,esp8266会开放使用第三方云服务器吗,如百度,阿里云服务器
    发表于 07-12 11:40

    如何在PPP服务器模式下运行esp8266

    嗨,我正在尝试在 PPP 服务器模式下运行 esp8266。目前,我已经组装了一个固件,能够使用 lwip 库中使用的 PPP 协议与另一台设备建立 PPP 连接。但是,目前无法在两个WIFI
    发表于 07-09 07:21

    国产低成本Wi-Fi SoC解决方案芯片ESP8266ESP8285对比差异

    ESP8266ESP8285对比差异 ESP8285相当于在ESP8266基础上多加了1/2MB Flash,
    的头像 发表于 05-17 11:44 1171次阅读
    国产低成本Wi-Fi SoC解决方案芯片<b class='flag-5'>ESP8266</b>与<b class='flag-5'>ESP</b>8285对比差异

    通过STM32+ESP8266 Wifi模块 +云服务器,做一个数据收发控制的板子云服务器方面该如何选择?

    通过STM32+ESP8266 Wifi模块 +云服务器 做一个数据收发控制的板子 云服务器方面该如何选择?
    发表于 04-25 08:16

    NTP服务器介绍

    、安全、可靠的时间服务NTP服务器主要应用于地铁、高铁等有时间服务需求的国家重要领域。 NTP服务器
    的头像 发表于 01-17 09:30 715次阅读
    <b class='flag-5'>NTP</b><b class='flag-5'>服务器</b>介绍