第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

无线时长连接服务器,ESP8266无线NTP Stratum1服务器的制作相关推荐

  1. 惠普136wm显示无法连接服务器,136w打印机时连接无线时显示连接失败

    请问这个问题解决了吗? 操作系统: Microsoft Windows 10 (64-bit),也用Mac OS装HP Smart 试过. 我也碰到这个问题了,136w打印机时连接无线时显示连接失败, ...

  2. 国内可用的Internet时间同步服务器地址(NTP时间服务器) 好在阿里云提供了7个NTP时间服务器也就是Internet时间同步服务器地址(转)...

    国内可用的Internet时间同步服务器地址(NTP时间服务器) 好在阿里云提供了7个NTP时间服务器也就是Internet时间同步服务器地址 ntp1.aliyun.com ntp2.aliyun. ...

  3. 极光推送技术原理:移动无线网络长连接(转自eoe移动开发门户)

    看了看极光推送的原理,还不是太明白,现在记录下来,供以后深究.原文如下: 移动互联网应用现状 因为手机平台本身.电量.网络流量的限制,移动互联网应用在设计上跟传统 PC 上的应用很大不一样,需要根据手 ...

  4. nginx做grpc负载均衡时长连接或者短连接

    nginx设置响应连接是长连接或者短连接 https://blog.csdn.net/qq_21127151/article/details/106880632 nginx反向代理时保持长连接 htt ...

  5. 时钟服务器工作原理,NTP时间服务器工作原理

    文章目录 [隐藏] NTP简介 NTP工作原理 NTP工作模式 NTP简介 NTP(Network Time Protocol, 网络时间协议)是由RFC 1305定义的时间同步协议,用来在分布式时间 ...

  6. linux 设置ntp时间同步服务器,Linux配置ntp时间同步服务器

    (一)确认ntp的安装 1)确认是否已安装ntp [命令]rpm –qa | grep ntp 若只有ntpdate而未见ntp,则需删除原有ntpdate.如: ntpdate-4.2.6p5-22 ...

  7. 国内可用的Internet时间同步服务器地址(NTP时间服务器)

    阿里云提供了7个NTP时间服务器也就是Internet时间同步服务器地址 ntp1.aliyun.com ntp2.aliyun.com ntp3.aliyun.com ntp4.aliyun.com ...

  8. 国内互联网可用时间服务器地址(NTP时间服务器地址)

    老男孩老师在教学培训过程中经常发现曾经的时间服务器地址不可用了,很是尴尬,特找到了国内比较稳定的时间服务器地址,和博友分享如下: ntp1.aliyun.com ntp2.aliyun.com ntp ...

  9. 中河广播服务器怎么连接无线话筒,无线话筒怎么连接音响 无线话筒怎么用

    好的无线话筒,给人的使用可以带来极大的方便,同时还能给音响师现场拾音,提供艺术创作的空间.所以,在构成一个音响系统时,或多或少的配置无线话筒.接下来为大家介绍无线话筒怎么连接音响及无线话筒怎么用. 无 ...

最新文章

  1. uniapp中分包及分包优化
  2. AndFix解析——(下)
  3. 旧金山参议员提议发布“封杀令”,理由是马路不为机器人所服务
  4. Centos7下使用ELK(Elasticsearch + Logstash + Kibana)搭建日志集中分析平台
  5. BootStrap的入门和响应式的使用
  6. CEF js调用C#封装类含注释
  7. 论文自动转代码!IBM印度大三实习生搞了个神奇研究(已中AAAI)
  8. 安装其他插件svn消失
  9. 面试题--------10、索引是什么,有什么作用和优缺点
  10. fudanNLP keyword Extraction
  11. Python【一点号】短视频的自动上传与发布实例演示,同时支持抖音、快手、哔哩哔哩、小红书、微视、西瓜视频、微信视频号等平台的视频自动化同步发布
  12. mongodb 恢复_MongoDB时间点恢复
  13. 2016年计算机视觉机器学习领域国内重要会议 汇总 (持续更新)
  14. 无人驾驶汽车系统入门(二)——高级运动模型和扩展卡尔曼滤波
  15. php 公众号 群发,微信公众号【服务号】群发策略调整,并开通高级群发接口
  16. hadoop发行商介绍:Hortonworks
  17. SpiffWorkflow定制工作流
  18. C# Aspose.Words 用法
  19. CNN经典之VGG网络+PyTorch复现
  20. 一些生活中简单可用的技能--十分钟学会,终生受益

热门文章

  1. atom插件默认安装目录修改
  2. 希拉里败选演说和特朗普胜选演说(中英文)
  3. 国泰航空免费赠送11万余张出境机票,海外目的地包括美国、加拿大、英国、法国等...
  4. Axure 8.1.0.3377 注册码激活
  5. Activity跳转方式
  6. iPhone游戏开发
  7. SSR、SSE、SST、R2
  8. 计算机 无法进入pe,U盘重装系统|无法进入韩博士PE系统怎么办
  9. 【毕业设计_课程设计】基于SSM框架的仓库管理系统
  10. stm32f407_hal库_工程模板