之前看到一个有趣的项目,叫Hollow Clock
空中时钟,就3D打印了下外壳,用手头闲置的STM32和一个步进电机简单做了下。
但是发现用stm32的系统时钟SysTick
做计时误差还是有点大,打算再优化一下,恰巧有一个正在吃灰的装了AT固件库的esp8266,可以让stm32去获取网络时钟从而校正本地时间。
网络时钟用淘宝的API: http://api.m.taobao.com/rest/...,它返回值如下:
{"api":"mtop.common.getTimestamp","v":"*","ret":["SUCCESS::接口调用成功"],"data":{"t":"1639708783282"}}
AT指令访问网络时钟API
AT+CWMODE=3
// softAP+station模式AT+RST
// 重启AT+CWJAP="ssid","password"
// 连接路由- 用
ping api.m.taobao.com
查询到服务器IP地址140.205.162.6
。 AT+CIPSTART="TCP","140.205.162.6",80
// 协议 IP 端口号AT+CIPSEND=150
// 发送数据,150是发送的字符数
请求头:
GET /rest/api3.do?api=mtop.common.getTimestamp HTTP/1.1
Content-Type: application/json;charset=utf-8
Host: api.m.taobao.com
Connection: Keep Alive
注意:如果发送的字符数设置大了,发送上面数据后esp8266一直没有反应,那么再发送空格,一直凑到发送的字符数即可。
后面的工作:
- 字符解析,获取时间;
- stm32串口与esp8266通信,实现透传;
- 步进机和时钟的校正程序。