想要让网络设备的时间精准到秒?别再忍受公网上 NTP 污点、抖动、跳秒带来的烦恼了!今天给大家安利一个自制 Stratum-1 GNSS 时间服务器——
GNSSTimeServer,全开源、硬件自组,真正一把手造神器。
啥是 GNSSTimeServer?
说白了,它就是一台基于 ESP8266/ESP32 + GNSS 模块的 NTP/RDATE 服务器。靠着 GPS、北斗、GLONASS、Galileo 卫星信号,同步一块 DS3231 TCXO 实时时钟(内部还有温度补偿水晶振),最后提供毫秒级、甚至微秒级的网络校时服务。硬件成本几十块,刷个固件就能立即跑起来。
它能帮你干啥?
-
• 架设自家专属 Stratum-1 服务器,不再依赖外网 NTP 污点
-
• 大型分布式系统、金融交易、工业自动化等场景,对时间精准度要求高
-
• 局域网内一键秒级同步,告别“时间漂移”
-
• DIY 乐趣:把玩软硬件、定制外壳、折腾网络拓扑
解决了哪些痛点?
-
• 公网 NTP 服务器不稳定,可能被墙、被 DDOS
-
• 高精度商业时钟太贵,上万甚至几十万
-
• 现成硬件灵活性受限,自制还能折腾个性化仪表盘
-
• 多协议支持(NTP & RDATE),兼容老旧设备
-
安装与使用
整个流程,别太复杂。分三步:硬件、刷固件、配置网络。
|
硬件清单 |
说明 |
|
ESP8266/ESP32 开发板 |
推荐 ESP32(多任务 RTOS 支持更好) |
|
DS3231 TCXO RTC 模块 |
温补晶振,背后有 CR2032 电池 |
|
GNSS 模块 |
Neo-6M V2、ATGM336H、TAU1201 均可 |
|
OLED 屏(1.3" SH1106) |
实时状态一目了然 |
|
18650 电池 + TP4056 |
断电保护、掉电告警 |
|
(可选)W5500 以太网模块 |
稳定有线网络,减少 WiFi 抖动 |
刷机和配置分两步:
-
1. 下载源码并安装依赖
git clone https://github.com/Montecri/GNSSTimeServer.git
cd GNSSTimeServer
# 打开 Arduino IDE 或 PlatformIO,安装 paullstoffregen/Time、TinyGPSPlus、U8g2 等库 -
2. 修改配置 & 烧录
-
• 打开
config.h,填入你的 WiFi 名称/密码、Syslog 服务器地址 -
• 选择对应的开发板(ESP8266 或 ESP32),上传固件
-
• 开机后通过串口查看启动日志,OLED 会显示卫星锁定状态、IP 地址等
刷好后还可以访问内置的 Web 仪表盘:
-
• 单 HTML 文件、Base64 图标、GZip 压缩,只有 ~20 KB
-
• 实时 JSON 更新,不刷新页面即可看到:卫星数、信号强度、锁定精度、MCU 温度、堆栈剩余空间、NTP 请求数……
功能一览
|
功能 |
说明 |
|
多星座 GNSS 锁定 |
GPS/BeiDou/GLONASS/Galileo,精度 <100 ns |
|
本地 RTC + TCXO |
停电也能维持秒级计时 |
|
NTP & RDATE 支持 |
RFC-868 & NTP 协议兼容终端 |
|
WiFi / AP / 以太网 |
灵活联网,W5500 硬件加速 |
|
OTA 在线升级 |
Web 界面一键更新固件 |
|
Syslog 日志 |
运行状态、错误信息可远程收集 |
|
仪表盘 & OLED 显示 |
数据分离布局,时刻掌握运行状态 |
优缺点,真香还是雷?
优点
-
• 极高性价比:几百块就能搞定 Stratum-1 服务器
-
• 完全开源:软硬件设计、3D 机壳、压缩脚本都在仓库里
-
• DIY 玩趣:自定义面板、二次开发随心
-
• 低功耗:18650 续航好,RTC 电池补偿
缺点
-
• 初学者上手门槛略高:要会焊接、刷固件、网络基础
-
• ESP8266 WiFi 下 RTOS 限制:建议用 ESP32
-
• DS3231 某些山寨板有充电缺陷:需手动拆电阻/二极管改造
-
• 高精度场景还需专业校准:天线布局、磁场屏蔽没做足,精度会受影响
总结
GNSSTimeServer 是一款能让你花小钱玩出大精度、自给自足的 Stratum-1 时间服务器。无论你是网络工程师想避坑,还是电子发烧友爱折腾,它都能带来十足的成就感。动手搭建后,整屋设备同一时间源,下次开会、打卡、财务对账再也不用担心 “时间偏差” 的尴尬!
项目地址:
https/github.com/Montecri/GNSSTimeServer