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

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

    关注

    14

    文章

    10459

    浏览量

    91871
  • NTP
    NTP
    +关注

    关注

    1

    文章

    271

    浏览量

    15103
  • ESP8266
    +关注

    关注

    51

    文章

    972

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    ESP32/ESP8266开发板单向一对多ESP-NOW无线通信

    通过ESP-NOW无线通信协议实现ESP32开发板向多个ESP32/ESP 8266开发板发送数
    的头像 发表于 03-13 09:23 376次阅读
    <b class='flag-5'>ESP</b>32/<b class='flag-5'>ESP8266</b>开发板单向一对多<b class='flag-5'>ESP</b>-NOW<b class='flag-5'>无线</b>通信

    ESP8266系列】WT8266-S3模组规格书

    核心处理ESP8266在较小尺寸封装中集成了业界领先的TensilicaL106超低功耗32位微型MCU,带有16位精简模式,主频支持80MHz和160MHz,支
    的头像 发表于 02-05 18:04 344次阅读
    【<b class='flag-5'>ESP8266</b>系列】WT<b class='flag-5'>8266</b>-S3模组规格书

    ESP8266系列】WT8266-S5模组规格书

    处理ESP8266在较小尺寸封装中集成了业界领先的TensilicaL106超低功耗32位微型MCU,带有16位精简模式,主频支持80MHz和160MHz,支持
    的头像 发表于 02-05 18:03 557次阅读
    【<b class='flag-5'>ESP8266</b>系列】WT<b class='flag-5'>8266</b>-S5模组规格书

    ESP8266系列】WT8266-S6模组规格书

    处理ESP8266在较小尺寸封装中集成了业界领先的TensilicaL106超低功耗32位微型MCU,带有16位精简模式,主频支持80MHz和160MHz,支持R
    的头像 发表于 02-05 18:03 491次阅读
    【<b class='flag-5'>ESP8266</b>系列】WT<b class='flag-5'>8266</b>-S6模组规格书

    ESP8266系列】WT8266-S1模组产品介绍

    WT8266-S1WiFi模块是由启明云端科技开发的、低功耗高性价比的嵌入式无线网络控制模块。可满足智能电网、楼宇自动化、安防、智能家居、远程医疗等物联网应用的需求。该模块核心处理ESP82
    的头像 发表于 01-29 18:22 806次阅读
    【<b class='flag-5'>ESP8266</b>系列】WT<b class='flag-5'>8266-S1</b>模组产品介绍

    ESP8266系列】WT8266-S6模组产品介绍

    处理ESP8266在较小尺寸封装中集成了业界领先的TensilicaL106超低功耗32位微型MCU,带有16位精简模式,主频支持80MHz和160MHz,支持R
    的头像 发表于 01-29 18:22 561次阅读
    【<b class='flag-5'>ESP8266</b>系列】WT<b class='flag-5'>8266</b>-S6模组产品介绍

    NTP自动校时服务器的典型应用

    作为一种高效的时间同步解决方案,其典型应用场景广泛且深入。本文将深入探讨NTP自动校时服务器的核心功能及其在多个领域中的实际应用。1.金融交易系统在金融行业,时间
    的头像 发表于 01-27 16:12 4115次阅读
    <b class='flag-5'>NTP</b>自动校时<b class='flag-5'>服务器</b>的典型应用

    无需安装!在浏览里就能玩转ESP32/ESP8266,这个神器绝了!

    无需安装!在浏览里就能玩转ESP32/ESP8266,这个神器绝了!【往期精选】十年嵌入式最深的痛,不是Bug,而是抓不到日志!vivo宣布原生支持HomeAssistant生态设备接入(含
    的头像 发表于 01-10 10:01 1802次阅读
    无需安装!在浏览<b class='flag-5'>器</b>里就能玩转<b class='flag-5'>ESP</b>32/<b class='flag-5'>ESP8266</b>,这个神器绝了!

    【瑞萨RA6E2地奇星开发板试用】基于RA6E2+ESP8266在STA模式下数据透传到Python服务器整体系统演示总结

    基于RA6E2+ESP8266在STA模式下数据透传到Python服务器整体系统演示总结 1. 需求描述 1.1. 系统实现概述 使用RA6E2驱动 esp8266 WiFi模块, 用
    发表于 12-28 20:16

    晶科鑫 | 国产26MHz晶振匹配Espressif(乐鑫) ESP8285/ESP8266芯片案例

    本,两者可以共用同一套SDK,只是ESP8285内部集成了1MBFlash,SPIMode设置为DOUT,而ESP8266则需要外接Flash,并且是Din模式。除此之外,ESP828
    的头像 发表于 11-21 15:37 5104次阅读
    晶科鑫 | 国产26MHz晶振匹配Espressif(乐鑫) <b class='flag-5'>ESP</b>8285/<b class='flag-5'>ESP8266</b>芯片案例

    NTP自动校时服务器的核心优势介绍

    微秒级的时间同步精度,满足高要求的时间管理需求。NTP自动校时服务器的核心优势1.高精度同步:NTP自动校时服务器能够实现毫秒级甚至微秒级的
    的头像 发表于 11-11 15:28 605次阅读
    <b class='flag-5'>NTP</b>自动校时<b class='flag-5'>服务器</b>的核心优势介绍

    ESP8266ESP32开发板常见的2种下载方式

    ESP32和ESP8266是性价比很高而且使用较为广泛的的Wi-Fi模块,在物联网(IoT)领域的DIY项目中可以首先考虑这2款产品。 两款芯片都属于32位处理ESP32是低功耗
    的头像 发表于 11-10 20:30 1588次阅读
    <b class='flag-5'>ESP8266</b>和<b class='flag-5'>ESP</b>32开发板常见的2种下载方式

    at_device(8266)不支持web服务器吗?

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

    ESP8266】进入透传模式后,数据间隔怎么调整,

    01.TCP客户端用ESP8266透传模式发送数据是10ms发送一次,(连续发送) 02.TCP服务器接收到的数据是200ms左右接收一次,数据未丢失,但是更新不及时; 03.通过TCP调试助手已
    发表于 09-15 10:16

    【RA-Eco-RA4M2开发板评测】使用RA4M2和ESP8266实现MQTT协议上传传感数据到云服务器并反向点灯控制

    人远在千里之外的异国他乡,在ESP8266接入互联网的条件下,都可以远程点灯,不限制距离和IP地址,云服务器确实是个好东西呀! 在这个万物互联的时代,互联网正在我们的日常生活中越来越扮演者重要的角色
    发表于 05-29 15:29