你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

WiFi模块获取网络时间—NTP

[复制链接]
Cortexxx 发布时间:2017-11-5 21:50
使用ESP8266 WiFi module从NTP server获取时间
4 G8 b+ b- x' {4 m' C本次实验仅仅使用了AT指令 所以降低了编程难度4 ~- `9 l9 y9 o9 K3 L! D
) y' {' X- H. S4 ^
7 M& z5 X& i. U+ T
   1.关于NTP的基本协议 可以参考Zero99的帖子
) @8 ?) G0 |+ c1 S' @( b/ n" P0 i/ D3 T7 Q( N& `3 z/ t' j4 E
0 t' s+ _0 N% Y2 B& u2 F( C* {
https://www.stmcu.org.cn/module/forum/thread-607936-1-1.html
$ V: E- o: u! Z' Z' C, D' J/ z9 ~7 _
总结一下: 9 D# H# t2 S0 O/ v. L
NTP协议中计时时间 是从Jan/1/1900开始的。64bits长度的数据,高32bits是秒数,低32bits是秒的小数部分# E9 Z# F; p. ^! o2 j
$ k5 E. N$ u7 K- l, E+ m4 G
7 T' X0 F4 K2 z! z& Y
    2.使用WiFi模块 和TTL-USB(USB转串口)正确的和WiFi模块相连;: X7 l& t$ q" t2 b. e: \
要注意 GPIO0(片选pin)需要拉高 3.3V 使用5V会使EPS8266工作异常;
! K8 O& L: g% l! m因为本次使用AT指令的固件,所以在此之前要给WiFi模块烧录AT指令的固件。; E* u6 b" @6 t0 e2 j: D0 X
硬件链接好之后打开串口助手,发送 AT 两个字符 WiFi模块会返回 OK。. o0 I3 R' P- |0 R
这就说明模块正常工作了。
& A: s% Y$ r0 j之后配置WiFi模块的工作模式
  V8 w7 U. X. q9 Z
AT+CWMODE=3   把WiFi模块设置成SoftAP+station共存模式
AT+RST     重启生效
AT+CWJAP=”SSID”,”PASSWORD”   //  链接router
链接成功
AT+CIPMUX=0 设置WiFi模块为单路链接
AT+CIPSTART="UDP","1.cn.pool.ntp.org",123  链接到NTP服务器
AT+CIPSEND=48 发送48byte的数据
返回OK
       >

, z% F* V- i7 P# r& Z   然后以HEX的模式发送如下数据,数据大小为48bytes
/ u8 ?6 h$ _) i6 l3 V2 x' E5 |0 e2 v( L
E3 00 06 EC 0000 00 00 00 00 00 00 31 4E 31 34 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
返回SEND OK
之后NTPserver返回报文 要用Hex模式 查看
大致为41 54 2B 43 4950 53 45 4E 44 3D 34 38 0D 0D 0A 0D 0A 4F 4B 0D 0A 3E 20E3 00 06 EC 00 00 00 00 00 00 00 00 31 4E 31 34 00 00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0D 0A 53 454E 44 20 4F 4B 0D 0A 0D 0A 2B 49 50 442C 34 38 3A 24 02 06 E9 00 00 05 ED 00 00 35 AD 82 85 01 0A DD 9C 6DA0 70 B1 3E D9 00 00 00 00 00 00 00 00 DD 9C 8B 43 41 AF 52 2F DD 9C 8B 43 41B0 74 89 0D 0A 4F 4B 0D0A 03 03 03
0 p/ s% G% U: C
& a, N  O) M, ~5 j  n5 O5 r# G7 _
6 Z& y8 |1 x% a8 ~8 u, {0 f
黄色背景为从1900/1/1到现在的秒数

( N7 H; _' n' P% |4 u5 W* N
3. 给MCU 写程式
主要包括USART(用于和esp8266通讯) OLED(荧屏) DHT11程序(温湿度sensor) Timer(用于计算local time)
程式的大致思路是inital hardware->get time from NTP server->把网路时间换算 并且赋给当地时间->(timer IRQ)把local time累加->read DHT11->输出给荧屏时间和温湿度。
IMG_20171030_010330.jpg
- e; Z  V5 k, {9 @
IMG_20171105_191202.jpg

, @; ?0 I6 A3 s1 T" R
7 k8 d) R. Q+ q; N' x9 [2 [% o: Y
源代码一个是F410RB的另一个是F103C8的
NTP_ClockforSTM32F410.zip (1.28 MB, 下载次数: 177)
IMG_20171105_191204.jpg

评分

参与人数 1 ST金币 +20 收起 理由
zero99 + 20

查看全部评分

收藏 5 评论13 发布时间:2017-11-5 21:50

举报

13个回答
wolfojc 回答时间:2018-5-17 09:41:08
谢谢分享,刚好手上有个8266模块,已经可以读取时间了。
zcl201207 回答时间:2017-11-6 21:58:24
andey 回答时间:2017-11-7 09:30:45
提示: 作者被禁止或删除 内容自动屏蔽
zero99 回答时间:2017-11-7 10:41:32
原创支持下!
霹雳之火 回答时间:2017-11-7 10:44:18
不错不错
uqvditfk 回答时间:2018-3-9 12:45:58
多谢分享,
xw8655545 回答时间:2018-5-3 19:45:50
刚好在摸索8266模块 感谢楼主分享
幸福四叶草 回答时间:2018-8-21 16:14:52
多谢分享
sevensp 回答时间:2019-9-27 10:57:33
新人学习
starlhl 回答时间:2019-10-21 11:17:02
多谢分享,正好在研究这方面的东西,刚好参考
myxiexing 回答时间:2020-3-22 17:23:38
感谢分享!
zhoubo2233 回答时间:2021-1-9 20:32:35
好东西! k6 [+ p1 M, O6 u0 V( w  J, ^: a( z
u18930655918 回答时间:2021-2-2 00:24:56
需要找个
simonliu009 回答时间:2021-3-7 12:27:47
赞一个 正好需要

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版