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

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

    关注

    13

    文章

    9859

    浏览量

    88421
  • NTP
    NTP
    +关注

    关注

    1

    文章

    233

    浏览量

    14586
  • ESP8266
    +关注

    关注

    51

    文章

    965

    浏览量

    47647
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    NTP时间同步服务器如何工作

    NTP时间同步服务器是济南唯尚电子有限公司拥有北斗GPS双系统网络时间服务器,采用北斗GPS双系统互为备用设计,双系统授时融合,支持SNTP/NTP标准网络时间传输协议,提供高精度的网
    的头像 发表于 05-22 14:37 ?258次阅读
    <b class='flag-5'>NTP</b>时间同步<b class='flag-5'>服务器</b>如何工作

    ntp时钟同步服务器是什么?ntp时钟同步服务器介绍

    时间、时钟、时辰是我们非常熟悉的,但是你们知道如今的时间、时钟都是哪里产生的吗?尤其当今网络设备的普及使用,上面几乎都有时间标识,其实他们都是通过一些设备传递的,比如ntp时钟同步服务器,这就是一种
    的头像 发表于 05-13 15:19 ?358次阅读
    <b class='flag-5'>ntp</b>时钟同步<b class='flag-5'>服务器</b>是什么?<b class='flag-5'>ntp</b>时钟同步<b class='flag-5'>服务器</b>介绍

    esp8266 at device做一个网页服务器 ,运行webnet_test显示错误怎么解决?

    我现在想用esp8266 at device 做一个网页服务器 但是文件系统什么都做好了 运行webnet_test 显示下边的错误 查了论坛 说at不支持服务器 但是是20年的帖子了 现在有支持吗 如果不支持是不是换rw
    发表于 03-07 06:47

    双北斗NTP网络授时服务器介绍

    双北斗NTP网络授时服务器介绍 关键词:双北斗服务器 ? NTP网络授时设备 ? 北斗授时服务器 SYN2151型双北斗
    的头像 发表于 02-05 18:07 ?607次阅读

    NTP服务器的性能优化方法

    NTP(Network Time Protocol,网络时间协议)服务器性能的优化对于确保时间同步的准确性和可靠性至关重要。以下是一些NTP服务器性能优化的方法: 一、增加
    的头像 发表于 12-18 15:24 ?1315次阅读

    常见NTP服务器软件比较

    网络时间协议(NTP)是一种用于同步计算机时钟的协议,它允许计算机通过网络与时间服务器通信,以确保它们的系统时钟尽可能准确。以下是一些常见的NTP服务器软件的比较,这些软件可以帮助组织
    的头像 发表于 12-18 15:14 ?2546次阅读

    NTP服务器故障排除技巧 NTP服务器与网络安全

    问题。 1. 检查NTP服务器配置 1.1 确认NTP服务器地址和端口 首先,确保NTP
    的头像 发表于 12-18 15:13 ?2648次阅读

    NTP服务器配置步骤 NTP服务器服务的好处

    、分布式系统的时间同步等都是非常重要的。以下是配置NTP服务器的基本步骤: 1. 安装NTP服务 在大多数Linux发行版中,可以通过包管理
    的头像 发表于 12-18 15:12 ?1994次阅读

    ESP8266 太空人动画的 OLED 显示

    ESP8266 太空人动画的 OLED 显示
    的头像 发表于 10-08 15:06 ?754次阅读
    <b class='flag-5'>ESP8266</b> 太空人动画的 OLED 显示

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

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

    STM32 ESP8266阿里云链接源码

    stm32F103C8T6 ESP8266 物联网电表 登录阿里云
    发表于 08-29 14:21 ?9次下载

    esp32和esp8266代码共用吗

    本文将介绍ESP32和ESP8266两款流行的微控制在代码共用性方面的可能性与差异性。 一、引言 随着物联网技术的飞速发展,越来越多的智能设备开始进入我们的生活。其中,ESP32和
    的头像 发表于 08-19 18:23 ?2450次阅读

    esp8266esp32区别是什么

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

    esp8266不烧录可以使用吗

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

    esp8266wifi模块怎么连接手机

    ESP8266 WiFi模块连接手机主要可以通过两种方式实现: 通过路由连接(STA模式)和直接作为热点连接(AP模式) 。以下是两种连接方式的步骤: 一、通过路由连接(STA模式) 配置
    的头像 发表于 08-19 17:27 ?7937次阅读